You are on page 1of 41

CSE 784

Software Studio
class notes

Chapter 6

Software Development
Process Models

Jim Fawcett
copyright (c) 1994 - 2002
Model Definitions
 Model:
A representation of the most essential features of a
physical object or process used as a pattern for
reasoning about, analyzing, or predicting behavior

 Abstract Model:
A model with no concrete instances, e.g., a meta-
model, or model of a model, used to reason about
models.

 Software Development Model:


A model of the phases, activities, products, and roles
of people involved with the development of software.

 Software Computation Model (Component


Model):
A model of the structure, behavior, and dependencies
of a software component.

– Logical Model (Process Model):


A computational model which focuses on processing to
be done and the information necessary to do it.

– Physical Model (Structural Model):


A computational model which focuses on structural and
data dependencies of a software product, including
source code which implements its design.

Chapter 6 - Process Models 2


Software Computational Models

 Computational models describe structure,


behavior, and dependencies of software
components. They enable us to reason about
and predict the behavior of software systems
and their components.

 Without computational models, large-scale


software development would be virtually
impossible. We need the abstractions provided
by computational models to understand how
these large systems are supposed to work.

 We use these models when we write require-


ments specifications and conduct design
reviews.

Chapter 6 - Process Models 3


Computational Model Views
 A computational model represents the processing, data,
and physical structure of a software component. Each
component level - function, class, module, program,
software system - can be described in different ways:
 Logical Model - applies to all levels
– client’s view of component’s operation
– capsule summary of key features and functions
 Process Model - for modules, programs, systems
– major partitions of processing and data flow between them,
shown by DFDs, Data dictionary.
– logical and requirements model for each process captured by
Pspecs.
 Structural Model - for modules, programs, systems
– data, control, and timing dependencies on outside
environment shown by context diagram, performance
requirements.
– major partitions captured by a module diagram.
– data, processing, control, and timing dependencies between
partitions shown by structure chart, class hierarchy diagram,
state transition diagram, critical threads, performance
requirement flow-downs.
 Implementation Model - applies to all levels
– brief logical model for each component in prologue
– description of algorithms and data structures used to build
component
– list of all components in the physical software
– source code for each component

Chapter 6 - Process Models 4


SW Product Model
 Architecture
– defines product components and allocates processing to them
– defines external product behavior
 Requirements Specification
– describes what constitutes correct operation
– it is the basis for testing and evaluation
 Product Specification
– defines an architecture for the system
– describes software design and implementation
– specifies a software build process
 Test Plan
– defines procedures for unit, integration, validation,
qualification, and regression testing
– qualification test procedures are emphasized
 Prototype Code
– verifies design for critical processing, analyzes
implementation problems as they arise
 Product Code
– Code for each component of the product, implemented as
software modules.
– test stub attached to each module, used to establish basic
software cycling and nearly correct operation
 Test Code
– test drivers for unit and qualification tests
 Test Report

Chapter 6 - Process Models 5


Relating Computational models to
Software Product
 Architectural Model - concept document
– logical and structural model which discloses the systems
organizing principles, major processes, and critical design issues

 Requirements Model - A and B level specifications


– process model which represents what system is obligated to do
– must be complete, unambiguous, and succinct
– strictly tied to the application domain, ignores solution domain
– requirements modeling is a decomposition process

 Design Model - C level specification


– structural and implementation model shows how system works
– focused mostly on the solution domain
– design is initially a top-down decomposition followed by
recomposition, that is, construction of a solution from a series of
components

 Component Models to support Reuse


– manual pages and design notes show how each module provides
its services
– prologues provide a flow down of process obligations which
enable orderly code inspection and unit testing
– prologues state assumed preconditions and post conditions
which result from the components activities
– prologues, pseudo code, and source code show how the solution
works at the most detailed level
– each component is part of a solution to an application need,
tested independently and then integrated

Chapter 6 - Process Models 6


Software Development Models

• A software development model is concerned with the


