Software Engineering

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Pirated off of University book website. Best copy I could get is this. It has everything but the stylesheet. The site had security measures, so a special program was used to extract it. Thank you! Couldn't find this book anywhere. Neither could my friend.

Author(s): Ian Sommerville
Edition: 10
Publisher: Pearson Higher Education
Year: 2016

Language: English
Pages: 816
City: Hoboken NJ

Software Engineering
Preface
Changes from the 9th edition
Readership
Using the book in software engineering courses
Book website
Contact details
Acknowledgements
Contents at a glance
Contents
PART 1 Introduction to Software Engineering
1 Introduction
Objectives
Contents
History of software engineering
1.1 Professional software development
Figure 1.1
Figure 1.2
1.1.1 Software engineering
1.1.2 Software engineering diversity
1.1.3 Internet software engineering
1.2 Software engineering ethics
Figure 1.3
1.3 Case studies
1.3.1 An insulin pump control system
Figure 1.4
Figure 1.5
1.3.2 A patient information system for mental health care
Figure 1.6
1.3.3 A wilderness weather station
Figure 1.7
1.3.4 A digital learning environment for schools
Figure 1.8
Key Points
Further Reading
Website
Exercises
References
2 Software processes
Objectives
Contents
2.1 Software process models
The Rational Unified Process
2.1.1 The waterfall model
Figure 2.1
Boehm’s spiral process model
2.1.2 Incremental development
Figure 2.2
Problems with incremental development
2.1.3 Integration and configuration
Figure 2.3
Software development tools
2.2 Process activities
2.2.1 Software specification
Figure 2.4
2.2.2 Software design and implementation
Figure 2.5
2.2.3 Software validation
Figure 2.6
Figure 2.7
2.2.4 Software evolution
Figure 2.8
2.3 Coping with change
2.3.1 Prototyping
Figure 2.9
2.3.2 Incremental delivery
Figure 2.10
2.4 Process improvement
Figure 2.11
Figure 2.12
Key points
Further Reading
Website
Exercises
References
3 Agile software development
Objectives
Contents
Figure 3.1
3.1 Agile methods
Figure 3.2
3.2 Agile development techniques
Figure 3.3
Figure 3.4
3.2.1 User stories
Figure 3.5
Figure 3.6
3.2.2 Refactoring
3.2.3 Test-first development
Figure 3.7
3.2.4 Pair programming
3.3 Agile project management
Figure 3.8
Figure 3.9
Figure 3.10
3.4 Scaling agile methods
3.4.1 Practical problems with agile methods
3.4.2 Agile and plan-driven methods
Figure 3.11
Figure 3.12
3.4.3 Agile methods for large systems
Figure 3.13
Figure 3.14
3.4.4 Agile methods across organizations
Key Points
Further Reading
Website
Exercises
References
4 Requirements engineering
Objectives
Contents
Figure 4.1
Figure 4.2
Feasibility studies
4.1 Functional and non-functional requirements
4.1.1 Functional requirements
Domain requirements
4.1.2 Non-functional requirements
Figure 4.3
Figure 4.4
Figure 4.5
4.2 Requirements engineering processes
Figure 4.6
4.3 Requirements elicitation
Figure 4.7
Viewpoints
4.3.1 Requirements elicitation techniques
4.3.1.1 Interviewing
4.3.1.2 Ethnography
Figure 4.8
4.3.2 Stories and scenarios
Figure 4.9
Figure 4.10
4.4 Requirements specification
Figure 4.11
4.4.1 Natural language specification
Figure 4.12
4.4.2 Structured specifications
Problems with using natural language for requirements specification
Figure 4.13
Figure 4.14
4.4.3 Use cases
Figure 4.15
4.4.4 The software requirements document
Figure 4.16
Figure 4.17
Requirements document standards
4.5 Requirements validation
Requirements reviews
4.6 Requirements change
Figure 4.18
Enduring and volatile requirements
4.6.1 Requirements management planning
Figure 4.19
4.6.2 Requirements change management
Requirements traceability
Key Points
Further Reading
Website
Exercises
References
5 System modeling
Objectives
Contents
The Unified Modeling Language
5.1 Context models
Figure 5.1
Figure 5.2
5.2 Interaction models
5.2.1 Use case modeling
Figure 5.3
Figure 5.4
Figure 5.5
5.2.2 Sequence diagrams
Figure 5.6
Figure 5.7
5.3 Structural models
5.3.1 Class diagrams
Figure 5.8
Figure 5.9
Figure 5.10
5.3.2 Generalization
Figure 5.11
Figure 5.12
5.3.3 Aggregation
Figure 5.13
Data flow diagrams
5.4 Behavioral models
5.4.1 Data-driven modeling
Figure 5.14
Figure 5.15
5.4.2 Event-driven modeling
Figure 5.16
Figure 5.17
Figure 5.18
5.4.3 Model-driven engineering
5.5 Model-driven architecture
Figure 5.19
Figure 5.20
Executable UML
Key Points
Further Reading
Website
Exercises
References
6 Architectural design
Objectives
Contents
Figure 6.1
6.1 Architectural design decisions
Figure 6.2
Figure 6.3
6.2 Architectural views
6.3 Architectural patterns
Figure 6.4
Figure 6.5
Figure 6.6
6.3.1 Layered architecture
Figure 6.7
Figure 6.8
Figure 6.9
6.3.2 Repository architecture
Figure 6.10
Figure 6.11
6.3.3 Client–server architecture
Figure 6.12
Figure 6.13
6.3.4 Pipe and filter architecture
Figure 6.14
Figure 6.15
Architectural patterns for control
6.4 Application architectures
Application architectures
6.4.1 Transaction processing systems
Figure 6.16
Figure 6.17
6.4.2 Information systems
Figure 6.18
Figure 6.19
6.4.3 Language processing systems
Figure 6.20
Figure 6.21
Reference architectures
Figure 6.22
Key Points
Further Reading
Website
Exercises
References
7 Design and implementation
Objectives
Contents
7.1 Object-oriented design using the UML
7.1.1 System context and interactions
Figure 7.1
Weather station use cases
Figure 7.2
Figure 7.3
7.1.2 Architectural design
Figure 7.4
Figure 7.5
7.1.3 Object class identification
Figure 7.6
7.1.4 Design models
Figure 7.7
Figure 7.8
7.1.5 Interface specification
Figure 7.9
7.2 Design patterns
Figure 7.10
Figure 7.12
Figure 7.11
7.3 Implementation issues
7.3.1 Reuse
Figure 7.13
7.3.2 Configuration management
Figure 7.14
7.3.3 Host-target development
Figure 7.15
UML deployment diagrams
7.4 Open-source development
7.4.1 Open-source licensing
Key Points
Further Reading
Website
Exercises
References
8 Software testing
Objectives
Contents
Figure 8.1
Figure 8.2
Figure 8.3
Test planning
8.1 Development testing
Debugging
8.1.1 Unit testing
Figure 8.4
8.1.2 Choosing unit test cases
Figure 8.5
Figure 8.6
Path testing
8.1.3 Component testing
Figure 8.7
8.1.4 System testing
Figure 8.8
Incremental integration and testing
8.2 Test-driven development
Figure 8.9
8.3 Release testing
8.3.1 Requirements-based testing
8.3.2 Scenario testing
Figure 8.10
8.3.3 Performance testing
8.4 User testing
Figure 8.11
Key Points
Further Reading
Website
Exercises
References
9 Software evolution
Objectives
Contents
Figure 9.1
Figure 9.2
9.1 Evolution processes
Figure 9.3
Figure 9.4
Figure 9.5
Figure 9.6
9.2 Legacy systems
Figure 9.7
Figure 9.8
9.2.1 Legacy system management
Figure 9.9
Figure 9.10
Figure 9.11
9.3 Software maintenance
Program evolution dynamics
Figure 9.12
Documentation
9.3.1 Maintenance prediction
Figure 9.13
9.3.2 Software reengineering
Figure 9.14
Figure 9.15
9.3.3 Refactoring
Key Points
Further Reading
Website
Exercises
References
PART 2 Dependability and Security
10 Dependable systems
Objectives
Contents
Critical systems
10.1 Dependability properties
Figure 10.1
Figure 10.2
10.2 Sociotechnical systems
Figure 10.3
10.2.1 Regulation and compliance
10.3 Redundancy and diversity
The Ariane 5 explosion
Dependable operational processes
10.4 Dependable processes
Figure 10.4
10.5 Formal methods and dependability
Formal specification techniques
Key Points
Further Reading
Website
Exercises
References
11 Reliability engineering
Objectives
Contents
Figure 11.1
11.1 Availability and reliability
Figure 11.2
Figure 11.3
11.2 Reliability requirements
11.2.1 Reliability metrics
Figure 11.4
11.2.2 Non-functional reliability requirements
Overspecification of reliability
11.2.3 Functional reliability specification
Figure 11.5
11.3 Fault-tolerant architectures
11.3.1 Protection systems
Figure 11.6
11.3.2 Self-monitoring architectures
Figure 11.7
Figure 11.8
11.3.3 N-version programming
Figure 11.9
Figure 11.10
11.3.4 Software diversity
11.4 Programming for reliability
Figure 11.11
Guideline 1: Control the visibility of information in a program
Guideline 2: Check all inputs for validity
Guideline 3: Provide a handler for all exceptions
Figure 11.12
Guideline 4: Minimize the use of error-prone constructs
Error-prone constructs
Guideline 5: Provide restart capabilities
Guideline 6: Check array bounds
Guideline 7: Include timeouts when calling external components
Guideline 8: Name all constants that represent real-world values
11.5 Reliability measurement
Figure 11.13
Reliability growth modeling
11.5.1 Operational profiles
Figure 11.14
Key Points
Further Reading
Website
Exercises
References
12 Safety engineering
Objectives
Contents
12.1 Safety-critical systems
Figure 12.1
Risk-based requirements specification
12.2 Safety requirements
Figure 12.2
12.2.1 Hazard identification
12.2.2 Hazard assessment
Figure 12.3
Figure 12.4
12.2.3 Hazard analysis
Figure 12.5
12.2.4 Risk reduction
Figure 12.6
12.3 Safety engineering processes
12.3.1 Safety assurance processes
Figure 12.7
Licensing of software engineers
12.3.2 Formal verification
12.3.3 Model checking
Figure 12.8
12.3.4 Static program analysis
Figure 12.9
12.4 Safety cases
Figure 12.10
12.4.1 Structured arguments
Figure 12.11
Figure 12.12
12.4.2 Software safety arguments
Figure 12.13
Figure 12.14
Key Points
Further Reading
Website
Exercises
Figure 12.15
References
13 Security engineering
Objectives
Contents
Figure 13.1
13.1 Security and dependability
Figure 13.2
Figure 13.3
Figure 13.4
13.2 Security and organizations
13.2.1 Security risk assessment
13.3 Security requirements
Figure 13.5
Figure 13.6
Figure 13.7
13.3.1 Misuse cases
Figure 13.8
Figure 13.9
13.4 Secure systems design
Denial-of-service attacks
13.4.1 Design risk assessment
Figure 13.10
Figure 13.11
Figure 13.12
13.4.2 Architectural design
Figure 13.13
Figure 13.14
13.4.3 Design guidelines
Figure 13.15
Guideline 1: Base security decisions on an explicit security policy
Guideline 2: Use defense in depth
Guideline 3: Fail securely
Guideline 4: Balance security and usability
Guideline 5: Log user actions
Guideline 6: Use redundancy and diversity to reduce risk
Guideline 7: Specify the format of system inputs
Guideline 8: Compartmentalize your assets
Guideline 9: Design for deployment
Guideline 10: Design for recovery
13.4.4 Secure systems programming
Figure 13.16
13.5 Security testing and assurance
Figure 13.17
Key Points
Further Reading
Website
Exercises
References
14 Resilience engineering
Objectives
Contents
Figure 14.3
Figure 14.1
Figure 14.2
14.1 Cybersecurity
14.2 Sociotechnical resilience
Figure 14.4
14.2.1 Human error
Figure 14.5
Figure 14.6
14.2.2 Operational and management processes
Figure 14.7
14.3 Resilient systems design
Figure 14.9
Figure 14.10
Figure 14.11
Figure 14.12
Key Points
Further Reading
Website
Exercises
References
PART 3 Advanced Software Engineering
15 Software reuse
Objectives
Contents
Figure 15.1
Figure 15.2
15.1 The reuse landscape
Figure 15.3
Figure 15.4
Generator-based reuse
15.2 Application frameworks
Figure 15.5
Figure 15.6
15.3 Software product lines
Figure 15.7
Figure 15.8
Figure 15.9
Figure 15.10
Figure 15.11
15.4 Application system reuse
Figure 15.12
15.4.1 Configurable application systems
Figure 15.13
15.4.2 Integrated application systems
Figure 15.14
Figure 15.15
Key Points
Further Reading
Website
Exercises
References
16 Component-based software engineering
Objectives
Contents
Problems with CBSE
16.1 Components and component models
Figure 16.1
Figure 16.2
Figure 16.3
Figure 16.12
Components and objects
16.1.1 Component models
Figure 16.4
Figure 16.5
16.2 CBSE processes
Figure 16.6
16.2.1 CBSE for reuse
16.2.2 CBSE with reuse
Figure 16.7
Figure 16.8
Figure 16.9
16.3 Component composition
Figure 16.10
Figure 16.11
Figure 16.13
Figure 16.14
Figure 16.15
Key Points
Further Reading
Website
Exercises
References
17 Distributed software engineering
Objectives
Contents
17.1 Distributed systems
CORBA—Common Object Request Broker Architecture
17.1.1 Models of interaction
Figure 17.1
Figure 17.2
17.1.2 Middleware
Figure 17.3
17.2 Client–server computing
Figure 17.4
Figure 17.5
Figure 17.6
17.3 Architectural patterns for distributed systems
17.3.1 Leader‒follower architectures
Figure 17.7
17.3.2 Two-tier client–server architectures
Figure 17.8
Figure 17.9
17.3.3 Multi-tier client–server architectures
Figure 17.10
Figure 17.11
17.3.4 Distributed component architectures
Figure 17.12
Figure 17.13
17.3.5 Peer-to-peer architectures
Figure 17.14
Figure 17.15
17.4 Software as a service
Figure 17.16
Figure 17.17
Key Points
Further Reading
Website
Exercises
References
18 Service-oriented software engineering
Objectives
Contents
Figure 18.1
18.1 Service-oriented architecture
Figure 18.2
Figure 18.3
18.1.1 Service components in an SOA
Figure 18.4
Figure 18.5
18.2 RESTful services
Figure 18.6
Figure 18.7
18.3 Service engineering
Figure 18.8
18.3.1 Service candidate identification
Figure 18.9
18.3.2 Service interface design
Figure 18.10
Figure 18.11
Figure 18.12
Legacy system services
18.3.3 Service implementation and deployment
18.4 Service composition
Figure 18.13
Figure 18.14
18.4.1 Workflow design and implementation
Figure 18.15
Figure 18.16
18.4.2 Testing service compositions
Key Points
Further Reading
Website
Exercises
References
19 Systems engineering
Objectives
Contents
Figure 19.1
Figure 19.2
19.1 Sociotechnical systems
Figure 19.3
Figure 19.4
19.1.1 Emergent properties
Figure 19.5
Figure 19.6
19.1.2 Non-determinism
19.1.3 Success criteria
19.2 Conceptual design
Figure 19.7
Figure 19.8
19.3 System procurement
Figure 19.9
19.4 System development
Figure 19.10
Figure 19.11
19.5 System operation and evolution
19.5.1 System evolution
Figure 19.12
Key Points
Further Reading
Website
Exercises
References
20 Systems of systems
Objectives
Contents
20.1 System complexity
Figure 20.1
Figure 20.2
Figure 20.3
20.2 Systems of systems classification
Figure 20.4
20.3 Reductionism and complex systems
Figure 20.5
20.4 Systems of systems engineering
Figure 20.6
20.4.1 Interface development
Figure 20.7
20.4.2 Integration and deployment
Figure 20.8
20.5 Systems of systems architecture
Figure 20.9
20.5.1 Architectural patterns for systems of systems
Systems as data-feeds
Figure 20.10
Figure 20.11
Systems in a container
Figure 20.12
Figure 20.13
Trading systems
Figure 20.14
Key Points
Further Reading
Website
Exercises
References
21 Real-time software engineering
Objectives
Contents
21.1 Embedded system design
Figure 21.1
Figure 21.2
Figure 21.3
Figure 21.4
21.1.1 Real-time system modeling
Figure 21.5
21.1.2 Real-time programming
Real-time Java
21.2 Architectural patterns for real-time software
21.2.1 Observe and react
Figure 21.6
Figure 21.7
Figure 21.8
21.2.2 Environmental Control
Figure 21.9
Figure 21.10
Figure 21.11
21.2.3 Process pipeline
Figure 21.12
Figure 21.13
Figure 21.14
21.3 Timing analysis
Figure 21.15
Figure 21.16
Figure 21.17
21.4 Real-time operating systems
Figure 21.18
21.4.1 Process management
Figure 21.19
Key Points
Further Reading
Website
Exercises
Figure 21.20
References
PART 4 Software Management
22 Project management
Objectives
Contents
22.1 Risk management
Figure 22.1
Figure 22.2
22.1.1 Risk identification
Figure 22.3
22.1.2 Risk analysis
Figure 22.4
22.1.3 Risk planning
Figure 22.5
22.1.4 Risk monitoring
Figure 22.6
22.2 Managing people
22.2.1 Motivating people
Figure 22.7
Figure 22.8
The People Capability Maturity Model
22.3 Teamwork
Figure 22.9
22.3.1 Selecting group members
Figure 22.10
22.2.3 Group organization
Hiring the right people
22.3.3 Group communications
The physical work environment
Key Points
Further Reading
Website
Exercises
References
23 Project planning
Objectives
Contents
Overhead costs
23.1 Software pricing
Figure 23.1
23.2 Plan-driven development
23.2.1 Project plans
Figure 23.2
23.2.2 The planning process
Figure 23.3
23.3 Project scheduling
Figure 23.4
23.3.1 Schedule presentation
Figure 23.5
Activity charts
Figure 23.6
Figure 23.7
23.4 Agile planning
Figure 23.8
23.5 Estimation techniques
Figure 23.9
23.5.1 Algorithmic cost modeling
Software productivity
23.6 COCOMO cost modeling
Figure 23.10
23.6.1 The application composition model
Figure 23.11
23.6.2 The early design model
23.6.3 The reuse model
23.6.4 The post-architecture level
Figure 23.12
COCOMO cost drivers
Figure 23.13
23.6.5 Project duration and staffing
Key Points
Further Reading
Website
Exercises
Figure 23.14
References
24 Quality management
Objectives
Contents
Figure 24.1
24.1 Software quality
Figure 24.2
Figure 24.3
24.2 Software standards
Documentation standards
Figure 24.4
24.2.1 The ISO 9001 standards framework
Figure 24.5
Figure 24.6
24.3 Reviews and inspections
24.3.1 The review process
Figure 24.7
Roles in the inspection process
24.3.2 Program inspections
Figure 24.8
24.4 Quality management and agile development
24.5 Software measurement
Figure 24.9
Figure 24.10
24.5.1 Product metrics
Figure 24.11
Figure 24.12
24.5.2 Software component analysis
Figure 24.13
24.5.3 Measurement ambiguity
24.5.4 Software analytics
Key Points
Further Reading
Website
Exercises
References
25 Configuration management
Objectives
Contents
Figure 25.1
Figure 25.2
Figure 25.3
25.1 Version management
Figure 25.4
Figure 25.5
Figure 25.6
Figure 25.7
Figure 25.8
Figure 25.9
25.2 System building
Figure 25.10
Figure 25.11
Figure 25.12
Figure 25.13
25.3 Change management
Figure 25.14
Figure 25.15
Customers and changes
Figure 25.16
25.4 Release management
Figure 25.17
Key Points
Further Reading
Website
Exercises
References
Glossary
Subject Index
A
B
C
D
E
F
G
H
I
J
L
M
N
O
P
Q
R
S
T
U
V
W
X
Author Index
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Contents
List of Illustrations
Landmarks