Software Construction

SWEBOK Chapter 4
Minimizing Complexity
 Anticipating Change
 Construction for Verification
 Standards in Construction
Minimizing Complexity
One of the strongest drivers in software
 Required due to human limitations of
Minimizing Complexity
How is complexity minimized during
software construction?
Use of standards
Coding practices
Construction-oriented quality
Creation of code that is simple and
readable rather than clever
Anticipate Change
Software will change
 Coding techniques can be used to make
change easier (designing for change is
also critical)
Construction for Verification
Built is such a way to allow easy
identification of defects
 By developers during construction
 By testers
Construction for Verification
 Following coding standards
 Unit testing
 Organizing code to support automated
 Restricted use of complex/hard-tounderstand language structures
Standards in Construction
Communication methods
 Programming languages
 Platforms
 Tools
 External standards
 Internal standards
Managing Construction
Construction Models
 Construction Planning
 Construction Measurement
Construction Models
Linear construction view
 Construction only after significant pre-
requisite work is complete
 Coding is main focus of construction
 Construction occurs at the same time as
other development activities
 Combination of activities all considered
Construction Planning
How are we going to build it?
Affects prerequisite activities
 Extent to which they are performed
 Order in which they are performed
 Degree to which they are expected to be complete
before construction begins
Affects project’s ability to minimize complexity,
anticipate change, and construct for
Defines the order in which components are
created and integrated, QA management
process, allocation of task assignments, etc.
Construction Measurement
What aspects are being measured?
Code developed (LOC)
Code reused
Code modified
Code complexity
Code inspection statistics
Defects found
Defects fixed
Story points (velocity)
Why do we need to measure construction?
Practical Considerations
Construction Design
 Construction Languages
 Coding
 Construction Testing
 Reuse
 Construction Quality
 Integration
Construction Design
Design done before construction will be
 Detailed design same as overall design
but at a smaller scale
Construction Languages
Anyway that a human can specify
execution instructions to a computer
 Configuration Languages
 Toolkit Languages
 Programming Languages
Understandable source code
Use of classes, enumerated types,
variables, named constants, etc
Control structures
Error handling
Prevention of code-level security breaches
Resource usage
Source code organization
Code documentation
Code tuning
Construction Testing
Goal: to reduce the time between defect
creation and default detection
 Subset of overall testing types
performed by the engineer who wrote
the code
 Unit testing
 Integration testing
Reuse processes and activities must be
formalized into the software life cycle
 Selection of what to reuse
 Evaluation of code or test reusability
 Reporting of reuse information on new
Construction Quality
Common Techniques
 Unit and integration testing
 Test-first development
 Code stepping
 Use of assertions
 Debugging
 Technical reviews
 Static analysis
Focus on code and not overall project
Plan the sequence in which components
will be integrated
 Creation of scaffolding and stubs to
support interim versions
 Determining the degree of testing done
on components before they are
 Determine when interim versions of the
software are tested