软件工程 第10 ppt

上传人:ldj****22 文档编号:49011785 上传时间:2018-07-22 格式:PPT 页数:69 大小:625KB
返回 下载 相关 举报
软件工程 第10 ppt_第1页
第1页 / 共69页
软件工程 第10 ppt_第2页
第2页 / 共69页
软件工程 第10 ppt_第3页
第3页 / 共69页
软件工程 第10 ppt_第4页
第4页 / 共69页
软件工程 第10 ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《软件工程 第10 ppt》由会员分享,可在线阅读,更多相关《软件工程 第10 ppt(69页珍藏版)》请在金锄头文库上搜索。

1、第10章 面向对象分析1 面向对象分析的基本过程 2 需求陈述 3 建立对象模型 4 建立动态模型 5 建立功能模型 6 定义服务1. 不论采用哪种方法开发软件,分析的过程:都是提取系统需求的过程。 2. 分析工作主要包括3项内容: 理解需求 表达需求 验证需求为什么要验证需求?3. 面向对象分析(OOA)的关键:是识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的正确模型。 4. 在用面向对象观点建立起的3种模型: 对象模型 动态模型 功能模型哪个模型是最基本、最重要、最核心的?1. 面向对象分析:就是抽取和整理用户需求并建立问题域精确模型的过程。 2. 面向对象分析的过程

2、:(1)面向对象分析过程从分析陈述用户需求的文件开始。 文件的来源有哪些?10.1 面向对象分析的基本过程10.1.1 概述2. 面向对象分析的过程:(1)面向对象分析过程从分析陈述用户需求的文件开始。(2)在分析用户需求的过程中,系统分析员需要和用户反复协商,必要时,建立一个“原型系统”,以正确地提炼出用户的需求。(3)在深入理解用户需求后,要进行问题域建模,在建模的过程中,要考虑OOA的“可重用性”,仔细研究相同的或类似的问题域进行OOA的结果。3. 3个子模型与5个层次 面向对象建模得到的3个模型: 对象模型 动态模型 功能模型 复杂问题(大型系统)的对象模型通常由下述5个层次组成:如下

3、图所示:图10.1 复杂问题的对象模型的5个层次抽象 具体 什么是主题?. 主题又叫范畴,是指导读者理解大型、复杂模型的一种机制。. 读者:指的是?. 也就是说,通过划分主题把一个大型、复杂的对象模型分解成几个不同的概念范畴。. 面向对象分析从下述两个方面来体现Miller原则:控制可见性和指导读者的注意力。 上述5个层次对应着在面向对象分析过程中建立对象模型的5项主要活动:找出类与对象,识别结构,识别主题,定义属性,定义服务。 通常在完整地定义每个类中的服务之前,需要先建立起动态模型和功能模型。 综上所述,在概念上可以认为,面向对象分析大体上按照下列顺序进行:(1)寻找类与对象,(2)识别结

4、构,(3)识别主题,(4)定义属性,(5)建立动态模型,(6)建立功能模型,(7)定义服务。 但是,正如前面已经多次强调指出过的,分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要反复构造多遍才能建成。1. 需求陈述的内容有哪些?2. 书写需求陈述时,要注意哪些问题?3. 总结10.2 需求陈述10.2.1 书写要点10.2.2 例子图10.2 ATM系统1. 面向对象分析首要的工作:是建立问题域的对象模型。这个模型描述了现实世界中的“类与对象”以及它们之间的关系,表示了目标系统的静态数据结构。 2. 建立对象模型时的主要信息来源: 需求陈述 应用领域的专业知识 关于客观世界的常识10

5、.3 建立对象模型3. 建立对象模型的典型工作步骤是:(1)确定对象类和关联(2)进一步划分主题 (3)给类和关联增添属性;(4)合并和组织类(5)最后确定类中的操作工作步骤: 1. 找出候选的类与对象 2. 筛选出正确的类与对象10.3.1 确定类与对象1. 找出候选的类与对象1) 可感知的物理实体2) 人或组织的角色3) 应该记忆的事件4) 两个或多个对象的相互作用5) 需要说明的概念10.3.1 确定类与对象 另一种更简单的分析方法: 非正式分析1) 以用自然语言书写的需求陈述为依据,2) 把陈述中的名词作为类与对象的候选者,3) 用形容词作为确定属性的线索,4) 把动词作为服务(操作)

