Software Engineering Books

Pressman, R. S. (2009) Software Engineering – A Practitioner’s Approach, Seventh Edition, McGraw-Hill Higher Education

A newer edition of this book is available

For almost three decades, Roger Pressman’s Software Engineering: A Practitioner’s Approach has been the world’s leading textbook in software engineering. The new seventh edition represents a major restructuring and update of previous editions, solidifying the book’s position as the most comprehensive guide to this important subject.

The seventh edition of Software Engineering: A Practitioner’s Approach has been designed to consolidate and restructure the content introduced over the past two editions of the book. The chapter structure will return to a more linear presentation of software engineering topics with a direct emphasis on the major activities that are part of a generic software process. Content will focus on widely used software engineering methods and will de-emphasize or completely eliminate discussion of secondary methods, tools and techniques. The intent is to provide a more targeted, prescriptive, and focused approach, while attempting to maintain SEPA’s reputation as a comprehensive guide to software engineering.

The book will be organized in five (5) parts-Process, Modeling, Quality Management, Project Management, and Advanced Topics. The chapter count will remain at 32, unchanged from the sixth edition. However, eight new chapters have been developed and another six chapters have undergone major or moderate revisions. The remaining chapters have undergone minor edits/updates.

1 Software and Software Engineering
Part One The Software Process
2 Process Models
3 Agile Development
Part Two Modeling
4 Principles that Guide Practice
5 Understanding Requirements
6 Requirements Modeling: Scenarios, Information, and Analysis Classes
7 Requirements Modeling: Flow, Behavior, Patterns, and WebApps
8 Design Concepts
9 Architectural Design
10 Component-Level Design
11 User Interface Design
12 Pattern-Based Design
13 WebApp Design
Part Three Quality Management
14 Quality Concepts
15 Review Techniques
16 Software Quality Assurance
17 Software Testing Strategies
18 Testing Conventional Applications
19 Testing Object-Oriented Applications
20 Testing Web Applications
21 Formal Modeling and Verification
22 Software Configuration Management
23 Product Metrics
Part Four Project Management
24 Project Management Concepts
25 Process and Project Metrics
26 Estimation for Software Projects
27 Project Scheduling
28 Risk Management
29 Maintenance and Reengineering
Part Five Advanced Topics
30 Software Process Improvement
31 Emerging Trends in Software Engineering
32 Concluding Comments
Appendix I-An Introduction to UML
Appendix II-Object-Oriented Concepts

 


Pressman, R. S. and Maxim, R. S.  (2014) Software Engineering – A Practitioner’s Approach, Eighth Edition, McGraw-Hill Higher Education

Download eBook PDF (PDF 89,729KB)

Companion Website: https://highered.mheducation.com/sites/0078022126/student_view0/index.html

For almost three decades, Roger Pressman’s Software Engineering: A Practitioner’s Approach has been the world’s leading textbook in software engineering. The new edition represents a major restructuring and update of previous editions, solidifying the book’s position as the most comprehensive guide to this important subject. The chapter structure will return to a more linear presentation of software engineering topics with a direct emphasis on the major activities that are part of a generic software process. Content will focus on widely used software engineering methods and will de-emphasize or completely eliminate discussion of secondary methods, tools and techniques. The intent is to provide a more targeted, prescriptive, and focused approach, while attempting to maintain SEPA’s reputation as a comprehensive guide to software engineering. The 39 chapters of this edition are organized into five parts – Process, Modeling, Quality Management, Managing Software Projects, and Advanced Topics. The book has been revised and restructured to improve pedagogical flow and emphasize new and important software engineering processes and practices.

For more than 3 decades, Software Engineering: A Practitioner’s Approach has been the best-selling guide to software engineering for students and industry professionals alike.

In its eighth edition, the book has again been revised and redesigned, undergoing a substantial content update that addresses new topics in what many have called “the engineering discipline of the 21st-century.” Entertaining and informative sidebars and marginal content have been expanded and make the book still easier-to-use in the classroom and as a self-study guide. Four new chapters, emphasizing software security and the unique challenges of developing software for mobile applications, have been added to this edition. In addition, new content has been added to many other chapters. The eighth edition is organized into 5 parts: • Part 1, The Software Process, presents both prescriptive and agile process models.
Part 2, Modeling, presents modern analysis and design methods with an emphasis on you UML-based modeling.
Part 3, Quality Management, addresses all aspects of software testing and quality assurance, formal verification techniques, and change management.
Part 4, Managing Software Projects, presents software topics that are relevant to those who plan, manage, and control a software project.
Part 5, Advanced Topics, presents dedicated chapters that address software process improvement and future software engineering trends.

McGraw-Hill Education’s Connect, is also available as an optional, add on item. Connect is the only integrated learning system that empowers students by continuously adapting to deliver precisely what they need, when they need it, how they need it, so that class time is more effective. Connect allows the professor to assign homework, quizzes, and tests easily and automatically grades and records the scores of the student’s work. Problems are randomized to prevent sharing of answers an may also have a “multi-step solution” which helps move the students’ learning along if they experience difficulty.

Table of Contents

1) The Nature of Software

2) Software Engineering

Part One – The Software Process

3) Software Process Structure

4) Process Models

5) Agile Development

6) Human Aspects of Software Engineering

Part Two – Modeling

7) Principles That Guide Practice

8) Understanding Requirements

9) Requirements Modeling: Scenario-Based Methods

10) Requirements Modeling: Class-Based Methods

11) Requirements Modeling: Behavior, Patterns, and Web/Mobile Apps

