Mastering OOA/OOD with UML
Contents Introduction Requirements Overview OOAOOD
Introduction Software development problems Six best practices
Introduction Tools Rational Object-oriented Software Engineering (ROSE) Rational Object-oriented Software Engineering (ROSE)Language Don’t care Don’t care Basic Requirement Coding in one or more OO Language Coding in one or more OO Language
Symptoms of Software Development Problems User or business needs not met Requirements not addressed Modules not integrating Difficulties with maintenance Late discovery of flaws Poor quality of end-user experience Poor performance under load No coordinated team effort Build-and-release issues
Trace Symptoms to Root Causes Symptoms Needs not met Requirement churn Modules do not fit Hard to maintain Late discovery Poor quality Poor performance Colliding developers Build-and-release Root Causes Insufficient requirements Ambiguous communications Brittle architectures Overwhelming complexity Undetected inconsistencies Poor testing Subjective assessment Waterfall development Uncontrolled change Insufficient automation Best Practices Develop Iteratively Manage Requirement Use Component Architectures Model Visually Continuously Verify Quality Manage Change
Iterative Development Benefits Resolve major risks early Resolve major risks early Enable user feedback Enable user feedback Make testing and integration continuous Make testing and integration continuous Focus on project short-term objective milestones Focus on project short-term objective milestones Make possible deployment of partial implementations Make possible deployment of partial implementations
Requirements Management Making sure you Solve the right problem Solve the right problem Build the right system Build the right system By taking a systematic approach to Eliciting Eliciting Organizing Organizing Documenting Documenting Managing Managing the changing requirements of a software application
Aspects of Requirement Management Analyze the problem Understand User Needs Define the system Manage scope Refine the system definition Manage changing requirement
Component-Based Architecture Resilient Meets current and future requirements Meets current and future requirements Improves extensibility Improves extensibility Enables reuse Enables reuse Encapsulates system dependencies Encapsulates system dependenciesComponent-based Reuse or customize components Reuse or customize components Select from commercially available components Select from commercially available components Evolve existing software incrementally Evolve existing software incrementally
Use UML Captures structure and behavior Shows how system elements fit together Keeps design and implementation consistent Hides or exposes details as appropriate Promotes unambiguous communication UML provides on language for all practitioners UML provides on language for all practitioners
Continuously Verify Quality Testing dimensions Usability Usability Reliability Reliability Performance Performance Supportability Supportability Functionality Functionality Test at each iteration of software development
Manage Change Control how and when changes are introduced into the project
Lifecycle Phases Inception-define system scope Elaboration-plan project, specify features and baseline architecture Construction-build the product Transition-transition the product into end- user community
Requirements Overview Use-Case Model
Purpose Establish and maintain agreement with the customers and other stakeholders on what system should do Give system developers a better understanding of the Requirement of the system define the system boundary Provide a basis for planning the technical contents of the iteration Provide a basis for estimating cost and time to develop the system Define a user interface of the system
Use-Case Modeling Use-Case Model define all functional requirements of a system What system does What system does How system does How system does Glossary defines common terminology Supplementary Specification defines non- functional requirements of a system
Use-Case Modeling Actor represents anything (users, devices, other systems) that interacts with the system Client actor Client actor Supplier actor Supplier actor Use-case is a sequence of actions a system performs that yields an observable result of value to a particular actor
Use-Case Specifications Name Brief description Flow of events Basic flow Basic flow Alternative flow Alternative flow Special requirements Use-Case diagram Activity diagrams
Supplementary Specifications FunctionalityUsabilityReliabilityPerformanceSupportability Design Constraints
Use-Case Classification Type A most difficult 20% of all use-case 20% of all use-case Type B 60% of all use-case 60% of all use-case Type C 20% of all use-case 20% of all use-case
Works in Each Iteration It#1Requirements, Use-Case model Basic flow of all use-case Basic flow of all use-case Alternative flow Alternative flow It#2—Elaboration phase OOA->OOD->Prototype->Unit testing OOA->OOD->Prototype->Unit testing Alternative flow Alternative flowIt#3 OOA->OOD->Prototype->Unit testing OOA->OOD->Prototype->Unit testing Alternative flow Alternative flow
Works in Each Iteration It#4—Implementation phase OOA->OOD->Prototype->Unit testing OOA->OOD->Prototype->Unit testing Imp->Integration testing (I.T.) Alpha (Biz component) Imp->Integration testing (I.T.) Alpha (Biz component)It#5 Imp->I.T. Gamma (Biz component) Imp->I.T. Gamma (Biz component)It#6 Beta (UI layout) Beta (UI layout)It#7 Version 1.00 Version 1.00
Analysis & Design
Analysis VS Design Analysis Focus on understanding the problem Focus on understanding the problem Idealized design Idealized design Behavior Behavior System structure System structure Functional requirements Functional requirementsDesign Focus on understanding the solution Operations and attributes Performance Close to real code Object lifecycles Nonfunctional requirements