Software Product Engineering

a key process area for level 3: Defined


The purpose of Software Product Engineering is to consistently perform a well-defined engineering process that integrates all the software engineering activities to produce correct, consistent software products effectively and efficiently.

Software Product Engineering involves performing the engineering tasks to build and maintain the software using the project's defined software process (which is described in the Integrated Software Management key process area) and appropriate methods and tools.

The software engineering tasks include analyzing the system requirements allocated to software (these system requirements are described in the Requirements Management key process area), developing the software requirements, developing the software architecture, designing the software, implementing the software in the code, integrating the software components, and testing the software to verify that it satisfies the specified requirements (i.e., the system requirements allocated to software and the software requirements).

Documentation needed to perform the software engineering tasks (e.g., software requirements document, software design document, test plan, and test procedures) is developed and reviewed to ensure that each task addresses the results of predecessor tasks and the results produced are appropriate for the subsequent tasks (including the tasks of operating and maintaining the software). When changes are approved, affected software work products, plans, commitments, processes, and activities are revised to reflect the approved changes.

Goals

Goal 1

The software engineering tasks are defined, integrated, and consistently performed to produce the software.

Goal 2

Software work products are kept consistent with each other.

Commitment to perform

Commitment 1 -- The project follows a written organizational policy for performing the software engineering activities.

This policy typically specifies that:
  1. The software engineering tasks are performed in accordance with the project's defined software process.
    Refer to Activities 1 and 2 of the Integrated Software Management key process area for practices covering the project's defined software process.


  2. Appropriate methods and tools are used to build and maintain the software products.
  3. The software plans, tasks, and products are traceable to the system requirements allocated to software.
    The system requirements allocated to the software are referred to as "allocated requirements" in these practices.

    Refer to the Requirements Management key process area for practices covering the system requirements allocated to software.


Ability to perform

Ability 1 -- Adequate resources and funding are provided for performing the software engineering tasks.

  1. Skilled individuals are available to perform the different software engineering tasks, including:
  2. Tools to support the software engineering tasks are made available.
    Examples of general support tools include:


    Examples of support tools for software requirements analysis include:


    Examples of support tools for software design include:


    Examples of support tools for coding include:


    Examples of support tools for software testing include:

Ability 2 -- Members of the software engineering technical staff receive required training to perform their technical assignments.


The members of the software engineering technical staff should receive training in the application domain.



Examples of training in software requirements analysis include:


Examples of training in software design include:


Examples of training in coding include:


Examples of training in software testing and other verification techniques include:


Refer to the Training Program key process area.


Ability 3 -- Members of the software engineering technical staff receive orientation in related software engineering disciplines.


Examples of related software engineering disciplines include:


Refer to the Training Program key process area.


Ability 4 -- The project manager and all software managers receive orientation in the technical aspects of the software project.


Examples of orientation include:


Refer to the Training Program key process area.


Activities performed

Activity 1 -- Appropriate software engineering methods and tools are integrated into the project's defined software process.


Refer to Activities 1 and 2 of the Integrated Software Management key process area for practices covering the project's defined software process.


  1. The software engineering tasks are integrated according to the project's defined software process.
  2. Methods and tools appropriate for use on the software project are selected.
    Candidate methods and tools are selected based on their applicability to the organization's standards, the project's defined software process, the existing skill base, availability of training, contractual requirements, power, ease of use, and support services.


  3. Configuration management models appropriate to the software project are selected and used.
    Examples of configuration management models include:
  4. The tools used to develop and maintain the software products are placed under configuration management.
    Refer to the Software Configuration Management key process area.


