You are previewing Software Engineering: A Methodical Approach.
O'Reilly logo
Software Engineering: A Methodical Approach

Book Description

This text provides a comprehensive, but concise introduction to software engineering. It adopts a methodical approach to solving software engineering problems proven over several years of teaching, with outstanding results.

The book covers concepts, principles, design, construction, implementation, and management issues of software systems. Each chapter is organized systematically into brief, reader-friendly sections, with itemization of the important points to be remembered. Diagrams and illustrations also sum up the salient points to enhance learning. Additionally, the book includes a number of the author’s original methodologies that add clarity and creativity to the software engineering experience, while making a novel contribution to the discipline.

Upholding his aim for brevity, comprehensive coverage, and relevance, Foster’s practical and methodical discussion style gets straight to the salient issues, and avoids unnecessary topics and minimizes theoretical coverage.

Table of Contents

  1. Cover
  2. Title
  3. Copyright
  4. Dedication
  5. Contents at a Glance
  6. Contents
  7. About the Author
  8. Acknowledgments
  9. Preface
  10. Part A: Fundamentals
    1. Chapter 1: Introduction to Software Engineering
      1. 1.1 Definitions and Concepts
        1. 1.1.1 System
        2. 1.1.2 Software
      2. 1.2 The Organization as a System
        1. 1.2.1 Discussion
      3. 1.3 Information Levels in the Organization
        1. 1.3.1 Top Management
        2. 1.3.2 Middle Management
        3. 1.3.3 Junior Management and Operational Staff
        4. 1.3.4 Importance of Information Levels in Software Engineering
        5. 1.3.5 Alternate Organizational Settings
      4. 1.4 Software Life Cycle
        1. 1.4.1 Waterfall Model
        2. 1.4.2 Phased Prototype Model
        3. 1.4.3 Iterative Development Model
        4. 1.4.4 Rapid Prototype Model
        5. 1.4.5 Formal Transformation Model
        6. 1.4.6 Components-Based Model
        7. 1.4.7 Agile Development Model
      5. 1.5 Categories of Software
      6. 1.6 Alternate Software Acquisition Approaches
        1. 1.6.1 Discussion
      7. 1.7 Software Engineering Paradigms
      8. 1.8 Desirable Features of Computer Software
      9. 1.9 Summary and Concluding Remarks
        1. 1.10 Review Questions
      10. 1.11 References and/or Recommended Readings
    2. Chapter 2: The Role of the Software Engineer
      1. 2.1 Historical Role
      2. 2.2 Modern Role of the Software Engineer
      3. 2.3 Job Description of the Software Engineer
        1. 2.3.1 Core Functions of the Software Engineer
        2. 2.3.2 Desirable Qualities of the Software Engineer
      4. 2.4 Tools used by the Software Engineer
        1. 2.4.1 Coding Systems
        2. 2.4.2 Forms Design
        3. 2.4.3 Data Analysis Charts
        4. 2.4.4 Technical Documents and Modeling Techniques
        5. 2.4.5 Software Planning and Development Tools
      5. 2.5 Management Issues with Which the Software Engineer must be Familiar
      6. 2.6 Summary and Concluding Remarks
      7. 2.7 Review Questions
      8. 2.8 References and/or Recommended Readings
  11. Part B: Software Investigation and Analysis
    1. Chapter 3: Project Selection and the Initial System Requirements
      1. 3.1 Project Selection
      2. 3.2 Problem Definition
        1. 3.2.1 Constraints of a System
        2. 3.2.2 Aid in Identifying System Problems
        3. 3.2.3 Identifying the System Void
      3. 3.3 The Proposed Solution
      4. 3.4 Scope and Objectives of the System
      5. 3.5 System Justification
      6. 3.6 Feasibility Analysis Report
        1. 3.6.1 Technical Feasibility
        2. 3.6.2 Economic Feasibility
        3. 3.6.3 Operational Feasibility
        4. 3.6.4 Evaluation of System Alternatives
        5. 3.6.5 Evaluation of System Alternatives (continued)
      7. 3.7 Alternate Approach to the Feasibility Analysis
      8. 3.8 Summary of System Inputs and Outputs
      9. 3.9 Initial Project Schedule
      10. 3.10 Project Team
      11. 3.11 Summary and Concluding Remarks
      12. 3.12 Review Questions
      13. 3.13 References and/or Recommended Readings
    2. Chapter 4: The Requirements Specification
      1. 4.1 Introduction
      2. 4.2 Contents of the Requirements Specification
      3. 4.3 Documenting the Requirements
      4. 4.4 Requirements Validation
      5. 4.5 How to Proceed
      6. 4.6 Presentation of the Requirements Specification
      7. 4.7 Summary and Concluding Remarks
      8. 4.8 Review Questions
      9. 4.9 References and/or Recommended Readings
    3. Chapter 5: Information Gathering
      1. 5.1 Rationale for Information Gathering
      2. 5.2 Interviewing
      3. 5.3 Questionnaires and Surveys
      4. 5.4 Sampling and Experimenting
        1. 5.4.1 Probability Sampling Techniques
        2. 5.4.2 Non-probability Sampling Techniques
        3. 5.4.3 Sample Calculations
      5. 5.5 Observation and Document Review
      6. 5.6 Prototyping
      7. 5.7 Brainstorming and Mathematical Proof
      8. 5.8 Object Identification
        1. 5.8.1 The Descriptive Narrative Approach
        2. 5.8.2 The Rule-of-Thumb Approach
      9. 5.9 Summary and Concluding Remarks
      10. 5.10 Review Questions
      11. 5.11 References and/or Recommended Readings
    4. Chapter 6: Communicating Via Diagrams
      1. 6.1 Introduction
      2. 6.2 Traditional System Flowcharts
        1. 6.2.1 Information-Oriented Flowchart
        2. 6.2.2 Process-Oriented Flowchart
        3. 6.2.3 Hierarchy- Input–Process-Output Chart
      3. 6.3 Procedure Analysis Chart
      4. 6.4 Innovation: Topology Charts
        1. 6.4.1 Information Topology Chart
        2. 6.4.2 User Interface Topology Chart
      5. 6.5 Data Flow Diagrams
      6. 6.6 Object FlowDiagram
      7. 6.7 Other Contemporary Diagramming Techniques
        1. 6.7.1 State Transition Diagram
        2. 6.7.2 Finite State Machine
      8. 6.8 Program Flowchart
      9. 6.9 Summary and Concluding Remarks
      10. 6.10 Review Questions
      11. 6.11 References and/or Recommended Readings
    5. Chapter 7: Decision Models for System Logic
      1. 7.1 Structured Language
      2. 7.2 Decision Tables
        1. 7.2.1 Constructing the Decision Table
        2. 7.2.2 Analyzing and Refining the Decision Table
        3. 7.2.3 Extended Decision Table
      3. 7.3 Decision Trees
      4. 7.4 Which Technique to Use
      5. 7.5 Decision Techniques versus Flowcharts
      6. 7.6 System Rules
        1. 7.6.1 Rule Definition
        2. 7.6.2 Declarative versus Procedural Statements
        3. 7.6.3 Types of Rules
      7. 7.7 Summary and Concluding Remarks
      8. 7.8 Review Questions
      9. 7.9 References and/or Recommended Readings
    6. Chapter 8: Project Management Aids
      1. 8.1 PERT and CPM
        1. 8.1.1 Step 1: Tabulate the Project Activities
        2. 8.1.2 Step 2: Draw the PERT Diagram
        3. 8.1.3 Step 3: Determine ES, EF, LS and LF for each Activity
        4. 8.1.4 Step 4: Determine the Critical Path
        5. 8.1.5 Step 5: Conduct a Sensitivity Analysis
      2. 8.2 The Gantt Chart
      3. 8.3 Project Management Software
      4. 8.4 Summary and Concluding Remarks
      5. 8.5 Review Questions
      6. 8.6 References and/or Recommended Readings
  12. Part C: Software Design
    1. Chapter 9: Overview of Software Design
      1. 9.1 The Software Design Process
      2. 9.2 Design Strategies
        1. 9.2.1 Function-Oriented Design
        2. 9.2.2 Object-Oriented Design
        3. 9.2.3 The Unified Modeling Language
        4. 9.2.4 Advantages of Object Oriented Design
        5. 9.2.5 Using Both FO and OO Strategies
      3. 9.3 Architectural Design
        1. 9.3.1. Approaches to Resource Sharing
        2. 9.3.2 System Controls
        3. 9.3.3 System Components
      4. 9.4 Interface Design
      5. 9.5 Software Design and Development Standards
        1. 9.5.1 Advantages of Software Standards
        2. 9.5.2 Issues That Software Standards Should Address
      6. 9.6 The Design Specification
        1. 9.6.1 Contents of the Design Specification
        2. 9.6.2 How to Proceed
      7. 9.7 Summary and Concluding Remarks
      8. 9.8 Review Questions
      9. 9.9 References and/or Recommended Readings
    2. Chapter 10: Database Design
      1. 10.1 Introduction
      2. 10.2 Approaches to Database Design
        1. 10.2.1 Conventional Files
        2. 10.2.2 Database Approach
        3. 10.2.3 Identifying and Defining Entities or Object Types
        4. 10.2.4 Identifying Relationships
        5. 10.2.5 Developing the ERD or ORD
        6. 10.2.6 Preparing the Database Specification
      3. 10.3 Overview of File Organization
        1. 10.3.1 Sequential File Organization
        2. 10.3.2 Relative or Direct File Organization
        3. 10.3.3 Indexed Sequential File Organization
        4. 10.3.4 Multi-Access File Organization
      4. 10.4 Summary and Concluding Remarks
      5. 10.5 Review Questions
      6. 10.6 References and/or Recommended Readings
    3. Chapter 11: User Interface Design
      1. 11.1 Introduction
        1. 11.1.1 User Needs
        2. 11.1.2 Human Factors
        3. 11.1.3 Design Considerations
        4. 11.1.4 User Interface Preparation
      2. 11.2 Types of User Interfaces
      3. 11.3 Steps in User Interface Design
        1. 11.3.1 Menu or Graphical User Interface
        2. 11.3.2 Command-Based User Interface
      4. 11.4 Overview of Output Design
      5. 11.5 Output Methods versus Content and Technology
        1. 11.5.1 Printed Output
        2. 11.5.2 Monitor Display
        3. 11.5.3 Audio Output
        4. 11.5.4 Microfilm/Microfiche
        5. 11.5.5 Magnetic and Optical Storage
        6. 11.5.6 Choosing the Appropriate Output Method
      6. 11.6 Guidelines for Designing Output
        1. 11.6.1 Guidelines for Designing Printed Output
        2. 11.6.2 Guidelines for Designing Screen Output
      7. 11.7 Overview of Input Design
      8. 11.8 Guidelines for Designing Input
      9. 11.9 Summary and Concluding Remarks
      10. 11.10 Review Questions
      11. 11.11 References and/or Recommended Reading
    4. Chapter 12: Operations Design
      1. 12.1 Introduction
      2. 12.2 Categorization of Operations
      3. 12.3 Essentials of Operations Design
      4. 12.4 Informal Methods for Specifying Operation Requirements
        1. 12.4.1 Traditional Methods
        2. 12.4.2 Warnier Orr Diagram
        3. 12.4.3 UML Notations for Object Behavior
        4. 12.4.4 Extended Operation Specification
      5. 12.5 Formal Specifications
      6. 12.6 Summary and Concluding Remarks
      7. 12.7 Review Questions
      8. 12.8 References and/or Recommended Reading
    5. Chapter 13: Other Design Considerations
      1. 13.1 The System Catalog
        1. 13.1.1 Contents of the System Catalog
        2. 13.1.2 Building the System Catalog
        3. 13.1.3 Using the System Catalog
      2. 13.2 Product Documentation
        1. 13.2.1 The System Help Facility
        2. 13.2.2 The User’s Guide and System Guide
      3. 13.3 User Message Management
        1. 13.3.1 Storage and Management of Messages
        2. 13.3.2 Message Retrieval
      4. 13.4 Design for Real-Time Systems
        1. 13.4.1 Real-Time System Modeling
        2. 13.4.2 Real-Time Programming
      5. 13.5 Design for Reuse
      6. 13.6 System Security
        1. 13.6.1 Access to the System
        2. 13.6.2 Access to System Resources
        3. 13.6.3 Access to System Data
      7. 13.7 Summary and Concluding Remarks
      8. 13.8 Review Questions
      9. 13.9 References and/or Recommended Readings
  13. Part D: Software Development
    1. Chapter 14: Sof tware Development Issues
      1. 14.1 Introduction
      2. 14.2 Standards and Quality Assurance
        1. 14.2.1 The Relationship between Quality and Standards
        2. 14.2.2 Software Quality Factors
        3. 14.2.3 Quality Assurance Evaluation
      3. 14.3 Management of Targets and Financial Resources
        1. 14.3.1 Managing Budget and Expenditure
        2. 14.3.2 Managing Software Cost and Value
      4. 14.4 Leadership and Motivation
      5. 14.5 Planning of Implementation Strategy
      6. 14.6 Summary and Concluding Remarks
      7. 14.7 Review Questions
      8. 14.8 References and/or Recommended Readings
    2. Chapter 15: Human Resource Management
      1. 15.1 Management Responsibilities
      2. 15.2 Management Styles
        1. 15.2.1 Autocratic Management
        2. 15.2.2 Egalitarian (Democratic) Management
        3. 15.2.3 Laissez Faire Management
        4. 15.2.4 Path-Goal Leadership
        5. 15.2.5 Transformational Leadership
        6. 15.2.6 The Super Leader Approach
        7. 15.2.7 Task-Oriented Leadership
        8. 15.2.8 Relation-Oriented Leadership
        9. 15.2.9 Contingency Leadership
      3. 15.3 Developing Job Descriptions
      4. 15.4 Hiring
      5. 15.5 Maintaining the Desired Environment
        1. 15.5.1 Effective Communication
        2. 15.5.2 Conflict Resolution
        3. 15.5.3 Treating Outstanding Achievements and Errant Actions
      6. 15.6 Preserving Accountability
        1. 15.6.1 Designing and Assigning Work
        2. 15.6.2 Evaluating Performance
      7. 15.7 Grooming and Succession Planning
      8. 15.8 Summary and Concluding Remarks
      9. 15.9 Review Questions
      10. 15.10 References and/or Recommended Readings
    3. Chapter 16: Software Economics
      1. 16.1 Software Cost versus Software Price
        1. 16.1.1 Software Cost
        2. 16.1.2 Software Price
      2. 16.2 Software Value
      3. 16.3 Evaluating Software Productivity
        1. 16.3.1 Size-related Metrics
        2. 16.3.2 Function-related Metrics
        3. 16.3.3 Assessment Based on Value Added
      4. 16.4 Estimation Techniques for Engineering Cost
        1. 16.4.1 Algorithmic Cost Models
        2. 16.4.2 The COCOMO Model
        3. 16.4.3 The COCOMO II Model
      5. 16.5 Summary and Concluding Remarks
      6. 16.6 Review Questions
      7. 16.7 References and/or Recommended Reading
  14. Part E: Software Implementation and Management
    1. Chapter 17: Software Implementation Issues
      1. 17.1 Introduction
      2. 17.2 Operating Environment
        1. 17.2.1 Central System
        2. 17.2.2 Distributed System
        3. 17.2.3 Other Environmental Issues
      3. 17.3 Installation of the System
      4. 17.4 Code Conversion
      5. 17.5 Change Over
        1. 17.5.1 Direct Change Over
        2. 17.5.2 Parallel Conversion
        3. 17.5.3 Phased Conversion
        4. 17.5.4 Distributed Conversion
      6. 17.6 Training
      7. 17.7 Marketing of the Software
      8. 17.8 Summary and Concluding Remarks
      9. 17.9 Review Questions
      10. 17.10 Recommended Readings
    2. Chapter 18: Software Management
      1. 18.1 Introduction
      2. 18.2 Software Maintenance
        1. 18.2.1 Software Modifications
        2. 18.2.2 Software Upgrades and Patches
        3. 18.2.3 Maintenance Cost
      3. 18.3 Legacy Systems
      4. 18.4 Software Integration
      5. 18.5 Software Re-engineering
      6. 18.6 Summary and Concluding Remarks
      7. 18.7 Review Questions
      8. 18.8 References and/or Recommended Readings
    3. Chapter 19: Organizing for Effective Management
      1. 19.1 Introduction
      2. 19.2 Functional Organization
      3. 19.3 Parallel Organization
      4. 19.4 Hybrid (Matrix) Organization
      5. 19.5 Organization of Software Engineering Firms
      6. 19.6 Summary and Concluding Remarks
      7. 19.7 Review Questions
      8. 19.8 References and/or Recommended Readings
  15. Part F: Final Preparations
    1. Chapter 20: Sample Exercises and Examination Questions
      1. 20.1 Introduction
      2. 20.2 Assignment 1A
      3. 20.3 Assignment 2
      4. 20.4 Assignment 3A
      5. 20.5 Assignment 4A
      6. 20.6 Assignment 5A
      7. 20.7 Assignment 6A
      8. 20.8 Assignment 7A
      9. 20.9 Assignment 8A
      10. 20.10 Sample Interim Examination 1A
      11. 20.11 Sample Interim Examination 2B
      12. 20.12 Sample Final Examination A
      13. 20.13 Sample Final Examination B
  16. Part G: Appendices
    1. Appendix 1: Introduction to Object Oriented Methodologies
      1. A1.1 Software Revolution and Rationale for Object-Oriented Techniques
      2. A1.2 Information Engineering and the Object-Oriented Approach
      3. A1.3 Integrating Hi-tech Technologies
      4. A1.4 Characteristics of Object-Oriented Methodologies
      5. A1.5 Benefits of Object-Oriented Methodologies
      6. A1.6 Summary and Concluding Remarks
      7. A1.7 Recommended Readings
    2. Appendix 2: Basic Concepts of Object-Oriented Methodologies
      1. A2.1 Objects and Object Types
      2. A2.2 Operations
      3. A2.3 Methods
      4. A2.4 Encapsulation and Classes
        1. A2.4.1 Encapsulation
        2. A2.4.2 Class
      5. A2.5 Inheritance and Amalgamation
        1. A2.5.1 Inheritance
        2. A2.5.2 Amalgamation
      6. A2.6 Requests
      7. A2.7 Polymorphism and Reusability
      8. A2.8 Interfaces
      9. A2.9 Late Binding
      10. A2.10 Multithreading
      11. A2.11 Perception versus Reality
      12. A2.12 Overview of the Object-Oriented Software Engineering Process
      13. A2.13 Summary and Concluding Remarks
      14. A2.14 Recommended Readings
    3. Appendix 3: Object-Oriented Information Engineering
      1. A3.1 Introduction
      2. A3.2 Engineering the Infrastructure
      3. A3.3 Diagramming Techniques
      4. A3.4 Enterprise Planning
      5. A3.5 Business Area Analysis
      6. A3.6 System Design
      7. A3.7 System Construction
      8. A3.8 Summary and Concluding Remarks
      9. A3.9 References and/or Recommended Reading
    4. Appendix 4: Basic Guidelines for Object-Oriented Methodologies
      1. A4.1 Object Identification
        1. A4.1.1 Using Things to be Modeled
        2. A4.1.2 Using the Definitions of Objects, Categories and Interfaces
        3. A4.1.3 Using Decomposition
        4. A4.1.4 Using Generalizations and Subclasses
        5. A4.1.5 Using OO Domain Analysis or Application Framework
        6. A4.1.6 Reusing Hierarchies, Individual Objects and Classes
        7. A4.1.7 Using Personal Experience
        8. A4.1.8 Using the Descriptive Narrative Approach
        9. A4.1.9 Using the Class-Responsibility-Collaboration Method
        10. A4.1.10 Using the Rule-of-Thumb Method
      2. A4.2 End User Involvement
      3. A4.3 OO Diagramming
      4. A4.4 Enterprise-wide Design
      5. A4.5 Emphasis on OO-CASE Tools versus OO-Programming Language
      6. A4.6 OO Modeling
      7. A4.7 Summary and Concluding Remarks
      8. A4.8 References and/or Recommended Reading
    5. Appendix 5: Categorizing Objects
      1. A5.1 Identifying Object Relationships
      2. A5.2 Fern Diagram
      3. A5.3 Information Topology Chart
      4. A5.4 Object Relationship Diagrams
      5. A5.5 Representing Details about Object Types
        1. A5.5.1 Object Structure Diagram
        2. A5.5.2 CRC Card
      6. A5.6 Avoiding Multiple Inheritance Relationships
        1. A5.6.1 Delegation Using Aggregation
        2. A5.6.2 Delegation and Inheritance
        3. A5.6.3 Nested generalization
      7. A5.7 Top-Down versus Bottom-Up
        1. A5.7.1 Top-Down Approach
        2. A5.7.2 Bottom-Up Approach
      8. A5.8 Summary and Concluding Remarks
      9. A5.9 References and/or Recommended Reading
    6. Appendix 6: Specifying Object Behavior
      1. A6.1 Use-cases
        1. A6.1.1 Symbols Used in Use-case
        2. A6.1.2 Types of Use-cases
        3. A6.1.3 Information Conveyed by a Use-case
        4. A6.1.4 Bundling Use-cases and Putting Them to Use
      2. A6.2 States and State Transition
      3. A6.3 Finite State Machines
      4. A6.4 Event Diagrams
      5. A6.5 Triggers
      6. A6.6 Activity Diagrams
      7. A6.7 Sequence Diagrams and Collaboration Diagrams
      8. A6.8 Object Flow Diagrams
      9. A6.9 Summary and Concluding Remarks
      10. A6.10 References and/or Recommended Reading
    7. Appendix 7: Tools for Object-Oriented Methodologies
      1. A7.1 Introduction
      2. A7.2 Categories of CASE Tools
      3. A7.3 Universal Database Management Systems
      4. A7.4 Benefits of OO-CASE Tools and UDBMS Suites
      5. A7.5 Object Oriented Programming Languages
      6. A7.6 Modeling and Code Generation
        1. A7.6.1 Instant CASE
        2. A7.6.2 Repository
      7. A7.7 Standards for OOM
        1. A7.7.1 CORBA
        2. A7.7.2 COM
        3. A7.7.3 The .NET Boom
      8. A7.8 Summary and Concluding Remarks
      9. A7.9 References and/or Recommended Readings
    8. Appendix 8: Project Proposal for a Generic Inventory Management System
      1. A8.1 Problem Definition
      2. A8.2 Proposed Solution
      3. A8.3 Scope of the System
      4. A8.4 System Objectives
      5. A8.5 Expected Benefits
      6. A8.6 Overview of Storage Requirements
      7. A8.7 Anticipated Outputs
      8. A8.8 Feasibility Analysis Report
        1. A8.8.1 Feasibility of Alternative A
        2. A8.8.2 Feasibility of Alternative B
        3. A8.8.3 Feasibility of Alternative C
        4. A8.8.4 Feasibility of Alternative D
      9. A8.8.5 Evaluation of Alternatives
      10. A8.9 Initial Project Schedule
    9. Appendix 9: Requirements Specification for a Generic Inventory Management System
      1. A9.1 System Overview
        1. A9.1.1 Problem Definition
        2. A9.1.2 Proposed Solution
        3. A9.1.3 System Architecture
      2. A9.2 Storage Requirements
        1. A9.2.1 Acquisitions Management Subsystem
        2. A9.2.2 Financial Management Subsystem
      3. A9.3 Operational Requirements
      4. A9.4 Business Rules
        1. A9.4.1 Overview
        2. A9.4.2 Derivation and Procedural Rules
      5. A9.5 Summary and Concluding Remarks
    10. Appendix 10: Design Specification for a Generic Inventory Management System
      1. A10.1 System Overview
        1. A10.1.1 Problem Definition
        2. A10.1.2 Proposed Solution
        3. A10.1.3 System Architecture
      2. A10.2 Database Specification
        1. A10.2.1 Introduction
        2. A10.2.2 Acquisitions Management Subsystem
        3. A10.2.3 Financial Management Subsystem
        4. A10.2.4 Systems Control Subsystem
      3. A10.3 Operations Specification
        1. A10.3.1 Generic Pseudo-codes
        2. A10.3.2 Acquisitions Management Subsystem
        3. A10.3.3 Financial Management Subsystem
        4. A10.3.4 System Controls Subsystem
      4. A10.4 User Interface Specification
      5. A10.5 Message and Help Specifications
        1. A10.5.1 Message Specification
        2. A10.5.2 Help Specification
      6. A10.6 Summary and Concluding Remarks
  17. Index