

Beschreibung
An introduction to software engineering with the emphasis on a case study approach in which a project is developed through the course of the book illustrating the different activities of software development. The sequence of chapters is essentially the same a...An introduction to software engineering with the emphasis on a case study approach in which a project is developed through the course of the book illustrating the different activities of software development. The sequence of chapters is essentially the same as the sequence of activities performed during a typical software project. Similarly, the author carefully introduces appropriate metrics for controlling and assessing the software process. Intended for students who have had no previous training in software engineering, this book is suitable for a one semester course.
Inhalt
1 Introduction.- 1.1 The Software Problem.- 1.1.1 Software Is Expensive.- 1.1.2 Late, Costly, and Unreliable.- 1.1.3 Problem of Change and Rework.- 1.2 Software Engineering Problem.- 1.2.1 The Problem of Scale.- 1.2.2 Cost, Schedule, and Quality.- 1.2.3 The Problem of Consistency.- 1.3 The Software Engineering Approach.- 1.3.1 Phased Development Process.- 1.3.2 Project Management and Metrics.- 1.4 Summary.- 1.5 Overview of the Book.- Exercises.- 2 Software Processes.- 2.1 Software Process.- 2.1.1 Processes, Projects, and Products.- 2.1.2 Component Software Processes.- 2.2 Characteristics of a Software Process.- 2.2.1 Predictability.- 2.2.2 Support Testability and Maintainability.- 2.2.3 Early Defect Removal and Defect Prevention.- 2.2.4 Process Improvement.- 2.3 Software Development Process.- 2.3.1 A Process Step Specification.- 2.3.2 Waterfall Model.- 2.3.3 Prototyping.- 2.3.4 Iterative Enhancement.- 2.3.5 The Spiral Model.- 2.4 Project Management Process.- 2.4.1 Phases of Management Process.- 2.4.2 Metrics, Measurement, and Models.- 2.5 Software Configuration Management Process.- 2.5.1 Configuration Identification.- 2.5.2 Change Control.- 2.5.3 Status Accounting and Auditing.- 2.6 Process Management Process.- 2.6.1 Building Estimation Models.- 2.6.2 Process Improvement and Maturity.- 2.7 Summary.- Exercises.- 3 Software Requirements Analysis and Specification.- 3.1 Software Requirements.- 3.1.1 Need for SRS.- 3.1.2 Requirement Process.- 3.2 Problem Analysis.- 3.2.1 Analysis Issues.- 3.2.2 Informal Approach.- 3.2.3 Structured Analysis.- 3.2.4 Object-Oriented Modeling.- 3.2.5 Other Modeling Approaches.- 3.2.6 Prototyping.- 3.3 Requirements Specification.- 3.3.1 Characteristics of an SRS.- 3.3.2 Components of an SRS.- 3.3.3 Specification Languages.- 3.3.4 Structure of a Requirements Document.- 3.4 Validation.- 3.4.1 Requirement Reviews.- 3.4.2 Other Methods.- 3.5 Metrics.- 3.5.1 Size Measures.- 3.5.2 Quality Metrics.- 3.6 Summary.- Exercises.- Case Study.- 4 Planning a Software Project.- 4.1 Cost Estimation.- 4.1.1 Uncertainties in Cost Estimation.- 4.1.2 Building Cost Estimation Models.- 4.1.3 On Size Estimation.- 4.1.4 COCOMO Model.- 4.1.5 An Example.- 4.2 Project Scheduling.- 4.2.1 Average Duration Estimation.- 4.2.2 Project Scheduling and Milestones.- 4.2.3 Example Continued.- 4.3 Staffing and Personnel Planning.- 4.3.1 Rayleigh Curve.- 4.3.2 Personnel Plan.- 4.3.3 Example Continued.- 4.3.4 Team Structure.- 4.4 Software Configuration Management Plans.- 4.5 Quality Assurance Plans.- 4.5.1 Verification and Validation (V&V).- 4.5.2 Inspections and Reviews.- 4.6 Project Monitoring Plans.- 4.6.1 Time Sheets.- 4.6.2 Reviews.- 4.6.3 Cost-Schedule-Milestone Graph.- 4.6.4 Earned Value Method.- 4.6.5 Unit Development Folder.- 4.7 Risk Management.- 4.7.1 Risk Management Overview.- 4.7.2 Risk Assessment.- 4.7.3 Risk Control.- 4.8 Summary.- Exercises.- Case Study Plan.- 5 Function-Oriented Design.- 5.1 Design Principles.- 5.1.1 Problem Partitioning and Hierarchy.- 5.1.2 Abstraction.- 5.1.3 Modularity.- 5.1.4 Top-Down and Bottom-Up Strategies.- 5.2 Module-Level Concepts.- 5.2.1 Coupling.- 5.2.2 Cohesion.- 5.3 Design Notation and Specification.- 5.3.1 Structure Charts.- 5.3.2 Specification.- 5.4 Structured Design Methodology.- 5.4.1 Restate the Problem as a Data Flow Diagram.- 5.4.2 Identify the Most Abstract Input and Output Data Elements.- 5.4.3 First-Level Factoring.- 5.4.4 Factoring the Input, Output, and Transform Branches..- 5.4.5 Design Heuristics.- 5.4.6 Transaction Analysis.- 5.4.7 Discussion.- 5.5 Verification.- 5.5.1 Design Reviews.- 5.5.2 Automated Cross-Checking.- 5.6 Metrics.- 5.6.1 Network Metrics.- 5.6.2 Stability Metrics.- 5.6.3 Information Flow Metrics.- 5.7 Summary.- Exercises.- Case Study.- 6 Object-Oriented Design.- 6.1 OO Analysis and OO Design.- 6.2 Concepts.- 6.2.1 Classes and Objects.- 6.2.2 Relationships Among Objects.- 6.2.3 Inheritance and Polymorphism.- 6.2.4 Design Concepts.- 6.3 Design Notation and Specification.- 6.4 Design Methodology.- 6.4.1 Dynamic Modeling.- 6.4.2 Functional Modeling.- 6.4.3 Defining Internal Classes and Operations.- 6.4.4 Optimize and Package.- 6.4.5 Examples.- 6.5 Metrics.- 6.6 Summary.- Exercises.- Case Study.- 7 Detailed Design.- 7.1 Module Specifications.- 7.1.1 Specifying Functional Modules.- 7.1.2 Specifying Classes.- 7.2 Detailed Design.- 7.2.1 PDL.- 7.2.2 Logic/Algorithm Design.- 7.2.3 State Modeling of Classes.- 7.3 Verification.- 7.3.1 Design Walkthroughs.- 7.3.2 Critical Design Review.- 7.3.3 Consistency Checkers.- 7.4 Metrics.- 7.4.1 Cyclomatic Complexity.- 7.4.2 Data Bindings.- 7.4.3 Cohesion Metric.- 7.5 Summary.- Exercises.- 8 Coding.- 8.1 Programming Practice.- 8.1.1 Top-Down and Bottom-Up.- 8.1.2 Structured Programming.- 8.1.3 Information Hiding.- 8.1.4 Programming Style.- 8.1.5 Internal Documentation.- 8.1.6 Law of Demeter for OO Programs.- 8.2 Verification.- 8.2.1 Code Reading.- 8.2.2 Static Analysis.- 8.2.3 Symbolic Execution.- 8.2.4 Proving Correctness.- 8.2.5 Code Inspections or Reviews.- 8.2.6 Unit Testing.- 8.3 Metrics.- 8.3.1 Size Measures.- 8.3.2 Complexity Metrics.- 8.3.3 Style Metrics.- 8.4 Summary.- Exercises.- Case Study.- 9 Testing.- 9.1 Testing Fundamentals.- 9.1.1 Error, Fault, and Failure.- 9.1.2 Test Oracles.- 9.1.3 Top-Down and Bottom-Up Approaches.- 9.1.4 Test Cases and Test Criteria.- 9.1.5 Psychology of Testing.- 9.2 Functional Testing.- 9.2.1 Equivalence Class Partitioning.- 9.2.2 Boundary Value Analysis.- 9.2.3 Cause-Effect Graphing.- 9.2.4 Special Cases.- 9.3 Structural Testing.- 9.3.1 Control Flow-Based Criteria.- 9.3.2 Data Flow-Based Testing.- 9.3.3 An Example.- 9.3.4 Mutation Testing.- 9.3.5 Test Case Generation and Tool Support.- 9.4 Testing Object-Oriented Programs.- 9.4.1 Issues in Testing Classes.- 9.4.2 State-Based Testing.- 9.4.3 Incremental Testing for Subclasses.- 9.5 Testing Process.- 9.5.1 Comparison of Different Techniques.- 9.5.2 Levels of Testing.- 9.5.3 Test Plan.- 9.5.4 Test Case Specifications.- 9.5.5 Test Case Execution and Analysis.- 9.6 Metrics-Reliability Estimation.- 9.6.1 Basic Concepts and Definitions.- 9.6.2 Musa's Basic Model.- 9.6.3 Failure Data and Parameter Estimation.- 9.6.4 Translating to Calendar Time.- 9.6.5 An Example.- 9.7 Summary.- Exercises.- Case Study.- References.
