270 likes | 402 Views
The Software Product Life Cycle. Views of the Software Product Life Cycle. Management Software engineering Engineering design Architectural design
E N D
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.
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.
Management View • Goal oriented • Concerned with cost and schedule and overall quality • The four phases of this view are: • Inception • Elaboration • Construction • Transition • A product may undergo multiple development cycles during its entire life cycle. The subsequent cycles are called evolution cycles.
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.
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).
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.
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.
Software Engineering View • Represents a software development project as multiple chains of activities running concurrently and overlapping. • The four main activities are: • Requirements analysis and specification • Design • Implementation and testing • 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
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.
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.
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.
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.
Implementation and Testing • This is the activity that transforms the design into source code. • It also involves building and testing the system.
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.
Engineering Design View • Considers the steps necessary to produce a complete design of the system. • The four steps (phases) are: • Product planning • Conceptual design • Embodiment design • Detail design • Each level focuses on a different level of abstraction and a different set of design objectives.
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.
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
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.
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.
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: • Predesign phase • Domain analysis phase • Schematic design phase • Design development phase • Building phases
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.
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
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.
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.
Building Phases • The four building phases are: • Project documents phase -- Focuses on a construction plan, user interface style guide, and a test guide • Staffing or contracting phase -- Helps in the identification of a development team • Construction phase -- Ensures that what is built is valid with respect to the architectural description • Postconstruction phase -- Assists in the deployment of the system, training of users, and maintenance efforts
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.