软件工程导论_第十章
软件工程导论(第六版)

1.1.1 软件危机的介绍
1.1 软件危机
6
软件危机的典型表现
4、软件通常没有适当的文档资料。
5、软件成本在计算机系统总成本中所占的比例 逐年上升。
6、软件开发生产率提高的速度,远远跟不上计 算机应用迅速普及深入的趋势。
第1章 软件工程学概述
1.1.1 软件危机的介绍
1.1 软件危机
1.1.2 产生软件危机的原因
第1章 软件工程学概述
1.1.2 产生软件危机的原因
11
1.1 软件危机
1.1.3 消除软件危机的途径
1 2 3 首先应该对计 算机软件有一
充分认识到软 件开发不是某
推广使用在实 践中总结出来
个正确的认识。 种个体劳动的 的开发软件的
神秘技巧 ,
成功的技术和
而应该是各类 方法,并且研
人员协同配合, 究探索更好更
1.2.1 软件工程的介绍
1.2 软件工程
16
1.2.2 软件工程的基本原理
1、用分阶段的生命周期计划严格管理 2、坚持进行阶段评审 3、实行严格的产品控制 4、采用现代程序设计技术 5、结果应能清楚地审查 6、开发小组的人员应该少而精 7、承认不断改进软件工程实践的必要性
第1章 软件工程学概述
1.2.2 软件工程的基本原理
1.4 软件过程
33
1.4 软件过程
软件过程是为了获得高质量软件所需要完成的一系列任务 的框架,它规定了完成各项任务的工作步骤。
软件过程描述为了开发出客户需要的软件,什么人(who )、在什么时候(when)、做什么事(what)以及怎样( how)做这些事以实现某一个特定的具体目标。
第1章 软件工程学概述
第1章 软件工程学概述
软件工程导论张海藩课后习题答案(完整版)

作业及解答(第4章)
其中, ✓符号∷=表示定义为; ✓符号[...]表示可选项; ✓符号a|b表示a或b。 假设有这样一个有穷状态机:以一串字符为输入,判断字符 串中是否含有合法的浮点二进制数。试对这个有穷状态机进 行规格说明。
作业及解答(第4章)
该有穷状态机的初态是“等待字符串输人”。在初态若接收 到字符十、或字符一、或二进制位,则进人“输人尾数” 状态;在初态若接收到其他字符,则进人终态“非浮点二 进制数”。在“输人尾数”状态若接收到二进制位,则保 持该状态不变;若接收到字符 E ,则进人“等待输人指数 ”状态;若接收到其他字符,则进人终态“非浮点二进制 数”。在“等待输人指数”状态若接收到字符+、或字符 一、或二进制位,则进人“输人指数”状态;若接收到其 他字符,则进人终态“非浮点二进制数”。在“输人指数 ”状态若接收到二进制位,则保持该状态不变;若输人其 他字符,则进人终态“非浮点二进制数”;若输人结束, 则进人终态“浮点二进制数”。
E2 病人
F2生理信号
E3 时钟
F3日前、时间
F5安全范围 D2患者安全范围
P2 分析信号
危及病人信息
P3 产生警告信息
F2生理信号
F4警告信息
P1 接收信号
F2生理信号
E1 护士
P4 定时取样 生理信号
定时的生理信号 F6日志
P5 更新日志
D1患者日志
E1 护士
F6日志 F1要求报告
P6 产生病情报告
(3) 假设在1995年存储器字长为32位,一名程序员每天可 开发出30条指令,程序员的月平均工资为6000美元,重 复(1)、(2)题。
作业及解答(第1-2章)
(1)在1985年对计算机存储容量的需求,估计是
软件工程导论_张海藩(第五版)课后习题答案

《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
软件工程导论复习重点总结很全第六版

