本书是全球最通行的软件工程教材之一,已被加利福尼亚大学伯克利分校、南加州大学、澳大利亚国立大学、纽约大学布法罗分校、台湾大学等世界多所著名大学采用。本书系统地介绍了软件工程理论,着重阐述了大型软件系统开发中广泛应用的技术,涵盖了整个软件过程的各个阶段的内容,从导出初始需求到设计和开发,再到系统进化。本书适合作为本科生和研究生软件工程课程的教材,同时也可以作为软件工程师的自修教材,用于更新需求工程、分布式系统体系结构和系统可靠性等新技术方面的知识。
Part 1 Overview\r\n\r\nChapter 1 Introduction\r\n\r\n1.1 FAQs about software engineering\r\n1.2 Professional and ethical responsibility\r\n\r\nChapter 2 Computer-based System Engineering\r\n\r\n2.1 Emergent system properties\r\n2.2 Systems and their environment\r\n2.3 System modelling\r\n2.4 The system engineering process\r\n2.5 System procurement\r\n\r\nChapter 3 Software Processes\r\n\r\n3.1 Software process models\r\n3.2 Process iteration\r\n3.3 Software specification\r\n3.4 Software design and implementation\r\n3.5 Software validation\r\n3.6 Software evolution\r\n3.7 Automated process support\r\n\r\nChapter 4 Project Management\r\n\r\n4.1 Management activities\r\n4.2 Project planning\r\n4.3 Project scheduling\r\n4.4 Risk management\r\nPart 2 Requirements\r\n\r\nChapter 5 Software Requirements\r\n\r\n5.1 Functional and non-functional requirements\r\n5.2 User requirements\r\n5.3 System requirements\r\n5.4 The software requirements document\r\n\r\nChapter 6 Requirements Engineering Processes\r\n\r\n6.1 Feasibility studies\r\n6.2 Requirements elicitation and analysis\r\n6.3 Requirements validation\r\n6.4 Requirements management\r\n\r\nChapter 7 System Models\r\n\r\n7.1 Context models\r\n7.2 Behavioural models\r\n7.3 Data models\r\n7.4 Object models\r\n7.5 CASE workbenches\r\n\r\nChapter 8 Software Prototyping\r\n\r\n8.1 Prototyping in the software process\r\n8.2 Rapid prototyping techniques\r\n8.3 User interface prototyping\r\n\r\nChapter 9 Formal Specification\r\n\r\n9.1 Formal specification in the software process\r\n9.2 Interface specification\r\n9.3 Behavioural specification\r\nPart 3 Design\r\n\r\nChapter 10 Architectural Design\r\n\r\n10.1 System structuring\r\n10.2 Control models\r\n10.3 Modular decomposition\r\n10.4 Domain-specific architectures\r\n\r\nChapter 11 Distributed Systems Architectures\r\n\r\n11.1 Multiprocessor architectures\r\n11.2 Client-server architectures\r\n11.3 Distributed object architectures\r\n11.4 CORBA\r\n\r\nChapter 12 Object-oriented Design\r\n\r\n12.1 Objects and object classes\r\n12.2 An object-oriented design process\r\n12.3 Design evolution\r\n\r\nChapter 13 Real-time Software Design\r\n\r\n13.1 System design\r\n13.2 Real-time executives\r\n13.3 Monitoring and control systems\r\n13.4 Data acquisition systems\r\n\r\nChapter 14 Design with Reuse\r\n\r\n14.1 Component-based development\r\n14.2 Application families\r\n14.3 Design patterns\r\n\r\nChapter 15 User Interface Design\r\n\r\n15.1 User interface design principles\r\n15.2 User interaction\r\n15.3 Information presentation\r\n15.4 User support\r\n15.5 Interface evaluation\r\nPart 4 Critical Systems Engineering\r\n\r\nChapter 16 Dependability\r\n\r\n16.1 Critical systems\r\n16.2 Availability and reliability\r\n16.3 Safety\r\n16.4 Security\r\n\r\nChapter 17 Critical Systems Specification\r\n\r\n17.1 Software reliability specification\r\n17.2 Safety specification\r\n17.3 Security specification\r\n\r\nChapter 18 Critical Systems Development\r\n\r\n18.1 Fault minimisation\r\n18.2 Fault tolerance\r\n18.3 Fault tolerant architectures\r\n18.4 Safe system design\r\nPart 5 Verification and Validation\r\n\r\nChapter 19 Verification and Validation\r\n\r\n19.1 Verification and validation planning\r\n19.2 Software inspections\r\n19.3 Automated static analysis\r\n19.4 Cleanroom software development\r\n\r\nChapter 20 Software Testing\r\n\r\n20.1 Defect testing\r\n20.2 Integration testing\r\n20.3 Object-oriented testing\r\n20.4 Testing workbenches\r\n\r\nChapter 21 Critical Systems Validation\r\n\r\n21.1 Formal methods and critical systems\r\n21.2 Reliability validation\r\n21.3 Safety assurance\r\n21.4 Security assessment\r\nPart 6 Management\r\n\r\nChapter 22 Managing People\r\n\r\n22.1 Limits to thinking\r\n22.2 Group working\r\n22.3 Choosing and keeping people\r\n22.4 The people capability maturity model\r\n\r\nChapter 23 Software Cost Estimation\r\n\r\n23.1 Productivity\r\n23.2 Estimation techniques\r\n23.3 Algorithmic cost modelling\r\n23.4 Project duration and staffing\r\n\r\nChapter 24 Quality Management\r\n\r\n24.1 Quality assurance and standards\r\n24.2 Quality planning\r\n24.3 Quality control\r\n24.4 Software measurement and metrics\r\n\r\nChapter 25 Process Improvement\r\n\r\n25.1 Process and product quality\r\n25.2 Process analysis and modelling\r\n25.3 Process measurement\r\n25.4 The SEI process capability maturity model\r\n25.5 Process classification\r\nPart 7 Evolution\r\n\r\nChapter 26 Legacy Systems\r\n\r\n26.1 Legacy system structures\r\n26.2 Legacy system design\r\n26.3 Legacy system assessment\r\n\r\nChapter 27 Software Change\r\n\r\n27.1 Program evolution dynamics\r\n27.2 Software maintenance\r\n27.3 Architectural evolution\r\n\r\nChapter 28 Software Re-engineering\r\n\r\n28.1 Source code translation\r\n28.2 Reverse engineering\r\n28.3 Program structure improvement\r\n28.4 Program modularisation\r\n28.5 Data re-engineering\r\n\r\nChapter 29 Configuration Management\r\n\r\n29.1 Configuration management planning\r\n29.2 Change management\r\n29.3 Version and release management\r\n29.4 System building\r\n29.5 CASE tools for configuration management\r\n\r\nKey points\r\nFurther reading\r\nExercises\r\n\r\nReferences\r\nIndex