phases, activities, products, and roles of people
involved in the development of software.

• Production of large scale software is a complex


endeavor:
– scores of documents are produced
– code is written, not only for the application, but also to
prototype new ideas, support various hardware and
software test phases, and for managing software
builds
– many reviews are held internally with the develop-
ment team and for the customer
– enormous amounts of data are collected, used to
manage the development and keep developers and
customer apprised of the program’s status

• Models are an essential part of that process, used to


guide developers in their day-to-day activities, keep
the program focused on its principle objectives, and
promote communication through the use of stand-
ardized documentation and reviews.

Chapter 6 - Process Models 7


SW Process Model
(Focus on Development Process)

 Requirements Analysis
– define what the system must do
– define architecture
– build a requirements model
– review requirements specifications with customer
 Design and Unit Test
– define how the system will met requirements
– define structure, e.g., modules, classes, functions
– build and test each module by populating with functions and
classes
 Integration
– integrate modules and test
– carry out performance, validation, and stress tests
 Qualification
– legal demonstration that developer’s obligations have been
met, e.g., the system meets customer’s require-ments
 Audits
– Functional Configuration Audit (FCA) showing that
contracting office and contractor have been successful
producing a working product
– Physical Configuration Audit (PCA) showing that contractor
and contracting office have supplied all purchased
components to the end user

Chapter 6 - Process Models 8


Waterfall Development Model
 A software development process which proceeds linearly in time
through the phases:
– Specification analysis: analyzing what software must do
and writing contractual requirements documents to specify
resulting functional behavior and performance.
– Design: developing a physical structure for software by
partitioning into modules, classes, and functions, and
defining the processing necessary for each. Each module,
class, and function has a prologue which flows down
software processing requirements to that level.
– Code and unit test: writing source code for functions,
classes, and modules, and compilation with test drivers to
verify that each component satisfies the processing
requirements flowed down to it.
– Integration testing: building software execution images
which progressively combine more modules, providing
incremental capability, until the entire product has been
assembled and is functioning. When integration begins
many modules are likely to have errors since only unit
testing has been conducted.
– Qualification testing: a step by step process of verifying
that each requirement identified in the requirements
specification has been met.

Requirements
Analysis

design
code and
Unit Test
integration
test

Qualification
Test
Chapter 6 - Process Models 9
Waterfall Development Roles

 Software Product Manager


– Responsible for software cost and schedule
– Has ultimate authority on all software
development decisions
– Depends on Architect, Test Manager, and Team
Leaders to implement his decisions.
 Software Architect
– Responsible for top-level software partitioning,
defining user interfaces
– Manages interfaces between software developed
by each team
– Is the source of knowledge on how the system
works
 Test Manager
– Responsible for Test Plan and Qualification
– Develops, with the test team, test descriptions
and procedures, usually by assigning to the
individual teams for elaboration
– Conducts the Test Readiness Review and
Qualification Test

Chapter 6 - Process Models 10


Waterfall Development Roles

 Team Leader
– Responsible for one subsystem – may be a single
module or a family of modules.
– Responsible for production of B and C specifications
for his team’s software.
• Presents his B-specification at the SSR (see formal
reviews slide).
• Usually delegates C Specification development to his
team members.
– Reponsible, with the other team leaders, for software
integration. Integration process is usually organized
by the Software Architect or Test Manager.
– Responsible to fully support Test Manager for the
team’s part of the system, including production of Test
Descriptions, Test Procedures, and test conduct.
 Team Members
– Responsible for their assigned part of the teams C-
Specification, code, and unit test.
– Usually present at the PDR and CDR (see formal
reviews slide).
 Quality Assurance
– Responsible for continuing assessment of the software
quality.
– Reports to the Program Manager.

Chapter 6 - Process Models 11


Breaking Down and Building Up
 Software requirements analysis and preliminary design is
