Title: The Software Development Process
1The Software Development Process
- "It is better not to proceed at all, than to
proceed without method." --Descartes
"Stop the life cycle--I want to get off" -- Barry
Boehm
2A Software Development Process Organizes the
Activities of Software Development
. . .
. . .
Following a defined process makes software
development more orderly, predictable and
repeatable
3Resistance to Process
- Some people view following a process as an
unnecessary tax on productivity. That is, they
view the time devoted to following a process as
taking away from time that could otherwise be
spent on productive work without any otherwise
appreciable affects on the development process
McConnell 1998.
4The Reality
- A group not following a defined process might
show more productivity at the start, but rework
due to poor development practices will quickly
outweigh any time saved by not following a
process McConnell 1998.
Too little process in the beginning often leads
to too much process towards the end
The overhead of following a process decreases
with time
5When Bad Process Happens to Good People
- Some processes are rigid and bureaucratic dont
use these - Some people abuse process for their own agenda
(i.e. feed their desire to have power and
control, block changes or developments they dont
agree with) dont allow these people to have
authority over the process
6Characteristics of a Good Process
- A good software process is
- Repeatable
- Predictable
- Adaptable
- Learnable
- Measurable
- Improvable
7Terminology
- Software Life Cycle The high-level phases or
stages that software goes through from the moment
it is conceptualized until the last version is
removed from the last machine. The software life
cycle consists of new development followed by a
number of maintenance updates and finally
retirement. IEEE 610 - Software Development Life Cycle (SDLC) The
sequence of phases a project goes through from
start to finish. The standard phases of the SDLC
are requirements specification, analysis,
design, implementation and test. Inception and
delivery may also be included. Note, these phases
are not necessarily sequential. They may overlap
or be performed iteratively. The SDLC is applied
to new development and maintenance updates. IEEE
610
8Terminology cont
- Software Life Cycle Models (aka Software Process
Models) abstract models that describe a class
of development approaches with similar
characteristics. Some of the criteria used to
distinguish software life cycle models are
timing between phases, entry and exit criteria
between phases and the artifacts created during
each phase. Examples include Waterfall, Spiral,
Rapid Prototyping, Incremental Development, etc.
9Terminology cont
- Software Process, Methods, and Methodologies
10Software Process
- A software process is more detailed than a life
cycle model. - A Software process says who does what when.
- A software process includes
- Roles
- Workflows
- Procedures
- Standards
- Templates
11Big-M Methodology
12Phase Names vs. Activity Names
- Is requirements (or design, or coding, or etc.) a
phase or an activity? - Terms such as requirements, design, coding, etc.
are used to characterize a phase (adjective) and
also an activity (verb/adverb) that might occur
during one or more phases. - Its important to distinguish between a label
given to a phase and the activity that occurs
during that phase.
13Phase Names vs. Activity Names cont
- The label on a phase is descriptive of the
dominate activity performed during that phase. It
becomes confusing when there isnt a one-to-one
correspondence between phase name and activity
within that phase.
14Phase Names vs. Activity Names cont
- The Rational Unified Process (RUP) avoids any
ambiguity/confusion by using phase names that
cant be confused with the activities that might
take place during a phase. - The names are also more appropriate because they
better match the milestones and deliverable of
the phases.
15Software Life Cycle Models
- Abstract models that define a few broad types of
software development processes - Life cycle models specify
- Major phases including milestones and
deliverables - Timing between each phase
- Entry and exit criteria for each phase
- Life cycle models are a starting point for
project management
16Antiquated Software Life Cycle Models
- Code-and-Fix Development
- Waterfall
17Code-and-Fix Development
- Not a viable development model for most projects.
- Code-and-Fix is to software development as dog
paddling is to swimming.
18Waterfall
- Sequential stages with little or no backtracking
19The Waterfall Model Illustrated
20Whats Wrong with these Antiquated Life Cycle
Models?
- Code-and-fix lacks discipline and is inefficient
- Waterfall, although appropriate for some
projects, doesnt fit well in todays environment
21Risk Profile of Waterfall Project
- When following the waterfall process model risks
arent resolved until late in the development
cycle.
22Iterative and Incremental
- A characteristic of modern life cycle models. The
product evolves incrementally over a series of
iterations.
23Benefits of an Iterative and Incremental Approach
- More appropriate for applications with emergent
requirements. For many UI applications,
requirements arent well-known form the start but
rather emerge over time based on experience with
early increments and prototypes. - Incremental functionality is a more accurate
measure of progress than paper deliverables. This
provides better visibility into project status. - Manages risks better (technical risks with
architecture and programming and project risks
with meeting schedule and budget targets)
24Modern Software Life Cycle Models
- Spiral
- Staged
- Evolutionary Prototyping
- Evolutionary Delivery
25Spiral
26Staged
- Requirements and planning occur up-front but
product is developed and delivered over a series
of iterations.
27Evolutionary Prototyping
- The contents of each iteration is driven by
feedback from previous iterations.
28Evolutionary Delivery
- The middle ground. Considerable planning and
product definition occur up-front, but the
content of each iteration is also influenced by
feedback from previous iterations.
29Guidelines for Selecting a Lifecycle Model
30Throwaway Prototyping
- The creation of a prototype is standard
engineering practice. - With throwaway prototyping, a mock-up is created
to learn more about a systems requirements,
design or implementation. Once the goals of
creating the prototype are accomplished, it is
discarded and the information is used to inform
the development of a production-quality version
of the system.
31Anchoring the Software Process
- IntuitivelyRequirements, Architecture, Design,
Codeseem like good milestones for marking
progress during a software project, but in
practice they dont work so well. - Rarely do these products evolve sequentially as
discrete entities. - More commonly, these artifacts evolve slowly in
parallel. This makes them poor milestones for
anchoring a software development process
32Anchoring the Software Process - 2
- Barry Boehm proposes an alternative set of
milestones that are more appropriate for
iterative development IEEE Software July 1996 - Life cycle objectives (Major requirements, major
scenarios of operation, candidate architecture,
and top-level plan are known) - Life cycle architecture (Most requirements and
scenarios of operations are known, validated
system architecture) - Initial operational capability (The product is
ready for transition to its production
environment.
33(No Transcript)