SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
Continuous source code analysis to help steer
the super tanker and / or hit the iceberg
ANDREW RENDELL, PRINCIPAL CONSULTANT




                                        Image found on: ttp://www.flickr.com/photos/winkyintheuk/
                                        .
INTRODUCTION
 What is Continuous Inspection?

 Directing software development can feel like
 trying to steer a super tanker.
 – This practice might help you succeed, or...
 – You might still hit the iceberg.
 – You might even hit the iceberg because of this
   practice!
INTRODUCTION
 Agile techniques focus on retrospection and
 reflection

 Gathering metrics on source code is nothing new

 Continuous Inspection has in theory been possible
 for many years but gaining momentum recently,
 possibly because of new, easy to use tools such as
 Maven and Sonar

 New focus on temporal aspect of data
 (4th dimension) and web based graphical analysis
CONTINUOUS INSPECTION OF EVOLVING
 SOFTWARE CAN...
 Give developers and architects an incredible insight into real
 software quality as it changes

 Get the feedback required to make a development team
 adaptive to real issues

 Allow the technical architect to apply lighter direction
 empowering the team and helping it become self-governing

 Allow clients, sponsors and managers to explore and
 investigate their codebase through visualisation tools
CONTINUOUS INSPECTION OF EVOLVING
 SOFTWARE CAN...
 Allow clients, sponsors and managers to explore and
 investigate their codebase through visualisation tools

 Facilitate an understanding of underlying trends of
 development quality and the consequences of actions on that
 code base

 Allow architects and developers to assimilate large swathes of
 code then drill down to specific areas in seconds rather than
 spending hours wading through generated data and code
 reviews
It might be possible to




         STEER THE SUPER TANKER*




          that is non-trivial software development
                          * I know it’s not a super tanker but it is very cool
                                         Image found on: http://www.flickr.com/photos/mikebaird   /
CONTINUOUS INSPECTION OF EVOLVING
 SOFTWARE CAN...
 Supply developers and architects with a surprising amount of
 misinformation

 Provide metrics which can be abused by developers and
 managers alike to prove pet theories or disprove unpopular
 ideas

 The act of looking at a metric often results in conscious or
 subconscious gaming of that metric for short term gain with
 no real benefit other than the temporarily improved
 remuneration or status
CONTINUOUS INSPECTION OF EVOLVING
 SOFTWARE CAN...
 Well meaning, intelligent individuals will become incredibly
 excited by the presentation of an attractive infographic whilst
 having zero understanding of what it is they are seeing

 Architects and developers become obsessed by a gradient on a
 graph or the exact hue of a pulsating ball and forget about
 working software.
The development team will




             STILL HIT THE ICEBERG




                            of software entropy

                              Image found http://www.flickr.com/photos/alanvernon/
SESSION STRUCTURE
 Case studies
 – A number of experiences from various projects which
   highlight the positive and negative of Continuous Inspection

 HANDS ON TUTORIAL
 – Using an interactive tool (Sonar) to investigate a code base
OUR EXPERIENCES OF CONTINUOUS
           INSPECTION




                    Image found http://www.flickr.com/photos/83508181@N00   /
FINDING THE TECHNICAL DEBT
 With a large legacy application, can these tools help us locate the
 areas of high debt?

 A large and relatively opaque code base.
 With high volatility (i.e. high number of pushes to repository).
 Geographically disparate team, knowledge spread across
 several time zones.

 Attempt to increase velocity and reduce development, test and
 deployment costs by reducing technical debt and increasing
 test coverage.

 With almost 100k lines of code, where do you start?


                                              STEER THE SUPER TANKER
FINDING THE TECHNICAL DEBT

 SEVERAL SOURCES OF DATA

 – Human knowledge, which component is important and
   troublesome?

 – Source control statistics, which files are amended the most?

 – Issue tracking, can we identify areas with most defects or
   changes?

 – Static source code analysis metrics augmented by test
   coverage


                                            STEER THE SUPER TANKER
FINDING THE TECHNICAL DEBT




                  Only real
                  candidate




                          STEER THE SUPER TANKER
FINDING THE TECHNICAL DEBT


            This is
            where we
            start




                       STEER THE SUPER TANKER
FINDING THE TECHNICAL DEBT

 Not low hanging fruit, those are genuinely rotten

 Sonar report from previous screen created automatically every
 morning by CI

 Very little effort to check

 Means that technical leads receive visual feedback that
 corrective action are being taken




                                           STEER THE SUPER TANKER
GAMING THE METRIC

 As soon as you focus on a metric, its likely to be gamed with
 unexpected results.

 A large legacy code base with a team spread around the world.

 We know we have too much technical debt because:
 – Simple changes take too long
 – The teams spend almost all their time fire fighting in
   production
 – Complex changes never make it out of development


                                                    HIT THE ICEBERG
GAMING THE METRIC




            This is a zero test system!


            Some modules are
            larger than others
   Some of the
   code is ‘too
                           Some of the code
   complex’
                           has a ‘good’ level of
                           complexity




                                                   HIT THE ICEBERG
GAMING THE METRIC
 This system obviously would be better with tests

 Can say with some confidence that not having tests is one of
 the reasons for this system’s perceived poor quality

 This is a very easy metric to measure

 SOLUTION:
 – Lets increase test coverage
 – Lets motivate development teams across the world by making their
   end of year bonus dependent on achieving a certain level of unit
   test coverage


                                                    HIT THE ICEBERG
GAMING THE METRIC

                    Day before
                    bonus day




                                 HIT THE ICEBERG
BLIP ON THE RADAR


                        What happened
                        here?
                        Spikes in loc,
                        coverage.



          When you continually measure, have to be
          ready to react to erroneous data now and again
          (inclusion of generated code in this case).




                                                    HIT THE ICEBERG
EMPIRICAL EVIDENCE
 Metrics, even without a tool like Sonar, can provide valuable
 empirical evidence on the state of the system

 A multi-team project with between eight and fifteen
 developers at any one time

 Geographically co-located with strong cross team
 communications and management

 Before using Sonar metrics collected via shell scripts and excel




                                             STEER THE SUPER TANKER
EMPIRICAL EVIDENCE
 Anecdotally, team felt complexity was rising and velocity
 slowing.

 Culture of refactoring, rationalising and retiring code.
 – Was strategy working?


 Following graph showed unexpected level of problem.




                                            STEER THE SUPER TANKER
EMPIRICAL EVIDENCE
                     Code has
                     consistently
                     average complexity
                     per method.

       There is simply
       more code
       being written
       every release.



       Analysis of code
       found
       duplication at
       the functional
       rather than
       code level




                                          STEER THE SUPER TANKER
EMPIRICAL EVIDENCE
 Team’s ‘gut feeling’ was right in that there was a problem.

 Gathering the metrics provided empirical evidence of the issue.

 Complexity growth rate had been underestimated.

 Continually collecting these metrics might not have stopped team
 creating the situation.

 This evidence was enough to justify a significant (12 man weeks)
 investment in refactoring.




                                                STEER THE SUPER TANKER
