
本书从软件文化背景入手,分析软件工程面临的问题及软件建模的必要性。以UML对象建模语言为背景,由浅入深,由抽象概念到具体实例,全面介绍了面向对象分析与设计方法。本书重点围绕统一建模语言——UML展开,介绍对象建模的三个核心内容,即对象的概念建模、行为建模和功能建模,并且以一个较为完整的示例介绍这些方法如何在实践中运用。本书提供电子课件,读者可登录华信教育资源网www.hxedu.com.cn免费注册下载。本书可作为高等学校本科生和研究生教材,也可作为程序员和分析员基础理论培训教材。
前言 面向对象方法与技术的发展经历了一个漫长的过程。20世纪80年代末与90年代初是面向对象发展的重要转折点,也是面向对象技术开始大面积推广使用的时期。早期的面向对象理论与技术多数针对程序实现。但随着该技术的推广使用,人们越发感到其博大精深。其中包含的理论和方法不仅仅适用于编程而且在系统分析与软件结构设计上也优于传统的方法,尤其是在软件全生命期的中后期更能体现其健壮性特征。因此,在20世纪90年代中后期相继出现了许多基于该理论的建模方法与技术。其中,最具有代表性的应该属对象管理组织(OMG)的统一建模语言(UML)。现在,UML已经成为行业标准。 现在,面向对象的开发工具已经相当普及,对象建模方法及商品化的建模工具也已经开始应用和推广,有些软件开发工具已经包含了对象建模工具。但不少软件工程师对面向对象的开发缺乏全面的认识,尤其是对现代对象建模的方法与工具感到无从下手。其根本原因是,他们没有真正建立面向对象的理念或思维方式。读者可以试问一下自己:为什么要面向对象,什么是面向对象,如何进行面向对象的分析与设计,我是否了解对象建模语言,我是否能够使用对象建模工具等。本书将针对这些问题给出较为完整的解答,从而使读者掌握面向对象的基本分析与设计方法,自如地运用现代软件建模工具开发应用软件。 本书力求全面介绍面向对象的思想精髓及建立在其基础上的对象建模方法与技术。本书的特点是:第一,聚焦性,本书紧扣软件建模主题,从软件文化发展历史入手,剖析对象建模语言产生的背景和应用前景,重点介绍UML对象建模方法的基本内容,包括对象设计模式和面向数据库应用的软件建模,帮助初学者和普通软件工程师奠定软件分析与设计的理论基础;第二,理论与实践相结合,书中的对象建模示例采用当前流行的UML建模工具PowerDesign 12(注:该工具可在网上免费下载)建模,并且专门安排了软件建模实践内容,将对象建模的基本知识融入实验,易于开展实践性教学;第三,系统性和全面性,本书围绕面向对象分析与设计进行讲解,不仅介绍对象建模的基础知识,而且介绍软件文化的背景知识及软件建模新思想和新方法,为软件专业学生提供一个全面的视野,为其今后向软件架构师和系统分析员方向发展打下良好的理论基础。 本书的出版得到中国博士后科学基金资助项目2020M671490的支持。 本书的编写工作由多名专业同志共同完成。这些同志长期从事面向对象分析与设计课程教学和软件工程方法学研究及应用软件开发工作。这些实践工作为本书的创作打下了坚实的基础。由于编写时间较短,书中难免存在不足之处,希望广大读者提出宝贵意见和建议。 作 者 2022年1月
目录 第1章 软件建模概述 1 1.1 计算机软件及其编程语言发展的启迪 1 1.1.1 计算机编程语言发展史 1 1.1.2 人类语言与计算机编程语言对比 2 1.1.3 需求鸿沟及解决方法 4 1.2 软件工程 5 1.2.1 软件危机 5 1.2.2 软件工程方法 6 1.2.3 需求工程 6 1.2.4 模型驱动工程 7 1.3 建模的基本原理 8 1.3.1 知识的概念 8 1.3.2 模型的概念 9 1.3.3 元模型及其作用 13 1.3.4 建模的基本原则 14 1.4 本章小结 18 1.5 习题 18 第2章 面向对象的基本概念 19 2.1 对象的概念 19 2.1.1 面向对象的思想 19 2.1.2 什么是对象 20 2.1.3 什么是类 21 2.1.4 什么是实例 22 2.1.5 计算机程序与对象 23 2.2 对象模型的概念 23 2.2.1 现实世界的对象模型 24 2.2.2 计算机世界的对象模型 24 2.2.3 对象模型的可视化表示 25 2.3 面向对象分析设计的共性问题 26 2.3.1 对象的封装 26 2.3.2 对象的抽象层次 27 2.3.3 对象的多态性 28 2.3.4 对象之间的信息交互 29 2.3.5 软件复用 30 2.4 其他方法比较 32 2.4.1 面向过程的方法 32 2.4.2 面向数据的方法 33 2.4.3 面向控制的方法 33 2.5 本章小结 34 2.6 习题 35 第3章 统一建模语言 38 3.1 UML概览 38 3.1.1 UML的起源与发展 38 3.1.2 UML的作用 40 3.1.3 UML方法论 40 3.2 UML机理 42 3.2.1 UML建模机制 42 3.2.2 UML扩展机制 48 3.2.3 UML形式化机制 50 3.3 UML 2.0与UML 1.0的区别 54 3.3.1 类图的区别 55 3.3.2 用例图的区别 56 3.3.3 活动图的区别 56 3.3.4 UML 2.0新增的模型图 58 3.4 本章小结 60 3.5 习题 61 第4章 对象概念建模 62 4.1 概念建模及其意义 62 4.2 UML类图和对象图表示法 64 4.2.1 类和对象的表示法 64 4.2.2 属性的表示法 66 4.2.3 操作的表示法 67 4.3 对象之间的联系及其表示法 68 4.3.1 关联关系及表示法 68 4.3.2 聚合关系及表示法 70 4.3.3 关联类关系及表示法 71 4.3.4 依赖关系及表示法 73 4.3.5 其他关系及表示法 74 4.4 对象概念的泛化与继承 76 4.4.1 泛化的概念及应用 77 4.4.2 继承的概念及应用 78 4.4.3 对象的多态性及应用 80 4.5 理解概念模型 83 4.5.1 理解的概念 83 4.5.2 理解的关系 85 4.5.3 理解的细节内容 86 4.6 建立概念模型 87 4.6.1 识别对象及其关系 87 4.6.2 识别对象属性 90 4.6.3 识别对象操作 93 4.6.4 概念模型的精化 95 4.7 其他UML静态概念模型 96 4.7.1 包图 97 4.7.2 对象图 98 4.7.3 组件图 99 4.7.4 复合结构图 101 4.8 本章小结 102 4.9 习题 103 第5章 对象行为建模 104 5.1 行为建模的基本概念 104 5.1.1 行为模型及其意义 104 5.1.2 基于UML的行为建模方法 105 5.2 UML状态图表示法 105 5.2.1 状态图的基本元素 105 5.2.2 一般状态图 107 5.2.3 复杂状态图 108 5.3 UML状态图应用 110 5.3.1 状态模型的适用范围及作用 110 5.3.2 建立状态模型 111 5.3.3 状态模型与对象概念模型的关系 113 5.4 UML活动图表示法 114 5.4.1 活动图的基本元素 114 5.4.2 一般活动图 115 5.4.3 分层活动图 117 5.4.4 泳道活动图 117 5.4.5 对象流活动图 118 5.5 UML活动图应用 120 5.5.1 活动图的适用范围及作用 120 5.5.2 建立活动图 120 5.5.3 活动图与对象概念图的关系 123 5.5.4 状态图与活动图的比较 123 5.6 UML交互图表示法 124 5.6.1 时序图 124 5.6.2 通信图 129 5.6.3 交互概览图 130 5.7 UML交互图应用 130 5.7.1 交互模型的作用 131 5.7.2 建立交互模型 132 5.7.3 交互模型之间的关系 136 5.7.4 交互模型与概念模型的关系 136 5.8 本章小结 137 5.9 习题 137 第6章 对象功能建模 138 6.1 功能建模的基本概念 138 6.1.1 功能模型及其意义 138 6.1.2 基于UML的功能需求分析方法 139 6.2 UML用例图表示法 140 6.2.1 角色 141 6.2.2 用例 143 6.2.3 关系 144 6.3 UML用例图建模 147 6.3.1 用例模型的作用 147 6.3.2 理解用例模型 148 6.3.3 建立用例模型 151 6.3.4 描述用例细节 159 6.4 本章小结 163 6.5 习题 164 第7章 系统建模 166 7.1 系统建模概述 166 7.1.1 系统的概念 166 7.1.2 系统建模 168 7.2 组件建模 169 7.2.1 组件建模概述 169 7.2.2 组件建模元素 170 7.2.3 组件建模示例 173 7.3 复合结构建模 174 7.3.1 复合结构建模概述 174 7.3.2 复合结构建模元素 175 7.4 系统建模语言 176 7.4.1 系统建模语言概述 176 7.4.2 系统结构建模 180 7.4.3 系统行为建模 183 7.4.4 系统需求建模 185 7.5 本章小结 186 7.6 习题 187 第8章 软件建模实践 188 8.1 PowerDesigner工具介绍 188 8.1.1 PowerDesigner主界面 188 8.1.2 PowerDesigner支持的模型 189 8.1.3 PowerDesigner新建模型的步骤 191 8.1.4 PowerDesigner的工具选项板 193 8.2 案例介绍 194 8.2.1 项目背景及需求概要 194 8.2.2 需求分析 195 8.2.3 软件分析建模 199 8.2.4 软件设计建模 210 8.3 本章小结 215 参考文献 216