Activity 2 -- The software requirements are developed, maintained, documented, and verified by systematically analyzing the allocated requirements according to the project's defined software process.

  1. The individuals involved in developing the software requirements review the allocated requirements to ensure that issues affecting the software requirements analysis are identified and resolved.
    Software requirements cover the software functions and performance, the interfaces to both hardware and software, and other system components (e.g., humans).


  2. Effective methods for requirements analysis are used to identify and derive the software requirements.
    Examples of methods for requirements analysis include:
  3. The results of the requirements analysis and the rationale for the selected alternative are documented.
  4. The software requirements are analyzed to ensure they are feasible and appropriate to implement in software, clearly stated, consistent with each other, testable, and complete (when considered as a set).
    Refer to the Requirements Management key process area.


  5. The software requirements are documented.
  6. The group responsible for system and acceptance testing of the software analyzes each software requirement to verify it can be tested.
  7. The methods for verifying and validating that each software requirement is satisfied are identified and documented.


    Examples of verification and validation methods include:
  8. The software requirements document undergoes peer review before it is considered complete.
    Refer to the Peer Reviews key process area.


  9. The software requirements document is reviewed and approved.
    Examples of individuals who review and approve the software requirements document include:
  10. The software requirements document is reviewed with the customer and end users, as appropriate.
    The end users referred to in these practices are the customer-designated end users or representatives of the end users.


  11. The software requirements document is placed under configuration management.


    Refer to the Software Configuration Management key process area.


  12. The software requirements are appropriately changed whenever the allocated requirements change.
    Refer to the Requirements Management key process area.


Activity 3 -- The software design is developed, maintained, documented, and verified, according to the project's defined software process, to accommodate the software requirements and to form the framework for coding.


The software design consists of the software architecture and the detailed software design.


  1. Design criteria are developed and reviewed.
    Examples of design criteria include:
  2. The individuals involved in the software design review the software requirements to ensure that issues affecting the software design are identified and resolved.
  3. Application standards are used where appropriate.


    Examples of application standards include:
  4. Effective methods are used to design the software.
    Examples of software design methods include:
  5. The software architecture is developed early, within the constraints of the software life cycle and technology being used.
    The software architecture establishes the top-level software framework with well-defined internal and external interfaces.


  6. The software architecture is reviewed to ensure that architecture issues affecting the software detailed design are identified and resolved.
  7. The software detailed design is developed based on the software architecture.
  8. The software design (i.e., the software architecture and detailed design) is documented.
  9. The software design document undergoes peer review before the design is considered complete.
    Refer to the Peer Reviews key process area.


  10. The software design document is placed under configuration management.
    Refer to the Software Configuration Management key process area.


  11. The software design document is appropriately changed whenever the software requirements change.

Activity 4 -- The software code is developed, maintained, documented, and verified, according to the project's defined software process, to implement the software requirements and software design.

  1. The individuals involved in coding review the software requirements and software design to ensure that issues affecting the coding are identified and resolved.
  2. Effective programming methods are used to code the software.
    Examples of programming methods include:
  3. The sequence in which code units are developed is based on a plan that accounts for factors such as criticality, difficulty, integration and test issues, and needs of the customer and end users, as appropriate.
  4. Each code unit undergoes peer review and is unit tested before the unit is considered complete.
    Refer to the Peer Reviews key process area.


  5. The code is placed under configuration management.
    Refer to the Software Configuration Management key process area.


  6. The code is appropriately changed whenever the software requirements or software design changes.

Activity 5 -- Software testing is performed according to the project's defined software process.

  1. Testing criteria are developed and reviewed with the customer and the end users, as appropriate.
  2. Effective methods are used to test the software.
  3. The adequacy of testing is determined based on:
  4. For each level of software testing, test readiness criteria are established and used.
    Examples of criteria to determine test readiness include:
  5. Regression testing is performed, as appropriate, at each test level whenever the software being tested or its environment changes.
  6. The test plan, test procedures, and test cases undergo peer review before they are considered ready for use.
    Refer to the Peer Reviews key process area.


  7. The test plans, test procedures, and test cases are managed and controlled.
    "Managed and controlled" implies that the version of the work product in use at a given time (past or present) must be known, and changes must be incorporated in a controlled manner.

    If a greater degree of formality than is implied by "managed and controlled" is desired, the work product can be placed under configuration management, as is described in the Software Configuration Management key process area.


  8. Test plans, test procedures, and test cases are appropriately changed whenever the allocated requirements, software requirements, software design, or code being tested changes.

Activity 6 -- Integration testing of the software is planned and performed according to the project's defined software process.

  1. The plans for integration testing are documented and based on the software development plan.
  2. The integration test cases and test procedures are reviewed with the individuals responsible for the software requirements, software design, and system and acceptance testing.
  3. Integration testing of the software is performed against the designated version of the software requirements document and the software design document.

Activity 7 -- System and acceptance testing of the software are planned and performed to demonstrate that the software satisfies its requirements.


