UML/RUP Case study MapQuest =========================== Requirements Gathering ~~~~~~~~~~~~~~~~~~~~~~ Use cases are used in requirement gathering. Once a task is identified it is called use case. Use case is made of sequence of activities. Portion of use case instance is called flow. Use case can be made of three flows: Main, Alternate, Exceptional are all part of this use case Optional: is what becomes extend relationship is separate use case Common/Factored: becomes include relationship is separate use case Here we want to build system mapquest which lets user get directions to destination address from starting address. Use Case: Name: Compute Address Description: same as above Main Flow: -system prompts user for from/to address -user enters from/to address -user submits -system computes -system displays shortest path -system displays links to faster and another path -user leaves Alternate Flow: None Exception Flow: Invalid address An activity diagram (fancy flow chart) can be used for above activities. Scenario1: user chooses main flow Scenario2: user chooses main and then shortest path Scenario3: user choose main and then another path Scenario4: invalid address Extension points: faster path, another path If we had option to choose between shortest, fastest, another then they would be all alternate flows and one selected as main flow. Our modifications to use case and scenarios would be then as below. Main Flow: shortest .. .. Alternate: fastest, another Extenstion: None Exception: Invalid Address Scenario1: user chooses main flow Scenario2: user chooses shortest path Scenario3: user choose another path Scenario4: invalid address Use case Model has use case diagrams. use case diagram has Actor, use case (system), communication (association) use case has relationships: include (common), extend (optional), generalize (specialize) ==================================================================== From here we use CRC to get entities. Design will involve doing framework (architecture), design patterns, detailed design (signatures). If in future our requirements changes that user should be made to select shortest/fastest then we could make both as extend since now base will include only get address as include. ====================================================================