We use cookies to enhance your experience on our website. By continuing to use our website, you are agreeing to our use of cookies. You can change your cookie settings at any time. Find out more

Software Engineering Fundamentals

Ali Behforooz and Frederick J. Hudson

Publication Date - 11 April 1996

ISBN: 9780195105391

688 pages
7-1/2 x 9-1/4 inches


Software Engineering Fundamentals provides a comprehensive overview of software engineering and its process, builds on experience drawn from actual practice, and guides engineering students towards a better understanding of various disciplines, tasks, and specialities that contribute to the development of a software product. Intended for both students and professionals, the text follows the full software development life cycle, including a thorough coverage of methods, tools, principles, and guidelines. Software Engineering Fundamentals is unique in its coverage of such topics as software metrics, real-time software design, quality assurance, reliability, risk management, cost and schedule estimation, sizing, planning, test and integration process, technical management, and human factors. It establishes the concept of software development as an engineering process and software as an engineered product, and describes software development as a team-oriented activity usually conducted in a system development setting. The notion of using software metrics (attributes) to measure properties of the software product as a means to evaluate and control the development process is introduced, software metrics are presented as a management tool, and the software development process is described using an accepted review and documentation structure as an outline. Many interim products of the software engineering process are described in enough detail to permit the reader to produce a credible draft of these products. While encouraging the use of modeling techniques for sizing, cost and schedule estimation, reliability, risk assessment, and real-time design, the authors emphasize the need to calibrate models with actual data. Explicit guidance is provided for virtually every task that a software engineer may be assigned, and realistic case studies and examples are used extensively to reinforce the topics presented. Software Engineering Fundamentals presents a unique blend of practical and theoretical treatment of software engineering topics for students and professional use.