a process of breaking down or decomposition in the
application domain:
– application requirements are decomposed to processes and
data flows
– each process is allocated part of the requirements model
and may derive additional requirements necessary to
complete or disambiguate its process model
– a design structure is developed by associating major process
blocks with modules - to be composed of func-tions and
classes
– each stage of the decomposition needs to allocate
requirements to its component parts, otherwise there is no
basis for deciding the correctness of the design
– at the lowest component level requirements are specified as
preconditions assumed to hold for the component,
processing the component must perform on its input data,
and post conditions which the processing must guarantee.

 Detailed design and testing is a process of building up or


recomposition in the solution domain:
– function and class development builds a language into
which the applications processing is encoded
– each function and class is tested for conformance to its
process model.
– new functions and classes are added to satisfy the process
model of the module in which they are embedded
– modules are populated in order of their dependencies and
used to progressively build system capability
– this process continues until all system requirements are met
and tested.

Chapter 6 - Process Models 12


Breaking Down, Building Up

logical behavioral model of


A-Specification
software system

organizing principles
Architectural Concept high level structure
design issues
decomposition
in application domain
logical models of
major processing
B-Specification components
with data flows

logical process models


--> logical modules
C-Specification --> functions, classes
--> physical modules
recomposition
in solution domain
physical modules
Integration & Test --> physical programs
--> physical system

logical behavioral model of


Qualification Test
software system

Chapter 6 - Process Models 13


Waterfall Model –
Customer Reviews
 Requirements Analysis:
– Software Specification Review (SSR) presents
 Architecture
 B-Spec = DFDs + HIPOs + Data Dict + RTM
 derived requirements
 requirements and design and issues

 Design:
– Preliminary Design Review (PDR) presents
 Module structure
 Prelim C-Specs = ModCht + StrChts +
Class Structures + HIPOs
 resolution of design and requirements issues
 derived requirements, design and test issues
– Critical Design Review (CDR) presents
 C-Specs = ModCht + StrChts + Hdrs + STDs + HIPOs +
Pseudo Code
 resolution of design and test issues

 Code and Unit Test:


– informal code walkthroughs and inspections

 Integration Testing:
– Test Readiness Review (TRR) presents
 major test groups
 test procedures
 test equipment, environment

Chapter 6 - Process Models 14


Customer Reviews (continued)

 Qualification Testing:
– formal, step-by-step, proof that system meets A and B level
specification requirements
 demonstration:
run software and observe programmed responses which verify
requirements
 test:
instrument software to develop logged data, examine off-line to verify
requirements
 analysis:
show by models, calculation, reference to past data, or other deductive
means that the implementation will satisfy requirements
 inspection:
examine source code, development files, documentation to show that
requirements have been satisfied

 Audits:
– Functional Configuration Audit (FCA)
an Audit of both contracting office and contractor by outside
agency to verify that contractual obligations have been met.
Includes specification and test report reviews.

– Physical Configuration Audit (PCA)


an Audit of both contracting office and contractor by outside
agency to verify that all the component parts purchased by
the contract are in fact the ones tested and delivered.

Chapter 6 - Process Models 15


Waterfall Model Products
 Specification analysis:
– operational concept document (OCD)
– B level software requirements specification (SRS)
– allocated baseline
 Design:
– software test plan
– software test descriptions
– database design document (DDD)
– C level software design document (SDD)
also called a C-spec
– software development files
– computer resources integrated support document (CRISD)
– development baseline
 Code and unit test:
– test procedures
– source code
– development baseline
 Integration testing:
– software test procedures
– test readiness review
 Qualification testing:
– software test report (STR)
– software product specification (SRS, SDD, code, STR)
– version description document (VDD)
– computer system operators manual (CSOM)

Chapter 6 - Process Models 16


Waterfall Model Summary
 The waterfall model does a good job of capturing the
essentials of a large software development process:
– activities required
– roles of specific project personnel
– products generated

 It does not do a very good job of accounting for many


