软件工程导论——3需求分析(下)

面向对象需求分析方法

面向对象=对象+类+继承+通信
面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术

基本概念
对象:

系统中用来描述客观事物的一个实体,由一组属性和对这组属性进行操作的一组服务组成
– 属性:描述对象的静态特征
– 服务:描述对象的动态特征

类:

具有相同属性和服务的一组对象的集合,为属于该类的全部对象提供统一的抽象描述,包括属性和服务

消息:

对象之间的通信方式

– 服务请求:服务提供者的对象标识、服务标识、输入信息
– 服务应答:应答信息
一个消息主要由5部分组成:
– 消息的发送对象
– 消息的接收对象
– 消息的传递方式
– 消息的内容
– 消息的返回

事件:

事件通常是指一种由系统预先定义而由用户或系统发出的动作

• 事件作用于对象,对象识别事件并作出相应反应
• 事件的集合通常是固定的,用户不能随便定义新的事件
• 对象通过对外提供的方法在系统中发挥自己的作用,当系统中的 其它对象请求这个对象执行某个方法时,就向该对象发送一个消息,对象响应这个请求,完成指定的操作。
• 系统的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。

基本特征
抽象:

抽象描述了一个对象的基本特征,可以将这个对象与所有其它类型的对象区分开来,因此提供了清晰定义的概念边界,它与观察者的视角有关。
对于给定的问题域决定一组正确的抽象,是面向对象设计的核心问题。

封装:

封装是把对象的状态和行为绑到一起的机制,把对象形成 一个独立的整体,并且尽可能的隐藏对象的实现细节。
• 封装有两个含义
①把对象的全部状态和行为结合一起,形成一个不可分割的整 体。对象的私有属性只能够由对象的行为来修改和读取。
②尽可能隐蔽对象的内部细节,与外界的联系只能够通过外部 接口来实现。

继承:

继承是一种连接类与类之间的层次模型,通过确定这些层次结构 ,可以极大简化对系统的理解

多态:

多态是指两个或多个属于不同类的对象,对于同一个消息 或方法调用,作出不同响应的能力。

• 超类中定义的属性或者服务被子类继承后,可以具有不同 的数据类型或者表现出不同的行为
• 在具有继承关系的类层次结构中,不同层次的类可以共享 一个操作,但是各自具有不同的实现

流程建模
序列图(2):

序列图用来描述对象间的交互,描述系统中各个对象按照时间顺序交互的过程
序列图由一组对象及它们之间的消息组成,强调消息的时间顺序
序列图是对象之间传递消息的时间顺序的可视化表示

序列图的UML表示:
– 序列图将交互关系表示为一个二维图
– 横向代表了在交互中各独立对象的角色
– 纵向是时间轴,时间沿竖线向下延伸
– 角色使用生命线进行表示
• 当对象存在且不处于激活状态时,生命线用一条虚线表示
• 当对象处于激活状态时,生命线用一个细长矩形表示
– 序列图中的消息使用从一个对象的生命线到另一个对象生命 线的箭头表示,箭头按时间顺序在图中从上到下排列
在这里插入图片描述

活动图(2)

对系统的行为进行建模,通常用于描述业务过程、用例、操作或方法的逻辑流程,描述所要进行的活动、活动的执行顺序、以及活动的输入与输出
强调从活动到活动的控制流
不考虑引发状态改变的事件

活动:
活动既可以是手动执行的任务
活动也可以是自动执行的任务
UML中活动用圆角矩形表示,接近椭圆

转换/转移:
描述一个活动转向另一个活动
UML中用带箭头的实线段表示,箭头指向转向 的活动
在这里插入图片描述
分叉与汇合
为了对并发的控制流建模,在UML 中引入了分叉和汇合的概念
分叉(Fork)用来表示将一个控制 流分成两个或者多个并发运行的 分支
汇合(Join)用来表示并行分支在 此得到同步
在这里插入图片描述
分支与合并
分支和合并在活动图中很常见,表示条件行为。分支表示条件行为的开 始,合并表示该条件行为的结束
分支(Branch)将转换路径分成多个部分,每一部分都有单独的监护条件 和不同的结果
合并(Merge)指的是两个或者多个转换路径合并成一条路径的情况。
在这里插入图片描述
泳道
泳道明确的表示了哪些活动是由哪些对象进行的
在这里插入图片描述

功能建模
用例图(1)

