软件工程

Download Report

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图和用例图。