realities of the development process:
– Need for constant change due to:
• requirement errors
• design errors
• Implementation errors
• performance deficits
• accommodation of changes in another part of the system
– Need to carefully control change.
– Discovery of unforeseen risks.
– Uncertainty in scheduling work that the team has not done
before, e.g., design and development using unfamiliar
technology or new platforms.

 This failing of the waterfall model has prompted the


development of several new variations on the waterfall
theme.
– Incremental Development
– Spiral model
– Design by Contract
– Extreme Programming
– Amalgams of two or more of these.

Chapter 6 - Process Models 17


Capability Maturity Model (CMM)
 Formalized, under DoD funding, by the Software
Engineering Institute, Carnegie Mellon University, it
describes software development processes in terms of five
levels:
– Level 1 - Initial
Ad hoc process, unpredictable results.
Key process areas:
• none
– Level 2 - Repeatable
Disciplined process using standard management principles.
Key Process Areas:
• requirements management
• project planning
• project tracking and oversight
• configuration management
• quality assurance
– Level 3 - Defined
Standard process applied consistently across organization.
– Level 4 - Managed
Predictable process using metrics gathered as part of the
applied process.
– Level 5 - Optimizing
Continuously improving process with a mandated process for
defect prevention.

 References:
– The Capability Maturity Model, Software Engineering Institute,
Addison Wesley, 1994
– Process Improvement for Small Organizations, Kelly & Culleton,
IEEE Computer, October 1999

Chapter 6 - Process Models 18


Variations on the
Development Model
 Incremental Development Model
– Partitions development into modules, implementing in order of dependency,
so that as each is completed, we integrate only a small amount of newly
developed code with an existing baseline.
 Design by Contract
– Espoused by Bertrand Meyers, an authority on Object Oriented
Development and creator of the Eiffel programming language.
– Attempts to support and enforce the use of contracts between users and
suppliers of services.
 Spiral Model
– Attempts to control project risks by developing a series of prototypes with
increasing functionality, culminating in the final delivered product.
 Evolutionary Project Management, an Extension of the Spiral Model
– Plans for frequent working deliveries to the customer with progressively
more functionality.
– At the end of each cycle, devise a plan, schedule, and budget for the next
release.
– Emphasis on continuous testing.
 Extreme Programming, an Extension of Evolutionary PM
– Takes evolutionary programming to an extreme.
– Requirements are based on user “stories”, e.g., how I would use the
product.
– Customers decide when to release, but only when all tests pass.
– We work until the money is gone.
 Microsoft Development Process
– Segregate development organization into:
• Top level product managers and system architects
• Project teams – each project creates a new version or a new feature.
• Each team consists of a project manager, developers, and testers
• Project manager is responsible for the specifications, schedule, and delivery.
• Developers are responsible for reviewing and criticizing the specification,
developing product code, and fixing bugs found by the testers.
• Testers beat unmercifully on the developer’s code, hoping to find all visible and
latent bugs.

Chapter 6 - Process Models 19


Incremental Development Model
 Begins with requirements analysis and preliminary
design just like the spiral model.

As soon as modules are defined one is selected


that has no dependencies on other modules (at
least one almost always exists). This module’s
development proceeds as with the spiral model,
until unit test is completed. A regression
(summary) level test is incorporated into the
module’s source code as a test stub, and used to
verify the module’s operation.

Next a module is selected which depends at most


on the completed module. It also is subjected to
the spiral model process through integration test
with the completed module. That is, detailed
design, code and unit test, and integration test are
all completed.

This process continues until all the modules have


been integrated. The development completes by
carrying out qualification test to demonstrate that
the software meets all its contractual obligations.

Chapter 6 - Process Models 20


Incremental Development

Requirements Analysis

Preliminary Design

Design Design --- Design

phases

Code & UT Code & UT --- Code & UT

partially tested
code
Integration Test
partially tested
correct code code
Integration Test

correct code
Integration Test

modules

Qualification Test

Chapter 6 - Process Models 21