A LIGHTER TOUCH
 Architects and technical leads often have a
 broad remit across several projects.

 Tools like Sonar can support the architect’s
 ability to pragmatically monitor large code
 bases without intrusive working practices.




                                 STEER THE SUPER TANKER
A LIGHTER TOUCH
 Small (2 man) team tasked with phased approached to correction:
 – Capture existing behaviour through automated tests (current coverage high
   but not high enough).
 – Implement a replacement system for several duplicated modules in an
   existing system.


 No budget for manual testing – automated tests must be fit for
 purpose.

 Very limited budget for technical governance and project
 management.

 Key metrics monitored several times a week through Sonar.

 Augmented by code review and design walk though.
                                            STEER THE SUPER TANKER
A LIGHTER TOUCH

        Start of exercise,
        75.8k loc in main
        system


        Objective:
        Reduce
        duplication
        (and therefore
        loc), improve
        quality




                             STEER THE SUPER TANKER
A LIGHTER TOUCH
              Progress
              continually
              monitored

                    End of exercise,
                    main system 65k
                    loc
                    Average
                    complexity /
                    method reduced


       Functionality
       extracted into new
       module 4.3k loc –
       5k redundant code
       removed




                                       STEER THE SUPER TANKER
A LIGHTER TOUCH
       Metrics as we
       saw them evolve

    Total complexity
    increases slightly –
    artefact of way of       Rules
    working                  compliance
                             increases


                           Something
                           worrying
                           happening to
                           complexity /
                           method




                                          STEER THE SUPER TANKER
FALSE POSITIVE
 Tools and tool users are fallible. They can supply false positives
 that create noise for the project and waste resources investigating.

 Metrics collected continuously using sonar.

 Technical Architect:
 – Inspected metrics several times a week.
 – Observed standup and burndown.
 – Reviewed automated acceptance tests.
 – Collaborated in design exercises on whiteboard
 – Delegated technical implementation to team

                                                    HIT THE ICEBERG
FALSE POSITIVE


 Development suspended for a week when
 complexity per method metric went red and
 correction not executed.

 Detailed code review initiated.




                                     HIT THE ICEBERG
FALSE POSITIVE
           Original module,
           complexity / method okay,
           coverage good




                        New module, complexity /
                        method worse, coverage low




                                                     HIT THE ICEBERG
FALSE POSITIVE

 Drilled down using sonar to identify where higher than
 expected complexity was originating from.

 Code then inspected.

 False alarm:
 – Sonar complexity algorithm rated JAX-RS method
   signatures as high, nothing in dev team control.
 – Other methods were part of automated test controls
   which were verbose in order to demonstrate purpose.


                                               HIT THE ICEBERG
FALSE POSITIVE


                            Cluster of
                            complex
                            packages
                                         Test utility
                  Test
                  utility


             JAX-RS resources




                                                        HIT THE ICEBERG
CASTING A WIDE NET
 Powerful visualisation tools coupled with an array of integrated metrics
 can allow large code basis to be monitored.

 A large, highly volatile, code base.
 Geographically disparate team, spread across several timezones.

 How can technical authorities police such a code base without
 velocity crushing (and probably ineffective) prescriptive processes or
 a code review team almost as big as the development team?




                                                  STEER THE SUPER TANKER
CASTING A WIDE NET
                      A warning to
                      investigate further

Something bad
happens to
coverage in one
module
                  Duplication starts
                  to rise




                                STEER THE SUPER TANKER
CASTING A WIDE NET
                One package in
                module is being
                worked on

Complexity /
                     LOC and
method rising
                     duplicatio
rapidly
                     n
                     increasing
        Flagged up whilst
        development is
        ongoing, not later
        in process




                                  STEER THE SUPER TANKER
CASTING A WIDE NET



             New module
             appears,
             unusually high
             avg complexity /
             method




                                STEER THE SUPER TANKER
CASTING A WIDE NET

      Complexity /
      method average
      drops (as code
      size increases, bad
      code still there)

               Duplication rises




                                   STEER THE SUPER TANKER
HOW WE DO CONTINUOUS INSPECTION
 Build system established in Sprint Zero
 – Jenkins CI
 – Sonar

 Rules (PMD, Checkstyle) configured to use those
 defined for use on this site




                                   STEER THE SUPER TANKER
HOW WE USE CONTINOUS INSPECTION
 Daily sonar build (4am)
 triggered by Jenkins
 Runs unit and integration
 tests
 Dashboard printed out and
 reviewed by team at end of
 stand-up
 Anything ‘unusual’
 discussed and actions taken
 to investigate / correct
 Includes violations,
 coverage, complexity, any
 unexpected change
 Continuous inspection,
 continuous improvement

                               STEER THE SUPER TANKER
CONCLUSIONS
 NEGATIVE EXPERIENCES CAN BE CATEGORISED AS:
 – Being distracted then satisfied by the superficial
 – Using the metrics in isolation to decide whether
   something is good or bad, high or low quality, true or
   false

 Everybody loves an infographic, be aware they are often
 misunderstood and even knowingly abused

 Continuous Inspection is a great tool for anybody involved
 with the project willing to invest a little time understanding
 and questioning what they see

                                            STEER THE SUPER TANKER
CONCLUSIONS
 Can Continuous Inspection enable developers to steer the
 super tanker?
 – Or will they still hit the iceberg,
 – Or even hit the iceberg because of the feedback from
   inspection?

 Continuous Inspection is a valuable tool that if used with care
 can make a difference

 Must recognise that it rarely delivers the full story, just an
 indication

 Be wary of wider dissemination of attractive data


                                              STEER THE SUPER TANKER
YOUR TURN!




                                                       /
    Image found http://www.flickr.com/photos/ell-r-brown
STRUCTURE OF NEXT SECTION
 Point everybody at useful resources (metric definitions etc)
 Get everybody accessing the Sonar server
 Five minute tour of the relevant features
 In small groups or as individuals use the tool to draw some
 positive and negative conclusions about the code base

 COLLATE OUR CONCLUSIONS AND DISCUSS:
 – Do we feel the conclusions have merit?
 – Are they superficial or of real impact on quality?
 – How could we correct, control or even prevent in future?
 – What negative implications (e.g. gaming) could this have?


                                           STEER THE SUPER TANKER
USEFUL RESOURCES
 SONAR INSTANCE:
 – http://192.168.x.x:9000

 SONAR METRIC DEFINITIONS:
 – http://docs.codehaus.org/display/SONAR/Metric+definitions

 SOURCE BASE WE ARE ANALYSING:
 – https://jira.springsource.org/browse/AMQP
 – http://github.com/SpringSource/spring-amqp

 OR (MORE COMPLEX):
 – http://nemo.sonarsource.org/dashboard/index/50544


                                        STEER THE SUPER TANKER
