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 Process improvement Chapter 3 Agile software development 3.1 Agile methods 3.2 Agile development techniques 3.5 Agile project management 3.4 Scaling agile methods Chapter 4 Requirements engineering 4.1 Functional and non-functional requirements 4.2 Requirements engineering processes 4.5 Requirements elicitation 4.4 Requirements specification 4.5 Requirements validation 4,6 Requirements change Chapter 5 System modeling 5.1 Context models 5.2 Interaction models 5.3 Structural models 5.4 Behavioral models 5.5 Model-driven architecture 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 usingthe 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 Legacy systems 9.3 Software maintenance Part 2 System Dependability and Security Chapter 10 Dependable systems 10.1 Dependability properties
10.2 Sociotechnical systems 10.3 Redundancy and diversity 10.4 Dependable processes 10.5 Formal methods and dependability Chapter 11 Reliability engineering 1 1.1 Availability and reliability 11.2 Reliability requirements 11.3 Fault-tolerant architectures 11.4 Programming for reliability 11.5 Reliability measurement Chapter 12 Safety engineering 12.1 Safety-critical systems 12.2 Safety requirements 12.3 Safety engineering processes 12.4 Safety cases Chapter 13 Security engineering 13.1 Security and dependability 13.2 Security and organizations 13.3 Security requirements 13.4 Secure systems design 13.5 Security testing and assurance Chapter 14 Resilience engineering 14.1 Cybersecurity 14.2 Sociotechnical resilience 14.3 Resilient systems design Part 3 Advanced Software Engineering Chapter 15 Software reuse 15.1 The reuse landscape 15.2 Application frameworks 15.3 Software product lines 15.4 Application system reuse Chapter 16 Component-based software engineering 16.1 Components and component models 16.2 CBSE processes 16.3 Component composition Chapter 17 Distributed software engineering 17.1 Distributed systems 17.2 Client-server computing 17.3 Architectural patterns for distributed systems 17.4 Software as a service Chapter 18 Service-oriented software engineering 18.1 Service-oriented architecture 18.2 RESTful services 18.3 Service engineering 18.4 Service composition Chapter 19 Systems engineering 19.1 Sociotechnical systems 19.2 Conceptual design 19.3 System procurement 19.4 System development
19.5 System operation and evolution Chapter 20 Systems of systems 20.1 System complexity 20.2 Systems of systems classification 20.3 Reductionism and complex systems 20.4 Systems of systems engineering 20.5 Systems of systems architecture Chapter 21 Real-time software engineering 21.1 Embedded system design 21.2 Architectural patterns for real-time software 21.3 Timing analysis 21.4 Real-time operating systems 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 23.6 COCOMO cost modeling Chapter 24 Quality management 24.1 Software quality 24.2 Software standards 24.3 Reviews and inspections 24.4 Quality management and agile development 24.5 Software measurement Chapter 25 Configuration management 25.1 Version management 25.2 System building 25.3 Change management 25.4 Release management Glossary