Design by Contract
 Design by Contract
– A development process based on built-in test.
– Uses assertion constructs to guarantee correctness
 Pre-conditions:
– Conditions which must be satisfied by the caller. These are
assumptions the service supplier makes about the caller.
These assumptions are EXPLICIT!
– Pre-conditions are checked by the REQUIRES(bool) construct.
 Post-conditions:
– Conditions the service supplier guarantees to hold after
delivery of the service, provided that the pre-conditions are
met.
– Post-conditions are checked by the ENSURE(bool) construct.
 Invariants:
– Invariants are conditions which must hold at the end of every
service invocation. They define correctness for the module’s
state.
– Invariants are checked by the CHECK_INVARIANT construct.
– Invariants are defined at the end of a class declaration with
the syntax:

INVARIANT
invariant statements, e.g.:
ASSERT(bool), IMPLIES(bool,bool), or
BASE_INVARIANT(base class)
END_INVARIANT

Chapter 6 - Process Models 22


Spiral Model
 The Spiral Development Model, developed by Barry Boehm
of TRW, and used by that organization, and others starting
in 1986.
 Development proceeds through several prototypes,
culminating in the completed system. Each prototype is
developed according to the waterfall model, e.g. through
requirements analysis, code and unit test, integration, and
system testing.
 Its intent is to deal effectively with the uncertainties and
risks associated with a large new development.

Chapter 6 - Process Models 23


Evolutionary Project Management
 Plan for frequent deliveries of a production quality system
that runs with growing functionality.
 Goals:
– budget cost and schedule for the complete project
– divide the project into a series of small delivery cycles
– focus on short-term, clear goals with a high expectation of
meeting them
– deliver fully tested, production-quality software with the right
documentation at the end of each cycle
– solicit feedback from customer, management at the end of
every cycle
– reassess objectives at the beginning of every cycle
– estimate effort at the beginning of each cycle
– make quality objectives part of the project requirements
– conclude the project when the budgeted cost or schedule has
been consumed or the customer contracts for further work.
 Inspection process:
– All deliverable items are inspected by the Project Manager
and an inspection committee (of developers) using a walk-
through process lead by the originator.
– All defects are recorded.
– The originator removes all defects and resubmits the item for
inspection. The process repeats until the item meets or
exceeds its planned levels of quality.
 References:
– Evolutionary Project Management, Woodward, IEEE
Computer, October 1999

Chapter 6 - Process Models 24


Extreme Programming

 Extreme Programming is a development process


designed to develop high quality software using an
incremental development process.
– Requirements are based on User Stories, something
like use cases, but developed by the customer.
– Builds in small incremental stages, with each stage
ending in a release of operational software to the
customer.
– Emphasizes a test-as-you-go process.
– Software tests are designed before the production
software, based on requirements.
– As software is built it is continually tested.
– The developer does not move on until all tests pass.
– Assumes the use of a lot of automated testing.
– No releases are made to the customer until all tests
pass.

 This process is very like the incremental


development process I require of you, but with a
more formal approach to testing.
– Extreme Programming construction tests are close to
full unit testing.

Chapter 6 - Process Models 25


Extreme Programming
 Planning
Customers decide scope and time of releases based on estimates
provided by developers. Only functionality demanded by
customers is implemented in each iteration.
 Small Releases
The system is put into production in a few months, before the
whole is complete. New releases are made often, perhaps
monthly.
 Simple Design - At every moment the design:
– runs all tests
– communicates everything developers want to communicate
– contains no duplicate code
– has fewest possible classes and methods
 Tests - Developers write unit tests continuously.
Tests are collected and must all run correctly. Customers write
functional tests for the functionality in each release. These tests
should also always run correctly.
 Refactoring
Design of the system is evolved through transformations of the
existing design that keep all tests running.
 Pair Programming
All code is written by two people at one terminal.
 Just Rules
Being part of the Extreme team you sign up to follow the rules.
The team can change the rules at any time if there is consensus
on how the effects of change will be measured
 References:
