Note: The Preface includes the statement “It is assumed the audience has some basic understanding of the nature of computing, and can use fundamental program constructs (sequence, selection, and repetition) and write simple programs in a high-level object-oriented programming language (such as Java)”. So, in this Chapter, basic programming concepts and techniques are not covered, and certain construction principles are illustrated using the Java programming language.
In Chapter 2, the DigitalHomeDevelopment Process was introduced (now reproduced in Table 7.1). The process includes the development of a Build/Integration Plan. The plan would detail an incremental development approach, which would include the activities specified in the “Construction Increment 1, 2,...” section. These construction activities make up what is often referred to as Software Construction, as described in Chapter 3 of the SWEBOK [Bourque 2014]: “The term software construction refers to the detailed creation of working software through a combination of coding, verification, unit testing, integration testing, and debugging”.
Table 7.1 DigitalHome Development Process Script
Purpose
Guide the development of the DigitalHome software system
Entry Criteria
Identification of a problem or opportunity, which may need a software solution
Phase
Activity
Project Inception
Establish the business case and feasibility for the project.
Determine the scope of the project.
Develop a customer Need Statement.
Develop a High-Level Requirements Document
Project Launch
Establish development team, and their roles, responsibilities, and goals.
Analyze Need StatementEstablish a Development Process
Identify External Interfaces and create a Context Diagram
Create a Conceptual Design
Determine a Development Strategy
Research and study of possible project technology
Planning
Develop Task, Schedule, and Resource Plans
Develop a Risk Plan
Develop a Quality Plan
Develop a Configuration Management (CM) Plan
Determine project standards and tools
Perform project planning/tracking
Analysis
Review the Need Statement and prepare for requirements elicitation
Elicit requirements from potential customers and users
Analyze requirements and build object-oriented analysis models
Specify and document requirements in a Software Requirements Specification (SRS)
Inspect and revise the SRS
Obtain customer agreement to requirements
Develop a System Test Plan
Develop a Requirements Traceability Matrix (RTM)
Develop a User Manual
Track, monitor, and update plans (Task/Schedule/Quality/CM/Risk) & RTM
Architectural Design
Develop an Object-Oriented (OO) high-level design model
Refine the OO analysis model
Develop additional design models
Specify and document design in an Software Design Specification (SDS)
Develop a Build/Integration Plan
Review and revise the SDS
Consult with customer, and revise SRS and SDS, as appropriate
Track, monitor, and update plans (Task/Schedule/Quality/CM/Risk) & RTM
Construction Increment 1, 2,...
Complete Class Specifications (data types and operation logic)
Develop incremental Integration Test Plan (Class/Integration)
Set up an appropriate test environment (e. g., test harness, stubs/drivers)
Construction Increment 1, 2,...
Review the Class Specifications
Write source code
Review and test the source code
Integrate code with previous increments
Perform Increment (Class/Integration) Test
Consult with customer, and revise SRS, SDS, and code, as appropriate
Track, monitor, and update plans (Task/Schedule/Quality/CM/Risk) & RTM
System Test
Update test environment
Update System Test Plan
Perform the System Test
Consult with customer, and revise requirements, design and code as appropriate
Track, monitor, and update plans (Task/Schedule/Quality/CM/Risk) & RTM
Acceptance Test
Prepare Acceptance Test materials (including a user’s manual)
Set up customer test environment
Customer performs Acceptance Test
Revise SRS, SDS, code, and User Manual as appropriate
Track, monitor, and update plans (Task/Schedule/Quality/CM/Risk) & RTM
Postmortem
Perform postmortem analysis of project process and product quality
Exit Criteria
Completed SRS, SDS, RTM, User Manual, System Test Plan
Source code for a thoroughly reviewed and tested program
Completed plan documentation
Project postmortem report
In a team meeting following the specification of the DH Architecture, Disha Chandra asked Massood Zewail to lead the effort to develop a Digital Home Build/Integration Plan. Massood presented a high-level diagram (see Figure 7.1) and led a discussion of how to break the software construction into increments and develop a Build/Integration Plan.
After the team completed a DH Build/Development Plan, Disha Chandra said to the team “I know you are all have experience constructing and testing software modules, but I think it would be good for us to review some fundamentals of software construction”. Disha asked Georgia Magee to prepare and deliver a tutorial on Software Construction.
The DigitalHome team decided to use an object-oriented methodology for design and construction, with Java as the implementation language. A Java method is the fundamental implementation unit. Team Leader Disha Chandra asked Georgia Magee to continue her tutorial on software construction by addressing issues specifically related to constructions of a Java method.