COLLATE
 RULES
 – Three minutes maximum each per point (we can come
   back to you)

 – Please let the speaker describe their point in full before we
   discuss and analyse

 – Presenter will try and keep analysis of any one point to a
   sensible length, shout if he forgets!




                                           STEER THE SUPER TANKER
http://www.valtech.co.uk

http://blog.valtech.co.uk

http://twitter.com/valtech

http://www.slideshare.net/valtechuk

Mais conteúdo relacionado

Mais procurados

RSA 2021 Navigating the Unknowable: Resilience through Security Chaos Enginee...
RSA 2021 Navigating the Unknowable: Resilience through Security Chaos Enginee...RSA 2021 Navigating the Unknowable: Resilience through Security Chaos Enginee...
RSA 2021 Navigating the Unknowable: Resilience through Security Chaos Enginee...Aaron Rinehart
 
OWASP AppSec Global 2019 Security & Chaos Engineering
OWASP AppSec Global 2019 Security & Chaos EngineeringOWASP AppSec Global 2019 Security & Chaos Engineering
OWASP AppSec Global 2019 Security & Chaos EngineeringAaron Rinehart
 
Pivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer TestingPivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer Testingguestc8adce
 
RSA Conference APJ 2019 DevSecOps Days Security Chaos Engineering
RSA Conference APJ 2019 DevSecOps Days Security Chaos EngineeringRSA Conference APJ 2019 DevSecOps Days Security Chaos Engineering
RSA Conference APJ 2019 DevSecOps Days Security Chaos EngineeringAaron Rinehart
 
AllTheTalks Security Chaos Engineering
AllTheTalks Security Chaos Engineering AllTheTalks Security Chaos Engineering
AllTheTalks Security Chaos Engineering Aaron Rinehart
 
SystemVerilog Assertions (SVA) in the Design/Verification Process
SystemVerilog Assertions (SVA) in the Design/Verification ProcessSystemVerilog Assertions (SVA) in the Design/Verification Process
SystemVerilog Assertions (SVA) in the Design/Verification ProcessDVClub
 
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdTowards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdNaresh Jain
 
HealthConDX Virtual Summit 2021 - How Security Chaos Engineering is Changing ...
HealthConDX Virtual Summit 2021 - How Security Chaos Engineering is Changing ...HealthConDX Virtual Summit 2021 - How Security Chaos Engineering is Changing ...
HealthConDX Virtual Summit 2021 - How Security Chaos Engineering is Changing ...Aaron Rinehart
 
Agile Infra @AgileRoots 2009
Agile Infra @AgileRoots 2009Agile Infra @AgileRoots 2009
Agile Infra @AgileRoots 2009Andrew Shafer
 
Rebooting Software Development - OWASP AppSecUSA
Rebooting Software Development - OWASP AppSecUSA Rebooting Software Development - OWASP AppSecUSA
Rebooting Software Development - OWASP AppSecUSA Nick Galbreath
 
Chaos engineering for cloud native security
Chaos engineering for cloud native securityChaos engineering for cloud native security
Chaos engineering for cloud native securityKennedy
 
AllDayDevOps Security Chaos Engineering 2019
AllDayDevOps Security Chaos Engineering 2019 AllDayDevOps Security Chaos Engineering 2019
AllDayDevOps Security Chaos Engineering 2019 Aaron Rinehart
 
Craft 2019 - Security Chaos Engineering - Security Precognition
Craft 2019 - Security Chaos Engineering - Security PrecognitionCraft 2019 - Security Chaos Engineering - Security Precognition
Craft 2019 - Security Chaos Engineering - Security PrecognitionAaron Rinehart
 
Blameless Retrospectives in DevSecOps (at Global Healthcare Giants)
Blameless Retrospectives in DevSecOps (at Global Healthcare Giants)Blameless Retrospectives in DevSecOps (at Global Healthcare Giants)
Blameless Retrospectives in DevSecOps (at Global Healthcare Giants)DJ Schleen
 
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"Aaron Rinehart
 
Agile Infrastructure Velocity 09
Agile Infrastructure Velocity 09Agile Infrastructure Velocity 09
Agile Infrastructure Velocity 09Andrew Shafer
 
Speeding Up Secure Software Development
Speeding Up Secure Software DevelopmentSpeeding Up Secure Software Development
Speeding Up Secure Software DevelopmentUlisses Albuquerque
 
Innoslate 101: A Webinar for New Users
Innoslate 101: A Webinar for New Users Innoslate 101: A Webinar for New Users
Innoslate 101: A Webinar for New Users SarahCraig7
 
What's New in Innoslate 4.4?
What's New in Innoslate 4.4?What's New in Innoslate 4.4?
What's New in Innoslate 4.4?SarahCraig7
 
Webinar Slides: Using Innoslate for Program Management
Webinar Slides: Using Innoslate for Program Management Webinar Slides: Using Innoslate for Program Management
Webinar Slides: Using Innoslate for Program Management SarahCraig7
 

Mais procurados (20)

RSA 2021 Navigating the Unknowable: Resilience through Security Chaos Enginee...
RSA 2021 Navigating the Unknowable: Resilience through Security Chaos Enginee...RSA 2021 Navigating the Unknowable: Resilience through Security Chaos Enginee...
RSA 2021 Navigating the Unknowable: Resilience through Security Chaos Enginee...
 
OWASP AppSec Global 2019 Security & Chaos Engineering
OWASP AppSec Global 2019 Security & Chaos EngineeringOWASP AppSec Global 2019 Security & Chaos Engineering
OWASP AppSec Global 2019 Security & Chaos Engineering
 
Pivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer TestingPivotal Labs Open View Presentation Quality Assurance And Developer Testing
Pivotal Labs Open View Presentation Quality Assurance And Developer Testing
 
RSA Conference APJ 2019 DevSecOps Days Security Chaos Engineering
RSA Conference APJ 2019 DevSecOps Days Security Chaos EngineeringRSA Conference APJ 2019 DevSecOps Days Security Chaos Engineering
RSA Conference APJ 2019 DevSecOps Days Security Chaos Engineering
 
AllTheTalks Security Chaos Engineering
AllTheTalks Security Chaos Engineering AllTheTalks Security Chaos Engineering
AllTheTalks Security Chaos Engineering
 
SystemVerilog Assertions (SVA) in the Design/Verification Process
SystemVerilog Assertions (SVA) in the Design/Verification ProcessSystemVerilog Assertions (SVA) in the Design/Verification Process
SystemVerilog Assertions (SVA) in the Design/Verification Process
 
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdTowards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
 
HealthConDX Virtual Summit 2021 - How Security Chaos Engineering is Changing ...
HealthConDX Virtual Summit 2021 - How Security Chaos Engineering is Changing ...HealthConDX Virtual Summit 2021 - How Security Chaos Engineering is Changing ...
HealthConDX Virtual Summit 2021 - How Security Chaos Engineering is Changing ...
 
