Essentials of software engineering.
Tsui, Frank F.
Karam, Orlando.
Bernal, Barbara.
Includes bibliographical references and index.
Machine generated contents note: ch. 1 Writing a Program -- 1.1.A Simple Problem -- 1.2. Decisions, Decisions -- 1.2.1. Functional Requirements -- 1.2.2. Nonfunctional Requirements -- 1.2.3. Design Constraints -- 1.2.4. Design Decisions -- 1.3. Testing -- 1.4. Estimating Effort -- 1.5. Implementations -- 1.5.1.A Few Pointers on Implementation -- 1.5.2. Basic Design -- 1.5.3. Unit Testing with JUnit -- 1.5.4. Implementation of StringSorter -- 1.5.5. User Interfaces -- 1.6. Summary -- 1.7. Review Questions -- 1.8. Exercises -- 1.9. Suggested Readings -- ch. 2 Building a System -- 2.1. Characteristics of Building a System -- 2.1.1. Size and Complexity -- 2.1.2. Technical Considerations of Development and Support -- 2.1.3. Nontechnical Considerations of Development and Support -- 2.2. Building a Hypothetical System -- 2.2.1. Requirements of the Payroll System -- 2.2.2. Designing the Payroll System -- 2.2.3. Code and Unit Testing the Payroll System -- 2.2.4. Integration and Functionally Testing the Payroll System -- 2.2.5. Release of the Payroll System -- 2.2.6. Support and Maintenance -- 2.3. Coordination Efforts -- 2.3.1. Process -- 2.3.2. Product -- 2.3.3. People -- 2.4. Summary -- 2.5. Review Questions -- 2.6. Exercises -- 2.7. Suggested Readings -- ch. 3 Engineering of Software -- 3.1. Examples and Characteristics of Software Failures -- 3.1.1. Project Failures -- 3.1.2. Software Product Failures -- 3.1.3. Coordination and Other Concerns -- 3.2. Software Engineering -- 3.2.1. What Is Software Engineering? -- 3.2.2. Definitions of Software Engineering -- 3.2.3. Relevancy of Software Engineering and Software -- 3.3. Software Engineering Profession and Ethics -- 3.3.1. Software Engineering Code of Ethics -- 3.3.2. Professional Behavior -- 3.4. Principles of Software Engineering -- 3.4.1. Davis's Early Principles of Software Engineering -- 3.4.2. Royce's More Modern Principles -- 3.4.3. Wasserman's Fundamental Software Engineering Concepts -- 3.5. Summary -- 3.6. Review Questions -- 3.7. Exercises -- 3.8. Suggested Readings -- ch. 4 Software Process Models -- 4.1. Software Processes -- 4.1.1. Goal of Software Process Models -- 4.1.2. The "Simplest" Process Model -- 4.2. Traditional Process Models -- 4.2.1. Waterfall Model -- 4.2.2. Chief Programmer Team Approach -- 4.2.3. Incremental Model -- 4.2.4. Spiral Model -- 4.3.A More Modern Process -- 4.3.1. General Foundations of Rational Unified Process Framework -- 4.3.2. The Phases of RUP -- 4.4. Entry and Exit Criteria -- 4.4.1. Entry Criteria -- 4.4.2. Exit Criteria -- 4.5. Process Assessment Models -- 4.5.1. SEI's Capability Maturity Model -- 4.5.2. SEI's Capability Maturity Model Integrated -- 4.6. Process Definition and Communication -- 4.7. Summary -- 4.8. Review Questions -- 4.9. Exercises -- 4.10. Suggested Readings -- ch. 5 New and Emerging Process Methodologies -- 5.1. What Are Agile Processes? -- 5.2. Why Agile Processes? -- 5.3. Some Process Methodologies -- 5.3.1. Extreme Programming (XP) -- 5.3.2. The Crystal Family of Methodologies -- 5.3.3. The Unified Process as Agile -- 5.3.4. Scrum -- 5.3.5. Open Source Software Development -- 5.3.6. Summary of Processes -- 5.4. Choosing a Process -- 5.4.1. Projects and Environments Better Suited for Each Kind of Process -- 5.4.2. Main Risks and Disadvantages of Agile Processes -- 5.4.3. Main Advantages of Agile Processes -- 5.5. Summary -- 5.6. Review Questions -- 5.7. Exercises -- 5.8. Suggested Readings -- ch. 6 Requirements Engineering -- 6.1. Requirements Processing -- 6.1.1. Preparing for Requirements Processing -- 6.1.2. Requirements Engineering Process -- 6.2. Requirements Elicitation and Gathering -- 6.2.1. Eliciting High-Level Requirements -- 6.2.2. Eliciting Detailed Requirements -- 6.3. Requirements Analysis -- 6.3.1. Requirements Analysis and Clustering by Business Flow -- 6.3.2. Requirements Analysis and Clustering with Object-Oriented Use Cases -- 6.3.3. Requirements Analysis and Clustering by Viewpoint-Oriented Requirements Definition -- 6.3.4. Requirements Analysis and Prioritization -- 6.3.5. Requirements Traceability -- 6.4. Requirements Definition, Prototyping, and Reviews -- 6.5. Requirements Specification and Requirements Agreement -- 6.6. Summary -- 6.7. Review Questions -- 6.8. Exercises -- 6.9. Suggested Readings -- ch. 7 Design: Architecture and Methodology -- 7.1. Introduction to Design -- 7.2. Architectural Design -- 7.2.1. What Is Software Architecture? -- 7.2.2. Views and Viewpoints -- 7.2.3. Meta-Architectural Knowledge: Styles, Patterns, Tactics, and Reference Architectures -- 7.3. Detailed Design -- 7.3.1. Functional Decomposition -- 7.3.2. Relational Database Design -- 7.3.3. Object-Oriented Design and UML -- 7.3.4. User-Interface Design -- 7.3.5. Some Further Design Concerns -- 7.4. HTML-Script-SQL Design Example -- 7.5. Summary -- 7.6. Review Questions -- 7.7. Exercises -- 7.8. Suggested Readings -- ch. 8 Design Characteristics and Metrics -- 8.1. Characterizing Design -- 8.2. Some Legacy Characterizations of Design Attributes -- 8.2.1. Halstead Complexity Metric -- 8.2.2. McCabe's Cyclomatic Complexity -- 8.2.3. Henry-Kafura Information Flow -- 8.2.4.A Higher-Level Complexity Measure -- 8.3."Good" Design Attributes -- 8.3.1. Cohesion -- 8.3.2. Coupling -- 8.4. Object-Oriented Design Metrics -- 8.4.1. Aspect-Oriented Programming -- 8.4.2. The Law of Demeter -- 8.5. User-Interface Design -- 8.5.1. Good UI Characteristics -- 8.5.2. Usability Evaluation and Testing -- 8.6. Summary -- 8.7. Review Questions -- 8.8. Exercises -- 8.9. Suggested Readings -- ch. 9 Implementation -- 9.1. Introduction to Implementation -- 9.2. Characteristics of a Good Implementation -- 9.3. Programming Style and Coding Guidelines -- 9.4.Comments -- 9.5. Debugging -- 9.6. Assertions and Defensive Programming -- 9.7. Performance Optimization -- 9.8. Refactoring -- 9.9. Summary -- 9.10. Review Questions -- 9.11. Exercises -- 9.12. Suggested Readings -- ch. 10 Testing and Quality Assurance -- 10.1. Introduction to Testing and Quality Assurance -- 10.2. Testing -- 10.2.1. The Purposes of Testing -- 10.3. Testing Techniques -- 10.3.1. Equivalence Class Partitioning -- 10.3.2. Boundary Value Analysis -- 10.3.3. Path Analysis -- 10.3.4.Combinations of Conditions -- 10.3.5. Automated Unit Testing and Test-Driven Development -- 10.3.6. An Example of Test-Driven Development -- 10.4. When to Stop Testing -- 10.5. Inspections and Reviews -- 10.6. Formal Methods -- 10.7. Static Analysis -- 10.8. Summary -- 10.9. Review Questions -- 10.10. Exercises -- 10.11. Suggested Readings -- ch. 11 Configuration Management, Integration, and Builds -- 11.1. Software Configuration Management -- 11.2. Policy, Process, and Artifacts -- 11.2.1. Business Policy Impact on Configuration Management -- 11.2.2. Process Influence on Configuration Management -- 11.3. Configuration Management Framework -- 11.3.1. Naming Model -- 11.3.2. Storage and Access Model -- 11.4. Build and Integration and Build -- 11.5. Tools for Configuration Management -- 11.6. Managing the Configuration Management Framework -- 11.7. Summary -- 11.8. Review Questions -- 11.9. Exercises -- 11.10. Suggested Readings -- ch. 12 Software Support and Maintenance -- 12.1. Customer Support -- 12.1.1. User Problem Arrival Rate -- 12.1.2. Customer Interface and Call Management -- 12.1.3. Technical Problem/Fix -- 12.1.4. Fix Delivery and Fix Installs -- 12.2. Product Maintenance Updates and Release Cycles -- 12.3. Change Control -- 12.4. Summary -- 12.5. Review Questions -- 12.6. Exercises -- 12.7. Suggested Readings -- ch. 13 Software Project Management -- 13.1. The Necessity of Project Management -- 13.2. The Project Management Process -- 13.2.1. Planning -- 13.2.2.Organizing -- 13.2.3. Monitoring -- 13.2.4. Adjusting -- 13.3. Some Project Management Techniques -- 13.3.1. Project Effort Estimation -- 13.3.2. Work Breakdown Structure -- 13.3.3. Project Status Tracking with Earned Value -- 13.3.4. Measuring Project Properties and GQM -- 13.4. Summary -- 13.5. Review Questions -- 13.6. Exercises -- 13.7. Suggested Readings -- ch. 14 Epilogue and Some Contemporary Issues -- 14.1. Security and Software Engineering -- 14.2. Reverse Engineering and Software Obfuscation -- 14.3. Software Validation and Verification Methodologies and Tools -- 14.4. 
Suggested Readings -- Appendix A Essential Software Development Plan (SDP) -- Appendix B Essential Software Requirements Specifications (SRS) -- Example 1 Essential SRS -- Descriptive -- Example 2 Essential SRS -- Object Oriented -- Example 3 Essential SRS -- IEEE Standard -- Example 4 Essential SRS -- Narrative Approach -- Appendix C Essential Software Design -- Example 1 Essential Software Design -- UML -- Example 2 Essential Software Design -- Structural -- Appendix D Essential Test Plan.
Software engineering.