第6讲 面向对象的分析-建立动态模型和功能模型
软件工程第8章面向对象分析资料

2017/9/4
2017/9/4
图8・2复杂问題的对象模證的5个层次
3017/9/4 6
2017/9/4 8
8.2需求陈述
&2・1书写要点
需求陈述的内容包括:问®范間,功®需求,性«需求,应用环境及假设条件等。
需求陈述应该阐明“做什么”而不是"怎样做”》它应该描述用户的需求而不提出解决问《的方法-应»指出哪些是系统必要的性质,哪些足任选的性质.
书写需求陈述时,妥尽力做到晤法正确,而且应该慎复选用名词、动词.形容词和同义词•
绝大多««求陈述都是有二义性的、不完»的,甚至不一致的.某些需求有明显错课,还有一些需求虽然表迷得很准确,但它们对系统行为存在不良影响或者实现起来遣价
2017/9/4
8.2.2例子
储户
图&3 ATM肅统
2017/9/4 10。
软件工程导论_第十章

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

指导读者(系统分析 员、软件设计人员、 领域专家、管理人员、 用户等)理解大型而
复杂的问题。
一个主题有 一个名称和 一个标识它
的编号
主题层 类-&-对象层
结构层 属性层 服务层
确定主题 找出类-&-对象
识别结构 定义属性 定义服务
图6.1复杂问题对象模型的五个层次
通常在完整地定义每个类中的服务之前,需 要先建立起动态模型和功能模型,通过对着两种 模型的研究,能够更正确更合适地确定每个类应 该提供那些服务。
(1)获取用户对面向对象系统的需求,包括表示场景/用例, 建造需求模型; (2)为每个系统对象标识属性和操作;
(3)定义组织类的结构和层次;
(4)建造对象——关系模型;
(5)建造对象——行为模型;
(6)使用场景/用例复审OO分析模型。
6.2面向对象分析过程
1、获取用户对面向对象系统的需求
和其他分析方法一样,OOA的基本出发点是问题域和 用户需求。系统分析员的主要工作是:通过不断的研究问题 域,建立一个能满足用户需求的系统模型。
(2)复审CRC卡,评估责任和协作者,对连线命 名以表示是什么样的关系。
(3)对连线每一端评估,以确定基数,基数表示 它们之关联的数目。。
7、建造对象——行为模型
对象——行为模型描述了对象之间在行为(操作) 上的依赖关系。
对象——行为模型建模的策略是“操作模拟”和 “执行路线追踪”,从主动对象的主动操作开始:
分析阶段首先要研究用户需求,目的是弄清到底要开 发一个什么样的系统。需要搞清楚的重点问题是:
系统需要提供那些功能 要达到何种性能及可靠性 安全性要求 人机交互要求 系统的对外接口(包括与系统以外的人员、设备和 其他系统的接口)等
面向对象分析与建模

2020/7/11
5
面向对象的基本概念
❖ 继承性 继承性是不同类层次之间共享数据和方法的手段,是软件重 用的一种机制。继承性使软件开发不必都从头开始。对一个 新的类的定义和实现,可以建立在已有类的基础上。把已经 存在类中的数据和方法作为自己的内容,并加入自己特有的 新内容。类的层次结构在概念分析上源于对事物不同层次的 抽象,而在具体实现上却依赖继承机制。
2020/7/11
31
图
❖ 视图由图(Diagrams)组成,UML通常提
供9种基本的图,这些图是用例图、类图、对
象图、状态图、活动图、时序图、协作图、
构件图和部署图。这些基本的图从不同的方
面描述所分析系统的细节特征。其中,状态
图和活动图合称为行为图,时序图和协作图
合称为交互图。为了组织以上的图,还可使
OOA的主要任务是:通过对问题空间的分析, 识别并确定其中(问题空间)的对象和属性, 建立其中对象之间的类别联系和层次关系。
2020/7/11
12
面向对象分析的任务
❖ 面向对象的分析方法进行分析大致应完成如 下五个方面的基本内容
(1) 确定对象和类 (2) 确定结构 (3) 确定主题 (4) 确定属性 (5) 确定方法和消息关联
3
面向对象的基本概念
❖类
类是对象的抽象。一个类定义了大体上相似的一组对象。 类是对象的定义和描述。一个类所包含的方法和数据是 用来描述一组对象的共同行为和属性。通过类来抽象一 个个对象的共同特点、描述一个个对象的相似属性,存 贮一个个对象的一致行为,是面向对象技术最重要的特 征。从形式和定义说明上看,类很像传统程序设计中的 结构,但类同时包含了传统程序设计中数据定义和功能 实现的构造。
面向对象分析全解

