1st Edition

Software Specification and Design An Engineering Approach

By John C. Munson, Ph.D. Copyright 2006
    400 Pages 30 B/W Illustrations
    by Auerbach Publications

    The rigors of engineering must soon be applied to the software development process, or the complexities of new systems will initiate the collapse of companies that attempt to produce them. Software Specification and Design: An Engineering Approach offers a foundation for rigorously engineered software. It provides a clear vision of what occurs at each stage of development, parsing the stages of specification, design, and coding into compartments that can be more easily analyzed.

    Formalizing the concepts of specification traceability witnessed at the software organizations of Rockwell, IBM FSD, and NASA, the author proposes a strategy for software development that emphasizes measurement. He promotes the measurement of every aspect of the software environment - from initial testing through test activity and deployment/operation.

    This book details the path to effective software and design. It recognizes that each project is different, with its own set of problems, so it does not propose a specific model. Instead, it establishes a foundation for the discipline of software engineering that is both theoretically rigorous and relevant to the real-world engineering environment.

    An Overview of the Software Development Process

    An Overview of the Software Engineering Environment
    Historical Perspective on Software Development
    Requirements Engineering
    Software Specification
    Software Development: Past and Present
    Testing
    Software Availability Considerations
    Software Performance Considerations
    Hardware Software Decomposition
    The Bottom Line

    Requirements Analysis
    The Requirements Process
    The Concept of a Customer
    Requirements Capture
    The Requirements Analyst
    Specification Traceability

    Operational Specification
    Software Operational Specification
    Operational System Overview
    Operational System Model
    Operations
    The Operational Profile
    The Evolution of the Operational Specifications
    An Example

    Functional Specification: High-Level Design
    Functional System Overview
    Functional System Model
    Functionalities
    The Functional Profile
    The Evolution of the Functional Specifications
    An Example (Continued)
    Configuration Control for the Functional Specifications

    Mapping Operations to Functionalities
    O x F
    Distribution of Activity among the Functionalities
    The Specification Build Process
    An Extended Definition of Operations and Functionalities
    The calc System Example

    Module Specification: Low-Level Design
    Introduction
    Architectural Overview
    Architectural Model
    Module Specifications
    The Elements of a Module Specification
    Module Call Graph Structure
    Module Profiles
    The Evolution of the Module Specifications
    An Example

    Mapping the Operations to Modules
    F x M
    O x F x M
    Distribution of Activity among the Modules
    The Specification Build Process
    An Extended Definition of Functionalities and Modules
    The calc System Example

    Choosing the Appropriate Language Metaphor
    Procrustes
    Matching Design Architecture to Program Language
    Mapping the Modules to Code
    O x F x M x C
    The Bottom Line

    Measuring Software Design
    Measuring Software Design Alternatives
    Understanding Program Modular Structure
    Measuring within Module Structure
    Design Module Complexity
    Testability
    The Key Elements of Bad Design

    System Architectural Trade-Offs
    The Actual Operational Model
    Parsing Functionalities
    The Partitioning of Large Systems

    The Structure of an Executing Program
    A Program Represented as a Call Graph
    A Program as a Call Tree
    Measuring for the Profiles

    Maintaining the Specifications
    Introduction
    Configuration Control for the Specifications
    Maintaining the Specifications

    The Software Development Infrastructure
    Multiple Projects
    Security Considerations

    Specification-Driven Verification and Validation

    Software Verification
    Some Definitions
    Software Validation
    Testing Objectives
    Measuring Test Outcomes
    Maintenance and the V & V Process

    Direct Benefits of Specification Traceability
    Reliability
    Software Security
    Maintainability
    Survivability
    The Software Blackbox Recorder

    Biography

    Ph.D. Munson