Table of Contents

    Unit One: Introduction
    1. Overview of System and Software Development Life Cycles
    1.0. Objectives
    1.1. Introduction
    1.2. System: Definition and Discussion
    1.3. System Level Project Planning
    1.4. System Development Life Cycle Definition and Overview
    1.5. Software Development Life Cycle: A Brief Overview
    1.6. SWDLC Models
    1.7. The Software Engineering Process
    1.8. Some General Observations on SDLC and SWDLC
    1.9. Chapter Summary
    1.10. Exercises
    2. Case Studies
    2.0. Objectives
    2.1. Introduction
    2.2. Case Study Problem Statements
    2.3. The XYZ Project: Analysis
    2.4. The Bidder Perspective
    2.5. Chapter Summary
    2.6. Exercises
    3. Technical Planning
    3.0. Objectives
    3.1. Introduction
    3.2. Software Development Planning
    3.3. The Use of SDP as a Management Tool
    3.4. Attribute (Metrics) Estimation
    3.5. Automated Planning Tools
    3.6. Management, Methodology and Metrics
    3.7. Chapter Summary
    3.8. Unit One Summary
    3.9. Exercises
    Unit Two: Analysis and Design
    4. Software Specifications and Requirement Analysis
    4.0. Objectives
    4.1. Introduction
    4.2. People Involved in the Software Development Process
    4.3. Software Requirements Specification (SRS)
    4.4. Examples of SRS Preparation
    4.5. Other Software Specification Documents
    4.6. Software Specification Attributes
    4.7. Chapter Summary
    4.8. Exercies
    5. Software Specification Tools
    5.0. Objectives
    5.1. Introduction
    5.2. Data Dictionary
    5.3. Decision Support Tools
    5.4. Data Flow Diagrams
    5.5. Finite State Machines
    5.6. Petri Nets
    5.7. Mathematical Logic
    5.8. Operational Timelines
    5.9. Chapter Summary
    5.10. Exercises
    6. Software Development Environment
    6.0. Objectives
    6.1. Introduction
    6.2. Software Development Environment Configuration
    6.3. Software Development Platform (SDPF)
    6.4. Computer-Aided Software Engineering Tools
    6.5. An Ideal Software Development Platform
    6.6. Chapter Summary
    6.7. Exercises
    7. Software Design
    7.0. Objectives
    7.1. Introduction
    7.2. An Overview of the Software Design Process
    7.3. Software Design
    7.4. A Design Example
    7.5. Chapter Summary
    7.6. Exercises
    8. Object-Oriented Analysis and Design
    8.0. Objectives
    8.1. Introduction
    8.2. Object-Oriented Paradigm
    8.3. Basic Definitions and Symbols
    8.4. Object-Oriented Analysis
    8.5. Object-Oriented Design
    8.6. Chapter Summary
    8.7. Exercises
    Unit Three: Implementation and Maintenance
    9. Fundamentals of Coding
    9.0. Objectives
    9.1. Introduction
    9.2. Programming Languages
    9.3. Programming Style and Program Quality
    9.4. A Programming Example
    9.5. Chapter Summary
    9.6. Exercises
    10. Software System Test and Integration
    10.0. Objectives
    10.1. Introduction
    10.2. Basic Concepts in Testing
    10.3. An Overview of System and Software Test and Integration
    10.4. The Incremental Build of Modules into Systems
    10.5. Test and Integration Plan
    10.7. Perspective on Build Testing
    10.8. Alpha and Beta Testing
    10.9. Chapter Summary
    10.10. Exercises
    11. Module Level Testing
    11.0. Objectives
    11.1. Introduction
    11.2. Module Test Planning
    11.3. Static Testing
    11.4. Dynamic Testing
    11.5. Test Case Execution
    11.6. Formal Testing
    11.7. Perspective on Module Testing
    11.8. Chapter Summary
    11.9. Exercises
    12. Debugging
    12.0. Objectives
    12.1. Introduction
    12.2. Program Errors
    12.3. The Debugging Process
    12.4. Perspectives on Debugging
    12.5. Debugging Tools
    12.6. An Example
    12.7. Chapter Summary
    12.8. Exercises
    13. Software Maintenance and Maintainability
    13.0. Objectives
    13.1. Introduction
    13.2. Software Maintenance
    13.3. Software Maintenance Process
    13.4. Maintenance Resource Estimation
    13.5. Directly Specified Maintenace Attributes
    13.6. Reverse Engineering
    13.7. Re-engineering a Software Product
    13.8. Chapter Summary
    13.9. Exercises
    Unit Four: Software Metrics or Attributes
    14. Software Attributes and Their Estimation
    14.0. Objectives
    14.1. Introduction
    14.2. Identification Related Attributes
    14.3. Size Related Attributes
    14.4. Design and Development Attributes
    14.5. Software Quality Attributes
    14.6. Complexity Related Attributes
    14.7. Execution Time Related Attributes
    14.8. Test Related Attributes
    14.9. Documentation Related Attributes
    14.10. Performance Related Attributes
    14.11. Labor Related Attributes
    14.12. Operating Environment Attributes
    14.13. Data Collection
    14.14. Chapter Summary
    14.15. Exercises
    15. Software Developement Resource Estimation
    15.0. Objectives
    15.1. Introduction
    15.2. Software Product Cost and Schedule Estimation
    15.3. Cost and Schedule Estimation Models
    15.4. Grass Roots Resource and Schedule Estimation
    15.5. An Example of Schedule Development
    15.6. Closing Comments
    15.7. Chapter Summary
    15.8. Exercises
    16. Software Development Risk Assessment and Containment
    16.0. Objectives
    16.1. Introduction
    16.2. Software Development Risk Areas
    16.3. The Risk Model
    16.4. Risk Containment and Risk Management
    16.5. Technical Performance Management
    16.6. Examples to Illustrate Software Development Risk Analysis
    16.7. Chapter Summary
    16.8. Exercises
    17. Reliability
    17.0. Objectives
    17.1. Introduction
    17.2. Overview
    17.3. Review of Probability Theory
    17.4. Reliability Definitions
    17.5. Reliability Models
    17.6. Software Faults
    17.7. Design Rules
    17.8. System Reliability and Availability
    17.9. Applications of a Software Reliability Model
    17.10. Redundancy and Fault Tolerance
    17.11. Failure Modes and Effects and Other Analysis Tools
    17.12. Chapter Summary
    17.13. Exercises
    18. Software Quality and Quality Assurance
    18.0. Objectives
    18.1. Introduction
    18.2. Software Quality Assurance Planning
    18.3. Software Quality Assurance Process
    18.4. Software Quality Attributes
    18.5. Guidelines and Checklists
    18.6. Software Safety
    18.7. Chapter Summary
    18.8. Exercises
    Unit Five: Special Topics
    19. Real-Time Software
    19.0. Objectives
    19.1. Introduction
    19.2. Real-Time Requirements Specification
    19.3. Design Guidlines for Real-Time Software
    19.4. Schedulability Concerns
    19.5. Testing Real-Time Software
    19.6. Chapter Summary
    19.7. Exercises
    20. Human Factors in Software Engineering
    20.0. Objectives
    20.1. Introduction
    20.2. Human Factors History
    20.3. HCI Requirements and Design Process
    20.4. The Human as an Information System Component
    20.5. Operator Task Development
    20.6. Operator Characteristics
    20.7. Chapter Summary
    20.8. Exercises
    Appendix A. Communication Skills
    Appendix B. Cost Benefit Analysis
    Appendix C. Decisions and Trade-Offs
    Appendix D. Reviews