12) Design Concepts

13) Architectural Design

14) Component-Level Design

15) User Interface Design

16) Pattern-Based Design

17) WebApp Design

18) MobileApp Design

Part Three – Quality Management

19) Quality Concepts

20) Review Techniques

21) Software Quality Assurance

22) Software Testing Strategies

23) Testing Conventional Applications

24) Testing Object-Oriented Applications

25) Testing Web Applications

26) Testing MobileApps

27) Security Engineering

28) Formal Modeling and Verification

29) Software Configuration Management

30) Product Metrics

Part Four – Managing Software Projects

31) Project Management Concepts

32) Process and Project Metrics

33) Estimation for Software Projects

34) Project Scheduling

35) Risk Management

36) Maintenance and Reengineering

Part Five – Advanced Topics

37) Software Process Improvement

38) Emerging Trends in Software Engineering

39) Concluding Comments

Appendix I – An Introduction to UML

Appendix II – Object-Oriented Concepts

Appendix III – Formal Methods

Professional Resources

Web Resources:
http://www.rspa.com/spi

Software Engineering Reference Library:
http://www.rspa.com/RefLib

Software Engineering Checklists:
http://www.rspa.com/checklists

Adaptable Process Model:
http://www.rspa.com/apm

Work Product Templates:
http://www.rspa.com/docs

Umbrella Activities:
http://www.rspa.com/apm/apm01.html#umbrella

Tiny Tools:
http://www.engin.umd.umich.edu/CIS/tinytools/

Industry Commentary:
Industry Commentary-Management
See content of http://www.mhhe.com/engcs/compsci/pressman/olc_linkedcontent/mgmtcomm.htm

Industry Commentary-Technical
See content of http://www.mhhe.com/engcs/compsci/pressman/olc_linkedcontent/techcomm.htm

Supplementary Content:
See content at: http://www.mhhe.com/engcs/compsci/pressman/information/olc/supps.mhtml

Distance Learning
http://www.rspa.com/eSchool

 


R. S. Pressman’s Software Engineering Resources
(http://www.rspa.com/spi/)


Sommerville, I. (2011) Software Engineering, Ninth Edition, Pearson

A newer version of this book is available

Download eBook PDF (PDF 14,226KB)

Companion Website: https://ifs.host.cs.st-andrews.ac.uk/Books/SE9/index.html

Intended for introductory and advanced courses in software engineering.

The ninth edition of Software Engineering 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

  • 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.

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

Case studies

Case studies are valuable in exposing students to non-trivial examples and they can be the basis of coursework where students are expected to apply some of the knowledge gained in their software engineering course. The case studies here are of two kinds namely those introduced in the book (1-3), where I provide additional material about the systems and other studies based on real systems that you can use as a source of examples.

The insulin pump system

The mental health care patient management system

The wilderness weather system

The Ariane launcher accident

The first (1988) Internet worm

The Airbus 340 flight control system

The London Ambulance Service Computer-Aided Despatch System

Web chapters

As part of the revision for the 9th edition, I decided to shorten the book by leaving out a number of chapters. However, these chapters are available as web-only chapters for downloading, along with an extra chapter on documentation.

Chapter 27: Formal Specification

This is a slightly revised version of Chapter 10 from the 7th edition of my book. It introduces the idea of formal specification and discusses model-based and algebraic approaches. It is intended to give readers an understanding of the potential of formal specification rather than to teach the technique.

Chapter 28: Application Architectures

This is a slightly revised version of Chapter 13 from the 7th edition of my book. I wrote this chapter as it became clear when teaching software engineering that many students did not know how common types of application were structured.

Chapter 29: Interaction Design

This is a slightly revised version of Chapter 16 from the 7th edition of my book (where it was called User Interface Design). Interaction design is incredibly important but most computer science and software engineering courses now include this as a separate topic so it is not normally covered in SE courses. However, you may find it useful background reading.

Chapter 30: Documentation

Documentation is a forgotten and sometimes derided topic but you realise how important it is when you try and read some of the truly appalling instructions that come with some software systems. I have therefore revived a chapter that was included in earlier editions of SE and updated it for the 2010’s. (Currently being updated. Draft available)

Chapter 1: Introduction (PPTX)

Chapter 2: Software Processes (PPTX)

Chapter 3: Agile software development (PPTX)

Chapter 4: Requirements engineering (PPTX)

Chapter 5: System modeling (PPTX)

Chapter 6: Architectural design (PPTX)

Chapter 7: Design and Implementation (PPTX)

Chapter 8: Software testing (PPTX)

Chapter 9: Software Evolution (PPTX)

Chapter 10: Socio-technical Systems (PPTX)

Chapter 11: Dependability and Security (PPTX)

Chapter 12: Dependability and Security Specification (PPTX)

Chapter 13: Dependability Engineering (PPTX)

Chapter 14: Security Engineering (PPTX)

Chapter 15: Dependability and Security Assurance (PPTX)

Chapter 16: Software Reuse (PPTX)

Chapter 17: Component-based Software Engineering (PPTX)

Chapter 18: Distributed Software Engineering (PPTX)

Chapter 19: Service-oriented Architecture (PPTX)

Chapter 20: Embedded Systems (PPTX)

Chapter 21: Aspect-oriented software engineering (PPTX)

Chapter 22: Project management (PPTX)

Chapter 23: Project planning (PPTX)

Chapter 24: Quality management (PPTX)

Chapter 25: Configuration management (PPTX)

Chapter 26: Process improvement (PPTX)