ISO/IEC 12207
The ISO/IEC 12207 Systems and software engineering – Software life cycle processes[1] is an international standard for software lifecycle processes. It aims to be the standard that defines all the tasks required for developing and maintaining software.
The ISO/IEC 12207 standard establishes a process of lifecycle for software, including processes and activities applied during the acquisition and configuration of the services of the system. Each Process has a set of outcomes associated with it. There are 23 Processes, 95 Activities, 325 Tasks and 224 Outcomes (the new "ISO/IEC 12207:2008 Systems and software engineering – Software life cycle processes" defines 43 system and software processes).
The standard has the main objective of supplying a common structure so that the buyers, suppliers, developers, maintainers, operators, managers and technicians involved with the software development use a common language. This common language is established in the form of well defined processes. The structure of the standard was intended to be conceived in a flexible, modular way so as to be adaptable to the necessities of whoever uses it. The standard is based on two basic principles: modularity and responsibility. Modularity means processes with minimum coupling and maximum cohesion. Responsibility means to establish a responsibility for each process, facilitating the application of the standard in projects where many people can be legally involved.
The set of processes, activities and tasks can be adapted according to the software project. These processes are classified in three types: basic, for support and organizational. The support and organizational processes must exist independently of the organization and the project being executed. The basic processes are instantiated according to the situation.
History
- ISO/IEC 12207:2008 is newest version of the international standards.
- Revises: ISO/IEC 12207:1995/Amd 2:2004
- Revises: ISO/IEC 12207:1995/Amd 1:2002
- First version was published 1995
Primary lifecycle processes
The primary lifecycle processes contain the core of processes involved in creating a software product. These processes are divided into six different main processes:
- Acquisition
- Supply
- Development
- Operation
- Maintenance
- Destruction
Because the primary lifecycle processes cover a very large area a scope was defined. This entry explains all the primary lifecycle processes but will explain the Acquisition and Development processes more extensively.
Activities
Each phase within the primary lifecycle processes can be divided into different activities. This chapter explains the different activities for each primary lifecycle process..
Acquisition
Acquisition covers all the activities involved in initiating a project. The acquisition phase can be divided into different activities and deliverables that are completed chronologically.
- Initiation: during this activity the following tasks are completed
- The need is described why to acquire, develop, or enhance a product;
- System requirements are defined and approved if applicable;
- The global software requirements are defined;
- Evaluation of other options, like a purchase of an off-the-shelf product or enhancement of an existing product;
- If an off-the-shelf product is purchased, the software requirements of this product need to be analyzed.
- An acquisition plan is developed, this plan will be used further on during the acquisition phase
- Acceptance criteria are defined.
- Request for proposal preparation: during this activity the following tasks are completed
- Acquisition requirements, like System requirements and technical constraints such as target environment, are defined.
- Required ISO/IEC 12207 process for the project are defined and changed accordingly if needed.
- Contract milestones for reviewing and supplier's progress audits are defined.
- Prepare Contract: during this activity the following tasks are completed
- Selection procedure for suppliers are developed;
- Suppliers, based on the developed selection procedure, are selected;
- The tailor-made ISO/IEC 12207 standard must be included in the contract;
- Negotiate changes: during this activity the following tasks are completed
- Negotiations are held with the selected suppliers;
- Update contract: during this activity the following tasks are completed
- Contract is updated with the result from the negotiations in the previous activity.
- Supplier monitoring: during this activity the following tasks are completed
- Activities of the suppliers according to the agreements made are monitored;
- Work together with suppliers to guarantee timely delivery if needed.
- Acceptance and completion: during this activity the following tasks are completed
- Acceptance tests and procedures are developed;
- Acceptance and testing on the product is conducted;
- Configuration management on the delivered product is conducted;
Supply
During the supply phase a project management plan is developed. This plan contains information about the project such as different milestones that need to be reached. This project management plan is needed during the next phase which is the development phase.
Development
During the development phase the software product is designed, created and tested and will result in a software product ready to be released to the customer. Throughout time many people have developed means of developing a software application. The choice of developing method often depends on the present situation. The development method which is used in many projects is the V-model. Techniques that can be used during the development are UML for designing and TMap for testing. This entry contains the most important steps of the V-model.
- Define functional requirements: during this activity the following tasks are completed
- Gather the functional requirements, or demands, for the product that is to be created.
- Create High level design: during this activity the following tasks are completed
- A basic layout of the product is created. This means the setup of different modules and how they communicate with each other. This design does not contain very much detail about the modules.
- Create Module design
- The different modules present in the High level design are designed separately. The modules are designed in as much detail as possible.
- Coding
- The code is created according to the high level design and the module design.
- Execute Module test
- The different modules are tested for correct functioning. If this is the case the project can move to the next activity, else the project returns to the module design phase to correct any errors.
- Execute Integration test
- The communication between modules is tested for correct functioning. If this is the case the project can move to the next activity, else the project falls back to the high level design to correct any errors.
- Execute System test
- This test checks whether all functional requirements are present in the product. If this is the case the product is completed and the product is ready to be transferred to the customer. Else the project falls back to the software requirements activity and the functional requirements have to be adjusted.
Operation
The operation and maintenance phases occur simultaneously, the operation-phase consists of activities like assisting users in working with the created software product.
Maintenance
The maintenance-phase consists of maintenance-tasks to keep the product up and running. The maintenance includes any general enhancements, changes and additions, which might be required by the end-users.These defects and deficiencies are usually documented by the developing organisation to enable future solutions and known issues addressing in any future maintenance releases. There is no disposal phase
Deliverables
The different deliverables that are developed per activity are explained in this chapter.
Acquisition
Acquisition covers the activities involved in initiating a project. The acquisition phase can be divided into different activities and deliverables that are completed chronologically.
- Initiation: during this activity the following deliverables are developed:
- Request for proposal preparation: during this activity the following deliverables are developed:
- Prepare Contract: during this activity the following deliverables are developed:
- Contract: this is a draft agreement between the company and suppliers, set up by the company.
- Negotiate Changes: during this activity the following deliverables are developed:
- Input from the suppliers: suppliers can react on the draft agreement submitted by the company, this reaction will result in input from the suppliers
- Update Contract: during this activity the following deliverables are developed:
- Final Contract;
- Supplier monitoring: during this activity the following deliverables are developed:
- Supplier Monitor Report: this report covers the advances of the suppliers involved based on different milestones.
- Acceptance and completion: during this activity the following deliverables are developed:
- Acquisition report: this report covers the acceptance and completion of the acquisition phase.
Development
During the development phase the software product is designed, created and tested and will result in a software product ready to be sold to the customer.
- Define Software Requirements: during this activity the following deliverables are developed:
- Software Requirements: this is a collection of different functional requirements;
- High level design: during this activity the following deliverables are developed:
- Module design: during this activity the following deliverables are developed:
- Module design;
- Coding: during this activity the following deliverables are developed:
- Code;
- Module test: during this activity the following deliverables are developed:
- Module test report, this test report contains the test-results which are formed after a module test of the application. Based on this test-report the project-team can decide which action to undertake further.
- Integration test: during this activity the following deliverables are developed:
- Integration test report, this test report contains the test-results which are formed after an integration test of the application. Based on this test-report the project-team can decide which action to undertake further.
- System test: during this activity the following deliverables are developed:
- System test report;
Example
The method presented in this entry can be used in a company that is responsible for creating and maintaining a software product for a customer. Especially when this company decides to build an application from scratch and that maintenance and assisting in the operation is also done by the company developer.
See also
- IEEE 12207
- Software development process
- Software release life cycle
- ISO/IEC 15288
- ISO/IEC 15504
- Meta-modeling technique
- V model
- Unified Modeling Language
- Build management
- Release management
- Application Lifecycle Framework
- ISO/IEC JTC 1/SC 7
References
- Mitchell H. Levine (2006). "Analyzing the Deliverables Produced in the Software Development Life Cycle". Audit Serve, Inc. Retrieved 2011-10-28.
- "SSC San Diego Process Asset Library". Archived from the original on June 24, 2006. Retrieved 2006-02-19.