Software Engineering Ian Sommerville

by 12:50 0 comments
Software Engineering Ian Sommerville



Intended for introductory and advanced courses in software engineering.

The ninth edition of this best-selling introduction presents a broad perspective of software engineering, focusing on the processes and techniques fundamental to the creation of reliable, software systems. Increased coverage of agile methods and software reuse, along with coverage of 'traditional' plan-driven software engineering, gives readers the most up-to-date view of the field currently available. Practical case studies, a full set of easy-to-access supplements, and extensive web resources make teaching the course easier than ever.

The book is now structured into four parts:

1: Introduction to Software Engineering
2: Dependability and Security
3: Advanced Software Engineering
4: Software Engineering Management

Author Ian Somerville is the recipient of the 2011 ACM SIGSOFT Influential Educator Award . This honor is in recognition of the tremendous and positive influence that his Software Engineering  textbook and companion educational aids have had on undergraduate  software-engineering education, as well as his textbooks on Requirements Engineering, and achievements in establishing the SICSA Graduate Academy.  

Table of Contents

Part 1 Introduction to Software Engineering
Chapter 1: Introduction
1.1 Professional software development
1.2 Software engineering ethics
1.3 Case studies
Chapter 2: Software processes
2.1 Software process models
2.2 Process activities
2.3 Coping with change
2.4 The Rational Unified Process
Chapter 3: Agile software development
3.1 Agile methods
3.2 Plan-driven and agile development
3.3 Extreme programming
3.4 Agile project management
3.5 Scaling agile methods
Chapter 4: Requirements engineering
4.1 Functional and non-functional requirements
4.2 The software requirements document
4.3 Requirements specification
4.4 Requirements engineering processes
4.5 Requirements elicitation and analysis
4.6 Requirements validation
4.7 Requirements management
Chapter 5: System modeling
5.1 Context models
5.2 Interaction models
5.3 Structural models
5.4 Behavioral models
5.5 Model-driven engineering
Chapter 6: Architectural design
6.1 Architectural design decisions
6.2 Architectural views
6.3 Architectural patterns
6.4 Application architectures
Chapter 7: Design and Implementation
7.1 Object-oriented design using the UML
7.2 Design patterns
7.3 Implementation issues
7.4 Open source development
Chapter 8: Software testing
8.1 Development testing
8.2 Test-driven development
8.3 Release testing
8.4 User testing
Chapter 9: Software Evolution
9.1 Evolution processes
9.2 Program evolution dynamics
9.3 Software maintenance
9.4 Legacy system management
Part 2 Dependability and Security
Chapter 10: Socio-technical Systems
10.1 Complex systems
10.2 Systems engineering
10.3 System procurement
10.4 System development
10.5 System operation
Chapter 11: Dependability and Security
11.1 Dependability properties
11.2 Availability and reliability
11.3 Safety
11.4 Security
Chapter 12: Dependability and Security Specification
12.1 Risk-driven requirements specification
12.2 Safety specification
12.3 Reliability specification
12.4 Security specification
12.5 Formal specification
Chapter 13: Dependability Engineering
13.1 Redundancy and diversity
13.2 Dependable processes
13.3 Dependable systems architectures
13.4 Dependable programming
Chapter 14: Security Engineering
14.1 Security risk management
14.2 Design for security
14.3 System survivability
Chapter 15: Dependability and Security Assurance
15.1 Static analysis
15.2 Reliability testing
15.3 Security testing
15.4 Process assurance
15.5 Safety and dependability cases
Part 3 Advanced Software Engineering
Chapter 16: Software Reuse
16.1 The reuse landscape
16.2 Application frameworks
16.3 Software product lines
16.4 COTS product reuse
Chapter 17: Component-based Software Engineering
17.1 Components and component models
17.2 CBSE processes
17.3 Component composition
Chapter 18: Distributed Software Engineering
18.1 Distributed systems issues
18.2 Client—server computing
18.3 Architectural patterns for distributed systems
18.4 Software as a service
Chapter 19: Service-oriented Architecture
19.1 Services as reusable components
19.2 Service engineering
19.3 Software development with services
Chapter 20: Embedded Systems
20.1 Embedded systems design
20.2 Architectural patterns
20.3 Timing analysis
20.4 Real-time operating systems
Chapter 21: Aspect-oriented software engineering
21.1 The separation of concerns
21.2 Aspects, join points and pointcuts
21.3 Software engineering with aspects
Part 4 Software management
Chapter 22: Project management
22.1 Risk management
22.2 Managing people
22.3 Teamwork
Chapter 23: Project planning
23.1 Software pricing
23.2 Plan-driven development
23.3 Project scheduling
23.4 Agile planning
23.5 Estimation techniques
Chapter 24: Quality management
24.1 Software quality
24.2 Software standards
24.3 Reviews and inspections
24.4 Software measurement and metrics
Chapter 25: Configuration management
25.1 Change management
25.2 Version management
25.3 System building
25.4 Release management
Chapter 26: Process improvement
26.1 The process improvement process
26.2 Process measurement
26.3 Process analysis
26.4 Process change
26.5 The CMMI process improvement framework


Covers the latest, key developments in software engineering. The core structure of the text is built around the key software engineering activities of specification, design, development, verification, validation, and management.
Two integrated, contrasting case studies flow through the text, continuously giving practical context and examples for topics discussed.
Management issues such as project planning are introduced early, allowing them to be used in a project-based course.
Significant coverage of requirements and architectural design emphasizes their importance in the overall SE process.
Graphical system models in standard UML.
Online resources:

New to This Edition

The major change in this edition is the move from a print-only book to a hybrid print/web book with the web material tightly integrated with the sections in the book. This has reduced the number of chapters in the book and allows the author to focus on core material in each chapter.
Complete restructuring to make it easier to use the book in teaching software engineering. The book now has four rather than eight parts and each part may be used on its own or in combination with other parts as the basis of a software engineering course. The four parts are an introduction to software engineering, dependability and security, advanced software engineering and software engineering management.
Several topics from previous editions are presented more concisely in a single chapter, with extra material moved onto the Web.
Additional web chapters, based on chapters from previous editions that are not included in the ninth edition, are available on the Web.
The content in all chapters is updated and revised. Approximately 30-40% of the text is completely rewritten.
New chapters on agile software development and embedded systems are included.
New material on model-driven engineering, open source development, test-driven development, Reason’s Swiss Cheese model, dependable systems architectures, static analysis and model checking, COTS reuse, software as a service, and agile planning.
A new case study on a patient record system for patients who are undergoing treatment for mental health problems is used in several chapters.




Razi is an IT Lecturer and Training Consultant. His lecture/training includes:
+Software Engineering
+Mobile Development
+Web Portal System
+Adobe Creative Suites
+Microsoft Office Suites
Read more about him at About Page