SWEBOK Chapter 4
Fundamentals
Minimizing Complexity
Anticipating Change
Construction for Verification
Standards in Construction
Minimizing Complexity
One of the strongest drivers in software
construction
Required due to human limitations of
memory
Minimizing Complexity
How is complexity minimized during
software construction?
Use of standards
Coding practices
Construction-oriented quality
techniques
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
Techniques
Following coding standards
Unit testing
Organizing code to support automated
testing
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
Interative
Construction occurs at the same time as
other development activities
Combination of activities all considered
construction
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
verification
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
Effort
Scheduling
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
incomplete
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
Coding
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
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
code
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
Integration
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
integrated
Determine when interim versions of the
software are tested