120 likes | 281 Views
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!
E N D
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