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 mental health care patient management system
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.
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)
Systems, software and technology – Ian Sommerville’s professional blog and website
(http://iansommerville.com/systems-software-and-technology/)
Ian Sommerville’s Blog (no longer updated)
(http://www.software-engin.com/)
Ghezzi, C., Jazayeri, M. and Mandrioli, D. (1991) Fundamentals of Software Engineering, Prentice Hall, Inc.
There is a newer (second) edition of this book
The long-awaited second edition of Fundamentals of Software Engineering presents the fundamental principles of software engineering and illustrates the application of those principles in the different phases of software development. It stresses the importance of a rigorous approach to the practice of software engineering. Over 350 exercises are provided to aid in the comprehension of the material. Over 20 in-depth case studies show how to deal with the intricacies of real-world problems.
This second edition maintains the successful structure of the first edition and enhances the contents by adding treatment of recent developments in software engineering.
Appropriate for both undergraduate and graduate introductory software engineering courses found in Computer Science and Computer Engineering departments.
This text provides selective, in-depth coverage of the fundamentals of software engineering by stressing principles and methods through rigorous formal and informal approaches. The authors emphasize, identify, and apply fundamental principles that are applicable throughout the software lifecycle, in contrast to other texts which are based in the lifecycle model of software development. This emphasis enables students to respond to the rapid changes in technology that are common today.
New coverage to this edition includes:
- More thorough treatment of object orientation
- Greater coverage of software architecture and components
- Introduction to modeling languages Z and UML
- Description and case study of requirements engineering
- New validation techniques, including model checking
- Quality improvement paradigms, including GQM and CMM
- More material on software processes, including the unified process
- Several new case studies on process, requirements, design, organization, and systems engineering
- A comprehensive supplement package, including an Instructor’s Resource CD and a Companion Website.
1. Introduction.
2. Software: Its Nature and Qualities.
3. Software Engineering Principles.
4. Design.
5. Software Specification.
6. Verification.
7. The Software Production Process.
8. Management of Software Engineering.
9. Software Engineering Environments.
10.Epilog.
Case Study of a Successful (Typical) Project.