Agile Infra @AgileRoots 2009
Agile Infra @AgileRoots 2009Agile Infra @AgileRoots 2009
Agile Infra @AgileRoots 2009
 
Rebooting Software Development - OWASP AppSecUSA
Rebooting Software Development - OWASP AppSecUSA Rebooting Software Development - OWASP AppSecUSA
Rebooting Software Development - OWASP AppSecUSA
 
Chaos engineering for cloud native security
Chaos engineering for cloud native securityChaos engineering for cloud native security
Chaos engineering for cloud native security
 
AllDayDevOps Security Chaos Engineering 2019
AllDayDevOps Security Chaos Engineering 2019 AllDayDevOps Security Chaos Engineering 2019
AllDayDevOps Security Chaos Engineering 2019
 
Craft 2019 - Security Chaos Engineering - Security Precognition
Craft 2019 - Security Chaos Engineering - Security PrecognitionCraft 2019 - Security Chaos Engineering - Security Precognition
Craft 2019 - Security Chaos Engineering - Security Precognition
 
Blameless Retrospectives in DevSecOps (at Global Healthcare Giants)
Blameless Retrospectives in DevSecOps (at Global Healthcare Giants)Blameless Retrospectives in DevSecOps (at Global Healthcare Giants)
Blameless Retrospectives in DevSecOps (at Global Healthcare Giants)
 
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
 
Agile Infrastructure Velocity 09
Agile Infrastructure Velocity 09Agile Infrastructure Velocity 09
Agile Infrastructure Velocity 09
 
Speeding Up Secure Software Development
Speeding Up Secure Software DevelopmentSpeeding Up Secure Software Development
Speeding Up Secure Software Development
 
Innoslate 101: A Webinar for New Users
Innoslate 101: A Webinar for New Users Innoslate 101: A Webinar for New Users
Innoslate 101: A Webinar for New Users
 
What's New in Innoslate 4.4?
What's New in Innoslate 4.4?What's New in Innoslate 4.4?
What's New in Innoslate 4.4?
 
Webinar Slides: Using Innoslate for Program Management
Webinar Slides: Using Innoslate for Program Management Webinar Slides: Using Innoslate for Program Management
Webinar Slides: Using Innoslate for Program Management
 

Destaque

Gas detect. brochure may 2013 1
Gas detect. brochure may 2013 1Gas detect. brochure may 2013 1
Gas detect. brochure may 2013 1a1-cbiss
 
MarengI2012
MarengI2012 MarengI2012
MarengI2012 diezara
 
“Neighborhood Trees Summer Inspectors: Social Pressure for Tree Health” by Su...
“Neighborhood Trees Summer Inspectors: Social Pressure for Tree Health” by Su...“Neighborhood Trees Summer Inspectors: Social Pressure for Tree Health” by Su...
“Neighborhood Trees Summer Inspectors: Social Pressure for Tree Health” by Su...Rails-To-Trails Conservancy
 
Communication on boardship
Communication on boardshipCommunication on boardship
Communication on boardshipjalal2010
 
P&I Klübü ve Özelli̇kleri̇
P&I Klübü ve Özelli̇kleri̇P&I Klübü ve Özelli̇kleri̇
P&I Klübü ve Özelli̇kleri̇berkayerd
 
Matemati̇ksel seyi̇rler
Matemati̇ksel seyi̇rlerMatemati̇ksel seyi̇rler
Matemati̇ksel seyi̇rlerbgulcen
 
Berth,Yard & Vessel Planning
Berth,Yard & Vessel PlanningBerth,Yard & Vessel Planning
Berth,Yard & Vessel PlanningPaco Rojo
 
DOES16 London - Jonathan Smart - From Oil Tankers to Speedboats
DOES16 London - Jonathan Smart - From Oil Tankers to SpeedboatsDOES16 London - Jonathan Smart - From Oil Tankers to Speedboats
DOES16 London - Jonathan Smart - From Oil Tankers to SpeedboatsGene Kim
 
Oil Tanker
Oil TankerOil Tanker
Oil Tankerassip
 
Ocimf annual report_2013
Ocimf annual report_2013Ocimf annual report_2013
Ocimf annual report_2013OCIMF OVID
 
MC-CATALOGUE 100616
MC-CATALOGUE 100616MC-CATALOGUE 100616
MC-CATALOGUE 100616Rhesa Lessey
 
2.di̇nleme türleri̇-ve-etki̇n-di̇nleme
2.di̇nleme türleri̇-ve-etki̇n-di̇nleme2.di̇nleme türleri̇-ve-etki̇n-di̇nleme
2.di̇nleme türleri̇-ve-etki̇n-di̇nlemekobikobi
 

Destaque (20)

TRANSAS ECDIS CERT
TRANSAS ECDIS CERTTRANSAS ECDIS CERT
TRANSAS ECDIS CERT
 
30 business i environment i society mba 2016
30 business i environment i society mba 201630 business i environment i society mba 2016
30 business i environment i society mba 2016
 
Gas detect. brochure may 2013 1
Gas detect. brochure may 2013 1Gas detect. brochure may 2013 1
Gas detect. brochure may 2013 1
 
MarengI2012
MarengI2012 MarengI2012
MarengI2012
 
“Neighborhood Trees Summer Inspectors: Social Pressure for Tree Health” by Su...
“Neighborhood Trees Summer Inspectors: Social Pressure for Tree Health” by Su...“Neighborhood Trees Summer Inspectors: Social Pressure for Tree Health” by Su...
“Neighborhood Trees Summer Inspectors: Social Pressure for Tree Health” by Su...
 
Maritime ICT
Maritime ICTMaritime ICT
Maritime ICT
 
Communication on boardship
Communication on boardshipCommunication on boardship
Communication on boardship
 
Tankeri
TankeriTankeri
Tankeri
 
P&I Klübü ve Özelli̇kleri̇
P&I Klübü ve Özelli̇kleri̇P&I Klübü ve Özelli̇kleri̇
P&I Klübü ve Özelli̇kleri̇
 
Matemati̇ksel seyi̇rler
Matemati̇ksel seyi̇rlerMatemati̇ksel seyi̇rler
Matemati̇ksel seyi̇rler
 
Berth,Yard & Vessel Planning
Berth,Yard & Vessel PlanningBerth,Yard & Vessel Planning
Berth,Yard & Vessel Planning
 
DOES16 London - Jonathan Smart - From Oil Tankers to Speedboats
DOES16 London - Jonathan Smart - From Oil Tankers to SpeedboatsDOES16 London - Jonathan Smart - From Oil Tankers to Speedboats
DOES16 London - Jonathan Smart - From Oil Tankers to Speedboats
 
Oil Tanker
Oil TankerOil Tanker
Oil Tanker
 
