面向对象软件工程实践指南 曹健编著 上海交通大学出版社
面向对象软件工程实践指南 曹健 编著 上海交通大学出版社
前言 软件己经成为驱动我们这个社会发展的重要力量。软件工程作为一门研究系统、规范、 合理化软件开发的学科,是计算机专业、软件工程专业的核心课程,也是其它专业可能选修 的课程。目前己经有许多的软件工程教科书,不少教科书还是这个领域的经典。显然,这些 教科书在解释软件工程的相关理论、技术方面均有自己的独特之处。然而,软件工程不是一 门单纯理论性的课程,学生在学习时除了完成一些作业外,必须能够进行软件工程的实践, 而且这种实践不是个别环节、个别技术的。因此,以小组为单位让学生能够以软件工程方法 为指导完整地开发一个软件系统就非常有必要了。目前,许多学校在教这一门课程时,也确 实要求学生进行小组项目的开发。然而,在这个过程中,软件工程教科书由于以讲解知识点 为主,往往并未给以明确的实践性指导。 笔者教授软件工程多年,尝试过不同形式的教学方式,深感到一本软件工程实践教程 的必要性。虽然国内也有一些软件工程实践方面的教材,笔者还是觉得指导性不够,学生还 是难以一步一步“按图索骥”地完成一个软件项目的完整训练。因此,笔者在总结多年教学经 验的基础上,针对面向对象软件工程来提供软件工程项目的训练教程。在实际中,软件项目 的组织方式包括软件过程模型、文档模板、涉及的模型、采用的方法是多样化的。出于本书 的目的主要在于为学生进行软件项目实践提供指导,所以选择了传统的开发过程模型,并对 文档模版和模型集合进行了挑选。在具体的内容组织上,提供了完整的实际的案例,以给予 学生以直观的参考。当然,本书自身的知识体系也是完整的,对面向对象软件工程有兴趣的 读者也可以通过本书了解相关的知识。 本书的编写得到了俞嘉地、盛斌、薛庆水老师的协助,也得到了研究生姚艳、贾挺杰、 刘辰肠、顾颀的帮助。本书中的案例编写来源于雷浩若、徐源、田晓亮、姚佳乐、苏畅同学 的实际作业,并经过了田晓亮同学和笔者的进一步修改。在此,对所有帮助过本书编写的人 一并表示感谢。 由于笔者水平有限,书中的内容肯定有所局限,甚至可能出现表达不够准确的地方, 敬请谅解。书中的案例也仅仅出于示范的目的而提供,并非最佳设计,甚至可能存在缺陷, 也请读者在参考时加以注意。 希望通过本书,能够促进软件工程教学效果的提升
前 言 软件已经成为驱动我们这个社会发展的重要力量。软件工程作为一门研究系统、规范、 合理化软件开发的学科,是计算机专业、软件工程专业的核心课程,也是其它专业可能选修 的课程。目前已经有许多的软件工程教科书,不少教科书还是这个领域的经典。显然,这些 教科书在解释软件工程的相关理论、技术方面均有自己的独特之处。然而,软件工程不是一 门单纯理论性的课程,学生在学习时除了完成一些作业外,必须能够进行软件工程的实践, 而且这种实践不是个别环节、个别技术的。因此,以小组为单位让学生能够以软件工程方法 为指导完整地开发一个软件系统就非常有必要了。目前,许多学校在教这一门课程时,也确 实要求学生进行小组项目的开发。然而,在这个过程中,软件工程教科书由于以讲解知识点 为主,往往并未给以明确的实践性指导。 笔者教授软件工程多年,尝试过不同形式的教学方式,深感到一本软件工程实践教程 的必要性。虽然国内也有一些软件工程实践方面的教材,笔者还是觉得指导性不够,学生还 是难以一步一步“按图索骥”地完成一个软件项目的完整训练。因此,笔者在总结多年教学经 验的基础上,针对面向对象软件工程来提供软件工程项目的训练教程。在实际中,软件项目 的组织方式包括软件过程模型、文档模板、涉及的模型、采用的方法是多样化的。出于本书 的目的主要在于为学生进行软件项目实践提供指导,所以选择了传统的开发过程模型,并对 文档模版和模型集合进行了挑选。在具体的内容组织上,提供了完整的实际的案例,以给予 学生以直观的参考。当然,本书自身的知识体系也是完整的,对面向对象软件工程有兴趣的 读者也可以通过本书了解相关的知识。 本书的编写得到了俞嘉地、盛斌、薛庆水老师的协助,也得到了研究生姚艳、贾挺杰、 刘辰旸、顾颀的帮助。本书中的案例编写来源于雷浩若、徐源、田晓亮、姚佳乐、苏畅同学 的实际作业,并经过了田晓亮同学和笔者的进一步修改。在此,对所有帮助过本书编写的人 一并表示感谢。 由于笔者水平有限,书中的内容肯定有所局限,甚至可能出现表达不够准确的地方, 敬请谅解。书中的案例也仅仅出于示范的目的而提供,并非最佳设计,甚至可能存在缺陷, 也请读者在参考时加以注意。 希望通过本书,能够促进软件工程教学效果的提升
面向对象软件工程实践指南 目录 第一篇指南篇 1 第1章软件工程概论. …3 1.1软件工程的发展历史 1.2软件工程基本思想 6 1.3传统软件工程. ”””” 7 1.4面向对象方法学 8 第2章面向对象软件过程.… …15 2.1面向对象方法的发展 .15 2.3面向对象分析、设计与实现 16 2.4面向对象软件开发流程. .19 2.5统一开发过程-RUP 20 第3章统一建模语言UML 只 3.1UML简介. …22 3.2UML与软件体系结构 23 3.3UML的构成. 24 3.4UML建模规则… 27 3.5静态结构模型图 .27 3.6动态特性模型图 .31 3.7典型的UML建模工具 34 第4章计划阶段 .37 4.1计划阶段的主要内容 .37 4.2可行性研究. 38 4.3项目开发计划 43 4.4风险分析. 47 第5章需求定义阶段 49 5.1需求定义阶段的主要内容 49 5.2功能需求的表达 50 5.3非功能需求和设计约束.… 56 5.4软件需求规格说明的编写 .57 第6章分析阶段… 60 6.1分析阶段的主要内容 60 6.2对象模型的创建.… .61 6.3动态模型的创建.… .63 6.4软件需求规格说明的修改, 68 第7章设计阶段… .69 7.1设计阶段的主要内容 69 7.2软件设计的原则.… 71 7.3从可重用软件单元到可重用设计知识 72 7.4系统设计… 75 7.5对象设计 79 5
面向对象软件工程实践指南 5 目 录 第一篇 指南篇.......................................................................................................... 1 第 1 章 软件工程概论.......................................................................................................... 3 1.1 软件工程的发展历史..................................................................................................3 1.2 软件工程基本思想......................................................................................................6 1.3 传统软件工程..............................................................................................................7 1.4 面向对象方法学..........................................................................................................8 第 2 章 面向对象软件过程................................................................................................ 15 2.1 面向对象方法的发展................................................................................................15 2.3 面向对象分析、设计与实现....................................................................................16 2.4 面向对象软件开发流程............................................................................................19 2.5 统一开发过程--RUP................................................................................................... 20 第 3 章 统一建模语言 UML.............................................................................................. 22 3.1 UML 简介.................................................................................................................... 22 3.2 UML 与软件体系结构................................................................................................ 23 3.3 UML 的构成................................................................................................................ 24 3.4 UML 建模规则............................................................................................................ 27 3.5 静态结构模型图........................................................................................................27 3.6 动态特性模型图........................................................................................................31 3.7 典型的 UML 建模工具............................................................................................... 34 第 4 章 计划阶段................................................................................................................ 37 4.1 计划阶段的主要内容................................................................................................37 4.2 可行性研究.................................................................................................................38 4.3 项目开发计划.............................................................................................................43 4.4 风险分析.....................................................................................................................47 第 5 章 需求定义阶段........................................................................................................ 49 5.1 需求定义阶段的主要内容........................................................................................49 5.2 功能需求的表达.........................................................................................................50 5.3 非功能需求和设计约束.............................................................................................56 5.4 软件需求规格说明的编写.........................................................................................57 第 6 章 分析阶段................................................................................................................ 60 6.1 分析阶段的主要内容.................................................................................................60 6.2 对象模型的创建.........................................................................................................61 6.3 动态模型的创建.........................................................................................................63 6.4 软件需求规格说明的修改.........................................................................................68 第 7 章 设计阶段................................................................................................................ 69 7.1 设计阶段的主要内容................................................................................................69 7.2 软件设计的原则........................................................................................................71 7.3 从可重用软件单元到可重用设计知识....................................................................72 7.4 系统设计.....................................................................................................................75 7.5 对象设计....................................................................................................................79
面向对象软件工程实践指南 7.6运行设计. 83 7.7实现设计 85 7.8软硬件部署设计 85 7.9数据管理设计 .86 7.10其它设计 86 7.11设计阶段交付物, 86 第8章构造阶段… 90 8.1构造阶段的主要内容 .90 8.2正向工程与逆向工程 90 8.3单元测试与测试驱动开发 92 8.4软件重构 92 8.5从设计模型生成代码 93 8.6构造过程中的优化. 96 8.7类与关系数据库表的映射 97 8.8构造阶段交付物 .97 第9章软件测试… 99 9.1软件测试的主要内容. 99 9.2测试类型.… 101 9.3软件测试工具 .103 9.4测试阶段交付物 104 第10章交付阶段. 110 10.1交付阶段的主要内容 110 10.2交付确认 110 10.3系统上线 .111 10.4交付阶段文档编写 112 第11章总结阶段… .115 11.1总结的主要内容 115 11.2项目总结报告的编写. .115 第二篇案例篇… .118 第12章计划阶段.… …120 (一) 可行性分析报告 120 (二) 项目开发计划. 131 (三) 风险列表 139 第13章需求分析阶段… 141 (四) 词汇表 141 (五) 软件需求规约, 143 第14章设计阶段… …193 (六) 软件架构设计 193 (七) 软件设计模型. 204 第15章开发阶段… 232 (八)模块开发卷宗. 232 第16章测试阶段… 248 (九) 软件测试计划.… 248 (十) 软件测试总结报告 264 6
面向对象软件工程实践指南 6 7.6 运行设计....................................................................................................................83 7.7 实现设计....................................................................................................................85 7.8 软硬件部署设计........................................................................................................85 7.9 数据管理设计............................................................................................................86 7.10 其它设计..................................................................................................................86 7.11 设计阶段交付物......................................................................................................86 第 8 章 构造阶段................................................................................................................ 90 8.1 构造阶段的主要内容................................................................................................90 8.2 正向工程与逆向工程................................................................................................90 8.3 单元测试与测试驱动开发........................................................................................92 8.4 软件重构....................................................................................................................92 8.5 从设计模型生成代码................................................................................................93 8.6 构造过程中的优化....................................................................................................96 8.7 类与关系数据库表的映射........................................................................................97 8.8 构造阶段交付物.........................................................................................................97 第 9 章 软件测试................................................................................................................ 99 9.1 软件测试的主要内容................................................................................................99 9.2 测试类型..................................................................................................................101 9.3 软件测试工具..........................................................................................................103 9.4 测试阶段交付物......................................................................................................104 第 10 章 交付阶段............................................................................................................ 110 10.1 交付阶段的主要内容.............................................................................................110 10.2 交付确认................................................................................................................110 10.3 系统上线................................................................................................................111 10.4 交付阶段文档编写.................................................................................................112 第 11 章 总结阶段.............................................................................................................115 11.1 总结的主要内容.....................................................................................................115 11.2 项目总结报告的编写.............................................................................................115 第二篇 案例篇..........................................................................................................118 第 12 章 计划阶段............................................................................................................ 120 (一) 可行性分析报告............................................................................................. 120 (二) 项目开发计划................................................................................................. 131 (三) 风险列表......................................................................................................... 139 第 13 章 需求分析阶段.................................................................................................... 141 (四) 词汇表............................................................................................................. 141 (五) 软件需求规约................................................................................................. 143 第 14 章 设计阶段............................................................................................................ 193 (六) 软件架构设计................................................................................................. 193 (七) 软件设计模型................................................................................................. 204 第 15 章 开发阶段............................................................................................................ 232 (八) 模块开发卷宗................................................................................................. 232 第 16 章 测试阶段............................................................................................................ 248 (九) 软件测试计划................................................................................................. 248 (十) 软件测试总结报告......................................................................................... 264
面向对象软件工程实践指南 第17章总结和交付阶段. …270 (十一) 交付清单 270 (十二) 软件项目总结报告 275 (十三) 软件验收报告 281 (十四) 用户手册 288 参考文献 300
面向对象软件工程实践指南 7 第 17 章 总结和交付阶段................................................................................................ 270 (十一) 交付清单......................................................................................................270 (十二) 软件项目总结报告......................................................................................275 (十三) 软件验收报告..............................................................................................281 (十四) 用户手册......................................................................................................288 参考文献....................................................................................................................300