2.4 分析建 模 方法
结构化分析 (传统建模方法 )
面向对象分析
2.4.1 结构化分析方法
(Structured Analisys,SA)
基于数据流技术的分析方法需求获取应遵循的三条基本原则:
分解
抽象
投影分析模型的结构数据字典数据流图E-R图状态 变 迁图加工规约控制规约数据对象描述分析模型的元素
数据字典 (DD),模型核心 (中心库 )
E-R图 (ERD):
数据流图 (DFD)
指明数据在系统中移动时如何被变换 ;
描述对数据流进行变换的功能 ;
DFD中每个功能的描述包含在加工规约
(小说明 )。
状态变迁图 (STD)
指明作为外部事件的结果,系统将如何动作。
数据流图
(DFD,Data Flow Diagram)
描述逻辑模型的图形工具,
表示数据在系统内的变化。
实例 考务处理系统功能
(1)对考生送来的报名单进行检查 ;
(2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站 ;
(3)对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者 ;
(4)制作考生通知单 (含成绩及合格 /不合格标志 )送给考生 ;
(5)按地区进行成绩分类统计和试题难度分析,产生统计分析表。
考务处理系统 顶层数据流图考生考务处理系统考试中心阅卷站不合格报名单报名单准考证考生通知单 成绩清单合格标准错误成绩清单考生名单统计分析表登记报名单报名单准考证
1
统计成绩
2不合格报名单考生通知单成统计分析表
0层 数据流 图考生名册绩清单合格标准考生名单成绩 清单错误
S
21
3
2.22.1
2.3
3.1 3.2
顶层
( 不编号 )
0层
1层
SafeHomede的第 0层DFD
SafeHomede
软件系统用户命令和数据显示信息控制面板传感器 传感器 状态警铃电话线警告类型电话号码拨音控制面板显示
SafeHomede的第 1层 DFD
控制面板与用户交互 控制面板显示密码电话号码拨音传感器状态显示信息配置请求用户命令和数据配置系统警铃电话线传感器配置信息显示信息和状态监控传感器激活/不激活系统传感器信息密码处理 警告类型检验 id信息开始停止 状态信息
SafeHomede的第一层CFD
控制面板与用户交互 控制面板显示显示活动状态(完成、在处理中)
配置系统警铃电话线传感器配置信息显示信息和状态监控传感器激活/不激活系统警告信号密码处理传感器事件警告状态超时闪烁标志开/关切换
SafeHomede的状态变迁图读用户输入 超时监视系统状态传感器事件行为显示用户反馈与,用户交互,有关开关 /切换与,监视 &控制系统,有关显示活动状态与,用户交互,有关传感器事件与,显示信息 &状态,有关与,监视 &控制系统,有关传感器事件传感器事件与,监视 &控制系统,有关传感器事件与,显示信息
&状态,有关闪烁与,显示信息 &状态,有关
2.4.2 面向对象分析方法思考题
软件开发中为什么要使用面向对象方法?
面向对象分析方法与结构化分析方法有哪些相似之处?有何区别?
对象( object)
现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现。
对象具有的含义:
在现实世界中:
是客观世界中的一个实体
在面向对象程序中:
表达成计算机可理解、可操纵、具有一定 属性 和 行为 的对象
在计算机世界中:
是一个可标识的存储区域面向对象方法是一种运用对象、类、继承、封装、
聚合、消息传递、多态性等概念来构造系统的 软件开发方法。
面向对象 =对象 + 类 + 继承 + 消息通信面向对象的主要特征:
封闭性 (Encapsulation)
继承性 (Inheritance)
多态性 (Polymorphism)
用离散对象的集合来构造软件类( class)
具有共同属性和行为的对象的抽象
类与对象的关系
类是对象的抽象
对象是类的实例类对象封装封装是软件开发方法的重要原则,有两个涵义:
把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位
(对象)。
尽可能隐蔽对象的内部细节
(信息隐蔽)
传统方法数据与过程是分离的过程 1输入输出 过程 2
过程 3
数据实体属于该对象的数据对象处理数据的方法消息消息对象把数据和处理数据的方法封状成一个单元传统方法和面向对象方法的比较传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出面向对象方法系统是交互对象的集合对象与人或其它对象交互对象发送与响应消息继承 (继承性 inheritance)
继承性是父类和子类之间共享数据和方法的机制
继承性具有传递性
继承性包括单继承和多重继承 子类继承部分增加部分父类共性部分继承性作用
使软件系统具有开放性
更好地进行抽象与分类
增强代码的重用率多态(多态性 polymorphism)
不同的对象收到同一消息可产生完全不同的结果,这一现象叫做 多态
多态的效果?
用户发送一个通用的消息,而实现的细节则由接收对象自行决定多态性的作用
增强了操作的透明性,可理解性和可扩展性
增强了软件的灵活性和重用性消息 (message)
消息? 对象之间相互请求或相互协作的途径,是要求某个对象执行某个功能操作的规格说明
消息内容? 通常包含接收方及请求接收方完成的功能信息
发送方? 发出消息,请求接收方响应
接收方? 收到消息后,经过解释,激活方法,予以响应为什么对面向对象方法感兴趣?
面向对象方法的主要优点:?
自然性追求软件系统对现实系统的直接模拟,
尽量实现将现实世界中的事物直接映射到软件系统的解空间中。
软件复用可复用性(可重用性) reusebility
可扩展性
可管理 性标准建模语言 UML
UML的设计目标:
运用面向对象概念来构造系统模型
建立起从概念模型直至可执行体之间明显的对应关系
创建一种对人和机器都适用的建模语言标准建模语言 UML
UML模型图( 5类,10种):
用例图
静态图(类图,对象图,包图)
行为图(状态图,活动图)
交互图(顺序图,协作图)
实现图(构件图,配置图)
标准建模语言 UML (用例图)
一个用例 是用户与计算机之间为达到某个目的的一次典型交互作用。
用例图 描述系统外部的执行者与系统的用例之间的某种联系。
所谓 用例 是指对系统提供的 功能 (或称系统的用途)的一种描述;
执行者 是那些可能使用这些用例的 人或外部系统 ;
用例和执行者之间的联系描述了,谁使用哪个用例”。
标准建模语言 UML (用例图)
设置边界风险分析交易估计进行交易超越边界更新帐目评价贸易经理营销人员记帐系统销售人员
使用?
使用?
扩展?
描述系统外部的 执行者 与系统的 用例 之间的某种联系标准建模语言 UML (类图)
类、对象和它们之间的关系是最基本的建模元素。 对于一个想要描述的系统,其 类模型、对象模型以及它们之间的关系揭示了系统的结构。
类图 描述了系统中的类及其相互之间的各种关系,其本质反映了系统中包含的各种对象的类型以及对象间的各种静态关系
(关联,子类型)。
标准建模语言 UML (类图)
类图中的图符:
类,表示一个类,其中第一栏是类的名,第二栏是类的属性,第三栏是类的操作。
包,包是一种分组机制,表示一个类图集合。
关联,用于表示类的对象之间的关系。
其特殊形式有 组成关联和聚集关联 。
Operations
Attributes
Class
Package
标准建模语言 UML (类图)
类图中的图符:
聚集关联,用于表示类的对象之间的关系是整体与部分的关系。
组成关联,用于表示类的对象之间的关系:整体拥有各部分,部分与整体共存,如整体不存在了,部分也会随之消失。
泛化关联,泛化关系(继承关系)定义了类和包间的一般元素和特殊元素之间的分类关系。
标准建模语言 UML (类图)
类图中的图符:
依赖关系,有两个类或包元素 X,Y,修改元素 X的定义可能会引起对另一个元素 Y的定义的修改,则称元素 Y依赖于元素 X。
对象,类的一个实例。
链接,用于表示对象间的关联关系的一个实例。
Values
Object
标准建模语言 UML (类图)
单一继承
Car
Powered Vehicle
Truck TruckCar
Powered Vehicle
类图 描述了系统中的类及其相互之间的各种关系标准建模语言 UML (类图)
多重继承
Aircraft Powered Vehicle
CarAirplane Truck
标准建模语言 UML (类图)
关联的基本 UML表示法
Person Company
Country
0..*
0..* 0..*
1..*1..1
0..1
居民雇员雇主
Employmen
t
SiteResidence
标准建模语言 UML (类图)
整体 /部分关联
组成
聚集标准建模语言 UML (类图)
组成 滑翔机机翼机尾机身
fuselage tail leftWing rightWing1 1
1 1
用整体 -部分结构实现复用车床
……
……
机床 ……
……
刨床
……
……
起重机 ……
……
电动机 …
………
钻床
……
……
送料车 ……
……
聚集往往是同构的。 Eg.森林是树木构成的。
聚集标准建模语言 UML (类图)
订单
DateReceived
isPrepaid
number:String
prce:Money
Dispatch()
close()
订单项
Quantity:Integer
price:Money
isSatisfied:Boolean
1
*项客户
Name
address
CreditRating():String
团体客户
ContactName
creditRating
creditLimit
Remind()
billforMonth(Intrger)
雇员产品个人客户
CreditCard#
{creditRating()
=“poor”}
销售代表
1*
0..1
1*
*
标准建模语言 UML (对象图)
对象图
对象图是类图的一种变形。除了在对象名下面要加下划线以外,对象图中所使用的符号与类图基本相同。
对象图是类图的一种实例化。一张对象图表示的是与其对应的类图的一个具体实例,即系统在某一时期或者某一特定时刻可能存在的具体对象实例以及它们相互之间的具体关系。
标准建模语言 UML (对象图)
作者 计算机名字,String
内存,Ineger
名字,String
年龄,Integer 0..1
Uses
1..*
小王:作者小王的工作 PC:
计算机名字 =,王小影”
年龄 = 32
小王的工作 PC:
计算机名字 =,Compaq X”
内存 = 32
名字 =,Dell486”
内存 = 64
类图对象图
对象图还 常常被用作合作图的一部分,用以展示一组对象实例之间的动态协作关系。
标准建模语言 UML (状态图)
状态图
状态图是对类的一种补充描述,它展示了此类对象所具有的可能的状态以及某些事件发生时其状态的转移情况。
表示状态。状态的改变称作转移,状态转移由箭头表示,箭头旁可以标出转移发生的条件。状态转移可以伴随有某个动作,它表明当转移发生时系统要做什么。
表示初始状态。
表示终止状态。
标准建模语言 UML (状态图)
下降状态在第一层 上升状态向第一层下降空闲状态上升到达到达 上升超时下降到达第一层此类对象所具有的可能的状态以及某些事件发生时其状态的转移情况标准建模语言 UML (顺序图)
顺序图
顺序图描述了对象之间动态的交互关系,着重体现对象间消息传递的时间顺序 。
顺序图由一组对象构成,每个对象分别带有一条竖线,称作对象的生命线,它代表时间轴,时间沿竖线向下延伸。
顺序图描述了这些对象随着时间的推移相互之间交换消息的过程。
消息用从一条垂直的对象生命线指向另一个对象的生命线的水平箭头表示。
图中还可以根据需要增加有关时间的说明和其他注释。
标准建模语言 UML (顺序图)
:计算机,打印服务程序,打印队列:打印机打印文件打印文件 [打印机空闲 ]
保存文件 [打印机忙 ]
着重体现对象间消息传递的时间顺序生命线消息标准建模语言 UML (协作图)
协作图
与顺序图作用相同,协作图也是用来描述系统中对象之间的动态协作关系。 协作图侧重于描述各个对象之间存在的消息收发关系(交互关系),
而不专门突出这些消息发送的时间顺序。
在协作图中,对象同样是用一个对象图符来表示,
箭头表示消息发送的方向,而消息执行的顺序则由消息的编号来表明。
标准建模语言 UML (协作图)
:计算机,打印队列
:打印服务程序,打印机
1,打印文件 3,保存文件 [打印机忙 ]
2.打印文件 [打印机空闲 ]
侧重于描述各个对象之间存在的消息收发关系箭头表示消息发送的方向标准建模语言 UML (活动图)
活动图
活动图描述系统中各种活动的执行顺序,通常用于描述一个操作中所要进行的各项活动的执行流程。 同时,它也常被 用来描述一个用例的处理流程,或者某种交互流程。
活动图由一些活动组成,图中同时包括了对这些活动的说明。当一个活动执行完毕之后,控制将沿着控制转移箭头转向下一个活动。活动图中还可以方便地描述控制转移的条件以及并行执行等要求。
在很多方面,活动图是结构化开发中流程图和数据流程图
(DFD) 的面向对象等同体 。
标准建模语言 UML (活动图)
活动图的图符
实心圆表示活动图的起点,实际上是一个占位符,
带边框的实心圆表示终点。
圆角矩形表示执行的过程或活动。
菱形表示判定点。
箭头表示活动之间的转换,各种活动之间的流动次序。
[条件 ] 箭头上的文字表示继续转换所必须满足的条件,
总是使用格式,[条件 ]”来描述。
粗线条表示可能会并行进行的过程的开始和结束。
标准建模语言 UML (活动图)
加水到容器中将咖啡放到 过滤器中点燃咖啡炉取出咖啡杯把过滤器放到咖啡炉上冲调咖啡倒咖啡找饮料取一听可口可乐喝饮料人 [找到可口可乐 ]
[没有可口可乐 ][没有咖啡 ]
[找到咖啡 ]
熄灭咖啡炉描述 一个操作 中所要进行的各项活动的执行流程实例:饮料自动售货机系统设置一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置 50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。
销售顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。
取消交易顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。
找出饮料自动售货机系统中的对象设置一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置 50罐饮料,其按钮设计在各种饮料样本的下方,若经 金额计算器 累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。
销售顾客 将硬币投入 售货机,经累加金额足额的饮料 选择键 灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。
取消交易顾客可在按下选择键前任何一个时刻,拉动 退币杆 取消交易收回硬币。
饮料自动售货机 系统 对象图贩卖机饮料号码价格投币 -接受饮料掉出金额显示按纽退币杆售完显示存量计算器饮料号码存量递减售完显示重置选择钮选择钮状态灯亮灯熄售完灯亮按钮顾客姓名硬币投币 -置入拿取饮料退币杆退币杆状态拉动金额计算器金额累加找零重置购买选取被拉动属于属于属于属于举例,饮料自动售货机 系统 的状态图投入硬币
(有效的)
按下选择饮料键
Do:显示售货机在备用所有灯都关闭
Do:显示金额总数
Do:显示金额已够饮料选择灯亮取出饮料结算找零扣减存量完成交易饮料“售完”灯亮投入硬币金额
(1元,5元,10元 )
金额不足再投币存量为零无效的硬币取消取消回到备用状态回到备用状态此类对象所具有的可能的状态以及某些事件发生时其状态的转移情况存量为零找零扣减存量灯亮余额饮料结算选择键 #
选择按纽灯亮金额总够显示总额总额累加投入硬币金额计算器 存量计算器顾客 售货机 选择键举例,饮料自动售货机 系统 的事件追踪图售完灯范例:移动电话系统移动电话系统的功能:
用手机做移动通讯
下载铃声
下载图案
管理电话簿移动电话系统的使用用例图
Talk to Others
Download Icons
Manage Phonebook
Download RingsMobile user Mobile Network
定义移动电话系统的对象(简化)
手机包括的对象:
手机屏幕
手机按钮
手机(屏幕、按钮以外的部件)
其它对象:
基站
MButton
MDisplqy
MmobileStation
MmobileHandset
移动电话系统的类图
MButton
MDisplqy
MmobileStation
MmobileHandset
移动电话系统的类图之二
pushDigButton()
pushSendButton()
pushDisconnectButton()
createConnection()
destoryConnection ()
responseError()
displayError()
displayButtonNumber()
displayConnectSuccess()
displayIncomingCall()
connectStation()
disconnectStation()
connectSuccess ()
Diaconnectsuccess()
移动电话系统对象间的通信
MButton MDisplqy
:MMobileStation
:
MMobileHandset
Mobile user
1:pushDigButton()
3:pushSendButton() 2:displayButtonNumber()
4:connectStation() 7:displayConnectSuccess()
6:connectSuccess ()5:createConnection()
移动电话系统的协作图侧重于描述各个对象之间存在的消息收发关系移动电话系统的顺序图
:MButton,MDisplqy,MMobileHandset
Mobile user
pushSendButton()
displayButtonNumber()
displayConnectSuccess() connectSuccess ()
createConnection()
pushDigButton()
connectStation()
:
MMobileStation
着重体现对象间消息传递的时间顺序