Ocimf annual report_2013
Ocimf annual report_2013Ocimf annual report_2013
Ocimf annual report_2013
 
Tanker Update 01 2015
Tanker Update 01 2015Tanker Update 01 2015
Tanker Update 01 2015
 
Gemi İnşaatı - 04 - Omurga, Dip, Döşek Yapısı
Gemi İnşaatı - 04 - Omurga, Dip, Döşek YapısıGemi İnşaatı - 04 - Omurga, Dip, Döşek Yapısı
Gemi İnşaatı - 04 - Omurga, Dip, Döşek Yapısı
 
Oil tankers
Oil tankersOil tankers
Oil tankers
 
MC-CATALOGUE 100616
MC-CATALOGUE 100616MC-CATALOGUE 100616
MC-CATALOGUE 100616
 
Tanker
TankerTanker
Tanker
 
2.di̇nleme türleri̇-ve-etki̇n-di̇nleme
2.di̇nleme türleri̇-ve-etki̇n-di̇nleme2.di̇nleme türleri̇-ve-etki̇n-di̇nleme
2.di̇nleme türleri̇-ve-etki̇n-di̇nleme
 

Semelhante a Steer and/or sink the supertanker by Andrew Rendell

DockerCon SF 2019 - TDD is Dead
DockerCon SF 2019 - TDD is DeadDockerCon SF 2019 - TDD is Dead
DockerCon SF 2019 - TDD is DeadKevin Crawley
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018Christophe Rochefolle
 
Extreme Programming Talk Wise Consulting Www.Talkwiseconsulting
Extreme  Programming    Talk Wise  Consulting   Www.TalkwiseconsultingExtreme  Programming    Talk Wise  Consulting   Www.Talkwiseconsulting
Extreme Programming Talk Wise Consulting Www.Talkwiseconsultingtalkwiseone
 
Extreme programming talk wise consulting - www.talkwiseconsulting
Extreme programming   talk wise consulting - www.talkwiseconsultingExtreme programming   talk wise consulting - www.talkwiseconsulting
Extreme programming talk wise consulting - www.talkwiseconsultingtalkwiseone
 
Continuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsContinuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsMike Bowler
 
Smart Testing Drives Seamless Product Technology Migration
Smart Testing Drives Seamless Product Technology MigrationSmart Testing Drives Seamless Product Technology Migration
Smart Testing Drives Seamless Product Technology MigrationSTAG Software Private Limited
 
How to Develop and Simulate Models with No Coding Experience
How to Develop and Simulate Models with No Coding ExperienceHow to Develop and Simulate Models with No Coding Experience
How to Develop and Simulate Models with No Coding ExperienceElizabeth Steiner
 
Performance Continuous Integration
Performance Continuous IntegrationPerformance Continuous Integration
Performance Continuous IntegrationAlmudena Vivanco
 
Continuous Testing.pptx
Continuous Testing.pptxContinuous Testing.pptx
Continuous Testing.pptxShripadH1
 
Software development practices & Infrastructure as Code - how well do they wo...
Software development practices & Infrastructure as Code - how well do they wo...Software development practices & Infrastructure as Code - how well do they wo...
Software development practices & Infrastructure as Code - how well do they wo...Equal Experts
 
2009 05 21 The Lean Startup At SIPA
2009 05 21 The Lean Startup At SIPA2009 05 21 The Lean Startup At SIPA
2009 05 21 The Lean Startup At SIPAEric Ries
 
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...Eric Ries
 
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Juraj Martinka
 
Hazen michael
Hazen michaelHazen michael
Hazen michaelNASAPMC
 
SourceWarp AST 2023.pdf
SourceWarp AST 2023.pdfSourceWarp AST 2023.pdf
SourceWarp AST 2023.pdfJulian Thome
 
2009 06 01 The Lean Startup Texas Edition
2009 06 01 The Lean Startup Texas Edition2009 06 01 The Lean Startup Texas Edition
2009 06 01 The Lean Startup Texas EditionEric Ries
 
Machine programming
Machine programmingMachine programming
Machine programmingDESMOND YUEN
 
Deploying more technology to shift from agility to anti-fragility
Deploying more technology to shift from agility to anti-fragilityDeploying more technology to shift from agility to anti-fragility
Deploying more technology to shift from agility to anti-fragilitySpyros Lambrinidis
 
2009_06_08 The Lean Startup Tokyo edition
2009_06_08 The Lean Startup Tokyo edition2009_06_08 The Lean Startup Tokyo edition
2009_06_08 The Lean Startup Tokyo editionEric Ries
 
Chaos Engineering: Why the World Needs More Resilient Systems
Chaos Engineering: Why the World Needs More Resilient SystemsChaos Engineering: Why the World Needs More Resilient Systems
Chaos Engineering: Why the World Needs More Resilient SystemsC4Media
 

Semelhante a Steer and/or sink the supertanker by Andrew Rendell (20)

DockerCon SF 2019 - TDD is Dead
DockerCon SF 2019 - TDD is DeadDockerCon SF 2019 - TDD is Dead
DockerCon SF 2019 - TDD is Dead
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
 
Extreme Programming Talk Wise Consulting Www.Talkwiseconsulting
Extreme  Programming    Talk Wise  Consulting   Www.TalkwiseconsultingExtreme  Programming    Talk Wise  Consulting   Www.Talkwiseconsulting
Extreme Programming Talk Wise Consulting Www.Talkwiseconsulting
 
Extreme programming talk wise consulting - www.talkwiseconsulting
Extreme programming   talk wise consulting - www.talkwiseconsultingExtreme programming   talk wise consulting - www.talkwiseconsulting
Extreme programming talk wise consulting - www.talkwiseconsulting
 
Continuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsContinuous Delivery for Agile Teams
Continuous Delivery for Agile Teams
 
Smart Testing Drives Seamless Product Technology Migration
Smart Testing Drives Seamless Product Technology MigrationSmart Testing Drives Seamless Product Technology Migration
Smart Testing Drives Seamless Product Technology Migration
 
How to Develop and Simulate Models with No Coding Experience
How to Develop and Simulate Models with No Coding ExperienceHow to Develop and Simulate Models with No Coding Experience
How to Develop and Simulate Models with No Coding Experience
 
Performance Continuous Integration
Performance Continuous IntegrationPerformance Continuous Integration
Performance Continuous Integration
 
Continuous Testing.pptx
Continuous Testing.pptxContinuous Testing.pptx
Continuous Testing.pptx
 
Software development practices & Infrastructure as Code - how well do they wo...
Software development practices & Infrastructure as Code - how well do they wo...Software development practices & Infrastructure as Code - how well do they wo...
Software development practices & Infrastructure as Code - how well do they wo...
 
2009 05 21 The Lean Startup At SIPA
2009 05 21 The Lean Startup At SIPA2009 05 21 The Lean Startup At SIPA
2009 05 21 The Lean Startup At SIPA
 
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...
Eric Ries Lean Startup Presentation For Web 2.0 Expo April 1 2009 A Disciplin...
 
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
 