– Embracing Change with Extreme Programming, Beck, IEEE
Computer, October 1999.

Chapter 6 - Process Models 26


Low-Level Process Models

 The process models we have discussed so far


attempt to describe the entire development process.
– Waterfall, spiral, incremental, evolutionary

 There are other important models that address


smaller parts of the process, most notably the
Design by Contract model.

 Design by Contract addresses the detailed design


and implementation phases of development.
– Attempts to guarantee contracts between the user of
a service and the provider of the service.
– It does this by embedding assertions about pre-
conditions and post-conditions.
– A pre-condition is a condition required for the service
to function correctly and users must guarantee that it
holds, otherwise an exception is thrown.
– A post-condition is a guarantee of delivery of some
commodity in some state, provided that the pre-
condition holds. Should the post condition fail to hold
an exception is thrown.

Chapter 6 - Process Models 27


Microsoft Development Process
 Microsoft uses a process called “Synchronize and Stabilize”,
developed in the late 80’s and early 90’s.
– give designers lots of autonomy to evolve designs iteratively
– force the team to synchronize their work frequently
– periodically stabilize design changes and feature innovations
 Goal is to balance almost hacker-like flexibility and speed
with professional engineering discipline.
 Project begins with a vision of what the product is to do
(jointly developed by marketing and the development team)
 Program manager develops a rough functional specification
which the team evolves until end of the project.
 Schedule has a few stabilization points (milestones). Each
has a list of prioritized features and represents progress after
weeks of a development cycle:
– design, code, usability test, test, daily builds
 Each milestone marks either an alpha (internal) or beta
(external) release.
 Buffer time precedes each release. It is used to add new
features
 In the final milestone the user interface is frozen. The team
runs a final test, debugging, and stabilization sub-cycle and
issues a final release.
 Only when the project is complete is the functional
specification considered done.
 References:
– Software Development on Internet Time, Cusumano & Yoffie,
IEEE Computer, October 1999

Chapter 6 - Process Models 28


Microsoft Test Process

 Testing starts with:


– private builds by the individual developers
– Buddy builds by the whole development team
 As soon as the team releases a build, testers begin
beating on build, based on:
– Known bugs
– Smart attempts to break code
 Tester’s goals are to find the source of each known
bug and find new bugs and their sources.
 They file bug reports which are assigned to the
responsible developer to fix.
 Testers run Build Variation Tests (BVTs) continuously.
– BVTs are automated, fast, but not too thorough.
 Every night testers run stress tests
 Every 10 or 15 builds the testers run Functional Test
suites which are much more thorough.
 As the product matures they run:
– Long haul tests designed to find resource leaks
– Performance tests
– Security tests

Chapter 6 - Process Models 29


Survival Guide – Integration
Procedure

Find these steps in the class text, page 203, Table 14-1.

 Developer develops a piece of code.


 Developer unit tests the code.
 Developer steps through every line of code, including
all exception and error cases, in an interactive
debugger.
 Developer integrates this preliminary code with a
private version of the main build.
 Developer submits code for technical review.
 Developer informally turns code over to testing for test
case preparation. Code is reviewed.
 Developer fixes any problems identified during the
review. Fixes are reviewed.
 Developer integrates final code with the main build.
 Code is declared “complete” and can be checked off
the project activity list.

Chapter 6 - Process Models 30


Survival Guide – Daily Build
Procedure

 The developer merges his code changes with the master


source files, after checking for conflicts with recent
changes made by other developers.
 He builds and tests a private release to ensure that the
newly implemented features still works as expected.
 The developer runs the current smoke test against his
private build to be sure the new code won’t break the
build.
 The developer checks his private copies of the source
code into the master source files.
 The build team generates a complete build of the
software from the master sources.
 The build team runs the smoke test to evaluate whether
the build is stable enough to be tested.
 If the build team discovers any errors that prevent the
