Professional Documents
Culture Documents
A softw
so ftware
are deve
de velopm
lopmee nt p rocesss, also known as a s oftware
proces oftware deve
de velopm life-cycle (SDLC), is a structure
lopmee nt life-cycle
imposed on the development of a software product. Similar terms include softw
include softwareare life
life cycle
cycle and
and softw
software
are
rocess
rocess.. It is often considered
considered a subset of systems development life cycle. There are several models for such
processes,
processes, each describi
describin ng approaches
approaches to a variety
ariety of tasks or acti
activities
ties that
that take
take place
place duri
durin
ng the
the process.
process. Some
Some
people
people consi
consider
der a lilife-cycle
e-cycle model
model a more
more gen
general
eral term and
and a softwa
softwarere devel
developm
opmen entt process
process a more
more specif
specific term.
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
required for developing
developing and maintaining software.
Contents
Contents
1 Overvi
Overview
2 Software
Software development activities
2.1
2.1 Planning
2.2
2.2 Implementa
Implementation,
tion, testing and documenting
2.3
2.3 Deployment andand maintenance
3 Software
Software development model
modelss
3.1
3.1 Waterfall model
3.2
3.2 Spiral model
model
3.3 Iterative and incremental
incremental development
3.4 Agile
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
Development methods
methods
6.2 Related subjects
7 References
8 External
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
software is
is ISO/IE
ISO /IECC 12207.
12207 .
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 project
management techniques to designing software. Without effective project management, software projects can easily
be delivered late or over budget. With large numbers of software projects not meeting their expectations in terms of
functionality, 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 process
improvement. Composed of line practitioners who have varied skills, the group is at the center of the collaborative
effort of everyone in the organization who is involved with software engineering process improvement.
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] Customers
typically 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 requirements
at 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 be
determined 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 requirements
at the start of development. If the development is done externally, this document can be considered a legal
document so that if there are ever disputes, any ambiguity of what was promised to the client can be clarified.
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 process
ensures that defects are recognized as soon as possible.
Documenting the internal design of software for the purpose of future maintenance and enhancement is done
throughout development. This may also include the writing of an API, be it external or internal. The software
engineering process chosen by the developing team will determine how much internal documentation (if any) is
necessary. Plan-driven models (e.g., Waterfall) generally produce more documentation than Agile models.
Deployment starts directly after the code is appropriately tested, approved for release, and sold or otherwise
distributed 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 ]
http://en.wikipedia.org/wiki/Software_development_process 2/8
3/18/2014 Software development process - Wikipedia, the free encyclopedia
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 ]
Waterfall model
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
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 of
the waterfall model and rapid prototyping methodologies, but provided emphasis in a key area many felt had been
neglected by other methodologies: deliberate iterative risk analysis, particularly suited to large-scale complex
systems.
The Spiral is visualized as a process passing through some number of iterations, with the four quadrant diagram
representative of the following activities:
http://en.wikipedia.org/wiki/Software_development_process 3/8
3/18/2014 Software development process - Wikipedia, the free encyclopedia
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 risk
3. 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 model
has some restrictive conditions, as follows:
The first stage is to formulate a plan to achieve the objectives with these Spiral model (Boehm, 1988)
constraints, and then strive to find and remove all potential risks through
careful analysis and, if necessary, by constructing a prototype. If some risks cannot be ruled out, the customer has
to decide whether to terminate the project or to ignore the risks and continue anyway. Finally, the results are
evaluated and the design of the next phase begins.
Iterative development[2] prescribes the construction of initially small but ever-larger portions of a software project
to help all those involved to uncover important issues early before problems or faulty assumptions can lead to
disaster.
Agile development
Agile software development uses iterative development as a basis but advocates a lighter and more people-centric
viewpoint than traditional approaches. Agile processes fundamentally incorporate iteration and the continuous
feedback that it provides to successively refine and deliver a software system.
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 might
take 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
http://en.wikipedia.org/wiki/Software_development_process 4/8
3/18/2014 Software development process - Wikipedia, the free encyclopedia
programmers), which is complete when all the tests pass, and the programmers can't think of any more tests
that 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 the
other 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
"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. At
some point, testing begins (often late in the development cycle), and the unavoidable bugs must then be fixed before
the product can be shipped. See also: Continuous integration and Cowboy coding.
ISO 9000
ISO 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
http://en.wikipedia.org/wiki/Software_development_process 5/8
3/18/2014 Software development process - Wikipedia, the free encyclopedia
sector, ISO 9000 standards have been applied to software development as well. Like CMMI, certification
with 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 software
development. 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-critical
software 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 in
automated theorem proving, RAISE, and the Z notation.
Formalization of software development is creeping in, in other places, with the application of Object Constraint
Language (and specializations such as Java Modeling Language) and especially with model-driven architecture
allowing execution of designs, if not specifications.
For concurrent software and systems, Petri nets, process algebra, and finite state machines (which are based on
automata theory - see also virtual finite state machine or event driven finite state machine) allow executable software
specification 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 a
variation of first-order logic (FOL)—and then to directly execute the logic as though it were a program. The OWL
language, 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 are
Attempto 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 they
can be made to explain their results, in English, at the business or scientific level.
See also
References
1. ^ R a lph, P., and Wand, Y. A Proposal for a Formal Definition of the Design Concept. In, Lyytinen, K.,
Louco poulos, P., Mylopoulos, J., and Robinson, W., (eds.), Design Requirements Engineering: A Ten-Year
Per s pective: Springer-Verlag, 2009, pp. 103-136
2. ^ ieeecomputersociety.org (http://doi.ieeecomputersoc iety.org/10.1109/MC.2003.1204375)
3. ^ K ent Beck, Extreme Programming, 2000.
4. ^ a b Whitten, Jeffrey L.; Lonnie D. Bentley, Kevin C. Dittman. (2003). Systems Analysis and Design Methods. 6th
edition. ISBN 0-256-19906-X.
5. ^ McConnell, Steve. "7: Lifecycle Planning". Rapid Development . Redmond, Washington: Microsoft Press. p. 140.
External links
Ger hard Fischer, "The Software Technology of the 21st Century: From Software Reuse to Collaborative
Sof tware Design" (http://l3d.cs.colorado.edu/~gerhard/papers/isfst2001.pdf), 2001
Lydia 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
Pro ject
Sof tware development life cycle (SDLC) [visual image], software development life cycle
(htt p://www.notetech.com/images/software_lifecycle.jpg)
Her a process.org (http://www.heraprocess.org/) — Hera is a light process solution for managing web
pro jects
http://en.wikipedia.org/wiki/Software_development_process 7/8
3/18/2014 Software development process - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Software_development_process 8/8