1 / 39

Software Team Development Practices based on Java Development Teams at CERN

Software Team Development Practices based on Java Development Teams at CERN. Rostislav Titov, GS-AIS-EB Section Leader, CERN. The reality today. Failure 31.1% of IT projects will be canceled before they ever get completed 52.7% of projects will cost 189% of their original estimate

Download Presentation

Software Team Development Practices based on Java Development Teams at CERN

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Team Development Practices based on Java Development Teams at CERN Rostislav Titov,GS-AIS-EB Section Leader, CERN

  2. The reality today Failure • 31.1% of IT projects will be canceled before they ever get completed • 52.7% of projects will cost 189% of their original estimate • More than 50% of software projects fail today. • 2009: highest failure rate in over a decade! Success • Only 16.2% software projects that are completed on time and on budget • In the large companies only 9% of their projects come in on time and on budget. • Catastrophe • Ariane 5 (7bn dev, 500 million) – numerical conversion error • Mars Climate Orbiter ($125 million) – metric conversion error • Mars Polar Lander ($165 million) – design error

  3. Typical Failures • User requirements not met • Software unreliable • It works great for me, now deploy it for 10,000 users… • Too late (You took so long that our requirements have changed…) • You did what I asked. but I didn’t say what I meant… • Projects completed by the largest American companies have only approximately 42% of the originally proposed features and functions.

  4. Reasons • Unrealistic Schedules • Race through the requirements, produce a superficial design and rush into coding. • Changing Requirements During Development • Inappropriate Staffing • Poor-Quality Work • There's a saying about software quality: “If it doesn't have to work, we can build it really fast.” • Believing in magic • Pitfalls of commercial products Fast Choosetwo Good Cheap

  5. Project Success factors

  6. Software Development Cycle • Analysis “Failing to build the right thing” • Design “We didn't have time to do a design." • Implementation “Do you want it on time or documented?” • Test “It's not a bug, it's a feature”

  7. Requirements Analysis “Writing software from Requirements is like walking on water – its easier when frozen”

  8. Analysis • State Goal “send a man to the moon before end of the decade & return him safely to Earth”, JF Kennedy • Specify the problem not the solution • Classification M MustoS ShouldC Could0W Would • Concept of Operations document “This is my understanding of what you want” • Beware of requirements ‘gold plating’ • 80/20 rule • Verifiable : use-cases

  9. Example Failures • Ariane 5 (half billion dollars) • Y2K bug • F-16 & equator • Mars Polar Lander

  10. Good Design Principles • Consider alternative approaches Not tunnel vision • Traceable to the requirements Correct & complete • Not reinvent the wheel Use a pattern • Adaptability Accommodate Change • Maximize Cohesion • Minimize Coupling • Understandabilty A design must be understandable if it is to support modification. “A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away” - Antoine de Saint Exupéry

  11. Good & Bad design Good Design Change in one part of the system doesn't always require a change in another part of the system. Every piece of logic has one and one home. The logic is near the data it operates on. System can be extended with changes in only one place. Simplicity Bad Design One conceptual change requires changes to many parts of the system. Logic has to be duplicated. Cost of a bad design becomes overwhelming. Can't remember where all the implicitly linked changes have to take place. Can't add a new function without breaking an existing function. Complexity

  12. The Cost of Change CERN AIS Cost Time

  13. Lessons Learned • Should be team work • It’s not always right first time • Refactoring is OK • Keep the vision simple • Automate repetitive tasks • TEST the design • By modifying the problem

  14. Coding “It doesn’t matter if I write poor code… the compiler will tell me if there is problem” “It doesn’t matter if I make a mistake… it will come out in testing” • Mars Climate Orbiter ($125 million) metric conversion error

  15. Bugs • Experienced software engineers inject one defect in about every 10 lines of code. • The programmers aren't incompetent or lazy - they're just human. • All humans make mistakes, but in software, these mistakes result in defects. • This means that a modest-size program of 100,000 lines of code typically would start with about 10,000 defects. • Examples : INTEL Pentium : no more than 80-90 Bugs Cell Phone (200 000 loc) up to 600 errors. Windows-95: 10 Mill. loc: up to 200 000 errors.

  16. Now imagine you have A multi-domain, multi-lingual horizontal software application supporting over 15’000 users in 42 countries composed of : 1.5 million Lines of Code 6,000 Java classes 10,000HTML templates many other files Welcome to EDH!

  17. EDH: Good Old Days (1991-98) “Imagination rules the world” Mac or PC or Unix? C or C++ or ? University atmosphere Freedom & Individualism Choice, choice, choice...

  18. Results • Healthy outside, but unhealthy inside • Evolution from freedom to Chaos! Development Platform : Mac, PC & Unix Code : C,C++,Python, Prolog, ProC, PL/SQL, Perl... Comments : Spanish, Italian, French & English... Bugs : “Y2K don’t care” • Obvious code never reviewed : Why would you show your code to anybody? Never did at university... Results count! • Consequence : Maintenance became the primary resource-consuming activity

  19. The “authoritarian” new days (1998...) • Autocratic • You will use a PC • You will use the chosen IDE • You will use Version Control • You will develop in Java • You will adhere to coding standards • You will show your code to others • You will have to document every change • Production Environment is Sacred • Scheduled Deploys • Team decision, No individual actions • No unreviewed code goes live • Doesn’t sound very motivating?Ironically it is more motivating!

  20. From University to Industry Freedom of Choice for Development Environment Free selection of tools Choice of language & technology Individual Code Responsibility (& blame) Quality of the Product Individual Development Practices Team Development Practices Uniform development environment Common set of tools Single technology choice Common Code Ownership (& learning) Quality of the Process ... driven by the members of the team (not management imposed)

  21. Requires Concrete Practices • Code Reviews • Coding Standards • Design Reviews • Mentoring • Uniform development environment • Coherent set of development & deployment tools • Single language & Technology • Test procedures, unit testing & usability studies

  22. Code Review Example Can you understand the following? public class ba { public static final String cur = “USD"; public void dep (int i) { bal -=i; } public void wit (int i) { bal +=i;} public String get () { return Integer.toString (bal) + "" + cur } private int bal; } And identify the defect?

  23. The same code public class BankAccount { public static final String CURRENCY = “USD"; private int m_balance; public void deposit (int amount) { balance = balance - amount; } public void withdraw (int amount) { balance = balance + amount; } public String getBalance () { return Integer.toString (bal) + " " + CURRENCY; } }

  24. Coding Standards – why? Why ? • 80% of the lifetime cost of a piece of software goes to maintenance. • Hardly any software is maintained for its whole life by the original author. • Code conventions improve the readability of the software, allowing engineers to understand new code more quickly and thoroughly. Cannot review unless you have standards... • endless debate – was driving too fast? Cannot answer without defined speed limits • Recommend best practices, avoid bad practices • Maintainable & reliable software is key Produces • Common Code Ownership

  25. Code Reviews - guidelines • Form • Product is guilty until proven innocent • Producer is innocent because he/she is not on trial • More likely to find bugs if you assume they are there • Evaluate product not producer • Emphasize "review" aspect; do not "fix it here". • Raise problems. Do not discuss solutions

  26. Code Reviews - guidelines • Management Involvement • NONE! • Not a manager's status meeting • Management is not represented during inspections • Inspections must not be used as a tool to evaluate workers • … Not a committee, not a working group, not a status report & not an appraisal instrument …

  27. Benefits • Primary objective • remove defects as early as possible in the development process • Other benefits : • Early Testing • Project Tracking • Educational – share best practices • Training of new/junior programmers • Improved Communication • Improved Individual Quality • Cross-training • Process-improvement • Shared Responsibility – no individual blame

  28. The “Yes, buts...” • I don’t have time for this... • Good programmer’s code doesn’t need reviewing • Its only a ‘minor’ piece of code • Code Changes, then what? • 2nd pair eyes rule • Pair programming

  29. Coding: Tools • Atlassian JIRA • Issue tracking and project tracking • EDH: every change must have a JIRA • Process should be as lightweight as possible • Atlassian GreenHopper • Agile project management (Scrum) • EDH: 2-week sprints • Atlassian Confluence • Documentation (WIKI style)

  30. Coding: Tools (2) • Atlassian Crucible • Online code reviews • EDH: Every production line of code must be reviewed • Atlassian FishEye • Browse version control repository (CVS, SVN) • Real-time notifications of code changes • Web-based reporting, visualisation and code sharing • Atlassian Bamboo • Continuous integration • Atlassian Clover • Java code coverage metrics

  31. Coding: Tools (3)

  32. Testing Bugs • Standard Software: 25 bugs per 1000 lines of program. Good Software: 2 errors per 1000 lines. Space Shuttle Software: < 1 errors per 10000 lines. Example Handy (Cellular Phone): 200 000 lines of program: up to 600 errors. Windows-95: 10 Mill. lines: up to 200 000 errors. • Sept 24 2004 – Jpeg buffer overrun bug in MS windows “an attacker who successfully exploited this vulnerability could take complete control of an affected system, including installing programs; viewing, changing, or deleting data; or creating new accounts with full privileges” Defects • Testing ≠ Debugging You may have zero bugs, but s/w may not meet requirements, scale, respond-in time…

  33. Testing • Software testing is an art : requires a tester's creativity, experience and intuition, together with proper techniques. • Most of the testing methods and practices are not very different from 20 years ago. • Testing is more than just debugging. • Testing is expensive. Automation helps. • Complete testing is infeasible. Tradeoff • Testing, while essential, may not be the most effective method to improve software quality.

  34. What do you test? • Correctness testing • Security testing • Reliability testing • Stress testing • Scalability testing • Performance testing • Usability testing

  35. And after that? Software Maintenance • 80% of lifetime of software • The Legacy Crisis • The relative cost for maintaining software and managing its evolution now represents more than 90% of its total cost. • Example costs • Annual software maintenance cost in USA has been estimated to be more than $70 billion • Y2K : $8.38 billion US dollar, $90 million for Nokia • 50% of their time is spent in the process of understanding the code!!!

  36. Types of Maintenance • Corrective Maintenance (21%) • A process that includes diagnosis and correction of errors. • Adaptive Maintenance (25%) • Activity that modifies software to properly interface with a changing environment (hardware and software). • Perfective Maintenance (50%) • Activity for adding new capabilities, modifying existing functions and making general enhancements. • This accounts for the majority of all effort expended on maintenance. • Preventive Maintenance (4%) • Activity which changes software to improve future maintainability or reliability or to provide a better basis for future enhancements. • Still relatively rare.

  37. Your challenge ! • Come in the 9% of projects on time & in budget • Engineer your software (design, review & maintenance in mind) • Control the spiraling IT costs & improve the reputation of the industry

  38. Thank You For More Information E-mail:Rostislav.Titov@cern.ch

  39. Design One of the things that tools can do is to help bad designers create ghastly designs much more quickly than they ever could in the past

More Related