05
结构
需求
分析
2009 BUPT TSEG,软件工程模型与方法Models&Methods of Software Engineering,第五章 结构化需求分析修佳鹏,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,本章内容,5.1 结构化需求分析的由来5.2 结构化分析模型的组成5.3 数据建模5.4 功能建模5.5 数据词典5.6 行为建模5.7 软件需求规格说明书,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.1 结构化需求分析的由来,分析建模的开始于20世纪60-70年代,但结构化分析方法的第一次出现是作为另一个重要课题“结构化设计”的附属品。其目的是需要一种图形符号体系来表示数据和对数据进行变换的处理,这些处理最终能被映射到软件体系结构的设计中。结构化分析这个词汇最初由Douglas Ross提出,由DeMarco进行了推广,定义了创建信息流模型的关键图形符号。80年代中期,结构化分析引入了对实时系统的扩展。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.2 结构化分析模型的组成,需求分析的分析模型必须达到三个主要目标:描述客户的需求;建立创建软件设计的基础;定义在软件完成后可以被确认的一组需求。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.2 结构化分析模型的组成,数据字典是模型的核心实体关系图(ER图):描述数据对象间的关系,用于数据建模。数据流图(DFD图):描述了数据流在系统中流动的过程,以及对数据流进行变换的功能,用于功能建模。状态迁移图(STD图):描述了对外部事件的响应方式,表示了系统的各种行为模式(称为状态)以及在状态间进行变迁的方式,用于行为建模。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.3 数据建模,5.3.1 什么是数据模型5.3.2 数据建模的目标5.3.3 实体关系图5.3.4 数据对象、属性和关系5.3.5 数据结构规范化,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.3.1 什么是数据模型,软件系统本质上是处理信息的系统,即对数据进行处理的系统,因此在开发过程中必须考虑以下两方面的问题:“数据”需要有哪些数据?数据之间有什么联系?数据本身有什么性质?数据结构等 对数据的“处理”对数据进行哪些处理?每个处理的逻辑功能是什么?,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.3.1 什么是数据模型,数据模型是为了把用户的数据要求清晰明确地表达出来所建立的一个概念性的模型,也称为信息模型。概念性数据模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。它描述了从用户角度看到的数据,反映了用户的现实环境,但与在软件系统中的实现方法无关。概念模型常用的表示方法是实体-关系图法,也称为实体关系模型。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.3.2 数据建模的目标,数据建模的目标是为了明确下列与数据处理相关的特定问题:系统处理哪些主要的数据对象?每个数据对象的组成如何?哪些属性描述了这些数据对象?这些数据对象当前位于何处?数据对象之间的关系?数据对象和变换它们的处理之间有哪些关系?,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.3.3 实体关系图,实体-关系方法(Entity Relationship Approach)是最常用的表示概念性数据模型的方法,是以图形的形式表示实体以及实体之间的关系。用这种方法表示的概念性数据模型又称为ER模型。ER模型中使用的图形工具简称为ER图,是由Peter Chen为关系数据库系统的设计提出的,用来标识一组基本的构件:实体、属性、关系。ER图仅描述现实世界中的实体和关系,不涉及这些实体在系统中的具体实现方法。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.3.4 数据对象、属性和关系,数据对象描述包括了数据对象的名称及其所有属性。通常将数据对象简称为“实体”,其具体表现可以是:外部实体:产生或使用消息的任何事物;事物:例如建筑物、汽车等物体;事件:例如警报;角色:例如老师、学生、管理员等;组织单位:例如学校教务处、财务处等;地点:例如仓库、停车场等;结构:例如文件、档案等。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,属性,每个数据对象都具有一些区别于其他数据对象的特征和性质,这些特征称为数据对象的属性。它可用于:命名数据对象;描述数据对象实例;建立与其它数据对象的联系;能够唯一标识一个数据对象实例的一个(组)属性,称为该数据对象的“关键字”。例如:汽车实体的属性包括生产厂家、型号、车牌号、车型、颜色、车主、出厂日期、座位数、车长度、发动机型号等。其中关键字为车牌号。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,关系,数据对象之间可以存在某种特定的关联,称之为数据对象的关系。关系是由被分析问题的语境定义的。例如:汽车生产厂家与汽车之间存在的“生产”的关系 购车人与汽车之间存在着“购买”的关系汽车与发动机之间存在这“安装”的关系,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,基数,为了更准确的刻画数据对象之间的关系,数据模型引入基数,表示在一个给定的关系中实体出现的次数。基数通常简单地表达为“一”或“多”。考虑到“一”和“多”的所有组合,两个实体可能的关联如下:一对一:例如汽车与车牌号的关系;一对多:例如生产厂家与汽车的关系;多对多:汽车生产厂家与购车人的关系;,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,ER图,ER图中的实体与属性用一个带名字的矩形表示。上部表示实体的名称,下面表示实体的属性,用下划线标识实体的关键字属性。ER图中的关系用连接实体的连线表示,连线上标出关系的名称。ER图中的基数用连线的不同端点符号标识。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,ER图,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,ER图,例如,教学管理系统中的教师、学生和课程之间的关系:,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.3.5 数据结构规范化,数据对象之间的基数关系,在关系型数据库中就会造成数据存储的冗余和操作异常现象。于是需要对实体-关系图中的数据进行规范化处理。关系规范化的程度通常按属性间的依赖程度来区分,并以范式(Normal Form,NF)来表达。关系的规范化有以下好处:消除多义性:使关系中的属性含义清楚、单一;关系单纯化:让每个数据项只是简单的数或字符串,方便操作。使数据的插入、删除与修改操作可行且方便;使关系模式更灵活:易于实现接近自然语言的查询方式。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,范式,范式是符合某一种级别的关系模式的集合。按照所满足的要求不同,目前存在六种范式。第一范式第六范式。范式级别越高,冗余度越小,但会出现以下问题:存储同样数据就需要分解成越多张表,因此“存储自身”的过程也就越复杂。数据的存储结构与基于问题域的结构间的匹配程度也随之下降,为此在需求发生变化时数据的稳定性随之下降。需要访问的表增多,因此性能或处理速度将下降。所以,数据库一般只需满足第三范式(3NF)就可以达到设计的要求。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,第一范式,第一范式(1NF):关系中所有属性都是“单纯域”,即每个属性值 都是不可再分的最小数据单位。例如以下关系:购车人(身份证号,姓名,单位,联系电话,通信地址);购车人(身份证号,姓名,单位,办公电话,手机,住宅电话,通信地址,邮编);,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,第二范式,第二范式(2NF):非主属性完全依赖于关键字。如果关系中关键字为单属性,则必满足2NF,否则如果出现了非主属性部分依赖于关键字属性,即不满足2NF;例如以下关系:汽车品牌(品牌编号,生产厂家编号,品牌名称,生产地址);汽车品牌(品牌编号,品牌名称,生产厂家编号);生产厂家(生产厂家编号,厂家名称,厂家地址);,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,第二范式,如果一个关系不满足第二范式,会出现以下问题:数据冗余更新异常插入异常删除异常,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,第三范式,第三范式(3NF):在满足第二范式的基础上,要求非主属性相互独立,即任何非主属性间不存在函数依赖。例如以下关系:汽车(车牌,型号,生产厂家,产地,发动机型号,排量,颜色,购车人,购车人联系电话),2009 BUPT TSEG 北京邮电大学 通信软件工程中心,第三范式,可以将原关系转变为以下四个关系:汽车(车牌号,型号,成产厂家编号,发动机型号,购车人身份证号);生产厂家(生产厂家编号,厂家名称,厂家地址);发动机(发动机型号,发动机名称,发动机排量,);购车人(身份证号,姓名,联系电话,)关系之间通过外键连接,需要查询时进行链表查询。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.4 功能建模,5.4.1 数据流图的基本结构5.4.2 数据流图与加工之间的关系5.4.3 分层的数据流图5.4.4 数据流图的画法5.4.5 数据流图的检查和修改5.5.6 数据流图示例5.5.7 实时系统的数据流图,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,功能建模工具数据流图,当数据或信息“流”过计算机系统时将会被系统的功能所处理、加工或变换后再将处理或变换后的数据从系统输出。数据流图是描述信息流和数据从输入移动到输出时被系统的功能变换的图形化技术。是软件需求分析中功能建模的工具。数据流图采用自顶向下的机制表示层级的功能细节和数据变换细节。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.4.1 数据流图的结构,基于计算机的系统可被表示为数据流图的基本结构:从数据流图中可知,数据流图有四种基本元素:,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.4.1 数据流图的结构,数据流:是沿箭头方向传送数据的通道,它们大多是在加工之间传输加工数据的命名通道,也有连接数据存储文件和加工的没有命名的数据通道。同一数据流图上不能有同名的数据流。多个数据流可以指向同一个加工,也可以从一个加工散发出许多数据流。加工:是以数据结构或数据内容作为加工对象的。加工的名字通常是一个动词短语,简明扼要地表明完成的是什么加工。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.4.1 数据流图的结构,数据存储:在数据流图中起保存数据的作用,它可以是数据库、文件或任何形式的数据组织。指向文件的数据流可理解为写入文件或查询文件,从文件中引出的数据流可理解为从文件读取数据或得到查询结果。外部实体:表示图中要处理数据的输入来源或处理结果要送往何处。由于它在图中的出现仅仅是一个符号,并不需要以软件的形式进行设计和实现,因而,它只是数据流图的外围环境中的实体,故称外部实体。在实际问题中它可能是人员、计算机外围设备或是传感装置。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.4.2 数据流与加工的关系,其中星号“*”表示相邻的一对数据流同时出现;“”则表示相邻的两数据流只取其一。,在数据流图中,如果有两个以上数据流指向一个加工,或是从一个加工中引出两个以上的数据流,这些数据流之间往往存在一定的关系。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.4.3 分层的数据流图,为表达稍为复杂的实际问题,需要按照问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。顶层数据流图:顶层流图仅包含一个加工,它代表被开发系统,其作用在于表明被开发系统的范围,以及它和周围环境的数据交换关系。中间层数据流图:表示对其上层父图的细化。它的每一加工可以继续细化,形成子图。中间层次的多少视系统的复杂程度而定。底层数据流图:是指其加工不须再做分解的数据流图,其加工称为“原子加工”。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,分层数据流图的两种表示,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.4.4 数据流图的画法,画数据流图的基本步骤概括地说,就是自外向内,自顶向下,逐层细化,完善求精。具体步骤可按如下来做:先找系统的外部实体,由它们确定系统与外界的接口。找出外部实体的输出数据流与输入数据流。在图的边上画出系统的外部实体。从外部实体的输出数据流(即系统的源点)出发,按照系统的逻辑需要,逐步画出一系列逻辑加工,直到找到外部实体所需的输入数据流(即系统的汇点),形成数据流的封闭。按照下面所给的原则进行检查和修改。按照上述步骤,再从各加工出发,画出所需的子图。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.4.5 数据流图的检查和修改,数据流图上所有图形符号只限于前述四种基本图形元素。数据流图的主图必须包括前述四种基本元素,缺一不可。数据流图的主图上的数据流必须封闭在外部实体之间,外部实体可以不只一个。每个加工至少有一个输入数据流和一个输出数据流。在数据流图中,需按层给加工框编号。编号表明该加工处在哪一层,以及上下层的父图与子图的对应关系。任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡。它表明了在细化过程中输入与输出不能有丢失和强加。图上每个元素都必须有名字。表明数据流和数据文件是什么数据,加工做什么事情。一般情况下,数据流图中不可夹带控制流。因为数据流图是实际业务流程的客观表现,说明系统“做什么”而不是要表明系统“如何做”,因此不是系统的执行顺序,不是程序流程图。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,5.4.6 数据流图示例,例1:医院就诊管理系统:假设,该系统涉及医院的三个部门:挂号、问诊、交费和取药。挂号:挂号处的挂号人员接受病人的就诊请求,根据门诊科室各医生的病人的排队情况,分配合适科室和医生,记录并打印挂号凭据,收取挂号费完成挂号请求。问诊:医生根据挂号的次序对病人进行病情诊断,根据挂号单据及病历号获取该病人的历史病历,然后将问诊结果记录在病历当中并开具相应的处方(处方中可根据系统提供的药品进行选择),打印处方交给病人完成一次问诊。交费取药:病人在收费处根据挂号单据和处方所列出的药品种类和数量进行交费,取得相应的药品完成一次看病流程。,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,顶层数据流图,病人,医院就诊管理系统,科室医生排队信息,挂号凭据,查询科室医生信息,写入病人挂号信息,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,顶层的数据流图,2009 BUPT TSEG 北京邮电大学 通信软件工程中心,第一层数据流图,