6、的候选者。10.3.1 确定类与对象下面以ATM系统为例,说明非正式分析过程。 银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行, 软件,成本,市,街道,营业厅,储蓄所, 柜员,储户,现金,支票,账户,事务, 现金兑换卡,余额,磁卡,分行代码,卡号, 用户,副本,信息,密码,类型,取款额, 账单,访问。 通常,在需求陈述中不会全部写出问题域中所有有关的类与对象,因此,分析员应该根据领域知识或常识进一步把隐含的类与对象提取出来。例如,在ATM系统的需求陈述中虽然没写“通信链路”和“事务日志”,但是,根据领域知识和常识可以知道,在ATM系统中应该包含这两个实体。

7、2. 筛选出正确的类与对象(1) 冗余 (2) 无关(3) 笼统 (4) 属性 (5) 操作 (6) 实现2. 筛选出正确的类与对象(1) 冗余 如果两个类表达了同样的信息,则应该保留在此问 题域中最富于描述力的名称。 例如: ATM系统中的 “储户与用户”,“现金兑换卡与磁卡及副本” (2) 无关仅需要把与本问题密切相关的类与对象放进目标系 统中。 例如: ATM系统中的候选类“成本”、“市”、“街道”、“营业厅”和“储蓄所”应该去掉。(3) 笼统在需求陈述中常常使用一些笼统的、泛指的名词, 但在需求陈述中有更明确更具体的名词对应它们 所暗示的事务,因此,通常把这些笼统的或模糊 的类去掉。

8、例如:ATM系统为例,“银行”实际指总行或分行,“访问”在这里实际指事务,那么在本例中应该去掉“银行”、“网络”、“系统”、“软件”、“信息”、“访问”等候选类。(4) 属性在需求陈述中有些名词实际上描述的是其他对象 的属性,应该把这些名词从候选类与对象中去掉。 当然,如果某个性质具有很强的独立性,则应把 它作为类而不是作为属性。 例如:在ATM系统中,“现金”、“支票”、“取款额”、“账单”、“余额”、“分行代码”、“卡号”、“密码”、“类型”等,实际上都应该作为属性对待。(5) 操作在需求陈述中有时可能使用一些既可作为名词,又 可作为动词的词,要正确地决定把它们作为类还是 作为类中的操作。

9、 例如:谈到电话时通常把 “拨号” 当作动词,当构造电话模型时确实应该把它作为一个操作,但是,在开发电话的自动记账系统时,“拨号”需要有自己的属性(例如日期、时间、受话地点等),因此应该把它作为一个类。总之,本身具有属性需独立存在的操作,应该作为 类与对象。(6) 实现 例如:在ATM系统中,“事务日志” 是对一系列 事务的记录; “通信链路”在逻辑上是一种联系,在系统实现时它是关联类的物理实现。 总之:应该暂时去掉 “事务日志”和“通信链路”这 两个类,在设计或实现时再考虑它们。 综上所述,在ATM系统的例子中,经过初步筛选,剩下下列类与对象: ATM、中央计算机、分行计算机、柜员终端、总行

10、、分行、柜员、储户、账户、事务、现金兑换卡。1. 初步确定关联2. 筛选3. 进一步完善10.3.2 确定关联1. 初步确定关联. 在需求陈述中使用的描述性动词或动词词组,通常表示关联关系。. 通过分析需求陈述,还能发现一些在陈述中隐含的关联。. 分析员还应该与用户及领域专家讨论问题域实体间的相互依赖、相互作用关系,根据领域知识再进一步补充一些关联。 以ATM系统为例,经过分析初步确定出下列关联:10.3.2 确定关联(1) 直接提取动词短语得出的关联 . ATM、中央计算机、分行计算机及柜员终端组成 网络。 . 总行拥有多台ATM。 . ATM设在主要街道上。 . 分行提供分行计算机和柜员终

11、端。 . 柜员终端设在分行营业厅及储蓄所内。 . 分行分摊软件开发成本。 . 储户拥有账户。 . 分行计算机处理针对账户的事务。 . 分行计算机维护账户。. 柜员终端与分行计算机通信。 . 柜员输入针对账户的事务。 . ATM与中央计算机交换关于事务的信息。 . 中央计算机确定事务与分行的对应关系。 . ATM读现金兑换卡。 . ATM与用户交互。 . ATM吐出现金。 . ATM打印账单。 . 系统处理并发的访问。(2) 需求陈述中隐含的关联 . 总行由各个分行组成。 . 分行保管账户。 . 总行拥有中央计算机。 . 系统维护事务日志。 . 系统提供必要的安全性。 . 储户拥有现金兑换卡。

