Chapter 7

Constructing DigitalHome

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.

Build/Integration Plan

image

In Chapter 2, the DigitalHome Development 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.

image

Figure 7.1   DH design diagram.

Construction Fundamentals

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.

Unit Construction

image

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.