FROM INCEPTION TO ELABORATION Use Cases, Domain Models & SSDs Oh My! The End of Inception After the customer has so kindly taken your soul and has given you a contract for getting it back, what do you do? You have the features, how do you implement them? Options: Panic, start coding! Design to death, the customer demands it! Take the middle road and see what’s feasible. Let’s Take the Middle Road, Shall We? To do so, the easiest way is to start by writing out Use Cases. Use Cases are descriptions of how some external agent accesses your black box system. i.e. What messages are passed between the user and the system? How can the user control the system? Initial Level of Detail How detailed should these initial Use Cases be? We’re going to want a high level overview of what Use Cases we’ll probably need. Some of these use cases (usually 10%) will be critical to the system. We should “fully dress,” or painstakingly elaborate these use cases. What is a Fully Dressed Use Case? A fully dressed use case answers the questions in this template. Use Case Number: Use Case Name (Starts with a Verb) Scope: The System Under Design Level: Either a “User Goal” or a “Subfunction” that assist the user goal Primary Actor: The user that initiates the system Stakeholders and Interests: Who cares about this use case? Precondition: What’s assumed, what do we tell the user? Successful Completion: What’s defines success, and what do we tell the user? Main Success Scenario: The normal successful path Different colors for different users (primary actor vs. system) Extensions: Alternate routes to success or failure Special Requirements: Related non-functional requirements Technology and Data Variations: Data structures used? Frequency of Occurrence: Miscellaneous: By the End of Inception… We need to have around 10% of our most important use cases fully dressed so that we can start the first iteration with project critical use cases. Now We’re Ready for Elaboration Elaboration is the phase where we fully solidify what the requirements are (with the added benefit that the major components of the system get built too) Before the First Iteration Choose a Use Case from each category: High Business Value High Risk Core Architecture Set a deadline for the iteration: Estimate the difficulty of implementing said use cases Have each team member put down the hours they can work for the next couple of weeks Determine a feasible deadline During the Iteration During Elaboration, we will work on the following project “Artifacts” in the following order: Use Cases Domain Model System Sequence Diagrams Operational Contracts Logical Architecture Domain Layer UML Classes Code After the Iteration The Iteration ends when the deadline has elapsed. After the iteration: We want to evaluate the effectiveness of the use cases and possibly “rescope” them if we couldn’t complete them fully or they were too broad in nature We also want to have a working demo of our software that demonstrates the new features A la the use cases After the Iteration We will then get with the customer and demonstrate our product, receiving valuable feedback from the business side of the project. Then we will want to re-evaluate the use cases we have yet to do, re-evaluate our current system, and go through another iteration. Conclusion You should now know what an iteration in the Elaboration phase of the project lifecycle consists of. Terms to know: Use Cases: Fully Dressed, Primary Actor, Happy Scenario Iteration Process: Use Cases, Domain Model, System Sequence Diagrams, Operational Contracts, Logical Architecture, Domain Layer, UML Classes, Code