build from being tested (the build is broken), it notifies
the developer who checked in the breaking code. That
developer fixes the problem immediately. Fixing the
build is the project’s top priority.
 Anyone who breaks the build becomes the project goat,
and is put in charge of the build process until someone
else breaks the build.

Chapter 6 - Process Models 31


Configuration Management
 Configuration management is charged with controlling and
providing access to the thousands of documents, code
components, and project data items that are generated in a
large software development program. Its obligations are:

 Identification: Identify every version of every:


– document, e.g., specification, design , test, program memo,
contract letter, ...
– product code component
– support and test code component
– project data
 Each is identified by number, date, and author or responsible
individual. It then becomes a configur-ation item.

 Baselining: A baseline is a snapshot of the development


configuration (all the configuration items) at specific points in
the development:
– requirements baseline just before SSR
– design baseline just before PDR and again before CDR
– informal unit test baselines
– informal integration baselines
– integration test baseline just before TRR
– qualification test baseline just before FCA, PCA
 Each configuration item must be retrievable from any
baseline at any time after the baseline has been constructed.

Chapter 6 - Process Models 32


Configuration Management
(continued)

 Access Control: is intended to insure that all changes to


a baseline are properly authorized, all builds have known
components, and no baseline becomes corrupted. Access
control depends on the type of baseline, e.g.:

– formal baselines: The baseline created before each major


review, e.g., SSR, PDR, CDR, TRR, PCA are formal and
require customer approval to change.
– informal baselines: All other baselines require inter-nal
approval for change, e.g., the Software Project Manager or
his agents, the librarian and team leaders.

 Control of the internal baseline is based on role models:

– developer may have only read access


– team leader has read and write access to the software
components being developed by his team
– librarian has read and write access to the entire internal
baseline, but uses the access as directed by team leaders and
the Software Project Manager
– Software Project Manager has complete discretion over
the internal baseline

Chapter 6 - Process Models 33


Configuration Management
(continued)

 Association: The configuration management system


must maintain associations between each component of a
baseline for every version. The CM process must be able
to answer the questions:
– which components where used with any specific build of the
hundreds of builds prepared during develop-ment?
– which of the test data items came from any specific build?
– what requirements where identified for a specific build?
– what requirements, design, or implementation issues where
unresolved for any specific build?
– what changes in source code where made between any two
builds?
– what changes in a document where made between any two
releases?
 Build Control: The CM system must ensure that a
“packing list” of software components is constructed for
each build which identifies the specific versions used and
test results obtained.

The Software Project Manager and Customer must be


confident that the version lists and result assoc-iations are
accurate.

Chapter 6 - Process Models 34


Configuration Management
(continued)

 CM Tools: Maintaining CM integrity requires:


– use of database management tools for all but the smallest
projects
– build control using a testbed with:
 command language batch automation
 make files
 structure libraries based on disk directories organized and access
controlled by baseline
 extensive requirements trace databases

 Independent Validation and Verification (IV&V):


 Many contracts demand an IV&V process conducted by a
third party (not customer and not developer). Its purpose
is to measure and report on:
– development process integrity
– software quality
 IV&V activities are usually carried out by product sampling
via inspections, participation in require-ments, design,
code, and test walkthroughs, and through the evaluation
of test plans and test data.

Chapter 6 - Process Models 35


Development Model Summary

 The waterfall model defines all the major


phases, activities, and products of any
software development process. Its
unilateral movement through the phases of
development is not very realistic - there are
always cycles back to make changes and
fix errors - but it serves well to define the
basic development process.

 Some variation of the incremental model is


probably the most used process in
Software Engineering organizations that
have a disciplined development process -
not all do.

 The Spiral and Evolutionary Models have


been used on small to medium scale
programs with some success.

Chapter 6 - Process Models 36


Development Model Summary
 Waterfall Model