第10章面向对象分析10.1面向对象分析的基本过程不论采用哪种软件工程方法开发软件,需求分析的主要工作都是:理解需求、表达需求和验证需求,下面的图概括地表示了参照当前系统建立目标系统的过程。
怎么做做什么抽象化逻辑模型理辭需求导出表达需求图:参照当前系统建立目标系统面向对象分析 (Object-Oriented Analysis,简称00A)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。
10.1.1 概述系统分析员要善于学习、勇于实践,更重要的是一切从实际出发。
[注]“00A就是抽取和整理用户需求并建立问题域精确模型的过程。
”(P231)――这在一开始能做到吗?一一扯蛋10.1.2 3个子模型与5个层次面向对象建模需建立包含系统的三个要素:1)静态结构(对象模型)、2)交互次序(动态模型)、3)数据交换(功能模型)。
建立系统模型的过程是一个迭代(iterations )式的自顶向下的求精过程。
对于一个大型复杂系统来说对象模型一般由下述5个层次组成:图10.2复杂问题的对象模型的5个层次其中主题层是指从一个更高(高于“类”)的抽象层次来描述对象模型(即从一个相当高的层次上描述总体模型),通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。
其实上述5个层次就是00A中建立对象模型的5项主要工作:找出类和对象,识别结构(类或对象之间的关系),识别主题、定义属性、定义服务。
我们知道动态模型和功能模型中都包含了对象模型中的操作,因此人们在定义每个类中的服务前,往往先建立起动态模型和功能模型,这样说来OOA大体上可按下列顺序进行:(1)确定类和对象(2)确定关联(3)划分主题(4)定义属性(5)确定继承关系(8)定义服务需要注意地是在这里我们根本不强调顺序,更不是谈什么步骤。
10.2需求陈述需求陈述的主要任务是准确地回答“系统必须做什么?”,而不是“系统应该怎么做?”10.2.1书写要点1022例子我们用“ ATM 系统”(ATM 是Automatic Teller Machine 的缩写,意即自动柜员机)的开发作为OOA&OOD的实例10.3建立对象模型10.3.1确定类与对象1.找出候选的类与对象(例:P236 ATM 系统)一般来说,大千世界中的客观事物可分为 5类:1) 可感知的物理实体,如:飞机,汽车,房屋2) 人或组织的角色,如:教师,医生,计算机系,学生处 3) 应该记忆的事件,如:飞行,演出,访问,交通事故4) 对象的相互作用,如:购买,结婚,纳税5) 概念,如:政策,刑法,泛化,集合筛选出正确的类与对象我们需要确定的类与对象是:(1) 应该记录的对象(2) 需要它提供服务的对象 2. 入图10.2ATM 系统同时要关注下述6个方面:1)冗余:去掉冗余的类(如“用户”)2)无关:去掉无关的类(如“储蓄所”)3)笼统:去掉笼统的类(如“银行”)4)属性:区分属性和类(某个性质若具有很强的独立性应当作为“类”)5)操作:区分操作和类(本身具有属性且需独立存在的“操作”应当作为“类”)6)实现:忽略实现内容(应当去掉仅和实现有关的“类”,如“事务日志”)10.3.2确定关联对象之间的相互依赖、相互作用的关系就是关联。
对象模型动态模型和功能模型

