Processes Outline • • • • • 1 Definition of process Type of processes Improvement models Example Next steps… Process • Do you want to build a “dog house” or “high rise” ? • Process needed to build large /complex software systems 2 Process: a set of ordered tasks • Typical software tasks: • What should the system do? (Requirements) • How should the system do it? (Design) • Writing the code… (Implementation) • Making sure the code works (Testing) • Using the system (Deployment) Requirements Design Implementation Testing • Different processes order tasks differently Deployment 3 Process: Requirements • What should the system do? • • • • 4 Requirements Customers write down what they want Talk to customers, make diagrams Watch users to see what’s needed Look up requirements from standards body (e.g., medical) Process: Design • How should the system do it? • Architectural design- overall structure of the system • What components? • How connected? • Program design- how code should be organized • Components => Classes and functions 5 Design Process: Implementation • Finally, we get to write some code!! Implementation • May also include: • • • • • 6 Writing comments Writing documentation Helping other engineers with coding (e.g., pair programming) Answering questions Reading other documentation Process: Testing • Does the system work? • • • • • 7 Unit testing System integration testing Usability testing Acceptance testing … Testing Process: Deployment • Using the system (aka Operation) • • • • • 8 Distributing code Providing documentation and support Debugging Studying how the system work in practice Adapting the system Deployment Outline • • • • • 9 Definition of process Type of processes Improvement models Example Next steps… Types of Processes • Waterfall • Spiral • Agile 10 Waterfall process Requirements analysis Prototyping Design Implementation Testing Operation (No prototyping in a pure waterfall process) 11 Spiral Process Draft a menu of program designs Analyze risk & prototype Draft a menu of architecture designs Draft a menu of requirements Establish architecture Plan 12 Analyze risk & prototype Establish requirements Plan Operation Analyze risk & prototype Testing Implementation Establish program design Agile process Do “spike” to evaluate & control risk Customer provides “stories” (short requirement snippets) Prioritize stories and plan Operation Write/run/modify unit tests Implement System and acceptance tests 13 (Agile processes are rarely this tidy in practice) Comparing Waterfall, Spiral, Agile Waterfall Spiral Agile Emphasizes: -Simplicity -Traceability -Risk management -Exploring alternatives -Flexibility -Immediacy Weakness: Requirement/design mistakes can be costly Exploring alternatives can be costly Continual rework can be costly Style: -Highly controlled -High ceremony -Moderately controlled -Moderate ceremony -Rapid & organic -Low ceremony Some definitions -“traceability”: relationships between requirements and system elements are documented -“immediacy”: getting some sort of working system to the customer as fast as possible -“rework”: redesigning the architecture and/or refactoring the program code -“controlled”: conformance to process is highly valued, even if it slows a project down -“ceremony”: how much analysis, documentation, and planning is involved 14 When to choose what • Waterfall: good for smaller systems where requirements can be fully understood before design and implementation • Spiral: good for larger systems with vague requirements and many alternatives for designing and coding • Agile: good for systems where you can rapidly create something very small but useful and then expand from there 15 Outline • • • • • 16 Definition of process Type of processes Improvement models Example Next steps… Improvement Models • How to improve the system later? • Iterative • Get the entire system working really well • Then add more parts • Incremental • Get part of the system working really well • Then add more parts to the system 17 Improvement Models • Iterative and incremental can be mixed / matched with process models • Iterative Agile • Incremental Waterfall • Etc. 18 Improvement Models: How to Choose? • Incremental is often good when most of a system’s value is tightly concentrated in a small number of components. • Iterative is often good when you need to implement most of a system before you can get much value. 19 Outline • • • • • 20 Definition of process Type of processes Improvement models Example Next steps… Example: Incremental Spiral Development • Customer wants “Eco-friendly Amazon.com” • Why pick spiral over waterfall or agile? • Big software project • Vague requirements • Many alternatives 21 Spiral Process Draft a menu of program designs Analyze risk & prototype Draft a menu of architecture designs Draft a menu of requirements Establish architecture Plan 22 Analyze risk & prototype Establish requirements Plan Operation Analyze risk & prototype Testing Implementation Establish program design Incremental Spiral: Draft Menu of Requirements • Shopping cart • Database of products • Define “Eco-Friendly” • Based on product’s “eco-friendliness”? • Collect data from producers? • Collect ratings from watchdog organizations? • Collect ratings from customers? • Eco-friendly shipping options? • Feature to swap / trade items? 23 Incremental Spiral: Review Prototypes with Customers Paper prototypes Lightweight prototypes Documentation These “throwaway” prototypes are cheap to make because they are usually not interactive. Let’s suppose that the customer settles on eco-friendliness options based on watchdog data. 24 Incremental Spiral: Draft Menu of Architectures Watchdog users Shopping users Web application -Watchdog data input screens - E-commerce interface Database PHP/Apache Mysql Linux Watchdog XML feeds Shopping users Scrapers to read watchdog data E-commerce interface Database Mysql PHP/Apache 25 Linux Incremental Spiral: Review with Customers and/or Users More prototypes And now an XML mockup And lots of analysis & discussion about pros/cons/cost/schedule/etc. 26 Documentation Let’s suppose that the XML feed architecture is selected, omitting XML feeds for now (to be added in later increment). Incremental Spiral: Draft Menu of Program Designs • E-commerce interface • • • • Make each product its own object? Make user accounts its own object? “Hide” database from UI code? What should be put it “library” classes for reuse in future increments? • E.g., XML feeds • … 27 Incremental Spiral: Review Prototypes with Customer Heavyweight prototypes Documentation These prototypes are pretty expensive to make, since they implement some interactivity. Therefore, they often are incorporated into the finished product (“evolutionary” prototypes). 28 Incremental Spiral: Implementation, Testing, Operation • Wrap up increment #1 • • • • • • • • 29 Manually load data base with products Finish coding UI for searching / ordering Write / run tests Fix bugs Deliver code to customer Customer tests Deploy to public server Test, test, test Incremental Spiral: Increment #2, add XML feed • Already know this is a requirement • No need to return to requirements phase • • • • • 30 Return to review alternative architectures Create a menu of program design Prototype and review Implement, test, send to customer … Incremental Spiral: Increment #3 Pay attention to users, discover new requirements Spiral, spiral, spiral 31 Outline • • • • • 32 Definition of process Type of processes Improvement models Example Next steps… Next steps… • Finish your Vision Statement Overview! • Finalize your team • Be ready to explain Waterfall, Spiral, and Agile development • • • • Definition Pros / cons of each Explain when to use, and WHY When NOT to use… • Next time: Requirements 33