Hazen michael
Hazen michaelHazen michael
Hazen michael
 
SourceWarp AST 2023.pdf
SourceWarp AST 2023.pdfSourceWarp AST 2023.pdf
SourceWarp AST 2023.pdf
 
2009 06 01 The Lean Startup Texas Edition
2009 06 01 The Lean Startup Texas Edition2009 06 01 The Lean Startup Texas Edition
2009 06 01 The Lean Startup Texas Edition
 
Machine programming
Machine programmingMachine programming
Machine programming
 
Deploying more technology to shift from agility to anti-fragility
Deploying more technology to shift from agility to anti-fragilityDeploying more technology to shift from agility to anti-fragility
Deploying more technology to shift from agility to anti-fragility
 
2009_06_08 The Lean Startup Tokyo edition
2009_06_08 The Lean Startup Tokyo edition2009_06_08 The Lean Startup Tokyo edition
2009_06_08 The Lean Startup Tokyo edition
 
Chaos Engineering: Why the World Needs More Resilient Systems
Chaos Engineering: Why the World Needs More Resilient SystemsChaos Engineering: Why the World Needs More Resilient Systems
Chaos Engineering: Why the World Needs More Resilient Systems
 

Mais de Valtech UK

Get to know your users using Lean UX
Get to know your users using Lean UXGet to know your users using Lean UX
Get to know your users using Lean UXValtech UK
 
The Art of Visualising Software - Simon Brown
The Art of Visualising Software - Simon BrownThe Art of Visualising Software - Simon Brown
The Art of Visualising Software - Simon BrownValtech UK
 
Get to know your users
Get to know your users Get to know your users
Get to know your users Valtech UK
 
LeanUX and Agile in the Public Sector
LeanUX and Agile in the Public SectorLeanUX and Agile in the Public Sector
LeanUX and Agile in the Public SectorValtech UK
 
Transforming nhs choices using agile and lean ux agile manc
Transforming nhs choices using agile and lean ux agile mancTransforming nhs choices using agile and lean ux agile manc
Transforming nhs choices using agile and lean ux agile mancValtech UK
 
Digital Inclusion in the Public Sector
Digital Inclusion in the Public SectorDigital Inclusion in the Public Sector
Digital Inclusion in the Public SectorValtech UK
 
Presentation compressed
Presentation compressedPresentation compressed
Presentation compressedValtech UK
 
The Mobile Landscape - Do you really need an app?
The Mobile Landscape - Do you really need an app?The Mobile Landscape - Do you really need an app?
The Mobile Landscape - Do you really need an app?Valtech UK
 
Modern Digital Design: The power of Responsive Design
Modern Digital Design: The power of Responsive DesignModern Digital Design: The power of Responsive Design
Modern Digital Design: The power of Responsive DesignValtech UK
 
White Paper: "Designing Around People"
White Paper: "Designing Around People" White Paper: "Designing Around People"
White Paper: "Designing Around People" Valtech UK
 
Simplifying Facebook: Designing Around People
Simplifying Facebook: Designing Around PeopleSimplifying Facebook: Designing Around People
Simplifying Facebook: Designing Around PeopleValtech UK
 
The mobile landscape - Do you really need an app?
The mobile landscape - Do you really need an app?The mobile landscape - Do you really need an app?
The mobile landscape - Do you really need an app?Valtech UK
 
An Introduction to Responsive Design
An Introduction to Responsive DesignAn Introduction to Responsive Design
An Introduction to Responsive DesignValtech UK
 
Customer case - IC companys
Customer case - IC companysCustomer case - IC companys
Customer case - IC companysValtech UK
 
Part 1: "Making Agile Work" Webinar Series: Inception
Part 1: "Making Agile Work" Webinar Series: InceptionPart 1: "Making Agile Work" Webinar Series: Inception
Part 1: "Making Agile Work" Webinar Series: InceptionValtech UK
 
Experience Report: FLIGHTGLOBAL.COM
Experience Report: FLIGHTGLOBAL.COMExperience Report: FLIGHTGLOBAL.COM
Experience Report: FLIGHTGLOBAL.COMValtech UK
 
Agile UX integration
Agile UX integrationAgile UX integration
Agile UX integrationValtech UK
 
Agile in highly regulated environments
Agile in highly regulated environmentsAgile in highly regulated environments
Agile in highly regulated environmentsValtech UK
 
Using CFD, SPC and Kanban on UK GOV IT projects
Using CFD, SPC and Kanban on UK GOV IT projects Using CFD, SPC and Kanban on UK GOV IT projects
Using CFD, SPC and Kanban on UK GOV IT projects Valtech UK
 
Adapting agile to the entreprise
Adapting agile to the entreprise Adapting agile to the entreprise
Adapting agile to the entreprise Valtech UK
 

Mais de Valtech UK (20)

Get to know your users using Lean UX
Get to know your users using Lean UXGet to know your users using Lean UX
Get to know your users using Lean UX
 
The Art of Visualising Software - Simon Brown
The Art of Visualising Software - Simon BrownThe Art of Visualising Software - Simon Brown
The Art of Visualising Software - Simon Brown
 
Get to know your users
Get to know your users Get to know your users
Get to know your users
 
LeanUX and Agile in the Public Sector
LeanUX and Agile in the Public SectorLeanUX and Agile in the Public Sector
LeanUX and Agile in the Public Sector
 
Transforming nhs choices using agile and lean ux agile manc
Transforming nhs choices using agile and lean ux agile mancTransforming nhs choices using agile and lean ux agile manc
Transforming nhs choices using agile and lean ux agile manc
 
Digital Inclusion in the Public Sector
Digital Inclusion in the Public SectorDigital Inclusion in the Public Sector
Digital Inclusion in the Public Sector
 
Presentation compressed
Presentation compressedPresentation compressed
Presentation compressed
 
The Mobile Landscape - Do you really need an app?
The Mobile Landscape - Do you really need an app?The Mobile Landscape - Do you really need an app?
The Mobile Landscape - Do you really need an app?
 
Modern Digital Design: The power of Responsive Design
Modern Digital Design: The power of Responsive DesignModern Digital Design: The power of Responsive Design
Modern Digital Design: The power of Responsive Design
 
White Paper: "Designing Around People"
White Paper: "Designing Around People" White Paper: "Designing Around People"
White Paper: "Designing Around People"
 
Simplifying Facebook: Designing Around People
Simplifying Facebook: Designing Around PeopleSimplifying Facebook: Designing Around People
Simplifying Facebook: Designing Around People
 
The mobile landscape - Do you really need an app?
The mobile landscape - Do you really need an app?The mobile landscape - Do you really need an app?
The mobile landscape - Do you really need an app?
 
An Introduction to Responsive Design
An Introduction to Responsive DesignAn Introduction to Responsive Design
An Introduction to Responsive Design
 
