Inception Defines the scope of the project. A business plan is often created to determine whether resources should be committed or not. The model is 20% complete. Elaboration Plan project, specify features, baseline architecture. Requirements are firmed up, we’re now 80% complete. A detailed cost/resource estimation can be drawn up. Construction Build the product. Several iterations. Transition Move the product into and end user environment. Training, installation and support. An iteration is a distinct sequence of activities based on an established plan and evaluation criteria, resulting in an executable release (internal or external) A workflow shows all the activities you might go through to produce a particular set of artifacts – more later.
Merge Sort 09/23/12 10:24
Software Production Layout_Se lect7 btech
Software Production Layout Software Process Software Process Project Project instantiated by Project Project Project Project consists of consists of Project Execution Project Execution Project Management ••Analysis Analysis Project Management ••Design ••Planning Planning Design ••Control ••Implementation Implementation Control ••Test Test uses uses Project System of Project Management methods for Management System of Software Software Methodology software product Methodology methods for Development Development development project Methodology Methodology is a management is a
A Definition of ProcessW. Humphrey and P. Feiler: "A process is a set of partially W. Humphrey and P. Feiler: "A process is a set of partiallyordered steps intended to reach a goal..."(to produce and ordered steps intended to reach a goal..."(to produce andmaintain requested software deliverables). A software process maintain requested software deliverables). A software processincludes sets of related artifacts, human and computerized includes sets of related artifacts, human and computerizedresources, organizational structures and constraints. resources, organizational structures and constraints. B A D C Relationships of all tasks (workflow) PROCESS Skills, Tools Training, Motivation, & Management
Rational Unified Process®• The Rational Unified Process® is a Software Engineering Process. It provides a disciplined approach to assigning tasks and responsibilities within a development organization. Its goal is to ensure the production of high-quality software that meets the needs of its end-users, within a predictable schedule and budget.
The Unified Process of SoftwareDevelopment • The key feature:Software development is done in a series of fixed periods, for example, between 2 and 6 weeks. Each period is called as iteration. • At the end of each iteration, we have an executable system. • Each iteration has its own requirement analysis, design, coding and testing. • The software development is incremental. Implement New features added apart from the User’s suggested changes.
Rational Unified Process (RUP) time Phases Process Workflows Inception Elaboration Construction Transition Business Modelingtconten Requirements Analysis & Design Implementation Test Deployment Supporting Workflows Configuration & Change Mgmt Project Management Environment Preliminary Iter. Iter. Iter. Iter. Iter. Iter. Iter. Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1 Iterations
Spiral Development Product:class Product: requirements models + specifications Step n: Step n+1: Analyze Design requirements complete targeted requirements Step n+2: Step n+3: Implement Test Product: code + Product: test results +Adapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission.
Incremental Development Iteration No. 1 2 3 867 868 Update SPMP1 Test whole Integrate Update Test documentation Test units Update source code Implement Design Update SDD2 Analyze requirements Update SRS3 1 2 Software Project Mangement Plan (chapter 2); Software Design Document (chapter 5); 3 Software Requirements Specification (chapter 3);Adapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission.
The Unified Software Development Process: Classification of Iterations • Inception iterations: preliminary interaction with stakeholders – primarily customer – users – financial backers etc. • Elaboration iterations : finalization of what’s wanted and needed; set architecture baseline • Construction iterations : results in initial operational capability • Transition iterations : completes product releaseAdapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission.
USDP vs. Standard Terminology ½ (Booch, Jacobson &Rumbaugh) Classification of iterations Individual iteration Inception Elaboration Construction Transition Prelim. Iter. .. Iter. Iter. ….. Iter. Iter. … Iter. iterations #1 #n #n+1 #m #m+1 #k Requirements Analysis USDP calls these “core workflows” Design Implemen- (Classically called tation “phases”) Test
Unified Process Matrix Jacobson et al: USDP Inception Elaboration Construction Transition Prelim. Iter. .. Iter. Iter. ….. Iter. Iter. ….. Iter. iterations #1 #n #n+1 #m #m+1 #kRequirements Amount of effort expended on the requirements phase during the first Construction Analysis iteration Design Implemen- tation Test
The Six USDP Models (Views of the Application) Use-case Test model model Analysis Implementation model model Design Deployment model modelGraphics reproduced with permission from Corel.
Life of the Unified Process Inception Elaboration Construction Transition The seed idea for the The architecture The software is brought The software is development is brought to is defined from an executable turned over to thethe point of being sufficiently architectural baseline user community well founded to warrant ... ... to the point where it isentering into the elaboration ready to be transitioned Iteration Iteration n phase to the user community n-1 Iteration 1 Iteration 2 ... ... ... Inception Elaboration Construction Transition Inception Elaboration Construction Transition The seed idea for the The architecture The software is brought The software is Inception Elaboration Construction Transition Inception Elaboration Construction Transition development is brought to is defined from an executable turned over to the The seed idea for the The architecture The software is brought The software is The seed idea for the The architecture The software is brought The software is The seed idea for the The architecture The software is brought The software is the point of being sufficiently architectural baseline user community w ell founded to warrant ... ... to the point where it is development is brought to is defined from an executable turned over to the development is brought to is defined from an executable turned over to the development is brought to is defined from an executable turned over to the the point of being sufficiently architectural baseline user community entering into the elaboration phase ready to be transitioned to the user community Iteration n-1 Iteration n well founded to warrant ... ... to the point where it is the point of being sufficiently ... ... architectural baseline user community the point of being sufficiently ... ... architectural baseline user community ... ... Iteration Iteration n well founded to warrant to the point where it is well founded to warrant to the point where it is Iteration 1 Iteration 2 entering into the elaboration ready to be transitioned Iteration Iteration n Iteration Iteration n n-1 entering into the elaboration ready to be transitioned entering into the elaboration ready to be transitioned phase to the user community phase to the user community n-1 phase to the user community n-1 ... ... Iteration 1 Iteration 2 Iteration 1 Iteration 2 ... ... Iteration 1 Iteration 2 ... ... Cycles Birth Death 12
Unified Process Models Use Case Model specified by Models Use Cases verified by and their relationships to users Analysis Model Test Model Refines the use cases and Describes the test cases makes an initial allocation of that verify the use cases behavior to set of objects realized by distributed by Design Model Defines the static structure of the system as Deployment Model subsystems, classes and Defines the physical nodes implemented by of computers and the interfaces and defines the use cases as collaborations mapping of the components of subsystems, classes and to those nodes interfaces Implementation Model Includes components (representing source code) and the mapping of classes to components 13
The Four Ps in Software Development -People, Project, Product and Process • People - The architects, developers, testers and the supporting management, users, customers, and stakeholders - Actual Humans! • Project - The organizational element through which software is managed. • Product - Artifacts that are created during the life of the project, e.g., models, source code. • Process - A definition of the complete set of activities needed to transform users’ requirements into a product. A process is a template for creating projects. – Tools - Software that is used to automate the activities defined in the process. 14
Cycles and Phases Each cycle results in a new release of the system, Each cycle results in a new release of the system, and each is a product ready for delivery. This and each is a product ready for delivery. This product has to accommodate the specified needs. product has to accommodate the specified needs. The development cycle is divided in four consecutive phases • Inception: a good idea is developed into a vision of the end product and the business case for the product is presented. • Elaboration: most of the product requirements are specified and the system architecture is designed. • Construction: the product is built – completed software is added to the skeleton (architecture) • Transition: the product is moved to user community (beta testing, training …)
Inception phase• Establishing the projects software scope and boundary conditions, including an operational vision, acceptance criteria and what is intended to be in the product and what is not.• Discriminating the critical use cases of the system, the primary scenarios of operation that will drive the major design tradeoffs.• Exhibiting, and maybe demonstrating, at least one candidate architecture against some of the primary scenarios.• Estimating the overall cost and schedule for the entire project (and more detailed estimates for the elaboration phase that will immediately follow).• Estimating potential risks (the sources of unpredictability)• Preparing the supporting environment for the project.
Elaboration phase• Defining, validating and baselining the architecture as rapidly as practical.• Refining the Vision, based on new information obtained during the phase, establishing a solid understanding of the most critical use cases that drive the architectural and planning decisions.• Creating and baselining detailed iteration plans for the construction phase.• Refining the development case and putting in place the development environment, including the process, tools and automation support required to support the construction team.• Refining the architecture and selecting components. Potential components are evaluated and the make/buy/reuse decisions sufficiently understood to determine the construction phase cost and schedule with confidence. The selected architectural components are integrated and assessed against the primary scenarios.
Construction phase• Resource management, control and process optimization• Complete component development and testing against the defined evaluation criteria• Assessment of product releases against acceptance criteria for the vision.
Transition phase• Executing deployment plans.• Finalizing end-user support material.• Testing the deliverable product at the development site.• Creating a product release.• Getting user feedback.• Fine-tuning the product based on feedback.• Making the product available to end users.
Rational Unified Process®Best Practices:• Develop software iteratively• Manage requirements• Use component-based architectures• Visually model software• Verify software quality• Control changes to software
1. Manage Your Requirements • Elicit, organize, and document required functionality and constraints • Track and document tradeoffs and decisions • Business requirements are easily captured and communicated through use cases • Use cases are important planning instruments Use-Case Model realization influenced by verifies Design Model Implementation Model Test Model
2. Develop Software Iteratively – An initial design will likely be flawed with respect to its key requirements – Late-phase discovery of design defects results in costly over-runs and/or project cancellation Requirements Analysis & Design Planning ImplementationInitialPlanning Management Environment Deployment Evaluation Test
quirementsalysis Waterfall Development Design T I M E Code & Unit Testing Subsystem Testing System T
RequirementsAnalysis Design Code & Unit Testing T I M E Subsystem Testing System Testing Time R I S K Waterfall Development: Risk vs.
Risk Profile of an Iterative Development Waterfall Inception ElaborationRisk Construction Transition Preliminary Architect. Architect. Devel. Devel. Devel. Transition Transition Post- Iteration Iteration Iteration Iteration Iteration Iteration Iteration Iteration deployment Time
Iterative DevelopmentCharacteristics – Critical risks are resolved before making large investments – Initial iterations enable early user feedback – Testing and integration are continuous – Objective milestones provide short-term focus – Progress is measured by assessing implementations – Partial implementations can be deployed
3. Employ Component-based Architecture• Design, implement and test your architecture up-front!• A systematic approach to define a “good” architecture Resilient to change by using well-defined interfaces By using and reverse engineering components Derived from top rank use cases Application- specific Business- specific Component-based Middleware Architecture with layers System- software
4. Model Software Visually • Aiding understanding of complex systems • Exploring and comparing design alternatives at a low cost • Forming a foundation for implementation • Capturing requirements precisely • Communicating decisions unambiguously Sub SystemsVisualModeling Classesraises the levelof abstraction Code
5. Verify Software Quality• Create tests for each key scenario to ensure that all requirements are properly implemented• Unacceptable application performance hurts as much as unacceptable reliability• Verify software reliability - memory leaks, bottle necks• Test every iteration - automate test! Deployment Development Software problems Cost are 100 to 1000 times more costly to find
6. Control Changes to Software• Control, track and monitor changes to enable iterative development• Establish secure workspaces for each developer – Provide isolation from changes made in other workspaces – Control all software artifacts - models, code, docs, etc.• Automate integration and build management Workspace Parallel Management Development CM is more than just REPORTALERT check-in and Process Build check-out Integration Management
Summary: Best Practices of Software Engineering • The result is software that is – On Time – On Budget – Meets Users Needs Analyst Performance Engineer Develop Iteratively Manage Requirements Use Component Tester Developer Best Architectures Project Practices Model Visually Manager Verify Quality Control Release Change Engineer
Static Structure of the Process • A process describes who is doing what, how, and when using certain modeling elements:
Elements of a process• Workers (Roles) define the behavior and responsibilities of an individual (designer, analyst, programmer ...), or a group of individuals working together as a team.• Artifacts are things that are produced, modified, or used by a process (model, document, source code …).• Activities are performed by workers to create or update some artifacts (review design, compile code, perform test …).• Workflows are sequences of activities that produce results of observable value (business modeling, implementation …). 33
Management and TechnicalArtifacts The most important kind of artifact are models. A model is a simplification of reality, created to better A model is a simplification of reality, created to better understand the system being created. understand the system being created. Technical artifacts may be divided into: • Requirements set: business, domain, use case, and analysis models • Design set: design, and test models • Implementation set: implementation model, source code, configuration, and data files • Deployment set: deployment model, information about the way software is actually packaged
Core Engineering Workflows• Business modeling describes the structure and dynamics of the organization• Requirement describe the use case-based method for eliciting requirements• Analysis and design describe the multiple architectural views• Implementation takes into account sw development, unit test, and integration• Test describes test cases and procedures• Deployment covers the deliverable system configuration
Workflows and Models Business Modeling Business Process Model Domain Model Use Case Model UML diagrams Requirements provide views into each model Analysis Analysis Model Design Desing Model Deployment Model Implementation Implementation Model Test Test Model Each workflow is associated with one or more models
Configuration & Change Management• Supports development methods• Maintains product integrity• Ensures completeness & correctness of configured product• Provides stable environment within which to develop product• Restricts changes to artifacts based on project policies• Provides an audit trail on why, when & by whom any artifact was changed
Project Management• A framework for managing software-intensive projects• Practical guidelines for planning, staffing, executing & monitoring projects• A framework for managing risk
Environment• Design, implement and manage the project’s required technical environments• Define the technical architectures for the development, system validation, testing & staging/release management environments• When possible, standard architectural models for given types of platforms should be utilized when defining the production environment
Bringing It All Together... In an iteration, you walk through all workflows Phases Process Workflows Inception Elaboration Construction Transition Business Modeling Requirements Analysis & Design Implementation Test Deployment Supporting Workflows Configuration & Change Mgmt Project Management Environment Preliminary Iter. Iter. Iter. Iter. Iter. Iter. Iter. Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1 Iterations
Tools • The success of process adoption is significantly improved by the use of appropriate supporting tools. • Tool Mentors provide detailed descriptions of how to perform specific process activities or steps, or produce a particular artifact or report, using one or more tools.