Chapter 3 - Software Process
Chapter 3 - Software Process
THE SOFTWARE
PROCESS
1
INTRODUCTION
• The software process is the way we produce
software
• It incorporates
• The methodology with its underlying software life-
cycle model
• Techniques and tools we use
• The individuals building the software
3
The Unified Process …
• The Unified Process is not a specific series of steps
for constructing a software product
• No such single “one size fits all” methodology could exist,
because there is a wide variety of different types of
software
• For example, many application domains exist, such as
insurance, aerospace, and manufacturing.
• UML is graphical
• A picture is worth a thousand words
7
Iteration and Incrementation within the
Object-Oriented Paradigm …
8
3.3 The Requirements Workflow
9
Overview of the Requirements Workflow
• First, gain an understanding of the application domain
• That is, the specific business environment in which the
software product is to operate. E.g. banking, automobile
manufacturing, etc.
10
Overview of the Requirements Workflow …
• At an initial meeting between the client and
developers, the client outlines the product as he or she
conceptualizes it.
• Cost
• The client will rarely inform the developer how much
money is available
• A bidding procedure is used instead 12
Overview of the Requirements Workflow …
• Preliminary investigation of the client’s needs is often called
concept exploration
13
Overview of the Requirements Workflow …
• Often, when the software is delivered, it is not what the
client wanted
17
The Analysis Workflow …
• The solution is to have two separate workflows.
• The requirements artifacts must be expressed in the
language of the client
• The analysis workflow must be in a more precise
language that ensures that the design and
implementation workflows are correctly carried out.
• More detail is added during the analysis workflow,
• details not relevant to the client’s understanding of
the target software product
• but essential for the software professionals who
will develop the software product.
18
The Specification Document
• Specification document
• It constitutes a contract.
• The software developers are deemed to have completed
the contract when they deliver a product that satisfies
the acceptance criteria of the specifications.
• Therefore, the specification document must not have
imprecise phrases like “optimal,” or “98% complete”,
“suitable”, “convenient”, “ample,” or “enough.”
22
Software Project Management Plan
• Once the client has signed off the specifications,
detailed planning and estimating begins.
25
Software Project Management Plan …
• For the developers, merely estimating
the duration and total cost is not enough.
• The developers need to assign the
appropriate personnel to the various
workflows of the development process.
• A software project management plan
(SPMP) must be drawn up that
• reflects the separate workflows of the
development process
• and shows which members of the
development organization are involved
in each task,
• as well as the deadlines for completing
each task.
26
Software Project Management Plan …
• Without the SPMP, complete planning cannot be done
because the project is too vague or shapeless.
• The developers must know exactly what is to
be built before they can specify all aspects of
the plan for building it.
27
Software Project Management Plan …
• The software project management plan (SPMP) should include:
• Cost estimate
• Duration estimate
• Deliverables
• Milestones
• Budget
• Life cycle model to be used
• Project responsibilities
• Managerial objectives and priorities
• Detailed schedules, budgets, and resource allocations
• The earliest that such a detailed plan can be drawn up is when the
specifications have been finalized. 28
3.5 The Design Workflow
• Specifications
• What the product must do
• Design
• How the product is to do it
31
Object-Oriented paradigm
• The basis of the OO paradigm is the class – a specific type
of module.
• Classes are extracted during the analysis workflow, but
• Designed during the design workflow
• Methods are extracted and assigned to classes
• Interfaces between methods are determined
• Algorithms are chosen for each method
• Attributes are extracted during analysis,
• but formats are assigned during the design
32
Object-Oriented paradigm …
• The design team must retain design decisions
• For when a dead-end is reached and the design team
must backtrack and redesign.
• Having a written record of why specific decisions
were made will assist the team. Why? Discuss.
• To facilitate future enhancements (postdelivery
maintenance).
• There may be the need to add new classes or replace an
existing class.
• The task of the redesign team is considerably easier if the
team members are provided with a record of the reasons
for all the original design decisions. 33
3.6 The Implementation Workflow
• The aim of the implementation
workflow is to implement the target
software product in the selected
implementation language
• A small software is sometimes
implemented by the designer.
• A large software product is partitioned
into subsystems (implemented in
parallel by coding teams)
• The subsystems consist of components
or code artifacts (implemented by an
individual programmer)
• Usually, the programmer is only given
the relevant design artifact.
34
The Implementation Workflow …
• For example, in the case of the classical paradigm, the
programmer is given the detailed design of the module he or
she is to implement.
• The detailed design usually provides enough information for
the programmer to implement the code artifact without too
much difficulty.
• If there are any problems, they can quickly be cleared up by
consulting the responsible designer.
• However, there is no way for the individual programmer to know
if the architectural design is correct.
• Only when integration of individual code artifacts commences do the
shortcomings of the design as a whole start coming to light.
35
The Implementation Workflow …
• Suppose that:
• A number of code artifacts have been implemented and integrated and
the parts of the product integrated so far appear to be working correctly.
• A programmer has correctly implemented artifact a45, but when this
artifact is integrated with the other existing artifacts, the product fails.
• The cause of the failure is not because of a fault in artifact a45 itself, but
rather in the way that artifact a45 interacts with the rest of the product,
specified in the architectural design.
• Unfortunately, the programmer who just coded artifact a45 tends
to be blamed for the failure.
• This should not be, because the programmer has simply followed the
instructions provided by the designer and implemented the artifact
exactly as described in the detailed design for that artifact.
36
The Implementation Workflow …
43
3.7.3 Design Artifacts
• Design reviews are essential
• A client representative is not usually present due to the technical nature of the
review
• Members of the design team and SQA work through
• Design as a whole
• Each separate design
• Types of faults to look for include
• Logic faults
• Interface faults
• Lack of exception handling
• Non-conformance to the specifications
• Each part of the design must be able to be linked (traceability) to an
analysis artifact
44
3.7.4 Implementation Artifacts
45
Implementation Artifacts …
• At the end of each iteration, the completed components are combined and
tested
• Integration testing
• Testing interfaces
• Order, type and number of arguments 46
Implementation Artifacts …
• When the product appears to be complete, it is tested as
a whole by the SQA group.
• Product testing
• Functionality is tested against specifications, in particular,
the constraints listed in the specifications must be
tested.
• A typical example is whether the response time has been met.
• The robustness of the software must also be tested
• Intentionally erroneous input data are submitted to
determine whether the product will crash or whether its
error-handling capabilities are adequate for dealing with bad
data.
47
Implementation Artifacts …
• Once the completed product has been installed on the
client’s computer, the client tests it using actual data
• Acceptance testing
• No matter how methodical the development team or
the SQA group might be,
• there is a significant difference between test cases,
which by their very nature are artificial, and actual
data.
• A software product cannot be considered to satisfy its
specifications until the product has passed its acceptance
test.
48
Implementation Artifacts …
• In the case of Commercial off-the-shelf software (COTS), as
soon as product testing is complete, versions of the complete
product are supplied to selected possible future clients for
testing on-site.
• This version is called alpha release
• The corrected alpha release is called Beta release
• The beta release is intended to be close to the final version.
• So that as many faults as possible come to light as early as
possible, developers of COTS software frequently give alpha
or beta releases to selected companies.
• There are advantages and disadvantages to being an
alpha or beta release site
• Alpha release is fault ridden
• Companies get head start ahead of competitors 49
3.8 Postdelivery Maintenance
50
Postdelivery Maintenance …
• Two types of testing are needed
• Testing that the required changes made during
postdelivery maintenance have been implemented
correctly
• Regression testing by using previous test cases (while
making required changes, no other inadvertent
changes were made)
53
3.10 The Phases of
the Unified Process
• The increments are
identified as phases
• The four increments are
labeled
• Inception phase
• Elaboration phase
• Construction phase
• Transition phase
55
The Phases of the Unified Process …
• Consider the requirements workflow.
• To determine the client’s needs, one of the steps is, to
build a business case.
• In other words, within the framework of the requirements workflow,
building a business case is presented within a technical context.
• A business case is also built within the framework of the
inception phase, the phase in which management decides
whether to develop the proposed software product.
• That is, building a business case shortly is presented within an
economic/business context
• The same step is considered twice, but at different level
of detail
56
3.10.1 The Inception Phase
• The aim of the inception phase is to determine
whether the proposed software product is
economically viable
1. Gain an understanding of the domain.
• If the developers do not fully understand the
domain, little reliance can be placed on what they
subsequently build.
2. Build the business model
• Understand how the client organisation
operates in that domain
3. Delimit the scope of the proposed project
• Focus on the subset of the business model
that is covered by the proposed software
product
4. Begin to make the initial business case
57
The Inception Phase:
The Initial Business Case
• Questions that need to be answered include:
• Is the proposed software product cost-effective?
• How long will it take to obtain a return on investment?
• Alternatively, what will be the cost if the company decides not to develop the
proposed software product?
• If the software product is to be sold in the marketplace, have the necessary
marketing studies been performed?
58
The Inception Phase:
The Initial Business Case …
• What are the risks involved in developing the software product and how
can these risks be mitigated?
• Does the team who will develop the proposed software product have the
necessary experience?
• Is new hardware needed for this software product?
• If so, is there a risk that it will not be delivered in time?
• If so, is there a way to mitigate that risk, perhaps by ordering back-up hardware
from another supplier?
• Are software tools (Chapter 5) needed?
• Are they currently available?
• Do they have all the necessary functionality?
• Answers to these questions are needed by the end of the inception phase so that the initial
business case can be made
59
The Inception Phase:
Risks
• The next step is to identify the risks.
60
The Inception Phase:
Risks …
61
The Inception Phase:
Analysis, Design Workflows
62
The Inception Phase:
Implementation Workflow
• Coding is generally not performed during the inception phase
• However, a proof-of-concept prototype is sometimes built to test the feasibility
of constructing part of the software product.
• Let's say you want to build a mobile app that allows users to order food
from local restaurants.
• During the inception phase, you might build a simple prototype to test the idea.
• Prototype:
• A basic web page or a PowerPoint presentation that simulates the app's
user interface
• A few buttons, screens, and sample data to demonstrate the ordering
process
• Maybe some mockup screens showing how the app would look and feel
63
The Inception Phase:
Test Workflow
64
The Inception Phase:
Planning
• Recall planning is an essential part of
every phase.
• There is insufficient information at the
beginning of the inception phase to plan
the entire development
• The only planning that is done at the start
of the project is the planning for the inception
phase itself
• For the same reason, the only planning
that can be done at the end of the
inception phase is the plan for just the
next phase, the elaboration phase
65
The Inception Phase:
Documentation
• Documentation, too, is an essential part of every phase.
• The deliverables of the inception phase include:
• The initial version of the domain model
• The initial version of the business model
• The initial version of the requirements artifacts
• A preliminary version of the analysis artifacts
• A preliminary version of the architecture
• The initial list of risks
• The initial use cases (Chapter 10)
• The plan for the elaboration phase
• The initial version of the business case
66
The Inception Phase:
The Initial Business Case …
• Obtaining the initial version of the business case is the overall aim of the
inception phase
• This initial version incorporates
• A description of the scope of the software product
• Financial details
• If the proposed software product is to be marketed, the business case
will also include
• Revenue projections, market estimates, initial cost estimates
• If the software product is to be used in-house, the business case will
include
• The initial cost–benefit analysis
67
3.10.2 Elaboration Phase
• The aim of the elaboration phase
(second increment) is to:
• Refine the initial requirements
• Refine the architecture
• Monitor the risks and refine their
priorities
• Refine the business case
• Produce the project management plan
69
The Elaboration Phase:
Documentation
• The deliverables of the elaboration phase include:
• The completed domain model
• The completed business model
• The completed requirements artifacts
• The completed analysis artifacts
• An updated version of the architecture
• An updated list of risks
• The project management plan (for the rest of the project)
• The completed business case
70
3.10.3 Construction Phase
71
The Tasks of the Construction Phase
72
The Construction Phase:
Documentation
• The deliverables of the construction phase include:
• The initial user manual and other manuals, as
appropriate
• All the artifacts (beta release versions)
• The completed architecture
• The updated risk list
• The project management plan (for the remainder of the
project)
• If necessary, the updated business case
73
3.10.4 The Transition Phase
• The aim of the transition phase
(fourth increment) is to ensure that
the client’s requirements have
indeed been met
• Faults in the software product are
corrected
• All the manuals are completed
• Attempts are made to discover any
previously unidentified risks
• This phase is driven by feedback
from the site(s) at which the beta
release has been installed
74
The Transition Phase:
Documentation
• The deliverables of the
transition phase include:
• All the artifacts (final
versions)
• The completed manuals
75
3.11 One- and Two-Dimensional Life-Cycle
Models
76
Why a Two-Dimensional Model?
• A traditional life cycle is a one-
dimensional model
• Represented by the single axis in
(a)
• Example: Waterfall model
• The Unified Process is a two-
dimensional model
• Represented by the two axes in (b)
• The two-dimensional figure shows
• The workflows (technical
contexts) and
• The phases (business contexts)
77
Why a Two-Dimensional Model? …
• Are all the additional complications of
the two-dimensional model necessary?
• In an ideal world, each workflow would be
completed before the next workflow is
started
• In reality, a software product is too large to
handle as a single unit.
• It must be broken into subsystems
• Even subsystem can be too large at
times
• As a consequence of Miller’s Law
• The development task has to be
divided into increments (phases)
• Within each increment, iteration is
performed until the task is complete 78
Why a Two-Dimensional Model? …
• The Unified Process handles the inevitable changes well
• The moving target problem
• The inevitable mistakes
79
3.12 Improving the Software Process
• Our global economy depends critically on computers and
hence on software.
80
3.13 Capability Maturity Models
• The capability maturity models are a related group of strategies for improving
the software process, irrespective of the actual life-cycle model used.
• SW–CMM for software
• P–CMM for human resources (p stand for “people”)
• SE–CMM for systems engineering
• IPD–CMM for integrated product development
• SA–CMM for software acquisition
81
Capability Maturity Models:
SW–CMM
• A strategy for improving the software process
• Fundamental ideas:
• Improving the software process leads to
• Improved software quality
• Delivery on time, within budget
• Improved management leads to
82
• Improved techniques
Capability Maturity Models:
SW–CMM …
• Five levels of maturity are defined
83
Level 1. Initial Level
• No sound software engineering management practices
are in place in the organisation.
85
Level 2. Repeatable Level …
86
Level 3. Defined Level
• At this level, the software process is fully
documented
• Managerial and technical aspects are clearly defined
• Continual efforts are made to improve quality and
productivity
• Reviews are performed to improve software quality
• CASE environments (Section 5.8) are applicable
now (and not at levels 1 or 2)
• CASE – Computer-aided Software Engineering
87
Level 4. Managed Level
• A managed-level organization set quality and
productivity goals for each project
• Quality and productivity are continually monitored
using data and statistics.
• This helps distinguish between:
• Random deviations (one-time mistakes) and
• Systemic issues (repeated problems that need attention)
88
Level 5. Optimizing Level
• The goal of an optimizing-level organization is
continuous process improvement
• Statistical quality and process controls techniques
are used to guide the organization
• The knowledge gained from each project is utilized in
future projects.
• The process, therefore, incorporates a positive feedback
loop, resulting in a steady improvement in
productivity and quality.
89
Summary
90
Experiences with SW–CMM
• It takes:
• 3 to 5 years to get from level 1 to level 2
• 1.5 to 3 years from level 2 to level 3
91
3.14 Other Software Process Improvement
Initiatives
• ISO 9000-series
• ISO/IEC 15504
92
ISO 9000
• ISO 9000 stresses documenting the process in both words and
pictures to ensure consistency and comprehensibility.
• Also, the ISO 9000 philosophy is that adherence to the standard does
not guarantee a high-quality product but rather reduces the risk of a
poor-quality product.
93
ISO 9000 …
94
ISO/IEC 15504
95
3.15 Costs and Benefits of Software Process
Improvement
• Results indicate that implementing software process
improvement leads to increased profitability
97
Results of 34 Motorola Projects
• NB
• MEASL – Million equivalent assembler
source lines
• Productivity is measured relative to that of a
selected level-2 project
• No fault or productivity data available for
level-1 projects (by definition)
98