Customer case - IC companys
Customer case - IC companysCustomer case - IC companys
Customer case - IC companys
 
Part 1: "Making Agile Work" Webinar Series: Inception
Part 1: "Making Agile Work" Webinar Series: InceptionPart 1: "Making Agile Work" Webinar Series: Inception
Part 1: "Making Agile Work" Webinar Series: Inception
 
Experience Report: FLIGHTGLOBAL.COM
Experience Report: FLIGHTGLOBAL.COMExperience Report: FLIGHTGLOBAL.COM
Experience Report: FLIGHTGLOBAL.COM
 
Agile UX integration
Agile UX integrationAgile UX integration
Agile UX integration
 
Agile in highly regulated environments
Agile in highly regulated environmentsAgile in highly regulated environments
Agile in highly regulated environments
 
Using CFD, SPC and Kanban on UK GOV IT projects
Using CFD, SPC and Kanban on UK GOV IT projects Using CFD, SPC and Kanban on UK GOV IT projects
Using CFD, SPC and Kanban on UK GOV IT projects
 
Adapting agile to the entreprise
Adapting agile to the entreprise Adapting agile to the entreprise
Adapting agile to the entreprise
 

Último

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 

Último (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

Steer and/or sink the supertanker by Andrew Rendell

  • 1. Continuous source code analysis to help steer the super tanker and / or hit the iceberg ANDREW RENDELL, PRINCIPAL CONSULTANT Image found on: ttp://www.flickr.com/photos/winkyintheuk/ .
  • 2. INTRODUCTION What is Continuous Inspection? Directing software development can feel like trying to steer a super tanker. – This practice might help you succeed, or... – You might still hit the iceberg. – You might even hit the iceberg because of this practice!
  • 3. INTRODUCTION Agile techniques focus on retrospection and reflection Gathering metrics on source code is nothing new Continuous Inspection has in theory been possible for many years but gaining momentum recently, possibly because of new, easy to use tools such as Maven and Sonar New focus on temporal aspect of data (4th dimension) and web based graphical analysis
  • 4. CONTINUOUS INSPECTION OF EVOLVING SOFTWARE CAN... Give developers and architects an incredible insight into real software quality as it changes Get the feedback required to make a development team adaptive to real issues Allow the technical architect to apply lighter direction empowering the team and helping it become self-governing Allow clients, sponsors and managers to explore and investigate their codebase through visualisation tools
  • 5. CONTINUOUS INSPECTION OF EVOLVING SOFTWARE CAN... Allow clients, sponsors and managers to explore and investigate their codebase through visualisation tools Facilitate an understanding of underlying trends of development quality and the consequences of actions on that code base Allow architects and developers to assimilate large swathes of code then drill down to specific areas in seconds rather than spending hours wading through generated data and code reviews
  • 6. It might be possible to STEER THE SUPER TANKER* that is non-trivial software development * I know it’s not a super tanker but it is very cool Image found on: http://www.flickr.com/photos/mikebaird /
  • 7. CONTINUOUS INSPECTION OF EVOLVING SOFTWARE CAN... Supply developers and architects with a surprising amount of misinformation Provide metrics which can be abused by developers and managers alike to prove pet theories or disprove unpopular ideas The act of looking at a metric often results in conscious or subconscious gaming of that metric for short term gain with no real benefit other than the temporarily improved remuneration or status
  • 8. CONTINUOUS INSPECTION OF EVOLVING SOFTWARE CAN... Well meaning, intelligent individuals will become incredibly excited by the presentation of an attractive infographic whilst having zero understanding of what it is they are seeing Architects and developers become obsessed by a gradient on a graph or the exact hue of a pulsating ball and forget about working software.
  • 9. The development team will STILL HIT THE ICEBERG of software entropy Image found http://www.flickr.com/photos/alanvernon/
  • 10. SESSION STRUCTURE Case studies – A number of experiences from various projects which highlight the positive and negative of Continuous Inspection HANDS ON TUTORIAL – Using an interactive tool (Sonar) to investigate a code base
  • 11. OUR EXPERIENCES OF CONTINUOUS INSPECTION Image found http://www.flickr.com/photos/83508181@N00 /
  • 12. FINDING THE TECHNICAL DEBT With a large legacy application, can these tools help us locate the areas of high debt? A large and relatively opaque code base. With high volatility (i.e. high number of pushes to repository). Geographically disparate team, knowledge spread across several time zones. Attempt to increase velocity and reduce development, test and deployment costs by reducing technical debt and increasing test coverage. With almost 100k lines of code, where do you start? STEER THE SUPER TANKER
  • 13. FINDING THE TECHNICAL DEBT SEVERAL SOURCES OF DATA – Human knowledge, which component is important and troublesome? – Source control statistics, which files are amended the most? – Issue tracking, can we identify areas with most defects or changes? – Static source code analysis metrics augmented by test coverage STEER THE SUPER TANKER
  • 14. FINDING THE TECHNICAL DEBT Only real candidate STEER THE SUPER TANKER
  • 15. FINDING THE TECHNICAL DEBT This is where we start STEER THE SUPER TANKER
  • 16. FINDING THE TECHNICAL DEBT Not low hanging fruit, those are genuinely rotten Sonar report from previous screen created automatically every morning by CI Very little effort to check Means that technical leads receive visual feedback that corrective action are being taken STEER THE SUPER TANKER
  • 17. GAMING THE METRIC As soon as you focus on a metric, its likely to be gamed with unexpected results. A large legacy code base with a team spread around the world. We know we have too much technical debt because: – Simple changes take too long – The teams spend almost all their time fire fighting in production – Complex changes never make it out of development HIT THE ICEBERG
  • 18. GAMING THE METRIC This is a zero test system! Some modules are larger than others Some of the code is ‘too Some of the code complex’ has a ‘good’ level of complexity HIT THE ICEBERG
  • 19. GAMING THE METRIC This system obviously would be better with tests Can say with some confidence that not having tests is one of the reasons for this system’s perceived poor quality This is a very easy metric to measure SOLUTION: – Lets increase test coverage – Lets motivate development teams across the world by making their end of year bonus dependent on achieving a certain level of unit test coverage HIT THE ICEBERG
  • 20. GAMING THE METRIC Day before bonus day HIT THE ICEBERG
  • 21. BLIP ON THE RADAR What happened here? Spikes in loc, coverage. When you continually measure, have to be ready to react to erroneous data now and again (inclusion of generated code in this case). HIT THE ICEBERG
  • 22. EMPIRICAL EVIDENCE Metrics, even without a tool like Sonar, can provide valuable empirical evidence on the state of the system A multi-team project with between eight and fifteen developers at any one time Geographically co-located with strong cross team communications and management Before using Sonar metrics collected via shell scripts and excel STEER THE SUPER TANKER
  • 23. EMPIRICAL EVIDENCE Anecdotally, team felt complexity was rising and velocity slowing. Culture of refactoring, rationalising and retiring code. – Was strategy working? Following graph showed unexpected level of problem. STEER THE SUPER TANKER
  • 24. EMPIRICAL EVIDENCE Code has consistently average complexity per method. There is simply more code being written every release. Analysis of code found duplication at the functional rather than code level STEER THE SUPER TANKER
  • 25. EMPIRICAL EVIDENCE Team’s ‘gut feeling’ was right in that there was a problem. Gathering the metrics provided empirical evidence of the issue. Complexity growth rate had been underestimated. Continually collecting these metrics might not have stopped team creating the situation. This evidence was enough to justify a significant (12 man weeks) investment in refactoring. STEER THE SUPER TANKER
  • 26. A LIGHTER TOUCH Architects and technical leads often have a broad remit across several projects. Tools like Sonar can support the architect’s ability to pragmatically monitor large code bases without intrusive working practices. STEER THE SUPER TANKER
  • 27. A LIGHTER TOUCH Small (2 man) team tasked with phased approached to correction: – Capture existing behaviour through automated tests (current coverage high but not high enough). – Implement a replacement system for several duplicated modules in an existing system. No budget for manual testing – automated tests must be fit for purpose. Very limited budget for technical governance and project management. Key metrics monitored several times a week through Sonar. Augmented by code review and design walk though. STEER THE SUPER TANKER
  • 28. A LIGHTER TOUCH Start of exercise, 75.8k loc in main system Objective: Reduce duplication (and therefore loc), improve quality STEER THE SUPER TANKER
  • 29. A LIGHTER TOUCH Progress continually monitored End of exercise, main system 65k loc Average complexity / method reduced Functionality extracted into new module 4.3k loc – 5k redundant code removed STEER THE SUPER TANKER
  • 30. A LIGHTER TOUCH Metrics as we saw them evolve Total complexity increases slightly – artefact of way of Rules working compliance increases Something worrying happening to complexity / method STEER THE SUPER TANKER
  • 31. FALSE POSITIVE Tools and tool users are fallible. They can supply false positives that create noise for the project and waste resources investigating. Metrics collected continuously using sonar. Technical Architect: – Inspected metrics several times a week. – Observed standup and burndown. – Reviewed automated acceptance tests. – Collaborated in design exercises on whiteboard – Delegated technical implementation to team HIT THE ICEBERG
  • 32. FALSE POSITIVE Development suspended for a week when complexity per method metric went red and correction not executed. Detailed code review initiated. HIT THE ICEBERG
  • 33. FALSE POSITIVE Original module, complexity / method okay, coverage good New module, complexity / method worse, coverage low HIT THE ICEBERG
  • 34. FALSE POSITIVE Drilled down using sonar to identify where higher than expected complexity was originating from. Code then inspected. False alarm: – Sonar complexity algorithm rated JAX-RS method signatures as high, nothing in dev team control. – Other methods were part of automated test controls which were verbose in order to demonstrate purpose. HIT THE ICEBERG
  • 35. FALSE POSITIVE Cluster of complex packages Test utility Test utility JAX-RS resources HIT THE ICEBERG
  • 36. CASTING A WIDE NET Powerful visualisation tools coupled with an array of integrated metrics can allow large code basis to be monitored. A large, highly volatile, code base. Geographically disparate team, spread across several timezones. How can technical authorities police such a code base without velocity crushing (and probably ineffective) prescriptive processes or a code review team almost as big as the development team? STEER THE SUPER TANKER
  • 37. CASTING A WIDE NET A warning to investigate further Something bad happens to coverage in one module Duplication starts to rise STEER THE SUPER TANKER
  • 38. CASTING A WIDE NET One package in module is being worked on Complexity / LOC and method rising duplicatio rapidly n increasing Flagged up whilst development is ongoing, not later in process STEER THE SUPER TANKER
  • 39. CASTING A WIDE NET New module appears, unusually high avg complexity / method STEER THE SUPER TANKER
  • 40. CASTING A WIDE NET Complexity / method average drops (as code size increases, bad code still there) Duplication rises STEER THE SUPER TANKER
  • 41. HOW WE DO CONTINUOUS INSPECTION Build system established in Sprint Zero – Jenkins CI – Sonar Rules (PMD, Checkstyle) configured to use those defined for use on this site STEER THE SUPER TANKER
  • 42. HOW WE USE CONTINOUS INSPECTION Daily sonar build (4am) triggered by Jenkins Runs unit and integration tests Dashboard printed out and reviewed by team at end of stand-up Anything ‘unusual’ discussed and actions taken to investigate / correct Includes violations, coverage, complexity, any unexpected change Continuous inspection, continuous improvement STEER THE SUPER TANKER
  • 43. CONCLUSIONS NEGATIVE EXPERIENCES CAN BE CATEGORISED AS: – Being distracted then satisfied by the superficial – Using the metrics in isolation to decide whether something is good or bad, high or low quality, true or false Everybody loves an infographic, be aware they are often misunderstood and even knowingly abused Continuous Inspection is a great tool for anybody involved with the project willing to invest a little time understanding and questioning what they see STEER THE SUPER TANKER
  • 44. CONCLUSIONS Can Continuous Inspection enable developers to steer the super tanker? – Or will they still hit the iceberg, – Or even hit the iceberg because of the feedback from inspection? Continuous Inspection is a valuable tool that if used with care can make a difference Must recognise that it rarely delivers the full story, just an indication Be wary of wider dissemination of attractive data STEER THE SUPER TANKER
  • 45. YOUR TURN! / Image found http://www.flickr.com/photos/ell-r-brown
  • 46. STRUCTURE OF NEXT SECTION Point everybody at useful resources (metric definitions etc) Get everybody accessing the Sonar server Five minute tour of the relevant features In small groups or as individuals use the tool to draw some positive and negative conclusions about the code base COLLATE OUR CONCLUSIONS AND DISCUSS: – Do we feel the conclusions have merit? – Are they superficial or of real impact on quality? – How could we correct, control or even prevent in future? – What negative implications (e.g. gaming) could this have? STEER THE SUPER TANKER
  • 47. USEFUL RESOURCES SONAR INSTANCE: – http://192.168.x.x:9000 SONAR METRIC DEFINITIONS: – http://docs.codehaus.org/display/SONAR/Metric+definitions SOURCE BASE WE ARE ANALYSING: – https://jira.springsource.org/browse/AMQP – http://github.com/SpringSource/spring-amqp OR (MORE COMPLEX): – http://nemo.sonarsource.org/dashboard/index/50544 STEER THE SUPER TANKER
  • 48. COLLATE RULES – Three minutes maximum each per point (we can come back to you) – Please let the speaker describe their point in full before we discuss and analyse – Presenter will try and keep analysis of any one point to a sensible length, shout if he forgets! STEER THE SUPER TANKER