Software Lifecycle Processes
4732029
190949815
2008-02-12T18:39:52Z
Mdd
113850
[[WP:UNDO|Undid]] revision 190946218 by [[Special:Contributions/213.63.24.159|213.63.24.159]] ([[User talk:213.63.24.159|talk]]) linkspam
'''Software lifecycle processes''' are methods and standards for improving and mastering development [[process]]es, supporting processes and management processes throughout the [[software lifecycle]].
The quest for the optimized mix of processes has resulted in different [[International standard|standards]] throughout the history of [[software development]]. One of the latest which was published is the [[ISO 12207|ISO/IEC 12207]] [[International standard|standard]]. This standard was proposed in 1988 and published in August 1995. It was created to establish a common international [[framework]] to acquire, supply, develop, operate, and maintain software.
[[ISO 12207|ISO/IEC 12207]] consists of three types of [[Process|processes]]:
* Primary lifecycle processes;
* Supporting lifecycle processes;
* Organizational lifecycle processes.
Because the complete [[ISO 12207|ISO/IEC 12207]] [[International standard|standard]] is very elaborate this entry will only explain some, more interesting, parts of the primary lifecycle processes.
In this entry the word “product” will be used instead of system, software product or software service.
==Primary lifecycle processes==
The primary lifecycle processes contain the core [[Process|processes]] involved in creating a software product. These processes are divided into five different main processes:
* Acquisition
* Supply
* Development
* Operation
* Maintenance
In the next chapters the activities and deliverables of the primary lifecycle processes are presented.
Because the primary lifecycle processes cover a very large area a [[Scope (project management)|scope]] was defined. This entry explains all the primary lifecycle processes but will explain the processes ‘Acquisition’ and ‘Development’ 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 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 [[Functional requirements|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 [[Functional requirements|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|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 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 12207|ISO/IEC 12207]] standard must be included in the [[contract]];
* Negotiate changes: during this activity the following tasks are completed
** [[Negotiation]]s are held with the selected suppliers;
* Update [[contract]]: during this activity the following tasks are completed
** [[Contract]] is updated with the result from the [[negotiation]]s 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 test]]s 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 plan|project management plan]] is developed. This plan contains information about the project such as different milestones that need to be reached. This [[Project plan|project management plan]] is needed during the next phase which is the development phase.
===[[Software development|Development]]===
During the [[Software development|development]] phase the software product is designed, created and tested and will result in a software product ready to be sold 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|V-model]].
Techniques that can be used during the development are [[Unified Modeling Language|UML]] for designing and [[Tmap|TMap]] for testing.
This entry contains the most important steps of the [[V model|V-model]].
* Define [[Functional requirements|software requirements]]: during this activity the following tasks are completed
** Gather the [[Functional requirements|software requirements]], or demands, for the product that is to be created.
* Create [[High-level design|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 [[module (programming)|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|High level design]] are designed separately. The modules are designed in as much detail as possible.
* [[Computer programming|Coding]]
** The code is created according to the high level design and the module design.
* Execute [[Unit test|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 testing|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 testing|System test]]
** This test checks whether all [[Functional requirements|software 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|software 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.
==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:
** [[Project initiation document|Initiation documents]];
* [[Request For Proposal|Request for proposal]] preparation: during this activity the following deliverables are developed:
** [[Request For Proposal|Request for proposal]];
* 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|software requirements]];
* High level design: during this activity the following deliverables are developed:
** [[High-level design|High level design]];
* Module design: during this activity the following deliverables are developed:
** Module design;
* [[Computer programming|Coding]]: during this activity the following deliverables are developed:
** [[Computer software|Code]];
* [[Unit test|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 testing|Integration test]]: during this activity the following deliverables are developed:
** Module 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 testing|System test]]: during this activity the following deliverables are developed:
** System test report;
==Models==
After the research on this subject the findings where put together in a model. This model was created with the [[Meta-modeling technique|modeling technique developed by Saeki]]. This technique consists of creating a model containing the different actions that are present in the [[Method (software engineering)|method]] and a [[computer model|model]] that contains the different deliverables that are created in the method.
These two models are linked together in process-data model.
The model is shown in picture 1 and explained in the accessory explanation.
<!-- Image with unknown copyright status removed: [[Image:Processdata-model.jpg]] -->
'''''Picture 1:''''' ''the process-data model''
'''''Explanation:''''' ''left in the picture, in the gray area ovals, the different main-activities are shown. These activities are explained in the chapter ‘Activities’, these main-activities contain different sub-activities that are shown in the white shapes. Arrows indicate in which order the activities occur. Right in the picture the different deliverables are shown. Lines indicate the different associations and multiplicities between the deliverables. Dotted lines between the activities and deliverables indicate the connection between the activities and deliverables.''
==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.
==See also==
* [[Meta-modeling technique|Meta-modeling technique by Saeki]]
* [[V model|V-model]]
* [[Unified Modeling Language|UML]]
* [[Tmap|Testing with TMap]]
* [[Configuration management process]]
* [[Build management]]
* [[Product structure modeling]]
* [[Version & variant management]]
* [[Release management]]
==References==
* Mitchell H. Levine. (2000), Analyzing the Deliverables Produced in the Software Development Life Cycle. Retrieved February 17, 2006, from Audit Serve, Inc. Website: [http://www.auditserve.com/articles/art_4.htm http://www.auditserve.com/articles/art_4.htm]
* SSC San Diego Process Asset Library. Retrieved February 19, 2006 from SSC San Diego Process Asset Library Website: [http://sepo.spawar.navy.mil/12207.doc http://sepo.spawar.navy.mil/12207.doc]
* The Systems and Software Consortium, Inc. (1995). ISO/IEC 12207. Retrieved February 15, 2006, from Systems And Software Consortium. Website: [http://www.software.org/quagmire/descriptions/iso-iec12207.asp http://www.software.org/quagmire/descriptions/iso-iec12207.asp]
[[Category:Software development process]]