用例图是指由参与者、用例,边界以及它们之间的关系构成的用于描述系统功能的视图。
画图步骤:
①确定系统边界
②确定系统参与者:系统之外,与系统交互的人员、外部软件系统、硬件设备
③确定和绘制用例图
根据每个参与者去识别用例
理清用例之间的关系
理清参与者之间的关系
合并
④编制用例描述文档(用例规约)

参与者与用例之间的关系:
参与者和用例之间的关系称为通信关联,表示参与者使用了哪些用例
在这里插入图片描述
参与者之间的关系:
参与者实质上是类,参与者与参与者之间主要是泛化关系(或称为继承关系)。
• 泛化关系表示的是参与者之间的一般/特殊关系
• 通过泛化关把把某些参与者的共同行为提取出来表示成通用行为 ,并描述成超类。
• 在UML图中,使用带空心三角箭头的实线表示泛化关系。
在这里插入图片描述
用例之间的关系
包含(include):
包含关系指一个用例可以包含其它用例具有的行为,并把它所包 含的用例行为作为自身行为的一部分。
在UML中,包含关系是通过带箭头的虚线段加<>字样来 表示,箭头由基础用例(Base)指向被包含用例(Inclusion).
在这里插入图片描述
扩展(extend):
扩展关系用来说明可选的、只在特定条件下执行的行为。扩展关系往往 被用来处理异常。
在这里插入图片描述
泛化(generalization):
用例的泛化指的是一个父用例可以被特化形成多个子用例,而父 用例和子用例之间的关系就是泛化关系。
在这里插入图片描述
例子:银行储蓄系统
在这里插入图片描述

数据建模
类图(2)

类图是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。
依赖关系:
表示的是两个或多个类之间语义上的连接关系 ,提供者的变化会导致依赖关系中客户的变化
在UML中依赖关系使用一个从依赖者指向被依赖者的带有箭 头的虚线表示。
在这里插入图片描述
泛化关系:
是用来描述类的一般和具体关系。
• 具体描述建立在对类的一般描述的基础之上,并对其进行扩展
• 在具体描述中不仅包含一般描述中所拥有的所有特性、成员和关系,而且还包含了具体描述补充的信息
• UML中泛化关系使用从子类(具体)指向超类(一般)的带有空 三角形箭头的实线表示。
在这里插入图片描述
关联关系:
是一种结构关系,指出了一个事物的对象与另一个事物的对象之间的连接。
在这里插入图片描述
聚集和组成:
聚集关系描述的是部分与 整体的关系
在UML中聚集使用从部分指 向整体的端点带有空心菱形的线段表示
在这里插入图片描述
组成关系描述的也是部分和整 体的关系,但是部分的生命周期取决于整体的生命周期
在UML中组成使用从部分指向整 体的端点带有实心菱形的线段表示
在这里插入图片描述
实现关系:
将一种模型元素(如类)与另一种模型元素(如接口 )连接起来,说明该模型元素和 其实现之间的关系。
在这里插入图片描述
**例子:**教务系统
在这里插入图片描述

行为建模
通信图/协作图(3)

表现对象协作关系的图,是对交互的建模
由对象以及它们之间的关联组成,强调对象间的连接关系, 消息的时间顺序使用序列号表示
协作图与序列图语义等价,与序列图可相互转换
在这里插入图片描述

状态机图/状态图(2)

描述类的对象随时间变化的行为
展现对象拥有的状态,以及事件如何随着时间推移影响这些状态
从状态到状态的控制流
本质上就是一个状态机
状态的转换由事件触发
在这里插入图片描述

需求定义

需求规格说明书

需求验证

依据:需求规格说明书
评审:分析人员、客户、开发人员、测试人员

考纲

需求分析
重点是需求分析的一般步骤、数据流图、用例图、活动图、需求规格说明文档的编制。掌握结构化分析模型的导出、数据流图/用例图/活动图的基本画法和需求规格说明文档的编制;理解需求分析的过程、主要步骤。主要知识点:

  1. 需求分析的概念
  2. 需求分析的过程:需求确认与需求变更
  3. 需求确认的步骤:需求获取→需求提炼→需求描述→需求验证
  4. 需求分析三类建模:功能模型、数据模型、行为模型。面向过程和面向对象的需求分析过程中,三类模型各包含哪些内容?
  5. 掌握数据流图和用例图作法。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值