Software process and testing
•	Software process
•	Capability Maturity Model
•	Testing and the software process
–	Testing the code
–	Testing that doesn’t involve execution of code
Why define a Process?
•	Goal of software engineering: “good” software done “well”
•	Define “good”
•	Define “well”
•	Testing focuses more on getting good software
•	Quality analysis emphasizes doing it well
“Good”
•	does what customer wants
•	works correctly
•	completed on schedule
•	easy to maintain
•	can reuse parts
“Well”
•	(Possible to build good software, but to build poorly)
•	Did we meet the schedule?
•	The budget?
•	Are we consistently satisfying the customer? (and our schedule/budget)
–	Document how we do things – a process!
–	Non-software example: building a house

Why do projects fail?
•	[Standish Group study]
–	incomplete requirements, 
–	lack of user involvement, 
–	lack of resources, 
–	unrealistic expectations, 
–	lack of executive support, and 
–	changing requirements and specifications
Waterfall software process model
•	Requirements
•	Design
–	Logical and physical
•	Implementation
•	Testing
Waterfall process
•	Requirements
–	Must be able to test it
–	Examples of bad requirements?
•	Logical design (Analysis/Architecture):
–	Data decomposition: entity relation diagram
–	Function decomposition: "function" : what the software should do
–	Divides problem into subsystems
–	Ex: major steps in solution, software layers
Waterfall process (continued)
•	Physical design, program unit design: Get more detailed
•	Coding:
–	should only be implementing what was designed
–	should not be adding functions/files visible to other parts of software
Software Life Cycle
•	Observation: work on software does not end with release
–	Maintenance phase added
–	Maintenance may require revising requirements – repeat all steps
–	Spiral process model (Boehm) suggests steps repeated before release
–	More recent models add more steps
Capability Maturity Models (CMM’s)
•	Software CMM developed by Watts Humphrey, Carnegie-Mellon’s Software Engineering Institute (SEI)
•	Does not suggest a single process model
•	Goal: show how to improve any model
•	Success should not depend on the personnel
•	Other CMM’s at http://sei.cmu.edu
Capability Maturity Models (CMM’s) (continued)
•	5 levels of maturity
•	Initial -- ad hoc
•	Repeatable -- keeping track of costs, schedule
•	Defined -- standardized, documented process used for whole organization
•	Managed -- detailed measurements, process is “understood”
•	Optimizing -- standardize how to improve process
Life Cycle Testing
•	Observation: Testing should be intertwined with entire life cycle
•	Testing of the code
–	unit/component testing
–	integration testing (combining components)
–	system testing: internal testing of entire application
–	Acceptance testing: external (customer) testing
Life Cycle Testing
•	When can we do each kind of testing
•	When could we define test cases for each kind of testing?
Technical Review
•	Not all testing involves executing code
•	done formally and informally
•	Goals:
–	Cover defects which tools cannot check
•	Ex: specification, most standards
–	Why are reviews difficult?
–	What are the concrete benefits?
Structured walkthrough
•	A somewhat formal review
•	Material being reviewed is presented by person(s) who produced material
•	Reviewers respond during presentation
•	Some structure is desirable
•	[Observation: you need to be able to present what you do]
Inspection
•	More formal form of review
•	Typically includes checklists to assist identification of defects
•	Identify and document defects
–	Do not try to solve (Why not?)
•	Repair defects, check repairs
–	What should the inspection team do here?
Roles
•	Each participant in a review has one or more roles
•	Helps people know what they should be doing
•	Leader
•	Recorder
•	Reviewer(s)
For a good review ...
•	Plan: include agenda
•	Include schedule: management usu. needs to know when you can finish the product
•	Address all interested parties:
–	management, users, developers, quality assurance people
–	Spiral approach supports continued involvement of customers