起始状态
终结状态
投入硬币 (有效的)
显示售 货机就 绪,所 有灯灭
投入硬币 规定金额
金额不足 再投币
显示 金额 总数
显示总 取出饮料 饮料 额已够 结算找零 售空 饮料选 按下 扣减存量 灯亮 择灯亮 饮料 完成交易 选择 无效硬币 按钮 取消 回到就绪状态 取消 回到就绪状态
事件追踪图
事件追踪图侧重于说明发生于系统执行过程中的 一个特定“场景”。 场景也叫做脚本,是完成系统某个功能的一个事 件序列。 场景通常起始于一个系统外部的输入事件,结束 于一个系统外部的输出事件,它可以包括发生在 这个期间的系统所有的内部事件。
自动售货机 饮料编号 价格 属于 属于 投入硬币 送出饮料 显示金额 按下按钮 按退币杆 显示售空 属于 属于
存量计算器 饮料编号 存量 递减 显示售空 重置 选择按钮 按钮状态 按钮灯亮 按钮灯灭 售空灯亮 按下按钮
顾客按 退币杆
顾客 姓名 硬币 投入硬币 取出饮料
购买
顾客按 下按钮
主题(Subject)层:主题给出分析模型的总体概貌,是控制读者 在同一时间所能考虑的模型规模的机制。 类-&-对象(Class & Object)层:对象是数据及其处理的抽象。 它反映了保存有关信息和与现实世界交互的能力。 结构(Structure)层:结构表示问题域的复杂性。类 - 成员结构 反映了一般-特殊关系,整体 - 部分结构反映了整体 - 部分的关 系。 属性(Attribute)层:属性是数据元素,用来描述对象或分类结 构的实例,可在图中给出并在对象的储存中指定,即给出对象 定义的同时,指定属性。 服务(Serves)层:服务是接收到消息后必须执行的一些处理, 可在图上标明它并在对象的储存中指定,即给出对象定义的同 时,定义服务。
11第六章--面向对象的概念与模型28页PPT
6.3 基本概念
fi(X)
f1 f2 f3 …… fi
……
fn
gi(X,S)
输 出
S’
输 出
2020/1/4
11
6.3 基本概念
特点: ① 以数据为中心,不设与数据无关的操作; ② Object主动处理而不 被动地等待被处理,外部只能
通过message请求操作; ③ 具有黑盒性:外部操作时,无须知道该object内部
邮递员,24小时都开门 唉,那就先送…束…花吧 ——
…… Methods:
Post_office.Send (request, payment) send;
sell;
……
Object
对不起, 本邮局不提供
此类服务
对象Object = 数据Attribute + 操作Method
注意:Object内部的attributes不允许外部用户直接改动,只有当它
第六章 面向对象的概念与模型
(Object - Oriented Methodology)
传统方法学的缺点
1、瀑布模型的缺点:僵化
瀑布模型要求:生命周期各阶段间遵守严格的 顺序。
实际情况是:软件开发往往在反复实践中完成。
瀑布模型要求:预先定义并“冻结”软件需求。
实际情况是:某些系统的需求的一个逐渐明确 的过程,且预先定义的需求到软件完成时可能 已经过时。
稳定性好:软件功能需求的变化不牵动全局, 只需局部修改; Class 独立性强:只要修改不涉及class的对 外接口,则内部修改完全不影响外部调用; Inheritance和多态性(polymorphism)使其很 容易被修改和扩充; 容易理解; 容易测试、调试
软件工程导论课件第10章-面向对象的分析(第六版)(张海潘编著)
步骤: 理解----用户、分析员和领域专家 表达----需求规格说明书(对象模型、动态模型、功能模型)
验证----二义性,完善性
对象模型最基本、最重要、最核心。
6
第6页,共63页。
10.1 面向对象分析的基本过程
2、3个子模型与5个层次
3个子模型 在面向对象分析中,主要由对象模型、动态模型和功能模型
10
第10页,共63页。
10.2 需求陈述
10.2.2 实例:自动取款机(ATM)系统
ATM机系统问题描述
银行网络中包含柜员和 ATM,ATM 被共享中心所分享。
每家银行利用自己的计算机维护自己的账户并处理账户所属的交 易,这些交易包括存款和取款。
某些银行拥有自己的柜员站,柜员站直接和该银行的计算机通信, 柜员键入账户数据和交易数据。
29
第29页,共63页。
经过筛选之后,得到ATM系统中各个类的属性,如图所示: 图中还标出了一些限定词:“卡号”、“分行代码”、“账号”、“雇员
号”、“站号”
30
第30页,共63页。
10.3.5 识别继承关系
建立类间的继承是为了共享其公共性质/属性。
继承也对类按层次加以组织。 继承关系反映出一定深度的领域知识,需领域专家密
拥有 ATM
➢ 储户
拥有 帐户
➢ 分行计算机 维护 帐户
➢ ……
…… ……
2)需求陈述中隐含的关联
➢ 分行
组成 总行
➢ 分行
保管 帐户
➢ ……
…… ……
3)根据问题域知识得出的关联
➢ 现金兑换卡 访问 帐户
➢ 分行
雇用 柜员
软件工程 第6章 面向对象方法学
(a) 屏幕上的圆
(b) 圆对象
★要求Circle1在屏幕上移动,需向其发消息: Circle1.Move(10,19)
软件工程概论教程
常州大学信息科学与工程学院
卢 莹
Circle 1
Center(15,10) Radius(8) Color(Green) Draw( ) Move(△X,△Y)
Circle 2
Center(40,35) Radius(4) Color(Blue) Draw( ) Move(△X,△Y)
(a) 屏幕上的圆
(b) 圆对象
◆客观存在的事物
抽象
Circle Center Radius Color
对象
抽象
类
Draw( ) Move(△X,△Y)
(c) 圆类的定义
软件工程概论教程 常州大学信息科学与工程学院 卢 莹
张三是学生类的一个实例,张三的信息包括:
03319415(学号)、张三(姓名)、19850822(生日)、 计算机科学与技术 (专业)、计算机036、130xxxxxxxx、…… 张三可以进行的操作: 查询个人信息;修改电话号码、……
软件工程概论教程 常州大学信息科学与工程学院 卢 莹
(2)类的实现机制(以C++为例)
①类是一个抽象数据类型:
数据定义(成员变量) 类定义 (class) 可见性: private、protected、 public、friend
操作定义(成员函数)
②类定义中有创建实例、撤消实例的机制:
构造函数(constructor)—— 类名() (C++ 规定,每个类必须有默认的构造函数,没有构造函数 就不能创建对象。) 析构函数(destructor)—— ~类名() (析构函数是特殊的成员函数,只有在类对象的生命期结束 时,由系统自动调用。)
第六章(1)_面向对象分析
6.4 建立对象模型
建立对象模型的典型工作步骤:
确定对象类和关联,对于大型复杂问题还要进一步划分出 若干个主题; 给类和关联增添属性,以进一步描述它们; 利用适当的继承关系进一步合并和组织类;
在建立动态模型和功能模型之后,确定类中的操作。
6.1 三个模型的建模思想
• 6.1.4 三个模型之间的关系
1. 针对每个类建立的动态模型,描述了类实例的生命周期或运行周期。 2. 状态转换驱使行为发生,这些行为在数据流图中被映射成处理,在用例图中被 映射成用例,它们同时与类图中的服务相对应。
3. 功能模型中的处理(或用例)对应于对象模型中的类所提供的服务。通常,复 杂的处理(或用例)对应于复杂对象提供的服务,简单的处理(或用例)对应 于更基本的对象提供的服务。有时一个处理(或用例)对应于多个服务,也有 一个服务对应于多个处理(或用例)的时候。 4. 数据流图中的数据存储,以及数据的源点/终点,通常是对象模型中的对象。
6.4.建立对象模型
面向对象分析首要的工作,是建立问题域的对象模型。 对象模型描述了现实世界中的“类与对象”以及它们之间 的关系,表示了目标系统的静态数据结构。
静态数据结构对应用细节依赖较少,比较容易确定 当用户的需求变化时,静态数据结构相对来说比较稳定
因此,用面向对象方法开发绝大多数软件时,都首先建立 对象模型,然后再建立另外两个子模型。
• 6.1.2 动态模型
动态模型表示瞬时的、行为化的系统“控制”性质,它规定了对象模型中 对象的合法变化序列。 一旦建立起对象模型后,就需要考察对象的动态行为。所有的对象都有自 己的生命周期。对一个对象而言,生命周期由许多阶段组成,在每个 特定阶段中,都有适合该对象的一组运行规律和行为规则,用以规范 对象的行为,生命周期中的阶段也就是对象的状态
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UML顺序图) 竖线代码对象,横线箭头代表事件,时间从上到下
画状态图
如果一个对象接收了事件,跟过去的状态无关,则改 对象是不需要状态图的. 如果对象接收了事件,引起状态的改变,下一个状态 取决于上一个状态和接收的事件,则需要状态图 由跟踪图绘制状态图时,考虑指向一个竖线的事件, 事件之间的间隔为状态. 而射出的箭头,为该状态的 动作. 再将其他脚本的跟踪图,一些相关事件合并到本状态 图.当状态图覆盖了所有的脚本,则完成
1.动态模型
如果知识存储数据的系统,动态模型没有意义.但如果开发交互式系统,动态模 型起着很重要的作用. 1 编写交互行为的脚本 2 从脚本中提取事件,确定促发以及接受事件的对象 3 排列事件发生的次序,确定每个对象的状态,及其转换关系,并绘制状态图 4 比较状态图,检查一致性, 确保事件之间的匹配
编写脚本
脚本系统执行期间错情况; 用户与系统对象交换信息时,发生一个事件. 信息值为参数,也可以没有参数.
交互系统的用户界面
分析阶段建立的动态 模型重在系统控制逻 辑 各种用户界面都可以 完成相同的逻辑.但由 于用户界面被用户接 受,也需要经过评价与 试用,因此分析阶段也 要给出界面原型.
ATM系统
建立功能模型
描述处理功能
定义服务
对象有名,属性,服务.服务在动态模型和功能 模型之后定义 1 常规行为, 变量的读写-get, set 2 从状态图中找到的操作 3 数据流图中的处理操作 4 采用继承减少服务的定义
事件跟踪图
画状态图之前,画事件跟踪图.直接由脚本映射. 1 确定事件
从脚本中找出系统与外界交互的所有信号:输入,输出,中断,动作,包括
异常事件,出错条件 对象到对象的动作也是事件 如果对事件的相应是相同的,则应该是同一事件 分析出发送事件对象,和接受事件对象.
2 画出事件跟踪图