27
The Software Product Life Cycle

The Software Product Life Cycle. Views of the Software Product Life Cycle Management Software engineering Engineering design Architectural design

  • View
    245

  • Download
    1

Embed Size (px)

Citation preview

Page 1: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

The Software Product Life Cycle

Page 2: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Views of the Software Product Life Cycle

Management Software engineering Engineering design Architectural design

When synthesized these views for a coherent view of the entire software life cycle. A software architect will need to understand these views in order to work within them and communicate activities and progress.

Page 3: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Some Definitions

Phase – implies some interval of time; phases may be serial, each executing one at a time in a strict order, e.g., a product planning phase.

Activity – a particular type of work performed by an individual or group performed within a single phase or across multiple phases, e.g., object-oriented analysis.

Task – a specific schedulable item that might be identified in a project plan and assigned resources, e.g., implement a specific business object.

Page 4: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Management View

Goal oriented Concerned with cost and schedule and overall

quality The four phases of this view are:

1. Inception2. Elaboration3. Construction4. Transition

A product may undergo multiple development cycles during its entire life cycle. The subsequent cycles are called evolution cycles.

Page 5: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Inception Phase

Begins with the identification of a real or perceived need (the problem) and envisions a system that can satisfy the need.

The exit criteria are a product vision and a business case for the product.

Page 6: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Elaboration Phase

This is the planning and specification phase.

It involves requirements engineering. Exit criteria are a specification of

requirements (including quality attribute requirements) and an architectural concept (a high level design approach that addresses the requirements).

Page 7: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Construction Phase

This is where the product is implemented and tested.

The exit criteria is a complete version of the product that meets quality goals.

Page 8: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Transition Phase

This is where the product is transitioned to its users (the product is shipped).

This includes any manufacturing, delivering, training, and supporting.

The exit criteria are the final version of the product including software, supporting documentation, and training and support services.

The released version of the product may enter into a maintenance and support subphase where bug fixes and small enhancements are made.

Page 9: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Software Engineering View

Represents a software development project as multiple chains of activities running concurrently and overlapping.

The four main activities are:1. Requirements analysis and specification2. Design 3. Implementation and testing4. Deployment and maintenance

Think of the input of each activity as a “what” and the output as a “how”.

Each activity maps to many phases of the management view

Page 10: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Requirements Analysis and Specification This is the activity of gathering,

identifying, and formalizing requirements in order to understand the problem.

The functional and nonfunctional specifications model the requirements using natural language prose, semiformal models like use cases and object-oriented analysis, or formal models using something like the Z notation.

Page 11: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Requirements Analysis and Specification (Cont’d) The purpose of this activity is to capture

enough information and knowledge to create an architectural description of a solution to the problem.

The software architect or architecture team should be the recipient of the requirements since requirements drive the architectural design.

Some of the requirements may be constraints on the system.

Page 12: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Design

This is the activity of transforming requirements specifications into a technically feasible solution.

Here is where design methods and design patterns are used.

The design activity encompasses classic object-oriented design as well as higher-level architectural design methods.

Page 13: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Design (Cont’d)

The result of design is a specification of how to build the application or system and the constraints on the implementation.

Design solutions may be specified informally or by using notations such as those in the UML.

Page 14: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Implementation and Testing

This is the activity that transforms the design into source code.

It also involves building and testing the system.

Page 15: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Deployment and Maintenance

This is the activity associated with delivering the system and deploying it so the end users can use it.

It also includes maintenance efforts required to fix defects and make minor enhancements to the system.

Page 16: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Engineering Design View

Considers the steps necessary to produce a complete design of the system.

The four steps (phases) are:1. Product planning

2. Conceptual design

3. Embodiment design

4. Detail design

Each level focuses on a different level of abstraction and a different set of design objectives.

Page 17: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Product Planning: Specification of Information

This phase begins with a vision of a product or identification of a need.

It includes all the activities conducted during product inception.

The focus is on the core capabilities of the application or system and not necessarily on the identification of the required quality attributes or its complete functionality.

Page 18: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Conceptual Design: Specification of Principle

In this phase the domain problem is analyzed and structured and a set of working principles or solution concepts is created.

The output is a candidate architecture or architectures

Page 19: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Embodiment Design: Specification of Layout

In this phase the architectural design concepts identified during conceptual design are fleshed out and evaluated.

The output is a solidified architecture and possibly a prototype or skeleton of the application.

Page 20: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Detail Design: Specification of Production

This phase involves the production of the actual source code of the system and any detail design produced to help in the development of the code.

It may involve the production of certain diagrams.

Page 21: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Architectural View

This view is centered on the design of the application or system and how the design drives the development.

The phases of architecting are as follows:1. Predesign phase

2. Domain analysis phase

3. Schematic design phase

4. Design development phase

5. Building phases

Page 22: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Predesign Phase

The architect is involved early in a project.

Predesign involves studying the entire enterprise context in which the application will be a part.

Page 23: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Domain Analysis Phase

During this phase the software architect strives to understand as completely as possible the needs of the acquirers and users and the application domain.

Domain analysis is one of the most important activities of software architecturing

Page 24: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Schematic Design Phase

This phase is where the architectural-level design is produced.

This phase requires considerable communication between architects and the various stakeholders.

Reviews and evaluations of the design an variations are conducted.

Page 25: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Design Development Phase

This phase focuses on refining the architectural description and selecting among alternatives.

A final design is produced that is detailed enough to assess risks and to make a decision whether to proceed with development.

Page 26: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Building Phases

The four building phases are:1. Project documents phase

-- Focuses on a construction plan, user interface style guide, and a test guide

2. Staffing or contracting phase-- Helps in the identification of a development team

3. Construction phase-- Ensures that what is built is valid with respect to

the architectural description4. Postconstruction phase

-- Assists in the deployment of the system, training of users, and maintenance efforts

Page 27: The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design

Summary

No one view captures the essence of the development cycle.

Each represents a different perspective or stakeholder point of view.

Each view contains some overlapping concepts and ways of visualizing the process.