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