8
3/18/2014 Software development process - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Software_development_process 1/8 Software development process From Wikipedia, the free encyclopedia A software development process , also known as a software development life-cycle (SDLC), is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development life cycle. There are several models for such processes, each describing approaches to a variety of tasks or activities that take place during the process. Some people consider a life-cycle model a more general term and a software development process a more specific term. For example, there are many specific software development processes that 'fit' the spiral life-cycle model. ISO/IEC 12207 is an international standard for software life-cycle processes. It aims to be the standard that defines all the tasks required for developing and maintaining software. Contents 1 Overview 2 Software development activities 2.1 Planning 2.2 Implementation, testing and documenting 2.3 Deployment and maintenance 3 Software development models 3.1 Waterfall model 3.2 Spiral model 3.3 Iterative and incremental development 3.4 Agile development 3.5 Rapid application development 3.6 Code and fix 4 Process improvement models 5 Formal methods 6 See also 6.1 Development methods 6.2 Related subjects 7 References 8 External links Overview Software development organizations implement process methodologies to ease the process of development. Sometimes, contractors may require methodologies employed, an example is the U.S. defense industry, which requires a rating based on process models to obtain contracts. The international standard for describing the method of selecting, implementing and monitoring the life cycle for software is ISO/IEC 12207.

Software Development Life Cycle

Embed Size (px)

DESCRIPTION

Complete description on softwre development life cycle

Citation preview

Page 1: Software Development Life Cycle

3/18/2014 Software development process - Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/Software_development_process 1/8

Software development processFrom Wikipedia, the free encyclopedia

A software development process, also known as a software development life-cycle (SDLC), is a structureimposed on the development of a software product. Similar terms include software life cycle and softwareprocess. It is often considered a subset of systems development life cycle. There are several models for suchprocesses, each describing approaches to a variety of tasks or activities that take place during the process. Somepeople consider a life-cycle model a more general term and a software development process a more specific term.For example, there are many specific software development processes that 'fit' the spiral life-cycle model. ISO/IEC12207 is an international standard for software life-cycle processes. It aims to be the standard that defines all thetasks required for developing and maintaining software.

Contents

1 Overview

2 Software development activities

2.1 Planning2.2 Implementation, testing and documenting

2.3 Deployment and maintenance

3 Software development models

3.1 Waterfall model

3.2 Spiral model

3.3 Iterative and incremental development3.4 Agile development

3.5 Rapid application development

3.6 Code and fix

4 Process improvement models

5 Formal methods6 See also

6.1 Development methods

6.2 Related subjects7 References

8 External links

Overview

Software development organizations implement process methodologies to ease the process of development.Sometimes, contractors may require methodologies employed, an example is the U.S. defense industry, whichrequires a rating based on process models to obtain contracts.

The international standard for describing the method of selecting, implementing and monitoring the life cycle forsoftware is ISO/IEC 12207.

Page 2: Software Development Life Cycle

3/18/2014 Software development process - Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/Software_development_process 2/8

A decades-long goal has been to find repeatable, predictable processes that improve productivity and quality.Some try to systematize or formalize the seemingly unruly task of designing software. Others apply projectmanagement techniques to designing software. Without effective project management, software projects can easilybe delivered late or over budget. With large numbers of software projects not meeting their expectations in terms offunctionality, cost, or delivery schedule, it is effective project management that appears to be lacking.

Organizations may create a Software Engineering Process Group (SEPG), which is the focal point for processimprovement. Composed of line practitioners who have varied skills, the group is at the center of the collaborativeeffort of everyone in the organization who is involved with software engineering process improvement.

Software development activities

Planning

Planning is an objective of each and every activity, where we want to discover things that belong to the project. An

important task in creating a software program is extracting the requirements or requirements analysis.[1] Customerstypically have an abstract idea of what they want as an end result, but do not know what software should do.Skilled and experienced software engineers recognize incomplete, ambiguous, or even contradictory requirementsat this point. Frequently demonstrating live code may help reduce the risk that the requirements are incorrect.

Once the general requirements are gathered from the client, an analysis of the scope of the development should bedetermined and clearly stated. This is often called a scope document.