– assumes single pass through requirements analysis, design, code
and unit test, and qualification.
– base on the house construction metaphor.
 assumes the foundation (requirements) must be done perfectly
 assumes that framing (design) can only begin after the foundation is complete.
 that siding and interior (code and unit test) can’t be started until the frame is
complete.
 assumes that final finish work (qualification) won’t affect any of the earlier
work.
– The one pass model makes sense for building houses when the
builder follows a standard process to construct a product just like
millions of others already in existence.
– It just does not work well for “one of a kind” systems even if there
is significant reuse of existing components.

 Incremental Model
– brings only one partially tested component into a thoroughly
tested baseline.

 Spiral Model
– more accurate than the waterfall, in that it recognizes the need for
revision as the developer’s learn more about the system. Based
on delivering a series of prototypes before a final version.

 Evolutionary and Extreme Programming


– There is a lot of current interest in these models. Successes have
been reported on small to medium sized programs.

 Design by contract
– as implemented with the Eiffel language, is being used in Europe,
but not much use in this country.

Chapter 6 - Process Models 37


SW Process Model

 Requirements Analysis
– define what the system must do
– define architecture
– build a requirements model
– review requirements specifications with customer
 Design and Unit Test
– define how the system will met requirements
– define structure, e.g., modules, classes, functions
– build and test each module by populating with functions and
classes
 Integration
– integrate modules and test
– carry out performance, validation, and stress tests
 Qualification
– legal demonstration that developer’s obligations have been
met, e.g., the system meets customer’s require-ments
 Audits
– Functional Configuration Audit (FCA) showing that
contracting office and contractor have been successful
producing a working product
– Physical Configuration Audit (PCA) showing that contractor
and contracting office have supplied all purchased
components to the end user

Chapter 6 - Process Models 38


SW Product Model
 Architecture
– defines product components and allocates processing to them
– defines external product behavior
 Requirements Specification
– describes what constitutes correct operation
– it is the basis for testing and evaluation
 Product Specification
– defines an architecture for the system
– describes software design and implementation
– specifies a software build process
 Test Plan
– defines procedures for unit, integration, validation,
qualification, and regression testing
– qualification test procedures are emphasized
 Prototype Code
– verifies design for critical processing, analyzes
implementation problems as they arise
 Product Code
– Code for each component of the product, implemented as
software modules.
– test stub attached to each module, used to establish basic
software cycling and nearly correct operation
 Test Code
– test drivers for unit and qualification tests
 Test Report

Chapter 6 - Process Models 39


Notable Quotes - Robert Martin

 From Robert Martin, President of Object Mentor


Inc. and former editor of the C++ Report:

– “I’ve said it before, and I’ll say it again: The best


process for developing software is the smallest
process that we can get away with using.”

– “The best a process can hope to do is install the


checkpoints and reviews needed to catch errors
and stimulate project management decisions”

 This overlooks the essential goals of:

– establishing strong channels of communication


– creating well understood allocations of
responsibility
– defining early all products needed to complete a
project.

 However, I agree with his main point.

Chapter 6 - Process Models 40


Notable Quotes - Fred Brooks
 From Fred Brooks:
– Former Chairman of the Computer Science Department,
University of North Carolina
– Former Program Manager, IBM System/360.
– Former Program Manager, IBM OS/360.

 “One occasionally reads newspaper accounts of how two


programmers in a remodeled garage have built an
important program that surpasses the best efforts of large
teams. And every programmer is prepared to believe such
tales, for he knows that he could build any program much
faster than the 1000 statements/year reported for
industrial teams.

Why then have not all industrial programming teams been


replaced by dedicated garage duos? One must look at
what is being produced.”

 “Assuming that he has the disciplined, experienced


architects and that there are many implementers, how
shall the manager ensure that everyone hears, under-
stands, and implements the architects decisions? How can
a group of 10 architects maintain the conceptual integrity
of a system which 1000 men are building? A whole
technology for doing this was worked out for the
System/360 hardware design effort, and it is equally
applicable to software projects.”

Chapter 6 - Process Models 41

You might also like