System testing is performed to ensure the software satisfies the software requirements.

Acceptance testing is performed to demonstrate to the customer and end users that the software satisfies the allocated requirements.


  1. Resources for testing the software are assigned early enough to provide for adequate test preparation.
    Examples of activities required to prepare for testing include:
  2. System and acceptance testing are documented in a test plan, which is reviewed with, and approved by, the customer and end users, as appropriate. The test plan covers:
  3. The test cases and test procedures are planned and prepared by a test group that is independent of the software developers.
  4. The test cases are documented and are reviewed with, and approved by, the customer and end users, as appropriate, before the testing begins.
  5. Testing of the software is performed against baselined software and the baselined documentation of the allocated requirements and the software requirements.
  6. Problems identified during testing are documented and tracked to closure.
    Refer to Activity 9 of the Software Project Tracking and Oversight key process area and Activity 5 of the Software Configuration Management key process area for practices covering documenting and tracking problems.


  7. Test results are documented and used as the basis for determining whether the software satisfies its requirements.
  8. The test results are managed and controlled.

Activity 8 -- The documentation that will be used to operate and maintain the software is developed and maintained according to the project's defined software process.

  1. Appropriate methods and tools are used to develop the documentation.
    Examples of methods and tools include:
  2. Documentation specialists actively participate in planning, developing, and maintaining documentation.
  3. Preliminary versions of the documentation are developed and made available early in the software life cycle for the customer, end users, and software maintainers, as appropriate, to review and provide feedback.
    Examples of documentation include:
  4. Final versions of the documentation are verified against the software baselined for software acceptance testing.
  5. The documentation undergoes peer review.
    Refer to the Peer Reviews key process area.


  6. The documentation is managed and controlled.
  7. The final documentation is reviewed and approved by the customer, end users, and software maintainers, as appropriate.

Activity 9 -- Data on defects identified in peer reviews and testing are collected and analyzed according to the project's defined software process.


Examples of the kinds of data to be collected and analyzed include:

Activity 10 -- Consistency is maintained across software work products, including the software plans, process descriptions, allocated requirements, software requirements, software design, code, test plans, and test procedures.

  1. Software work products are documented, and the documentation is readily available.
  2. The software requirements, design, code, and test cases are traced to the source from which they were derived and to the products of the subsequent software engineering activities.
  3. The documentation tracing the allocated requirements through the software requirements, design, code, and test cases is managed and controlled.
  4. As understanding of the software improves, changes to the software work products, plans, process descriptions, and activities are proposed, analyzed, and incorporated as appropriate.

Measurement and analysis

Measurement 1 -- Measurements are made and used to determine the functionality and quality of the software products.


Examples of measurements include:

Measurement 2 -- Measurements are made and used to determine the status of the software product engineering activities.


Examples of measurements include:

Verifying implementation

Verification 1 -- The activities for software product engineering are reviewed with senior management on a periodic basis.


Refer to Verification 1 of the Software Project Tracking and Oversight key process area for practices covering the typical content of senior management oversight reviews.


Verification 2 -- The activities for software product engineering are reviewed with the project manager on both a periodic and event-driven basis.


Refer to Verification 2 of the Software Project Tracking and Oversight key process area for practices covering the typical content of project management oversight reviews.


Verification 3 -- The software quality assurance group reviews and/or audits the activities and work products for software product engineering and reports the results.


Refer to the Software Quality Assurance key process area.


At a minimum, the reviews and/or audits verify that:
  1. The software requirements are reviewed to ensure that they are:
  2. Readiness and completion criteria for each software engineering task are satisfied.
  3. Software products comply with the standards and requirements specified for them.
  4. Required testing is performed.
  5. System and acceptance testing of the software are performed according to documented plans and procedures.
  6. Tests satisfy their acceptance criteria, as documented in the software test plan.
  7. Tests are satisfactorily completed and recorded.
  • Problems and defects detected are documented, tracked, and addressed.
  • Tracing of the allocated requirements through the software requirements, design, code, and test cases is performed.
  • The documentation used to operate and maintain the software is verified against the software baseline and any applicable allocated requirements before the software product is released to the customer or end users.

    [^^]Table of contents [->]Back one chapter [->]Forward one chapter