Software Construction

advertisement
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

Download