Best Practices of Software Engineering Unified Software Practices
Best Practices of Software Engineering Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 1
Objectives: Best Practices of Software Engineering w Explore the symptoms and root causes of software development problems w Explain Rational’s six best practices for software development w Look at how Rational’s best practices address the root causes of software development problems Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 2
Questions: w w w What is software engineering? Is it programming? What part of a development effort is programming? What part of an application’s life cycle is initial programming? What do you know about Maintenance? Percentage of lifecycle costs? What do you think ‘best practices’ mean? Develop software in a repeatable and predictable manner. Where did they come from and are they really ‘best? ’ Commercially proven approaches to software development, that, when used in combination, strike out at the root problems of software development. Commonly used in industry. Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 3
Software Development Situation Analysis World economies increasingly software dependent Applications expanding in size, complexity, & distribution Business demands increased productivity & quality in less time Not enough qualified people Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 4
Comments: w w w $250 billion annually in US. Over 175, 000 projects! Complexity, size, distribution, importance push our limits. w Business pushes these limits: § Great demands for rapid development and deployment w w w We cannot keep pace with demands 200, 000 to 400, 000 developer jobs open. Develop applications § On time § Within budget § Meets the users’ requirements Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 5
Software Development is a Job for Teams Challenges • Larger teams • Specialization Performance Engineer • Networking Analyst • Database • Development paradigms; process! Project Manager Developer • Distribution Tester • Rapid technology change Release Engineer • Integration of technologies!!! Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 6
How Are We Doing? Performance Engineer • Many Successes Analyst • Too Many Failures Project Manager Tester Release Engineer Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 7
Symptoms of Software Development Problems w Inaccurate understanding of end-user needs Inability to deal with changing requirements Modules that don’t fit together Software that’s hard to maintain or extend Late discovery of serious project flaws Poor software quality Unacceptable software performance Team members in each other’s way, unable to reconstruct who changed what, when, where, why w An untrustworthy build-and-release process w w w w Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 8
Treating Symptoms Does Not Solve the Problem Root Causes Symptoms insufficient requirements end-user needs ambiguous communications changing requirements brittle architectures modules don’t fit overwhelming complexity hard to maintain late discovery undetected inconsistencies poor quality poor testing poor performance subjective assessment colliding developers build-and-release Diagnose waterfall development uncontrolled change insufficient automation Know these!! Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 9
Root Causes of Software Development Problems (according to Rational Software Corporation) w Insufficient requirements management – § leads to scope creep w Ambiguous and imprecise communications w Brittle architectures – § poor response to changes; little chance for reuse w Overwhelming complexity w Undetected inconsistencies among requirements, designs, and implementations w Insufficient testing – 80% tested? Out the door!!! w Subjective project status assessment w Delayed risk reduction due to waterfall development Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 10
Best Practices Address Root Causes Get to the root causes!! Eliminate symptoms to develop repeatable, predictable software; Root Causes þ Insufficient requirements þ Ambiguous communications þ Brittle architectures þ Overwhelming complexity þ Subjective assessment þ Undetected inconsistencies þ Poor testing þ Waterfall development Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved Best Practices þ Develop iteratively þ Manage requirements þ Use component architectures þ Model the software visually þ Verify quality Commercially developed approaches to þ Control changes developing software that when used in combination strike out at the root causes of software problems. 11
Addressing Root Causes Eliminates the Symptoms Root Causes end-user needs insufficient requirements changing requirements modules don’t fit hard to maintain late discovery poor quality poor performance colliding developers build-and-release ambiguous communications brittle architectures overwhelming complexity undetected inconsistencies poor testing subjective assessment waterfall development uncontrolled change Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved insufficient automation 12 Best Practices develop iteratively manage requirements use component architectures model the software visually verify quality control changes
Best Practices of Software Engineering Develop Iteratively Use Manage Component Requirements Architectures Model Visually Verify Quality Control Changes Know these! Will see this slide over and over… Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 13
Best Practices Enable High-Performance Teams Results Performance Engineer • More Successful projects Analyst Project Manager Develop Iteratively Use Component Manage Requirements Architectures Tester Model Visually Verify Quality Release Engineer Control Changes Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 14
Practice 1: Develop Software Iteratively Develop Iteratively Manage Requirements Use Component Architectures Model Visually Control Changes Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 15 Verify Quality
Practice 1: Develop Software Iteratively w An initial design will likely be flawed with respect to its key requirements. Requirements rarely fully known up front! w Late-phase discovery of design defects results in costly over-runs and/or project cancellation § Oftentimes requirements change – during development! $$$ The time and money spent implementing a faulty design are not recoverable Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 16
Additional Comments: w While large projects are more prone to cost overruns, medium-size/small projects are vulnerable to cancellation. w The key reasons continue to be § poor project planning and management, § shortage of technical and project management expertise, § lack of technology infrastructure, § disinterested senior management, and § inappropriate project teams. ” w Where does it say ‘programmer? ’ Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 17
Traditional Waterfall Development Requirements Analysis Design Code & Unit Testing Subsystem Testing System Testing T I M E Been in use for over 30 years. Phases in lock-step. Assumption: when Design starts, Requirements are firm; When Code and Testing starts, Design is firm and complete; etc. All FALSE in practice! True only in well-understood application domains; prior experiences, etc. Leads to missed deliveries, cost overruns, poor quality of delivered software and more… Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 18
Waterfall Development Delays Reduction of Risk R I S K Requirements Analysis Design Code & Unit Testing Subsystem Testing System Testing T I M E Notice the delay in identifying, controlling, resolving RISKS! Sometimes results are catastrophic! Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 19
Apply the Waterfall Iteratively to System Increments Iteration 1 Iteration 2 R Iteration 3 R D D C C T T T I M E w Earliest iterations address greatest risks § (executable, architectural prototype? ) § Highest priorities first; mitigate risk early; key functionality first. w Each iteration produces an executable release, an additional increment of the system w Each iteration includes integration and test Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 20
Iterative Development Accelerates Risk Reduction R I Iterative S Waterfall K Iteration Iteration T I M E Mitigate risk early; Risks mitigated during early iterations; Can kill project, if necessary. architectures; technologies; personnel; Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 21
Iterative Development Characteristics w Critical risks are resolved before making large investments w Initial iterations enable early user feedback § Easy to resolve problems early. § Encourages user feedback in meaningful ways w Testing and integration are continuous – assures successful integration (parts all fit together) § Continuous testing. w Objective milestones provide short-term focus w Progress is measured by assessing implementations w Partial implementations can be deployed § Waterfall method – no delivery § Incremental development? May be some great values in delivering key parts of application. Critical components delivered first? w No big-bang approach! Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 22
Apply Best Practices Throughout the Life Cycle We will use the Rational Unified Process (RUP) as our ‘process’ together with the Unified Modeling Language (UML) and Rational Rose Enterprise Edition modeling tool. Phases Process Workflows Match the waterfall model closely. Inception Elaboration Construction Transition Business Modeling Requirements Analysis & Design Implementation Test Deployment Supporting Workflows Configuration & Change Mgmt Project Management Environment Preliminary Note the workflows ALL apply Iteration(s) to each iteration. RUP tells us what to do and when; Unified Software Practices v 5. 0 by - D whom… Copyright Ó 1998 Rational Software, all rights reserved 23 Iter. #1 Iter. #2 Iter. #n+1 #n+2 Iterations Iter. #m+1
Problems Addressed by Iterative Development Solutions Root Causes þ Insufficient requirements þ Ambiguous communications ¨ Brittle architectures þ Overwhelming complexity þ Subjective assessment þ Undetected inconsistencies þ Poor testing þ Waterfall development ¨ Uncontrolled change Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved Enables and encourages user feedback Serious misunderstandings evident early in the life cycle Development focuses on critical issues – break it down! Objective assessment thru testing Inconsistencies detected early Testing starts earlier – continuous! 24
Goal: w Deliver top quality software on time, within budget that meets / exceeds the user requirements. Unified Software Practices v 5. 0 - D Copyright Ó 1998 Rational Software, all rights reserved 25
- Slides: 25