Cover image for Software engineering : modern approaches
Title:
Software engineering : modern approaches
Personal Author:
Edition:
2nd ed.
Publication Information:
Hoboken, NJ : J. Wiley & Sons, c2011
Physical Description:
xvi, 782 p. : ill. ; 26 cm.
ISBN:
9780471692089
Added Author:

Available:*

Library
Item Barcode
Call Number
Material Type
Item Category 1
Status
Searching...
30000010251045 QA76.758 B744 2011 Open Access Book Book
Searching...

On Order

Summary

Summary

Presenting the most comprehensive and practical introduction to the principles of software engineering and how to apply them, this updated edition follows an object-oriented perspective Includes new and expanded material on agile and emerging methods, metrics, quality assurance security, real-world case studies, refactoring, test-driving development, and testing Case studies help readers learn the importance of quality factors, appropriate design, and project management techniques


Table of Contents

Preface
The Issue of Scale
This Edition Compared with the First
How Instructors Can Use This Book
Acknowledgments
Part I Introduction To Software Engineering
Chapter 1 The Goals and Terminology of Software Engineering
What is Software Engineering
Why Software Engineering Is Critical: Software Disasters
Why Software Fails and Succeeds
Software Engineering Activities
Software Engineering Principles
Ethics in Software Engineering
Case Studies
Summary
Exercises
Bibliography
Chapter 2 Introduction to Quality and Metrics in Software Engineering
2.1 The Meaning of Software Quality
2.2 Defects in Software
2.3 Verification and Validation
2.4 Planning for Quality
2.5 Metrics
2.6 Summary
2.7 Exercises
Bibliography
Part II Software Process
Chapter 3 Software Process
3.1 The Activities of Software Process
3.2 Software Process Models
3.3 Case Study: Student Team Guidance
3.4 Summary
3.5 Exercises
Bibliography
Chapter 4 Agile Software Processes
4.1 Agile History and Agile Manifesto
4.2 Agile Principles
4.3 Agile Methods
4.4 Agile Processes
4.5 Integrating Agile with Non-Agile Processes
4.6 Summary
4.7 Exercises
Bibliography
Chapter 5 Quality in the Software Process
5.1 Principles of Managing Quality
5.2 Managing Quality in Agile Processes
5.3 Quality Planning
5.4 Inspections
5.5 QA Reviews and Audits
5.6 Defect Management
5.7 Process Improvement and Process Metrics
5.8 Organization-Level Quality and the CMMI
5.9 Case Study
5.10 Summary
5.11 Exercises
Bibliography
Chapter 6 Software Configuration Management
6.1 Software Configuration Management Goals
6.2 SCM Activities
6.3 Configuration Management Plans
6.4 Configuration Management Systems
6.5 Case Study: Encounter Video Game
6.6 Case Study: Eclipse
6.7 Student Team Guidance: Configuration Management
6.8 Summary
6.9 Exercises
Bibliography
Part III Project Management
Chapter 7 Principles of Software Project Management I: Organization, Tools, and Risk Management
7.1 Software Project Organization
7.2 Team Size
7.3 Geographically Distributed Development
7.4 The Team Software Process
7.5 Software Project Tools and Techniques
7.6 Risk Management
7.7 Student Team Guidance: Organizing the Software Projec's Management
7.8 Summary
7.9 Exercises
Bibliography
Chapter 8 Principles of Software Project Management II: Estimation, Scheduling, and Planning
8.1 Cost Estimation
8.2 Scheduling
8.3 The Software Project Management Plan
8.4 Case Study: Encounter Project Management Plan
8.5 Case Study: Project Management in Eclipse
8.6 Case Study: Project Management for OpenOffice
8.7 Case Study: Student Team Guidance
8.8 Summary
8.9 Exercises
Bibliography
Chapter 9 Quality and Metrics in Project Management
9.1 Cultivating and Planning Internal Quality
9.2 Project Metrics
9.3 Using Metrics for Improvement
9.4 Software Verification and Validation Plan
9.5 Case Study: Software Verification and Validation Plan for Encounter
9.6 Summary
9.7 Exercises
Bibliography
Part IV Requirements Analysis
Chapter 10 Principles of Requirements Analysis
10.1 The Value of Requirements Analysis
10.2 Sources of Requirements
10.3 High-level vs. Detailed
Requirements
10.4 Types of Requirements
10.5 Nonfunctional Requirements
10.6 Documenting Requirements
10.7 Traceability
10.8 Agile Methods and Requirements
10.9 Updating the Project to Reflect Requirements Analysis
10.10 Summary
10.11 Exercises
Bibliography
Chapter 11 Analyzing High-Level Requirements
11.1 Examples of Customer Wants
11.2 Stakeholder Vision
11.3 The Interview and Documentation Process
11.4 Writing an Overview
11.5 Describing Main Functions and Used Cases
11.6 Agile Methods for High-Level Requirements
11.7 Specifying User Interfaces: High Level
11.8 Security Requirements
11.9 Using Diagrams for High-Level Requirements
11.10 Case Study: High-Level Software Requirements Specifications (SRS) for the Encounter Video Game
11.11 Case Study: High-Level Requirements for Eclipse
11.12 Case Study: High-Level Requirements for OpenOffice
11.13 Summary
11.14 Exercises
Bibliography
Chapter 12 Analyzing Detailed Requirements
12.1 The Meaning of Detailed Requirements
12.2 Organizing Detailed Requirements
12.3 User Interfaces: Detailed Requirements
12.4 Detailed Security Requirements
12.5 Error Conditions
12.6 Traceability of Detailed Requirements
12.7 Using Detailed Requirements to Manage Projects
12.8 Prioritizing Requirements
12.9 Associating Requirements with Tests
12.10 Agile Methods for Detailed Requirements
12.11 Using Tools and the Web for Requirements Analysis
12.12 The Effects on Projects of the Detailed Requirements Process
12.13 Student Project Guide: Requirements for the Encounter Case Study
12.14 Case Study: Detailed Requirements for the Encounter Video Game
12.15 Summary
12.16 Exercises
Bibliography
Chapter 13 Quality and Metrics in Requirements Analysis
13.1 Quality of Requirements for Agile Projects
13.2 Accessibility of Requirements
13.3 Comprehensiveness of Requirements
13.4 Understandability of Requirements
13.5 Un-ambiguity of Requirements
13.6 Consistency of Requirements
13.7 Prioritization of Requirements
13.8 Security and High-Level Requirements
13.9 Self-Completeness of Requirements
13.10 Testability of Requirements
13.11 Traceability of Requirements
13.12 Metrics for Requirements Analysis
13.13 Inspecting Detailed Requirements
13.14 Summary
13.15 Exercises
Chapter 14 Online Chapter - Formal and Emerging Methods in Requirements Analysis as follows: An Introduction
14.1 Provable Requirements Method
14.2 Introduction to Formal Methods
14.3 Mathematical Preliminaries
14.4 The Z-Specification Language
14.5 The B Language System
14.6 Trade-offs for Using a B-like system
14.7 Summary
14.8 Exercises
Bibliography
Part V Software Design
Chapter 15 Principles of Software Design
15.1 The Goals of Software Design
15.2 Integrating Design Models
15.3 Frameworks
15.4 IEEE Standards for Expressing Designs
15.6 Summary
15.7 Exercises
Chapter 16 The Unified Modeling Language
16.1 Classes in UML
16.2 Class Relationships in UML
16.3 Multiplicity
16.4 Inheritance
16.5 Sequence Diagrams
16.6 State Diagrams
16.7 Activity Diagrams
16.8 Data Flow Models
16.9 A Design Example with UML
16.10 Summary
16.11 Exercises
Bibliography
Chapter 17 Software Design Patterns
17.1 Examples of a Recurring Design Purpose
17.2 An Introduction to Design Patterns
17.3 Summary of Design Patterns by Type: Creational, Structural, and Behavioral
17.4 Characteristics of Design Patterns: Viewpoints, Roles, and Levels
17.5 Selected Creational Design Patterns
17.6 Selected Structural Design Patterns
17.7 Selected Behavioral Design Patterns
17.8 Design Pattern Forms: Delegation and Recursion
17.9 Summary
17.10 Exercises
Bibliography
Chapter 18 Software Architecture
18.1 A Categorization of Architectures
18.2 Software Architecture Alternatives and Their Class Models
18.3 Trading Off Architecture Alternatives
18.4 Tools for Architectures
18.5 IEEE Standards for Expressing Designs
18.6 Effects of Architecture Selection on the Project Plan
18.7 Case Study: Preparing to Design Encounter (Student Project Guide continued)
18.8 Case Study: Software Design Document for the Role-Playing Video Game Framework
18.9 Case Study: Software Design Document for Encounter (Uses the Framework)
18.10 Case Study: Architecture of Eclipse
18.11 Case Study: OpenOffice Architecture
18.12 Summary
18.13 Exercises
Bibliography
Chapter 19 Detailed Design
19.1 Relating Use Cases, Architecture, and Detailed Design
19.2 A Typical Road Map for the Detailed Design Process
19.3 Object-Oriented Design Principles
19.4 Designing against Interfaces
19.5 Specifying Classes, Functions, and Algorithms
19.6 Reusing Components
19.7 Sequence and Data Flow Diagrams for Detailed Design
19.8 Detailed Design and Agile Processes
19.9 Design in the Unified Development Process
19.10 IEEE Standard 890 for Detailed Design
19.11 Updating a Project with Detailed Design
19.12 Case Study: Detailed Design of Encounter
19.13 Case Study: Detailed Design of Eclipse
19.14 Summary
19.15 Exercises
Bibliography
Chapter 20 Design Quality and Metrics
20.1 Degree of Understandability, Cohesion, and Coupling
20.2 Degree of Sufficiency as a Quality Goal
20.3 Degree of Robustness as a Quality Goal
20.4 Degree of Flexibility as a Design Quality Goal
20.5 Degree of Reusability as a Design Quality Goal
20.6 Degree of Time Efficiency as a Design Quality Measure
20.7 Degree of Space Efficiency as a Design Quality Measure
20.8 Degree of Reliability as a Design Quality Measure
20.9 Degree of Security as a Design Quality Measure
20.10 Assessing Quality in Architecture Selection
20.11 Assessing the Quality of Detailed Designs
20.12 Summary
20.13 Exercises
Bibliography
Chapter 21 Online Chapter - Advanced and Emerging Methods in Software Design
21.1 Designing in a Distributed Environment
21.2 Introduction to Aspect-Oriented Programming
21.3 Designing for Security with UMLsec
21.4 Model-Driven Architectures
21.5 The Formal Design Process in B
21.6 Summary
21.7 Exercises
Bibliography
Part VI Implementation
Chapter 22 Principles of Implementation
22.1 Agile and Non-Agile Approaches to Implementation
22.2 Choosing a Programming Language
22.3 Identifying Classes
22.4 Defining Methods
22.5 Implementation Practices
22.6 Defensive Programming
22.7 Coding Standards
22.8 Comments
22.9 Tools and Environments for Programming
22.10 Case Study: Encounter Implementation
22.11 Case Study: Eclipse
22.12 Case Study: OpenOffice
22.13 Student Team Guidance for Implementation
22.14 Summary
22.15 Code Listings Referred to in This Chapter
22.16 Exercises
Bibliography
Chapter 23 Quality and Metrics in Implementation
23.1 Quality of Implementation
23.2 Code Inspections
23.3 Summary
23.4 Exercises
Chapter 24 Refactoring
24.1 Big Refactorings
24.2 Composing Methods
24.3 Moving Features between Objects
24.4 Organizing Data
24.5 Generalization
24.6 Introducing Modules
24.7 Refactoring in Projects
24.8 Summary
24.9 Exercises
Bibliography
Part VII Testing And Maintenance
Chapter 25 Introduction to Software Testing
25.1 Testing Early and Often and the Agile Connection
25.2 Retesting: Regression Testing
25.3 Black Box and White Box Testing
25.4 Unit Testing vs. Post-Unit Testing
25.5 Testing Object-Oriented Implementations
25.6 Documenting Tests
25.7 Test Planning
25.8 Testing Test Suites by Fault Injection
25.9 Summary
25.10 Exercises
Chapter 26 Unit Testing
26.1 The Sources of Units for Unit Testing
26.2 Unit Test Methods
26.3 Testing Methods
26.4 Test-Driven Development
26.5 Case Study: Encounter Video Game
26.6 Summary
26.7 Exercises
Bibliography
Chapter 27 Module and Integration Testing
27.1 Stubs and Drivers
27.2 Testing a Class
27.3 Integration
27.4 Daily Builds
27.5 Interface Testing
27.6 Module Integration
27.7 Case Study: Class Test for Encounter
27.8 Case Study: Encounter Integration Plan
27.9 Summary
27.10 Exercises
Bibliography
Chapter 28 Testing at the System Level
28.1 Functional Testing
28.2 Nonfunctional Testing
28.3 Testing with Lightweight Requirements
28.4 Testing Shortly Before Release
28.5 Case Study: Encounter Software Test Documentation
28.6 Case Study: Eclipse
28.7 Case Study: OpenOffice
28.8 Summary
28.9 Exercises
Bibliography
Chapter 29 Software Maintenance
29.1 Types of Software Maintenance
29.2 Issues of Software Maintenance
29.3 Maintenance Process
29.4 IEEE Maintenance Standards
29.5 Software Evolution
29.6 Maintenance Metrics
29.7 Case Studies
29.8 Summary
29.9 Exercises
Bibliography
Glossary
Index