1 / 30

Rational Unified Process

Rational Unified Process. Why do we need a Software Development Process. Ad hoc requirements management Ambigous and imprecise communication Brittle Architecture Undetected inconsistencies in requirements, design and implementation Insufficient Testing Subjective Project Status Assessment

cgrasso
Download Presentation

Rational Unified Process

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rational Unified Process

  2. Why do we need a Software Development Process • Ad hoc requirements management • Ambigous and imprecise communication • Brittle Architecture • Undetected inconsistencies in requirements, design and implementation • Insufficient Testing • Subjective Project Status Assessment • Failure to attack risks • Uncontrolled cange propagation • Insufficient automation

  3. Software Development - Best Practices • Proven approaches to software development • Iterative Development • Manage Requirements • Component Based Architecture • Visually Model Software • Control Changes to Software

  4. Iterative and incremental process • Continous discovery, invention and implementation • Project Risks identified early • Clarify Requirements early • Enables user feedback • Continous Testing enables objective assessment of project • Team workload spreaded out evenly • Lessons Learned used to improve process in later iterations

  5. Manage Requirements • Requirements should be expected to change as project progresses • Impossible to completely identify requirements at project start • Active Management of Requirements includes: • Eliciting, Organizing, Documenting required functionality • Evaluating changes and assessing impacts of these requirements • Tracking and documenting trade-offs and decisions • Offers following advantages: • disciplined approach built in • better communication • requirements can be prioritized, filtered and traced • inconsistencies more easily detected

  6. Component Based Architecture • Architecture encompasses set of significant decisions about: • organization of software • selection of structural elements and their interfaces • behavior of elements • composition of elements in larger subsystems • Component is a non trivial, nearly independent, and replaceable part of a system, that fulfills a clear function. • Components can be individually tested and gradually integrated to form the whole system • Modularity enables a clear separation of concerns among elements • Facilitate resilient architectures

  7. Visually Model Software • Model is a simplification of reality that describes a system from particular perspective • Different perspectives can be visualized/specified for different usage • Help understanding the system and communicating about it • Help expose and assess architectural decisions • Help reveal inconsistencies • Unified Modeling Language is current standard

  8. Verify Software Quality • Cost of finding and repairing software problems much higher once deployed • Important to continously assess software quality • Testing is done by verifying key scenarios of system functionality • Testing software at each iteration enables continous assessment • Project status linked to test results • Defects are identified early • Objective assessment exposes inconsistencies in requirements, design and implementation

  9. Control Changes to Software • Typical project environment: • multiple team members, different sites, multiple iterations, releases, products, platforms • Need to coordinate activities and products of developers in a repeatable way • Need to coordinate iterations and releases • Enable to maintain traceability among released products • Enable to isolate workspaces and reduce interferences among team members • Change propagation is assessable and controlled • Change rate is good metrics for project status

  10. Software Development Process Roles • Provide guidance as to the order of a team’s activities • Specify which artifacts should be developed and when • Direct tasks of individual developers and the team as a whole • Offer criteria for monitoring and measuring the project’s products and activities • Without well defined process, success is dependent upon individual heroic efforts • Mature organizations using well defined process can develop sofware in a reliable, repeatable way • Can leverage other organization’s work and continously improve efficiency

  11. Rational Unified Process Software Engineering Process covering entire life cycle Provides disciplined approach to assigning tasks and responsibilities within team Process Product developed and maintained by Rational Process Framework which can be adapted to project specific needs Unified Process is a framework based mostly on Objectory Captures current Best Practices Tools Support Use-Case Driven, Architecture-Centric, Iterative, Incremental

  12. Process Product • Rational Unified Process Product consists of the following: • Hyperlinked online web version • graphical navigation, exhaustive index, search engine • Tool Mentors providing additional process guidance • Templates for all major process artifacts • Set of 9 Manuals • Process, Artifacts, Guidelines, Process Configuration, Project Management, Business Modeling, Programming Guidelines

  13. Process Description • Process describes Who is doing What, How, and When • Four Primary modeling element: • Workers (who) • behavior/responsibilities of individul or group • e.g: system analyst, designer, test designer • Activities (how) • unit of work, broken into steps, performed by the workers • e.g: plan an iteration, find use cases, review the design • Artifacts (what) • piece of information produced, modified, or used by a process • e.g:model, use case, document, source code • Workflows (when) • sequence of activities that produces a tangible result • e.g: project management, analysis and design, implementation,

  14. Additional Process Elements • Additional elements to make the process easier to understand and use: • Guidelines • rules, recommendations, heuristics (for programming, ui, …) • Templates • prototypes of artifacts • Tool Mentors • provide guidance on how to use a specific tool • Concepts • key concepts such as iteration, phase, risk, performance testing

  15. Use-Case Driven • Use Case Model describe complete functionality of system • Replaces the traditional functional specification of the system • Used not only for requirements capture, but all along the development process: • Developers create development and implementation models based on UC • Developers review each successive model for conformance to UC • Testers test implementation to ensure it correctly implements UC • Each iteration is driven by selected use cases through all activities from requirement to design and testing resulting in an increment

  16. Architecture Centric • Embodies the most significant aspects of the system. • Defines the organization of the software system • Selection of structural elements and their interfaces by which the system is composed together with their behavior • View of the whole design with the important characteristics made more visible • Two key artifacts: Software Architecture Description and Architectural Prototype • Is usually derived from the key Use Cases of the system, the ones that constitutes the core system functions • Evolves in parallel with the Use Cases: as use cases mature, more of the architecture is discovered, which in turn leads to the maturtion of more use cases • Expressed with Subsystems, Classes, Components.

  17. Iterative and Incremental • Way to divide the work • Iterations are steps in the process, and increments are growth of the product • Each iteration is aimed at: • implementing a set of use cases • addressing the most important risks • In each iteration, developers: • identify and specify the relevant use cases • create a design using the defined architecture • implement the design in components

  18. Lifecycle Phases Construction Elaboration Transition Inception Process Activities Analysis Integration Planning Design Implementation Testing Activities take place in varying degrees in each phase and iteration

  19. Inception Elaboration Construction Transition Planning Analysis Architecture Design Implementation Integration Testing

  20. Inception Elaboration Construction Transition Iteration n+3 Iteration n+1 Iteration n+2 Iteration n+4 Iteration m+2 Iteration 1 Iteration 2 Iteration m+1 Preliminary Iteration

  21. Inception Phase • Start with an idea • Specify the end-product vision • Work the business case for the project • Obtain funding • Analyze the project to assess scope and size of the effort • Plan the work • define inital iteration • define evaluation criteria • assess project risks and risk mitigation plan • Takes about

  22. Elaboration Phase • Capture and refine Requirements through Use Cases • Explore actors usage of the system by decomposing Use Cases using Sequence Diagram • Develop Analysis Model using Class Diagram by detailing about 10% of the Use Cases Model • Establish baseline architecture using Class Diagram (with Subsystems, Design Classes), Deployment Diagram, Implementation Diagram • Mitigate the significant risks • Plan the Construction Phase • Takes about fifth of the entire project time

  23. Construction Phase • Build the system in a series of iterations • Each iteration is a mini project • Develop a software product ready for inital operation (beta release) • Capture the remaining Requirements • Prioritize Use Cases to be implemented • Detail the remaining Use Cases, by completing their realization • Refine the Architectural Model by adding new subsystems and detailing existing ones • DESIGN DESIGN DESIGN • Implementation of the architecture, the subsystems, the classes • Perform Unit Testing • Integrate System • Perform System Testing

  24. Transition Phase • Focus on establishing the product in the operational environment • Distribute Beta Release • Gather user feedback • Refine product per user feedback • Re test the system • Prepare system rollout • Completing all project artifacts • All updated models • User, Operator, System Administrator Manuals • Postmortem of the project

  25. Planning • Define scope of Project • Define scope of next iteration • Identify Stakeholders • Capture Stakeholders expectation • Build team • Assess Risks • Plan work for the iteration • Plan work for Project • Develop Criteria for iteration/project closure/success • UML concepts used: initial Business Model, using class diagram

  26. Requirements • List candidate requirements • textual feature list • Understand system context • domain model describing important concepts of the context • business modeling specifying what processes have to be supported by the system • Capture functional and nonfunctional requirements • Use Case Model • Supplementary requirements • physical, interface, design constraints, implementation constraints

  27. Analysis • Analyze in depth the requirements: Scenario Diagram from Use Cases • Structure the Use Cases • Start reasoning about the internal of the system • Develop Analysis Model: Class Diagram and State Diagram • Focus on what is the problem not how to solve it • Understand the main concepts of the problem • Three main types of classes stereotypes may be used: • Boundary Classes: used to model interaction between system and its actors • Entity Classes: used to model information and associated behavior deirectly derived from real-world concept • Control Class: used to model business logic, computations transactions or coordination.

  28. Design • Refine the Class Diagram • Structure system with Subsystems, Interfaces, Classes • Define subsystems dependencies • Capture major interfaces between subsystems • Assign responsibilities to new design classes • Describe realization of Use Cases • Assign visibility to class attributes • Define Methods signature • Develop state diagram for relevant design classes • Use Interaction Diagram to distribute behavior among classes • Use Design Patterns for parts of the system

  29. Implementation/Integration • Distribute the system by mapping executable components onto nodes in the deployment model • Implement Design Classes and subsystems through packaging mechanism: • packagein Java, Project in VB, files directory in C++ • Acquire external components realizing needed interfaces • Unit test the components • Integrate via builds

  30. Testing • Develop set of test cases that specify what to test in the system • many for each Use Case • each test case will verify one scenario of the use case • based on Sequence Diagram • Develop test procedures specifying how to perform test cases • Develop test component that automates test procedures

More Related