meeting -*- Outline -*- * From inception to elaboration (Larman Ch. 8) Q: what happened during the inception phase? ------------------------------------------ FROM INCEPTION TO ELABORATION (Ch 8) Purpose of elaboration: - find and stabilize most requirements - mitigate or retire the major risks - implement improved core architecture elements - estimate the overall schedule and resources ------------------------------------------ this is where we start really doing object-oriented analysis and design ** onwards (8.2) "Elaboration often consists of between two to four iterations; each iteration is recommended to be between tear and six weeks, unless teams size is massive." Q: is elaboration a design phase? no Q: are the models fully developed in the elaboration for the construction step? no The idea is not to create thorough-OLE prototypes, rather something that will be part of the final system. It's the "architectural baseline". ------------------------------------------ KEY IDEAS AND BEST PRACTICES (Larman p. 109) Overall: - short timeboxed risk-driven iterations - start programming early - adaptively designed, implement and test the core and risky parts of the arch. - test early, often, realistically - adapt based on feedback from: tests, users, developers - write most of the use cases and other requirements in detail For the architectural design: - identifying the processes, layers, packages, and subsystems, and their high-level responsibilities and interfaces - defining details of all inter-module interfaces - integrating existing components - implementing scenarios that use many parts ------------------------------------------ Give examples for the architecture parts: e.g., defining interfaces that will hide the third-party accounting system, or the operating system, or a database existing compounds that are integrated conclud include for example a tax calculator ------------------------------------------ TESTING Important for feedback Example in POS system: ------------------------------------------ ... - usability testing of the user interface for Process Sale - testing of recovery, when remote services fail (such as credit authorization) - testing of high load to remote services (such as load on the tax calculator) ** Planning the next iteration (8.3) ------------------------------------------ HOW TO ORGANIZE WORK IN ITERATIONS (8.3) Rank use cases to implement by criteria of: - risk - coverage - criticality Do the highest ranked ones first plus a use case for "Start Up" ------------------------------------------ risk includes technical complexity, uncertainty of effort, usability high is more risky coverage includes touching all major parts of the system "wide and shallow" high is more coverage criticality high is more important for the business This ranking will be repeated, at each iteration. you can list the requirements in the iteration plan ** our case study (8.4) Q: What are the use cases for the POS system? Process Sale Maintain Users Handle Returns ... Q: How would you rank these and why? Q: How much of the highly rank requirements could be done by three to four people in two weeks? Larman picks: - implement the basic scenario of the Process Sale use case (simplify to receiving cash, only the happy path) - implement a Start Up use case as necessary to support the initialization needs - no collaboration with external services - no complex pricing rules - design and implementation of the supporting user interface Comments: The idea is to provide a foundation for subsequent iterations. Not all requirements of a use case are being handled in the first iteration; it's common to add more depth to use cases over several iterations. Practice: Have them do the same in their teams for their own team projects. ------------------------------------------ ARTIFACTS STARTED IN ELABORATION (8.5) - Domain model - Design model - Software Architecture Docuement - Data Model - Test Model - Implementation - Use-Case Storyboards - User Interface Prototypes ------------------------------------------ ... - Domain model a way to visualize the domain concepts - Design model the detailed logical design of the software (class diagrams, object interaction diagrams, ...) - Software Architecture Docuement summarizes the key architectural issues in the design, and their resolution. Summarizes the main design ideas and their motivations. - Data Model includes database schemas, and mapping between the objects and other data structures - Test Model a description of what will be tested, and how - Implementation the actual source code, etc. - Use-Case Storyboards description of other functionality a user interfaces - User Interface Prototypes usability models, etc. ** questions (8.6) Q: how long should the elaboration phase take? no more than "a few" months for most projects Q: can the elaboration phase be just one iteration? shoudn't unless the project is well understood Q: does there have to be production code programming? yes Q: is the elaboration phase mostly a requirements phase? no Q: Is everthing supposed to be fully and carefully designed before any code is written? Q: does there have to be testing in the first iteration? yes Q: Is elaboration the same as prototyping? Next time, message sequence diagrams, ...