Transcript 软件工程
软件工程
第3讲 需求分析
•需求分析的目标与原则
•需求分析的过程及方法
•需求分析的工具
•传统的软件建模
•用例建模
软件工程
随着OO、VP(Visual Programming),
以及CASE等软件开发技术的发展和应用,
软件设计、编码和测试等环节的技术日益成
熟和稳定,而需求工程却由于没有可现成套
用的方法成为一个困难的课题。因此,目前
软件工程的学科重心和焦点正呈现出向前期
需求阶段转移的趋势。只有通过软件需求分
析,才能把用户对软件功能和性能的总体要
求描述为具体的软件需求规格说明,从而奠
定软件开发的基础。
软件工程
3.1 需求分析的目标与原则
软件需求是指用户对目标系统在功能、行为、
性能等方面的期望。需求分析是发现、求精、建模
和产生规格说明的过程,是对系统的理解与表达的
过程。
理解:开发人员充分理解用户的需求,对问题
及环境的理解、分析与综合,逐步建立目标系统的
模型——通常由系统分析员和用户共同了解系统的
要求,即系统必须做什么。
表达:产生规格说明等相关文档,将需求分析
的结果完整、清晰、精确的表达出来。
软件工程
• 需求分析的目标
理解最终的软件应该解决哪些问题
引出这些问题和系统相关一些问题
提供一个与这些问题和系统特征有关的回答问
题的基础
决定系统应该做什么
决定系统不应该做什么
确定系统能够满足用户的需求,并且定义相应
的验收标准
软件工程
• 需求分析的原则
输入数据
转换1
中间数据
附加数据
数据存储
转换2
结果数据
1、必须能够表达和理解问题的数据域和功能域
数据域——理解和表示问题的信息域,用数据模型描述
功能域——定义软件的功能,用功能模型描述
软件的行为模型描述软件行为,包括服务、操作等
软件工程
2、必须自顶向下、逐层分解和细化问题
软件工程
3、必须给出系统的逻辑视图和物理视图
逻辑视图给出软件要达到的功能和要处理
的数据之间的关系,并不是实现的细节,软件需
求的逻辑描述是软件设计的基础。
需求的物理视图给出处理功能和数据结构
的实际表达形式,往往由设备决定,同时这些系
统元素也确定了对系统的限制,所以必须考虑相
应的功能和信息结构的物理表示方式。
软件工程
3.2 需求分析的过程及方法
• 需求分析的过程
为了确保分析结果的一致性、全面性、精确性,需求
分析过程要有用户的参与和积极的协助。需求分析工作
可以分为以下4个过程:
软件工程
1、问题获取
2、需求分析
提炼、分析和审查已收集的需求,确保其无二
义性、无错误和遗漏或不足的地方。
常用的方法包括SA、OOA等等
3、需求规格说明
分析模型是需求规格中说明的一部分
4、需求评审
针对功能的正确性、完整性和清晰性以及其他
需求给予评审
软件工程
• 需求分析的方法
1、结构化分析
数据流图(DFD)
数据字典
结构化语言
判定树
判定表
软件工程
2、面向对象分析
面向对象方法学的出发点和基本原则是:
尽可能模拟人类所习惯的思维方式,使开发
软件的方法和过程尽可能接近于人类认识世
界解决问题的方法和过程,也就是使描述问
题的问题域与实现解法的求解域在结构上尽
可能地一致。
面向对象方法在一些方面与结构化方法
是一致的。
3、面向问题域的分析
软件工程
3.3 需求分析的工具
1、SADT(Structured Analysis and Design
Technology)
分解软件(或系统)功能的过程
能沟通软件内部的功能和信息的联系的图解表
示,即SADT活动图和数据图
使用SADT进行项目管理的指导书
2、PSL/PSA(Problem Statement
Language/Problem Statement Analyzer)
软件工程
3.4 传统的软件建模
模型:为了理解事物而地事物做出的一
种抽象,是对事物的一种无歧义的书面描
述。简单地说,就是对某一事物的抽象表
示方式。通常,软件工程中的模型可以由
一组图形符号和组织这些图形符号的规则
组成。
软件工程
软件分析模型应包含的基本目标:
描述用户对软件系统的需求
为软件设计奠定一个良好的基础
定义一组需求,并且可以作为软件产品验
收的标准
软件工程
在技术上,需求分析过程实际上是一个建模
过程,其核心是数据字典,三个子模型有密切
的联系,但时间上不具有严格的时序性,是一
个迭代的过程。
软件工程
• 数据模型的建立
1、数据对象
必须被软件理解的复合信息的表示,只是对数
据的封装,不包含对数据的的操作。
2、属性
定义了数据对象的性质,具有三种不同特性:
为数据对象实例命名
描述该实例
引用另外一个实例
3、关系
软件工程
4、 实体-关系图(Entity-Relationship Diagram)
数据模型与E-R图为分析员提供了一种简明
的符号体系,数据建模创建了分析模型的一部分。
E-R图简单,容易理解,可以作为分析员和用户交
流的工具。
性别
职称
姓名
教师
姓名
学号
1
系
学生
年级
N
教工号
教
性别
学
N
M
课程
课程号
课程名
学时
学分
软件工程
• 功能模型、行为模型的建立及数据字典
1、功能模型可以用数据流图描述,又称
为数据流模型。系统分析是把软件系统自
顶向下逐层分解、逐步细化的过程,由此
获得的功能模型是一个分层数据流图,也
就描述了系统的分解。
软件工程
DFD有四种基本符号:
•一个命名的向量(→):数据流,箭头的
始点和终点分别表示数据流的源和目标;
名称写在数据流上面。
•方框(□):数据终点/源点,名称写在
方框内或方框下面
•圆形或圆角矩形:对数据的加工/处理,
名称写在圆形或圆角矩形内,可以用编号
表明其所属层次。
•一端开口的长方形或两条平行线:数据的
存储,静态的数据流。名称写在图形内部。
软件工程
• 分解的程度:系统逐层向下分解时,可以将一个加工/
处理分解成几个加工,当每一个加工都已分解到足够简
单时,分解工作就可以结束了。足够简单不需要再分解
的加工称为基本加工,否则不合理或不恰当就要重新或
继续分解。
• 加工说明: 加工说明或加工处理(process specification)
的过程,用于描述系统的每一个基本加工处理的逻辑,
说明输入数据转换为输出数据的转换规则,仅仅说明
“做什么”就可以了,不需指明加工的细节。
•
加工说明的描述方式
结构化语言
判定表
判定树
IPO图
软件工程
编号
输入数据
输出数据
加工名
编号
数据存储名
一个加工数据流的画法
软件工程
IPO图
软件工程
一种改进的IPO图
软件工程
2、行为模型
状态转换图
3、数据字典
软件工程
3.5 用例建模
• 用例图
1、系统
可以是任何待开发的事物
建模首先要做的就是确定系统边界
2、参与者
使用系统的对象,是外部的一个实体,以某种
方式参与用例的执行
主要参与者(Primary Actor):主动发起人,
通过用例从系统中获得业务价值
次要参与者(Secondary Actor);参加用例
的执行以为其他参与者创造业务价值
软件工程
简单ATM系统
顾客
系统的表示
银行系统
参与者的表示
软件工程
3、用例
为达到某个目的而与系统进行的一系列
交互,执行结果将为参与者提供可度量的
价值(measurable value)。
命名非常重要——尽量使用主动语态动
词和可以描述系统执行功能的名词
申请贷款
取款
软件工程
4、关系
通信关系 一个用例至多与一个参与者有一个
通信关系
泛化/继承关系 特殊与一般的关系,可以继承。
向上为表现为泛化,向下表现为继承
包含关系 根据分析结果预先被抽区出来构成
包含关系,包含用例调用被包含用例
扩展关系 根据需要对已有的用例加以扩展,
增加用例行为。扩展用例可以看作被扩展用例的
一个组成部分,且只能被被扩展用例调用
软件工程
• 参与者及用例的描述
参与者描述
用例描述
1)简单文字
2)模板
3)表格
软件工程
• 用例建模过程
找出系统的参与者和用例
区分用例的优先次序
详细描述每个用例
构造用户界面原型
构造用例图
软件工程
简单ATM系统用例图
软件工程
参与者规格说明
参与者名称:顾客
是否抽象参与者:否
简要描述:
使用ATM系统提取现金、转移资金和存
款的所有用户,这些用户持有相应的银
行卡且知道银行卡对应账号的密码。
参与者描述示例
软件工程
用例名:购物
参与者:顾客(发起者)、出纳员
事件流:
1.顾客带着要购买的商品到达一个销售终端时用例开
始。
2.出纳员录入商品。
3.系统显示商品信息和价格。
4.重复2和3步,直到顾客要购买的商品录入完毕。
5.系统计算并显示该顾客的商品价值总额。
6.顾客支付现金或信用卡刷卡或用支票支付。
7.系统打印收据。
可选路径:
2a.输入的商品标识符无效。
2a.l 系统显示出错信息。
6a.顾客不能足额支付所选的商品。
6a.l 取消本次交易。
用例模板描述示例
软件工程
客户代表
系
统
记 账 系 统
1.收到一个取
消订单的请求
2.输入订单的
标识号
3.显示订单内容
4.选择取消
5.给该订单打上取
消标记
6.向客户账号增加
订单支付的资金
表格描述用例示例
软件工程
3.6 面向对象建模
传统的结构化方法学适合需求比较确定的领域
,但实际系统的需求往往是变化的,而且用户本
身对系统到底要求些什么也不是很清楚,这些在
面向对象方法中不再成为问题。面向对象技术发
展十分迅速,成为20世纪90年代十分流行的软件
开发技术。
软件工程
从狭义上看,面向对象软件开发包括3个主要
阶段:
面向对象分析(OOA):系统分析员对将要开发
的系统进行定义和分析,进而得到各个对象类以
及对象类之间的关系的抽象描述。
面向对象设计(OOD):系统设计人员将OOA的
结果转化为适合于程序设计语言的具体描述,是
进行面向对象程序设计的蓝图。
面向对象程序设计(OOP):程序设计人员利用
程序设计语言,根据OOD得到的对象类的描述,
建立实际可运行的系统。
软件工程
• 面向对象基础
1、基本概念
面向对象方法学的基本原则:
(1)一切事物都是对象
(2)任何系统都是由对象构成的,系统本身也
是对象
(3)系统的发展和进化都是由系统内部对象和
内部对象,以及内部对象和外部对象之间的相
互作用来完成的。
软件工程
面向对象方法的主要特征:
客观世界是由各种对象组成的,任何事物都是对象,复
杂的对象可由比较简单的对象以某种方式组合起来。,面
向对象的软件系统同样如此。
所有的对象都可以划分为各种不同的类,每个类都定义
了一组数据(表示对象的静态属性,描述对象的状态信息)
和方法(表示对象所能执行的操作,描述对象所能提供的服
务)
按照子类(派生类)和父类(基类、超类)的关系,把若干个
类组成一个层次结构的系统,从而实现继承。
对象与对象之间通过消息传递进行通信
面向对象方法的公式概括:
object-oriented
=objects+classes+inheritances+communication
with message
软件工程
面向对象的基本概念:
1)类与对象
类名
类名
属性
属性
方法
方法
(a)类的表示符号
(b)对象的表示符号
类的层次结构
软件工程
2)属性
3)方法
4)消息
对象之间的消息传递
软件工程
5)封装、继承与多态
面向对象方法区别与传统的结构化方法的3个主
要特点
封装:实现信息隐藏,提高模块的内聚,降低耦
合,方便复用,并减少错误的传递。
继承:直接实现源代码级的复用,并能据此实现
功能、性能的扩充和修改。
多态:实现运行时对象绑定,方便系统扩展。
软件工程
2、对象模型基本元素的标识
1)标识对象与对象
可能的类与对象包括:
• 外部实体
• 事物
• 事件
• 角色
• 组织机构
软件工程
2)标识属性
3)标识方法
方法的大致分类:
• 以某种方式操纵数据的方法,如增加、删除、
重新格式化、选择等
• 完成某个计算的方法
• 为了获得某个控制事件序列而监视对象的方法
4)标识消息
通常可以通过考察系统中发生的事件而获得
软件工程
3、面向对象软件开发模型
软件工程
• 面向对象分析模型
面向对象分析的目标是要建立一系列的模型来
描述能够满足用户需要的计算机软件。面向对象
分析模型需要表示出系统的信息/数据、功能和行
为3个方面的基本特征。故在进行OOA时,需要
建立面向对象的对象模型、功能模型和行为模型。
软件工程
1、对象模型
确定系统中的对象/类,对象/类的属性和
行为,以及对象 /类之间的关系。有时也称
为类模型,是面向对象分析模型中最重要
的一种模型。
2、行为模型
确定系统的动态行为,即对象发送或接
收的事件/刺激,以及系统状态因此而发生
的转移和转移情况。
3、确定如何对数据(对象中属性对应的
数据结构)进行计算和处理。
软件工程
• 对象模型的建立
1、对象模型的表示符号
(a)A类派生B类 (b)A类包含B类
(c)其他关联关系
2、对象模型的建立
1)抽取对象/类
2) 确定属性和方法
3)确定对象/类之间的关系
4)建立模型
(d)A给B发送消息
软件工程
• 对象行为模型的建立
需要采取的步骤:
1)仔细评价需求收集阶段所编写的用例,理解
系统中的各种交互序列
2)标识出驱动这些交互序列的各种事件,同时
理解这些事件如何与特定的对象发生关系
3)为每一个用例建立事件跟踪图
4)为每一个对象建立状态转换图
5)复查行为模型以验证其准确性和一致性,必
要时返回上一阶段修改对象模型
软件工程
一个典型用例的事件跟踪图
软件工程
状态转换图示例
软件工程
• 功能模型的建立
类似于结构化方法中的DFD,区别在于
对象中的属性也是一种数据存储,所以功
能模型中包括两类数据存储,需要加以区
别。
软件工程
3.7 统一建模语言UML
•UML的基本实体
UML的基本实体由两大类构成:定义UML本身的实体和
使用这些实体产生的UML项目实体。
1、定义UML本身的实体
UML语意描述、UML表示法、UML标准profile文件
2、UML项目实体
各种UML定义的图形
软件工程
• UML的目标及范畴
1、UML的目标
为用户提供即时可用的、表达能力强的可视化建模语
言,以开发和交流有意义的模型;
提供了扩展核心概念的的扩展机制和特殊化机制;
支持独立于编程语言和开发过程的规格说明;
提供一种理解建模语言的形式化基础;
鼓励对象领域工具的发展;
支持更高级的开发概念,如组件、协作、模式和框架;
整合最好的工程实践经验。
软件工程
2、UML的范畴
UML是一种描述、构造、可视化和文档化软件
系统的语言;
UML融合了Booch方法、OMT(Object
Modeling Technology) 方法和OOSE方法的概
念,目标是为使用这些方法和其他方法的用户
提供一个单一、公用和普遍适用的建模语言;
UML专注于一种标准的建模语言,而不是一个
开发过程;
UML包含了面向对象业界一致认同的核心建模
概念。
软件工程
•UML图的使用实例
某种商品目录
检查状况
下订单
客户
填写订单
销售员
办事员
建立信誉
管理员
用例图(use case diagram)
软件工程
读卡机
#卡号
+插卡
+退卡
+读卡
账目
#账号
#PIN
#结余
+打开
+取钱
#扣钱
#验钱数
ATM 屏幕
+提示
+接受提示
取钱机
#结余
+提供钱
+提供收据
类图(class diagram)
软件工程
状态图(statechart diagram)
软件工程
活动图(activity diagram)
软件工程
顺序图(sequence diagram)
软件工程
/教师:人
教师*
教师 1 学生*
教师 1
:全体职工
全体职工 1
/学生:人
学生*
:课程
课程*
课程*
协作图(collaboration diagram)
软件工程
构件图(component diagram)
软件工程
配置图(deployment diagram)
软件工程
作业:
3.1 需求分析的原则主要有哪些?
3.2 什么是面向对象分析?其主要思想是什么?
3.3 有一小型图书管理系统,需要完成如下工作:
A.借书、还书和预约;
B.在系统中增加或删除一本图书;
C.找出最近借走某本图书的读者;
D.在系统中按书名或作者名或专业领域进行图书检索;
E.对过期未还图书的读者进行罚款处理。
系统要求如下:
A.一个读者总共可以从本系统借5本图书;
B.有过期图书的读者不能从本系统借书;
C.每本图书的借阅期限为3个月。
试画出系统的DFD图和用例图。