SDLC
SDLC
SDLC
Rikard Land
Mlardalens Hgskola
Department of Computer Engineering
Box 883
721 23 Vsters
+46 (0)21 10 70 35
Department of Industrial IT
721 78 Vsters
+46 (0)21 34 50 74
[email protected]
ABSTRACT
Throughout the second half of the 20th century, the use of
computers has grown enormous. As a consequence,
software has become more and more diverse and complex.
In addition, there are increasing demands on software it
must be cheaper, have more functionality, be delivered
faster, and be of higher quality than previously.
In the ever-changing environment and society of software
development, it is obvious that the processes and methods
used when developing small programs are not sufficient
when constructing large systems. As one answer to this,
different development lifecycle models have been defined.
This paper describes the three basic types of software
development lifecycle models, from the sequential models
via incremental models to evolutionary models. The
iterative development method is also discussed, and we
also elaborate the connection of development lifecycle
models to two emerging fields in software engineering:
software architecture and component-based software
development. The paper is biased towards computer
science students.
Keywords
Software lifecycle, software development, software
engineering, sequential model, waterfall model, V model,
incremental
development,
iterative
development,
evolutionary development, spiral model.
1. INTRODUCTION
In very small software development tasks, such as
assignments in university programming courses, it is often
feasible to start writing program code and make the
program work. It is possible to have an overview over the
whole program during the short period of time until the
assignment is approved and after the assignment is
2. SEQUENTIAL MODELS
The sequential models were the first software development
lifecycle models to address software specific issues, and
they are still widely used especially in large organizations.
These models stem from common practice; to our
knowledge no specific person or group is considered the
inventor.
The sequential models build on the assumption that the
problem to be solved can be completely understood and
described before a solution is designed. A design that
satisfies all aspects of the problem can be specified before
implementation. All implementation can be done before
validation and delivery. This approach can be applicable if
experienced developers work in a well-known problem
domain, with well-known technology and with short
development times as for example in software maintenance.
The main risk with the sequential approach is that
requirements may change during the development time and
that the delivered system or product in the end is not what
the customer or market wants any more. The main
opportunity is that the sequential approach makes it easy to
plan and follow up progress
Requirements
Definition
Validation
(Acceptance)
Test
Verification
Architectur
Design
Detailed
Design
Verification
(Integration)
Test
Component
Test
Implementation
Requirements
Definition
Architectur
Design
Detailed
Design
Implementation
Component
Test
Verification
(Integration)
Test
Validation
(Acceptance)
Test
Requirements
Definition
Architectur
Design
Subsystem 1
Construction
Subsystem 2
Construction
Subsystem N
Construction
Verification
(Integration )
Test
Validation
(Acceptance)
Test
3. INCREMENTAL MODELS
With incremental development lifecycle models, risk of
developing the wrong thing is reduced by breaking the
project into a series of small subprojects [increments] [5].
The total scope of work is decomposed to smaller chunks of
work, increments, based on the risks, architecture and/or the
requirements.
In incremental models, as in sequential models, the overall
requirements of the final system or product are known at the
start of the development. In incremental models however a
limited set of requirements is allocated to each increment
and with each successive (internal) release more
requirements are addressed until the final (external) release
satisfies all requirements.
One risk with the incremental approach is that the first
releases addresses such a limited set of requirements that
the customer could be dissatisfied, one opportunity on the
other hand is that wrong or missing requirements can be
corrected in time.
4. EVOLUTIONARY MODELS
Under some circumstances, an evolutionary approach to
the software development lifecycle is chosen. This is often
the case in research or technology development, where
often only prototypes are developed, and where all the
requirements cannot be known in advance.
More sequential
Sequential
More cyclic
Incremental
Evolutionary
Implementation
&
Code Test
Detailed Design
Architecture Design
Verification Test
Validation Test
Requirements Definition
&
Detailed Planning
Requirements Analysis
Component
Construction
Requirements
Definition
Architectur
Design
Certification
Marketing
Component
Requirements
Componenet
Selection
Component
Integration
Verification
(Integration)
Test
Validation
(Acceptance)
Test
Requirements
Selection
(Partial)
Architecture
Specification
Architecture
Transformation
Functionallity
Based
Architectural
Design
No
Functional Req.
(Partial)
Requirements
Specification
Yes
QA optimizing
Solutions
Quality
Attributes
Estimation
Quality
Attributes
OK?
Yes
Quality Req.
More
Requirements?
No
Architecture
Specification
6. DISCUSSION
We have discussed software development lifecycle models
and looked a possible way to classify them. We described
the development lifecycle models as sequential on one
hand, evolutionary on the other hand, and incremental
models as something in between.
We also elaborated the difference between the terms
incremental and iterative development, which are often used
interchangeably. An incremental development approach
decomposes the work to be done in smaller manageable
parts and affects the whole development lifecycle (spanning
months or even years), while iterative development should
be seen as a working method (spanning days or weeks)
where (a piece of) the software is improved and enhanced
successively.
6.1 Contribution
The paper is biased towards an audience consisting of
students in computer science and engineering. This in mind,
we have presented an overview of three types of software
development lifecycles in an organized form, emphasizing
their major differences, as well as their relationships.
6.5 Acknowledgements
6.4 Conclusion
There are a great number of development lifecycle models
and methodologies around, each of them more or less
REFERENCES
[1] Len Bass, Paul Clements, Rick Kazman Software
architecture in practice, ISBN 0201199300, AddisonWesley, Reading, Massachusetts 1998
[2] Barry Boehm, Spiral Development: Experience,
Principles and Refinements, Special Report CMU/SEI2000-SR-008, Carnegie Mellon Software Engineering
Institute, 2000
[3] Rick Kazman, Mark Klein, Mario Barbacci, Tom
Longstaff, Howard Lipson, Jeromy Carriere, The
Architecture Tradeoff Analysis Method, Proceedings of
the Fourt h IEEE International Conference on
Engineering of Complex Computer Systems (ICECCS),
(Monterey, CA), August 1998, 68-78.
[4] Philippe Kruchten, The Rational Unified Process: An
Introduction, Second Edition, ISBN 0-201-70710-1,
Addison-Wesley, 2000
[5] Steve McConnell, Rapid Development, Taming Wild
Software Schedules, ISBN 1-55615-900-5, Microsoft
Press, 1996
[6] Mary Shaw, David Garlan, Software architecture
Perspectives on an emerging discipline, ISBN 0-13182957-2, Prentice Hall, Upper Saddle River, New Jersey
1996