Certain functionality may be out of scope of the project as a function of cost or as a result of unclear requirementsat the start of development. If the development is done externally, this document can be considered a legaldocument so that if there are ever disputes, any ambiguity of what was promised to the client can be clarified.

Implementation, testing and documenting

Implementation is the part of the process where software engineers actually program the code for the project.

Software testing is an integral and important phase of the software development process. This part of the processensures that defects are recognized as soon as possible.

Documenting the internal design of software for the purpose of future maintenance and enhancement is donethroughout development. This may also include the writing of an API, be it external or internal. The softwareengineering process chosen by the developing team will determine how much internal documentation (if any) isnecessary. Plan-driven models (e.g., Waterfall) generally produce more documentation than Agile models.

Deployment and maintenance

Deployment starts directly after the code is appropriately tested, approved for release, and sold or otherwisedistributed into a production environment. This may involve installation, customization (such as by setting

parameters to the customer's values), testing, and possibly an extended period of evaluation.[citation needed]

Software training and support is important, as software is only effective if it is used correctly.[citation needed]

Page 3: Software Development Life Cycle

3/18/2014 Software development process - Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/Software_development_process 3/8

The activities of the software

development process represented in

the waterfall model. There are several

other models to represent this

process.

Maintaining and enhancing software to cope with newly discovered faults or requirements can take substantial time

and effort, as missed requirements may force redesign of the software.[citation needed]

Software development models

Several models exist to streamline the development process. Each one has its pros and cons, and it is up to thedevelopment team to adopt the most appropriate one for the project. Sometimes a combination of the models maybe more suitable.

Waterfall model

Main article: Waterfall model

The waterfall model shows a process, where developers have to followthese phases in order:

1. Requirements specification (Requirements analysis)2. Software design

3. Implementation and Integration4. Testing (or Validation)

5. Deployment (or Installation)6. Maintenance

In a strict Waterfall model, after each phase is finished, it proceeds to thenext one. Reviews may occur before moving to the next phase whichallows for the possibility of changes (which may involve a formal changecontrol process). Reviews may also be employed to ensure that thephase is indeed complete; the phase-completion criteria are oftenreferred to as a "gate" that the project must pass through to move to thenext phase. Waterfall discourages revisiting and revising any prior phase once it's complete. This "inflexibility" in apure Waterfall model has been a source of criticism by supporters of other more "flexible" models.

The Waterfall model is also commonly taught with the mnemonic A Dance in the Dark Every Monday, representing

Analysis, Design, Implementation, Testing, Documentation and Execution, and Maintenance.[citation needed]

Spiral model

Main article: Spiral model

The key characteristic of a Spiral model is risk management at regular stages in the development cycle. In 1988,Barry Boehm published a formal software system development "spiral model," which combines some key aspect ofthe waterfall model and rapid prototyping methodologies, but provided emphasis in a key area many felt had beenneglected by other methodologies: deliberate iterative risk analysis, particularly suited to large-scale complexsystems.

The Spiral is visualized as a process passing through some number of iterations, with the four quadrant diagramrepresentative of the following activities:

Page 4: Software Development Life Cycle

3/18/2014 Software development process - Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/Software_development_process 4/8

Spiral model (Boehm, 1988)

1. Formulate plans to: identify software targets, implement the program, clarify the project development

restrictions

2. Risk analysis: an analytical assessment of selected programs, to consider how to identify and eliminate risk3. Implementation of the project: the implementation of software development and verification

Risk-driven spiral model, emphasizing the conditions of options and constraints in order to support software reuse,software quality can help as a special goal of integration into the product development. However, the spiral modelhas some restrictive conditions, as follows:

1. The spiral model emphasizes risk analysis, and thus requires

customers to accept this analysis and act on it. This requires both

trust in the developer as well as the willingness to spend more to

fix the issues, which is the reason why this model is often used forlarge-scale internal software development.

2. If the implementation of risk analysis will greatly affect the profits

of the project, the spiral model should not be used.3. Software developers have to actively look for possible risks, and

analyze it accurately for the spiral model to work.

The first stage is to formulate a plan to achieve the objectives with theseconstraints, and then strive to find and remove all potential risks throughcareful analysis and, if necessary, by constructing a prototype. If some risks cannot be ruled out, the customer hasto decide whether to terminate the project or to ignore the risks and continue anyway. Finally, the results areevaluated and the design of the next phase begins.

Iterative and incremental development

Main article: Iterative and incremental development

Iterative development[2] prescribes the construction of initially small but ever-larger portions of a software projectto help all those involved to uncover important issues early before problems or faulty assumptions can lead todisaster.

Agile development

Main article: Agile software development

Agile software development uses iterative development as a basis but advocates a lighter and more people-centricviewpoint than traditional approaches. Agile processes fundamentally incorporate iteration and the continuousfeedback that it provides to successively refine and deliver a software system.

There are many variations of agile processes:

In extreme programming (XP), the phases are carried out in extremely small (or "continuous") steps

compared to the older, "batch" processes. The (intentionally incomplete) first pass through the steps mighttake a day or a week, rather than the months or years of each complete step in the Waterfall model. First,

one writes automated tests, to provide concrete goals for development. Next is coding (by a pair of

Page 5: Software Development Life Cycle

3/18/2014 Software development process - Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/Software_development_process 5/8

Rapid Application Development

(RAD) Model

programmers), which is complete when all the tests pass, and the programmers can't think of any more teststhat are needed. Design and architecture emerge from refactoring, and come after coding. The same people

who do the coding do design. (Only the last feature — merging design and code — is common to all theother agile processes.) The incomplete but functional system is deployed or demonstrated for (some subset

of) the users (at least one of which is on the development team). At this point, the practitioners start again on

writing tests for the next most important part of the system.[3]

Dynamic systems development method

Scrum

Rapid application development

Rapid application development R.A.D is a software developmentmethodology that uses minimal planning in favor of rapid prototyping. The"planning" of software developed using RAD is interleaved with writingthe software itself. The lack of extensive pre-planning generally allowssoftware to be written much faster, and makes it easier to changerequirements. RAD involves methods like iterative development andsoftware prototyping. According to Whitten (2004), it is a merger ofvarious structured techniques, especially data-driven InformationEngineering, with prototyping techniques to accelerate software systems

development.[4]

In rapid application development, structured techniques and prototypingare especially used to define users' requirements and to design the final system. The development process startswith the development of preliminary data models and business process models using structured techniques. In thenext stage, requirements are verified using prototyping, eventually to refine the data and process models. Thesestages are repeated iteratively; further development results in "a combined business requirements and technical

design statement to be used for constructing new systems".[4]

Code and fix

"Code and fix" development is not so much a deliberate strategy as an artifact of naïveté and schedule pressure on

software developers.[5] Without much of a design in the way, programmers immediately begin producing code. Atsome point, testing begins (often late in the development cycle), and the unavoidable bugs must then be fixed beforethe product can be shipped. See also: Continuous integration and Cowboy coding.

Process improvement models

Capability Maturity Model Integration

The Capability Maturity Model Integration (CMMI) is one of the leading models and based on best practice.Independent assessments grade organizations on how well they follow their defined processes, not on the

quality of those processes or the software produced. CMMI has replaced CMM.

ISO 9000ISO 9000 describes standards for a formally organized process to manufacture a product and the methods

of managing and monitoring progress. Although the standard was originally created for the manufacturing

Page 6: Software Development Life Cycle

3/18/2014 Software development process - Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/Software_development_process 6/8

sector, ISO 9000 standards have been applied to software development as well. Like CMMI, certificationwith ISO 9000 does not guarantee the quality of the end result, only that formalized business processes have

been followed.

ISO/IEC 15504

ISO/IEC 15504 Information technology — Process assessment also known as Software Process

Improvement Capability Determination (SPICE), is a "framework for the assessment of software processes".This standard is aimed at setting out a clear model for process comparison. SPICE is used much like

CMMI. It models processes to manage, control, guide and monitor software development. This model is

then used to measure what a development organization or project team actually does during softwaredevelopment. This information is analyzed to identify weaknesses and drive improvement. It also identifies

strengths that can be continued or integrated into common practice for that organization or team.

Formal methods

Formal methods are mathematical approaches to solving software (and hardware) problems at the requirements,specification, and design levels. Formal methods are most likely to be applied to safety-critical or security-criticalsoftware and systems, such as avionics software. Software safety assurance standards, such as DO-178B, DO-178C, and Common Criteria demand formal methods at the highest levels of categorization.

For sequential software, examples of formal methods include the B-Method, the specification languages used inautomated theorem proving, RAISE, and the Z notation.

Formalization of software development is creeping in, in other places, with the application of Object ConstraintLanguage (and specializations such as Java Modeling Language) and especially with model-driven architectureallowing execution of designs, if not specifications.

For concurrent software and systems, Petri nets, process algebra, and finite state machines (which are based onautomata theory - see also virtual finite state machine or event driven finite state machine) allow executable softwarespecification and can be used to build up and validate application behavior.

Another emerging trend in software development is to write a specification in some form of logic—usually avariation of first-order logic (FOL)—and then to directly execute the logic as though it were a program. The OWLlanguage, based on Description Logic (DL), is an example. There is also work on mapping some version of English(or another natural language) automatically to and from logic, and executing the logic directly. Examples areAttempto Controlled English, and Internet Business Logic, which do not seek to control the vocabulary or syntax.A feature of systems that support bidirectional English-logic mapping and direct execution of the logic is that theycan be made to explain their results, in English, at the business or scientific level.

See also

Development methods

Chaos model

Extreme Programming

ICONIX (UML-based object modeling with

Related subjects

Bachelor of Science in Information Technology

Best coding practices

Conceptual model

Page 7: Software Development Life Cycle

3/18/2014 Software development process - Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/Software_development_process 7/8

use cases)

Incremental funding methodology

Model-driven engineering

Service-oriented modeling

Software prototyping

Specification and Description Language

Top–down and bottom–up design

Unified ProcessUser experience

V-Model (software development)

Verification and Validation (software)

Cost estimation in software engineeringIPO Model

List of software development philosophies

Method engineering

Outline of software engineering

Performance engineering

Process (computing)

Programming paradigmProgramming productivity

Project

Rapid application development

Service-oriented modeling

Software design

Software development

Software documentationSoftware release life cycle

Systems design

Systems Development Life Cycle

Test effort

References

1. ^ Ralph, P., and Wand, Y. A Proposal for a Formal Definition of the Design Concept. In, Lyytinen, K.,Loucopoulos, P., Mylopoulos, J., and Robinson, W., (eds.), Design Requirements Engineering: A Ten-YearPerspective: Springer-Verlag, 2009, pp. 103-136

2. ^ ieeecomputersociety.org (http://doi.ieeecomputersociety.org/10.1109/MC.2003.1204375)

3. ^ Kent Beck, Extreme Programming, 2000.

4. ̂a b Whitten, Jeffrey L.; Lonnie D. Bentley, Kevin C. Dittman. (2003). Systems Analysis and Design Methods. 6thedition. ISBN 0-256-19906-X.

5. ^ McConnell, Steve. "7: Lifecycle Planning". Rapid Development. Redmond, Washington: Microsoft Press. p. 140.

External links

Gerhard Fischer, "The Software Technology of the 21st Century: From Software Reuse to Collaborative

Software Design" (http://l3d.cs.colorado.edu/~gerhard/papers/isfst2001.pdf), 2001Lydia Ash: The Web Testing Companion: The Insider's Guide to Efficient and Effective Tests, Wiley,

May 2, 2003. ISBN 0-471-43021-8

SaaSSDLC.com (http://SaaSSDLC.com/) — Software as a Service Systems Development Life Cycle

Project

Software development life cycle (SDLC) [visual image], software development life cycle

(http://www.notetech.com/images/software_lifecycle.jpg)

Heraprocess.org (http://www.heraprocess.org/) — Hera is a light process solution for managing webprojects

Retrieved from "http://en.wikipedia.org/w/index.php?title=Software_development_process&oldid=599338357"

Page 8: Software Development Life Cycle

3/18/2014 Software development process - Wikipedia, the free encyclopedia

http://en.wikipedia.org/wiki/Software_development_process 8/8

Categories: Software development process Formal methods Methodology Software engineering

This page was last modified on 12 March 2014 at 20:40.

Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply.By using this site, you agree to the Terms of Use and Privacy Policy.

Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.