Software Engineering (10th Edition)
معرفی کتاب «Software Engineering (10th Edition)» نوشتهٔ Ian Sommerville، منتشرشده توسط نشر Pearson Higher Education در سال 2016. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «Software Engineering (10th Edition)» در دستهٔ بدون دستهبندی قرار دارد.
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 This is the eBook of the printed book and may not include any media, website access codes, or print supplements that may come packaged with the bound book. For courses in computer science and software engineering The Fundamental Practice of Software Engineering Software Engineering introduces readers to the overwhelmingly important subject of software programming and development. In the past few years, computer systems have come to dominate not just our technological growth, but the foundations of our world’s major industries. This text seeks to lay out the fundamental concepts of this huge and continually growing subject area in a clear and comprehensive manner. The Tenth Edition contains new information that highlights various technological updates of recent years, providing readers with highly relevant and current information. Sommerville’s experience in system dependability and systems engineering guides the text through a traditional plan-based approach that incorporates some novel agile methods. The text strives to teach the innovators of tomorrow how to create software that will make our world a better, safer, and more advanced place to live. For Courses In Computer Science And Software Engineering The Fundamental Practice Of Software Engineering Software Engineering Introduces Readers To The Overwhelmingly Important Subject Of Software Programming And Development. In The Past Few Years, Computer Systems Have Come To Dominate Not Just Our Technological Growth, But The Foundations Of Our World's Major Industries. This Text Seeks To Lay Out The Fundamental Concepts Of This Huge And Continually Growing Subject Area In A Clear And Comprehensive Manner. The Tenth Edition Contains New Information That Highlights Various Technological Updates Of Recent Years, Providing Readers With Highly Relevant And Current Information. Sommerville's Experience In System Dependability And Systems Engineering Guides The Text Through A Traditional Plan-based Approach That Incorporates Some Novel Agile Methods. The Text Strives To Teach The Innovators Of Tomorrow How To Create Software That Will Make Our World A Better, Safer, And More Advanced Place To Live. -- Provided By Publisher. For courses in computer science and software engineeringThe Fundamental Practice of Software EngineeringSoftware Engineering introduces students to the overwhelmingly important subject of software programming and development. In the past few years, computer systems have come to dominate not just our technological growth, but the foundations of our world's major industries. This text seeks to lay out the fundamental concepts of this huge and continually growing subject area in a clear and comprehensive manner. The Tenth Edition contains new information that highlights various technological updates of recent years, providing students with highly relevant and current information. Sommerville's experience in system dependability and systems engineering guides the text through a traditional plan-based approach that incorporates some novel agile methods. The text strives to teach the innovators of tomorrow how to create software that will make our world a better, safer, and more advanced place to live
دانلود کتاب Software Engineering (10th Edition)