You are previewing Software Engineering.
O'Reilly logo
Software Engineering

Book Description

Software Engineering: Architecture-driven Software Development is the first comprehensive guide to the underlying skills embodied in the IEEE's Software Engineering Body of Knowledge (SWEBOK) standard. Standards expert Richard Schmidt explains the traditional software engineering practices recognized for developing projects for government or corporate systems.

Software engineering education often lacks standardization, with many institutions focusing on implementation rather than design as it impacts product architecture. Many graduates join the workforce with incomplete skills, leading to software projects that either fail outright or run woefully over budget and behind schedule.

Additionally, software engineers need to understand system engineering and architecture—the hardware and peripherals their programs will run on. This issue will only grow in importance as more programs leverage parallel computing, requiring an understanding of the parallel capabilities of processors and hardware. This book gives both software developers and system engineers key insights into how their skillsets support and complement each other. With a focus on these key knowledge areas, Software Engineering offers a set of best practices that can be applied to any industry or domain involved in developing software products.



  • A thorough, integrated compilation on the engineering of software products, addressing the majority of the standard knowledge areas and topics
  • Offers best practices focused on those key skills common to many industries and domains that develop software
  • Learn how software engineering relates to systems engineering for better communication with other engineering professionals within a project environment

Table of Contents

  1. Cover image
  2. Title page
  3. Table of Contents
  4. Copyright
  5. A Note from the Author
  6. Preface
    1. Book outline and subject matter
  7. Section 1: Software Engineering Fundamentals
    1. Section 1. Software Engineering Fundamentals
      1. Systems engineering principles and practices
      2. Summary
    2. Chapter 1. Introduction to Software Engineering
      1. 1.1 Specifying software requirements
      2. 1.2 Software architecture
      3. 1.3 Integrated product and process development
      4. 1.4 Integrated product teams
      5. 1.5 Work breakdown structure
      6. 1.6 Software breakdown structure
      7. 1.7 Specification and documentation trees
      8. 1.8 Integrated master plan and schedule
      9. 1.9 Reviews and audits
      10. 1.10 Configuration management and change control
      11. 1.11 Trade-off analysis
      12. 1.12 Risk management
      13. 1.13 Modeling and simulation
    3. Chapter 2. Generic Software Development Framework
      1. 2.1 Software breakdown structure
      2. 2.2 Software development process
      3. 2.3 Summary
    4. Chapter 3. Software Architecture
      1. 3.1 Stakeholder needs relationships and dependencies
      2. 3.2 Software requirements baseline relationships and dependencies
      3. 3.3 Computing environment relationships and dependencies
      4. 3.4 Test and evaluation relationships and dependencies
      5. 3.5 Functional architecture relationships and dependencies
      6. 3.6 Physical architecture relationships and dependencies
      7. 3.7 Post-development process relationships and dependencies
      8. 3.8 Motivation for the software architecture
    5. Chapter 4. Understanding the Software Project Environment
      1. 4.1 Integrated product teams
      2. 4.2 Software architecture
      3. 4.3 Complexity control mechanisms
      4. 4.4 Software nomenclature registry
      5. 4.5 Software integration strategy
      6. 4.6 Project and technical planning
    6. Chapter 5. Software Integrated Product and Process Development
      1. 5.1 Application of IPPD to software
      2. 5.2 Software engineering and development
    7. Chapter 6. Impediments to Software Design
      1. 6.1 Software as a raw material
      2. 6.2 Evolution of software technologies
      3. 6.3 Architecture-driven software development
  8. Section 2: Software Engineering Practices
    1. Section 2. Software Engineering Practices
      1. Developing the software product architecture
    2. Chapter 7. Understanding Software Requirements
      1. 7.1 Step 1: Soliciting stakeholder needs and expectations
      2. 7.2 Step 2: Requirement analysis and specification
      3. 7.3 Step 3: Task definition and scheduling
      4. 7.4 Step 4: Resource identification, estimation, and allocation
      5. 7.5 Step 5: Establish organizational work packages
      6. 7.6 Step 6: Technical planning
      7. 7.7 Step 7: Project planning
      8. 7.8 Exploring stakeholder needs
    3. Chapter 8. Software Requirements Analysis Practice
      1. 8.1 Project analysis tasks
      2. 8.2 Operational analysis tasks
      3. 8.3 Product analysis tasks
      4. 8.4 Sustainment analysis tasks
      5. 8.5 Project assessment tasks
      6. 8.6 Establish the requirements baseline
    4. Chapter 9. Software Requirements Management
      1. 9.1 Embracing change
      2. 9.2 Specifying requirements
      3. 9.3 Requirement decomposition and allocation
      4. 9.4 Requirement traceability
    5. Chapter 10. Formulating the Functional Architecture
      1. 10.1 Motivation for the functional architecture
      2. 10.2 Functional architecture ontology
      3. 10.3 Conceiving the functional architecture
      4. 10.4 Documenting the functional architecture
    6. Chapter 11. Functional Analysis and Allocation Practice
      1. 11.1 Assess functional complexity
      2. 11.2 Behavioral analysis
      3. 11.3 Performance allocation
      4. 11.4 Architectural assessment
      5. 11.5 Establish the functional architecture
    7. Chapter 12. Configuring the Physical Architecture
      1. 12.1 Structural design solution
      2. 12.2 Structural design considerations
    8. Chapter 13. Software Design Synthesis Practice
      1. 13.1 Design conceptualization
      2. 13.2 Design resolution
      3. 13.3 Design correlation
      4. 13.4 Design manifestation
      5. 13.5 Prepare the software technical data package
    9. Chapter 14. Software Analysis Practice
      1. 14.1 Defining the trade study
      2. 14.2 Establish the trade-study environment
      3. 14.3 Conduct the analysis
      4. 14.4 Assess project repercussions
      5. 14.5 Evaluate trade-study results
    10. Chapter 15. Software Verification and Validation Practice
      1. 15.1 Define the V&V strategy
      2. 15.2 Verify the software architecture
      3. 15.3 Validate the physical architecture
      4. 15.4 Document V&V results
    11. Chapter 16. Software Control Practice
      1. 16.1 Configuration administration
      2. 16.2 Process engineering change packages
      3. 16.3 Change evaluation
      4. 16.4 Change assimilation
      5. 16.5 Software repository control
  9. Section 3: Stages of Software Engineering Application
    1. Section 3. Stages of Software Engineering Application
    2. Chapter 17. Software Requirements Definition
      1. 17.1 Products of software requirements definition
      2. 17.2 Software engineering integrated product team (software requirements definition stage)
      3. 17.3 Software implementation (software requirements definition stage)
      4. 17.4 Computing environment preparation (software requirements definition stage)
      5. 17.5 Post-development process implementation (software requirements definition stage)
      6. 17.6 Software test and evaluation (software requirements definition stage)
      7. 17.7 Reviews, milestones, and baselines (software requirements definition stage)
    3. Chapter 18. Software Architecture Definition
      1. 18.1 Preliminary architecture definition
      2. 18.2 Detailed architecture definition
    4. Chapter 19. Software Implementation
      1. 19.1 Products of software implementation
      2. 19.2 Software engineering tasks (software implementation stage)
      3. 19.3 Software implementation tasks (software implementation stage)
      4. 19.4 Computing environment tasks (software implementation stage)
      5. 19.5 Post-development process tasks (software implementation stage)
      6. 19.6 Software test and evaluation tasks (software implementation stage)
      7. 19.7 Reviews and milestones (software implementation stage)
    5. Chapter 20. Software Acceptance Testing
      1. 20.1 Products of software acceptance testing
      2. 20.2 Software engineering (software acceptance testing stage)
      3. 20.3 Software implementation organization (software acceptance testing stage)
      4. 20.4 Computing environment implementation organization (software acceptance testing stage)
      5. 20.5 Post-development process organization (software acceptance testing stage)
      6. 20.6 Software test and evaluation (software acceptance testing stage)
      7. 20.7 Reviews and milestones (software acceptance testing stage)
      8. 20.8 Establish the software product baseline
  10. Index