12、(3) 根据问题域知识得出的关联 . 现金兑换卡访问账户。 . 分行雇用柜员。2. 筛选 (1) 已删去的类之间的关联 例如:以ATM系统为例,由于已经删去了“系统”、“网络”、“市”、“街道”、“成本”、“软件”、“事务日志”、“现金”、“营业厅”、“储蓄所”、“账单”等候选类,因此,与这些类有关的下列8个关联也应该删去: ATM、中央计算机、分行计算机及柜员终端组成网络。 ATM设在主要街道上。 分行分摊软件开发成本。 系统提供必要的安全性。 系统维护事务日志。 ATM吐出现金。 ATM打印账单。 柜员终端设在分行营业厅及储蓄所内。(2) 与问题无关的或应在实现阶段考虑的关联例如:在ATM

13、系统中,“系统处理并发的访问”并没有标明对象之间的新关联,它只不过提醒我们在实现阶段需要使用实现并发访问的算法,以处理并发事务。(3) 瞬时事件关联应该描述问题域的静态结构,而不应该是一个 瞬时事件。 例如:在ATM系统中,“ATM读现金兑换卡”描述了ATM与用户交互周期中的一个动作,它并不是ATM与现金兑换卡之间的固有关系,因此应该删去。类似地,还应该删去“ATM与用户交互”这个候选的关联。(4) 三元关联三个或三个以上对象之间的关联,大多可以分解 为二元关联或用词组描述成限定的关联。 例如:在ATM系统中,“柜员输入针对账户的事务 ”可以分解成 “柜员输入事务” 和 “事务修改账户” 这样

14、两个二元关联。 (5) 派生关联应该去掉那些可以用其他关联定义的冗余关联。 例如,在ATM系统中,“总行拥有多台ATM”实质上是“总行拥有中央计算机”和“ATM与中央计算机通信”这两个关联组合的结果。3. 进一步完善(1) 正名 (2) 分解(3) 补充 (4) 标明重数3.进一步完善 (1) 正名应该仔细选择含义更明确的名字作为关联名。 例如:“分行提供分行计算机和柜员终端”不如改为“分行拥有分行计算机”和“分行拥有柜员终 端”。 (2) 分解为了能够适用于不同的关联,必要时应该分解以前 确定的类与对象。 例如:在ATM系统中,应该把“事务”分解成“远程事务”和“柜员事务”。(3) 补充发现

15、了遗漏的关联就应该及时补上。 例如:在ATM系统中把“事务”分解成上述两类之后,需要补充“柜员输入柜员事务”、“柜员事务输进柜员终端”、“在ATM上输入远程事务”和“远程事务由现金兑换卡授权”等关联。 (4) 标明重数应该初步判定各个关联的类型,并粗略地确定关联 的重数。图10.3 ATM系统原始的类图 对于含有较多对象的系统,则往往先识别出类与对象和关联,然后划分主题,并用它作为指导开发者和用户观察整个模型的一种机制; 应该按问题领域而不是用功能分解方法来确定主题。此外,应该按照使不同主题内的对象相互间依赖和交互最少的原则来确定主题。 以ATM系统为例,可以把它划分成总行、分行和ATM等3个

16、主题。10.3.3 划分主题1. 分析 . 通常,在需求陈述中用名词词组表示属性,例如,“汽车的颜色”或“光标的位置”。 . 往往用形容词表示可枚举的具体属性,例如,“红色的”、“打开的”。 . 属性的确定既与问题域有关,也和目标系统的任务有关。 . 在分析阶段不要考虑那些纯粹用于实现的属性。10.3.4 确定属性2. 选择 (1) 误把对象当作属性如果某个实体的独立存在比它的值更重要,则应把 它作为一个对象而不是对象的属性。 (2) 误把关联类的属性当作一般对象的属性如果某个性质依赖于某个关联链的存在,则该性质 是关联类的属性,也不能把它归并成相互关联的两 个对象中任一个的属性。 (3) 把限定误当成属性如果把某个属性值固定下来以后能减少关联的重数, 则应该考虑把这个属性重新表述成一个限定词。(4) 误把内部状态当成了属性 如果某个性质是对象的非公开的内部状态,则应该 从对象模型中删掉这个属性。 (5) 过于细化 在分析阶

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号