第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。
软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。
1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。
认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。
应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。
应当开发和使用更好旳软件工具。
总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。
1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。
采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。
(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。
软件工程导论_第十章

2. OOA基本任务是:
运用面向对象的方法,对问题域和系统责任 进行分析和理解,找出描述问题域及系统责任所需的 对象,定义对象的属性、服务以及它们之间的关系。 目标是建立一个符合问题域、满足用户功能需求的 OOA模型。
问题域:被开发系统的应用领域,记载现实世界中要
由这个系统进行处理的业务范围。现实世界中系统 所要解决问题的领域为“问题域”,如“银行业务” 属于“银行的问题域”。 系统责任:所开发的系统应该具备的职能。
• “小镇”是牙科诊所的地址属性,不是独 立的对象;“软件系统”和“系统”是 同义词,指的是将要开发的软件产品, 不是问题域中的对象;“就诊时间”、 “预约时间”和“约定时间”在本问题 陈述中的含义相同,指的都是预约的就 诊时间,实际上,预约的就诊时间既包 括日期又包括时间,但是,它们是预约 登记表包含的属性,不是问题域中的独 立的对象;“名字”和“姓名”是同义 词,应该作为病人和预约登记表的属性;
我们目标是尽可能全面的发现属性,宁可多费时, 也不要遗漏所需要的属性。
10.3.5 识别继承关系
继承关系的建立实质上是知识抽取过程,它应该 反映出一定深度的领域知识,因此必须有领域专家密 切配合才能完成。通常,许多归纳关系都是根据客观 世界现有的分类模式建立起来的,只要可能,就应该 使用现有的概念。
10.3 建立对象模型(类图)
1. 描述系统静态的对象模型(类图)是面向对象
的三个模型中的基本模型。 2. 它表述了系统中各个对象的类型及其间存在 的各种关系。在面向对象建模中,建立类图是最 基本的任务;建立类图也是最需要花费精力和时 间的技术活动。
3. 该模型主要关心系统中的:
①对象的结构; ②属性; ④关联; ⑤类的层次。 ③操作和方法;
软件工程导论(第六版)张海藩课后习题部分答案(20201006230822)

第一章1-1 什么是软件危机? 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1-3 什么是软件工程? 是指导计算机软件开发和维护的一门工程学科。
1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
目前使用得最广泛的软件工程方法学( 2 种):1. 传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
1-6 什么是软件过程?它与软件工程方法学有何关系?z 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤z 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。
软件生命周期由软件定义、软件开发和运行维护 3 个时期组成,每个时期又进一步划分成若干个阶段。
生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。
瀑布模型的优点: 1. 可强迫开发人员采用规范的方法; 2. 严格规定了每个阶段必须提交的文档;3. 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
瀑布模型的缺点: 1. 在软件开发初期,指明用户全部需求是困难的; 2. 需求确定后,经过一段时间才得到软件最初版本; 3. 完全依赖规格说明,导致不能满足用户需求。
适用中小型项目。
快速原型模型的优点: 1 满足用户需求程度高; 2 用户的参与面广; 3 返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。
软件工程导论课件(第六版)(张海潘编著)(1-13章)

13
件,把经过时间考验而证明正确的管理技术和当前能够得 到的最好的技术方法结合起来,以经济地开发出高质量的 软件并有效地维护它,这就是软件工程。
第1章 软件工程学概述
1.2.1
软件工程的介绍
1.2 软件工程
1968年在第一届NATO会议上曾经给出了软件工程的一个
14
早期定义:“软件工程就是为了经济地获得可靠的且能在 实际机器上有效地运行的软件,而建立和使用完善的工程 原理。” 1993年IEEE进一步给出了一个更全面更具体的定义: “软件工程是: ①把系统的、规范的、可度量的途径应用 于软件开发、运行和维护过程,也就是把工程应用于软件; ②研究①中提到的途径。
第1章 软件工程学概述
1.2.1
软件工程的介绍
1.2 软件工程
软件具有的本质特性
软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常重要 和谐地合作是开发软件的关键 必须有效地支持它的用户 两种背景的人创造产品这个特性与前两个特性紧密相关
15
第1章 软件工程学概述
充分认识到软 2件开发不是某 种个体劳动的 神秘技巧 , 而应该是各类 人员协同配合, 共同完成的工 程项目。 推广使用在实 3践中总结出来 的开发软件的 成功的技术和 方法,并且研 究探索更好更 有效的技术和 方法。
11
首先应该对计 1算机软件有一 个正确的认识。
应该开发和使 4用更好的软件 工具。
1.4 软件过程
1.4 软件过程
1.4.1 瀑布模型
34
瀑布模型一直是唯一被广泛采用的生命周期模型,现在它 仍然是软件工程中应用得最广泛的过程模型。如下图所示为 传统的瀑布模型
图1.2传统的瀑布模型如图1.2所示为传统的瀑布模型。
(完整word版)软件工程导论(第6版)(word文档良心出品)

第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。
2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。
4.软件常常是不可维护的。
5.软件通常没有适当的文档材料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。
软件配置:程序、文档和数据。
软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。
软件:是程序、数据及相关文档的集合。
程序:是能够完成预定功能和性能的可执行的指令序列。
数据:是使程序能够适当地处理信息的数据结构。
文档:是开发、使用和维护程序所需要的图文资料。
软件工程:指导计算机软件开发和维护的一门工程学科。
软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。
2.软件工程的中心课题是控制复杂性。
3.软件经常变化。
4.开发软件的效率非常重要。
5.和谐地合作是开发软件的关键。
6.软件必须有效地支持它的用户。
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。
2.坚持进行阶段评审。
3.实行严格的产品控制4.采用现代程序设计技术。
5.结构应能清楚的审查。
6.开发小组的人员应该少而精。
7.承认不断改进软件工程实践的必要性。
软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.4.1 编写脚本
编写脚本的过程,实质上就是分析用户对系 统交互行为的要求的过程。在编写脚本的过程中, 需要与用户充分交换意见,编写后还应该经过他们 审查与修改。 动态分析寻找事件的开始,然后确定各对象 的可能事件的顺序。 例:要建一个自动取款机的动态模型,就要找出 取款事件、存款事件、查询事件。
10.3.4 确定属性
属性通常用形容词或名词词组来表示。 先列出属性,再删除不必要和不正确的属性。 识别属性的启发性策略:
1. 按一般常识确定。对象的某些属性很直观,如:对 象“人”应该具有姓名、性别、年龄等属性。 2. 在当前的问题域中,对象应有的属性。如:商品的 条形码在超市中是重要属性。
3. 根据系统的责任要求确定属性。如:信用卡的透支 等级。 4. 为对象在操作中实现特定功能,增设属性。如:为 实现温度传感器的报警功能,需设立属性“临界值” 5. 寻找用户给出的需求说明中作定语的词汇。如:红 色的汽车,30岁的人,晴朗的天等,这些定语词汇 都可能是相应对象的属性。
• 接下来分析确定问题域中对象彼此之间的关系。 “每天工作安排”和“每周工作安排”有许多 共同点,可以从它们泛化出一个父类“工作安 排”。此外,问题域的对象之间还有下述关联 关系:牙科诊所诊治多名病人;一位病人有一 份病人记录;一位病人可能预约多次也可能一 次也没预约;牙科诊所在一段时间内将打印出 多份病人清单;牙科诊所开业以来已经建立了 多份预约登记表;预约登记表中记录了多位病 人的预约;根据预约登记表在不同时间可以制 定出不同的工作安排。 • 综上所述,可以画出图中所示的牙科诊所管理 系统的对象模型。
第10章 面向对象分析
10.1 10.2 10.3 10.4 10.5 10.6 10.7 习题 面向对象分析的基本过程 需求陈述 建立对象模型 建立动态模型 建立功能模型 定义服务 小结
10.1 面向对象分析的基本过程
1. OOA阶段
面向对象的分析(OOA)是软件生命周期的一个 阶段,具有一般分析方法所共有的内容、目标及策 略。 也是使用面向对象的概念、原理、分析问题 域、求解问题域的重要阶段。
• “小镇”是牙科诊所的地址属性,不是独 立的对象;“软件系统”和“系统”是 同义词,指的是将要开发的软件产品, 不是问题域中的对象;“就诊时间”、 “预约时间”和“约定时间”在本问题 陈述中的含义相同,指的都是预约的就 诊时间,实际上,预约的就诊时间既包 括日期又包括时间,但是,它们是预约 登记表包含的属性,不是问题域中的独 立的对象;“名字”和“姓名”是同义 词,应该作为病人和预约登记表的属性;
10.3.3 划分主题(建立包图)
在开发大型、复杂系统的过程中,为了降低复杂 程度,人们习惯于把系统再进一步划分成几个不同的 主题,也就是在概念上把系统包含的内容分解成若干 个范畴。
对一个较为复杂的系统建模,要使用大量的模型 元素。把一组具有较强联系的类组织在一起而得到的 类的集合,不但可以控制模型的复杂度,有助于理解, 也有助于开发。
3. 建立动态模型可以安排在基本模型建立之后也可同 时进行。
4. 建立详细说明的活动应该分散进行,并结合 在其他活动之中。最后做一次集中的审查与 补充。 5. 原型开发可反复的进行,开发早期的原型主 要用于证实用户的需求。 6. 分析较小的系统时,可以省略分包的活动, 在分析大中型系统时,可以按需求先划分包, 根据包进行分工。
包图是一种比类和对象抽象层次更高、力 度更大,用以建立系统的高层抽象视图。 包图是在OOA基本模型(类图对象图)之上 建立一个能够帮助人们从不同的认识层次来理解 系统的补充模型。
• 包可直接理解为命名空间,文件夹,是用来组织图形 的封装,包图可以用来表述功能组命名空间的组织层 次。 • 在面向对象软件开发的视角中,类显然是构建整个系 统的基本构造块。但是对于庞大的应用系统而言,其 包含的类将是成百上千,再加上其间“阡陌交纵”的 关联关系、多重性等,必然是大大超出了人们可以处 理的复杂度。这也就是引入了“包”这种分组事物构 造块。 • 包的作用是: 1)对语义上相关的元素进行分组; 2)定义模型中的“语义边界”; 3)提供配置管理单元; 4)在设计时,提供并行工作的单元; 5)提供封装的命名空间,其中所有名称必须惟一
系统将核实病人的名字并提供记录的病人数据, 数据包括病人的病历号等。在每次治疗或清洗 后,助手或保健员将标记相应的预约诊治已经 完成,如果必要的话会安排病人下一次再来。 系统能够按病人姓名和按日期进行查询,能够 显示记录的病人数据和预约信息。接待员可以 取消预约,可以打印出前两天预约尚未接诊的 病人清单。系统可以从病人记录中获知病人的 电话号码。接待员还可以打印出关于所有病人 的每天和每周的工作安排。
2. OOA基本任务是:
运用面向对象的方法,对问题域和系统责任 进行分析和理解,找出描述问题域及系统责任所需的 对象,定义对象的属性、服务以及它们之间的关系。 目标是建立一个符合问题域、满足用户功能需求的 OOA模型。
问题域:被开发系统的应用领域,记载现实世界中要
由这个系统进行处理的业务范围。现实世界中系统 所要解决问题的领域为“问题域”,如“银行业务” 属于“银行的问题域”。 系统责任:所开发的系统应该具备的职能。
• 通常,通过词法分析找到的候选对象中 有许多并不是问题域中真正有意义的对 象,因此,必须对这些候选对象进行严 格的筛选,从中删去不正确的或不必要 的,只保留确实应该记录其信息或需要 其提供服务的那些对象。 • 具体说到牙科诊所问题,“王大夫”只 不过是牙医的一个实例,实际上,本软 件系统的主要功能是管理病人的预约, 并不关心诊所内每名工作人员的分工, 因此,牙医、牙科助手、牙科保育员和 接待员都不是问题域中的对象;
• 答:从对牙科诊所问题的陈述中,可以 找出下列名称作为对象的候选者: • 王大夫,小镇,牙科诊所,牙科助手, 牙科保育员,接待员,软件系统,预约, 病人,预约登记表,就诊时间,预约时 间,约定时间,系统,名字,记录的病 人数据,病历号,姓名,日期,预约信 息,病人清单,病人记录,电话号码, 每天工作安排,每周工作安排。
10.4.2 设想用户界面确定所有事件
确定所有事件、条件和外部事件,事件包 括所有来自用户和设备的输入信息和发行出去 给用户和设备的输出信息。不要有遗漏、异常 事件和条件。
10.4.3 画事件跟踪图(顺序图)
一、确定事件 应该仔细分析每个脚本,以便从中提取出所有外 部事件。事件包括系统与用户( 或外部设备 ) 交互的所有信 号、输入、输出、中断、动作等 等。
一般说来,使用两种方式建立继承(即泛化)关系: 1)自底向上,把现有类的共同性质一般化成一个父类, 如:月报表、日报表、组成一个大类报表。 2)自上向下,把现有类再细化成更小的类,例:菜单 细化成固定菜单、顶部菜单、弹出菜单、下拉菜单等。
10.3.6 反复修改
对象建模不可能一次就保证模型是 完整正确的,面向对象开发的整个过程, 就是不断完善的过程,有些细化和完善工 作是在设计阶段才开始,即在设计和实现 过程中发现问题再回来细化和完善。
• “记录的病人数据”实际上就是“病人记 录”,可以统一使用“病人记录”作为 对象名;“病历号”和“电话号码”是 病人记录的属性,不是独立的对象;从 问题陈述可知,“病人清单”是已预约 但尚未就诊的病人名单,应该包含病人 姓名、预约的就诊时间等内容,它和 “预约信息”包含的内容基本相同,可 以只保留“病人清单”作为问题域中的 对象。
10.3.1 确定类与对象
类与对象是在问题域中客观存在的,系统分析员 的主要任务就是通过分析找出这些类与对象。首先找 出所有候选的类与对象,然后从候选的类与对象中筛 选掉不正确的或不必要的。
10.3.2 确定关联
两个或多个对象之间的相互依赖、相互 作用的关系就是关联。 1.大多数关联可以通过直接提取需求陈述中的 动词词组而得出。 2.通过分析需求陈述,还能发现一些在陈述中 隐含的关联。 3.最后,分析员还应该与用户及领域专家讨论 问题域实体间的相互依赖、相互作用关系, 根据领域知识再进一步补充一些关联。
我们目标是尽可能全面的发现属性,宁可多费时, 也不要遗漏所需要的属性。
10.3.5 识别继承关系
继承关系的建立实质上是知识抽取过程,它应该 反映出一定深度的领域知识,因此必须有领域专家密 切配合才能完成。通常,许多归纳关系都是根据客观 世界现有的分类模式建立起来的,只要可能,就应该 使用现有的概念。
OOA具体过程看下图:
获取用户基本需求
标识类和对象
定义类的结构和层次 表示类(对象)间的关系 为对象行为建模
建立对象模型
8. 实施OOA过程的几点建议:
1.ቤተ መጻሕፍቲ ባይዱ把对系统的需求的捕获与描述放在分析工作的开始。 通过定义用况和建立用况图对用户需求进行规范化 的描述。 2. 把建立基本模型的三个活动安排得比较接近,根据 需要随时从一个活动切换到另一个活动。
3. OOA特点1
OOA采用的概念与问题域的事务保持了最大程度 的一致,对象、对象的属性和操作的命名都强调与 客观事务保持一致。
4. OOA特点2
OOA模型不考虑与系统的具体实现有关的因素例 如采用什么编程语言、用户界面、数据库等,因此 OOA模型独立于具体的现实环境。OOD则是针对系统 的具体实现。
5. OOA的目标是: 建立一个符合问题域、满足用户需求的OOA模型。 6. 用面向对象方法开发软件,通常建立3种形式的模 型,分别是: 描述系统静态的对象模型(类图), 描述系统控制结构的动态模型 描述系统功能的功能模型
7. OOA过程
建立静态模型 描述系统的结构特征,类图。 建立动态模型 描述系统的动态行为特征,交互图、活动图和状 态图。 建立功能模型 描述系统的功能的用例图 写详细说明 注意:三个模型的建立不需要按顺序,不分先后。
4. 建立动态模型的步骤:
第一步,是编写典型交互行为的脚本。 第二步,从脚本中提取出事件,确定触发每个事件的 动作对象以及接受事件的目标对象。 第三步,排列事件发生的次序,确定每个对象可能有 的状态及状态间的转换关系,并用顺序图、状态图 描绘它们。 第四步,比较各个对象的状态图,检查它们之间的一 致性,确保事件之间的匹配。