1、第四章 结构化分析与建模(一)4.1 需求建模概述与需求建模概述与结构化建模构化建模4.2 数据模型数据模型与与ERER图本章本章结构构4.3 功能模型数据流功能模型数据流图4.4 行行为模型状模型状态转换图4.5 数据字典数据字典4.6 判定表和判定判定表和判定树树1 “化学制品跟踪系化学制品跟踪系统”的的项目开目开发组正在正在进行第一行第一次次软件需求件需求规格格说明的明的评审。参加者有。参加者有Dave(项目目经理),理),Lori(需求分析者),(需求分析者),Helen(高高级程序程序员),Ramesh(测试专家家),Tim(化学制品的化学制品的产品代表者品代表者),还有有Roxan
2、ne(化学制品化学制品仓库的的产品代表者品代表者)。Tim开始开始说:“我我阅读过整个整个软件需求件需求规格格说明。明。大部分都符合我的需求,但是有几个部分我很大部分都符合我的需求,但是有几个部分我很难同意。同意。我不能确信在化学制品我不能确信在化学制品请求求过程中,我程中,我们是否确定了是否确定了这些些步步骤。”Ramesh又又补充充说:“当一个当一个请求通求通过系系统时,我很,我很难想象用于覆盖想象用于覆盖该请求状求状态变化的所有化的所有测试用例。我用例。我发现许多关于多关于状状态变化化的需求散布在整个的需求散布在整个软件需求件需求规格格说明中,但我无法确定是否有一些需求明中,但我无法确定
3、是否有一些需求遗漏了或存在不一致性。漏了或存在不一致性。”引言与要点2Roxanne有一个有一个类似的似的问题。“当我当我阅读了如何真正了如何真正请求一种化学求一种化学药品品时,我感到困惑,我感到困惑”,她,她说,“单个个需求是能感需求是能感觉到的,但我到的,但我难以想像我所要完成的以想像我所要完成的步步骤顺序序。”在各在各评审员提出其它相关的提出其它相关的问题后,后,Lori做做出了出了总结:“看来看来软件需求件需求规格格说明似乎没有完全告明似乎没有完全告诉我我们对于理解系于理解系统所需的各个方面,也不能确保我所需的各个方面,也不能确保我们没有没有错过一个需求或不犯任何一个需求或不犯任何错误
4、。我将。我将画一些画一些图来帮助我来帮助我们想像想像这些需求,并看一下能否澄清些需求,并看一下能否澄清这些些问题域。域。谢谢你你们的反的反馈意意见。”引言与要点3相关基础概念v所所谓模型模型,就是,就是为了理解事物而了理解事物而对该事物做出的事物做出的一种抽象,在一种抽象,在软件工程中的模型由一件工程中的模型由一组图形符号形符号和和组织这些符号的些符号的规则组成成。v经过对需求需求获取的取的资料料进行分析,并以此建立起行分析,并以此建立起来的模型称之来的模型称之为需求分析模型需求分析模型。4引言与要点v需求分析模型主要描述需求分析模型主要描述软件目件目标系系统的的数据信息、数据信息、处理功能、
5、用理功能、用户界面及运行界面及运行的外部行的外部行为,它并不,它并不涉及涉及软件的具体件的具体实现细节。v模型帮助分析模型帮助分析员理解系理解系统的的信息、功能和行信息、功能和行为;模型成模型成为评审焦点;模型也是焦点;模型也是设计基基础。v建模充分体建模充分体现了了“分而治之分而治之”这一古老而有效的一古老而有效的概念。把复概念。把复杂而困而困难的的问题分解分解细化后,逐个解化后,逐个解决它决它们。v建模能有效地将需求映射到建模能有效地将需求映射到软件件结构中构中。BKBK5第四章 结构化分析与建模(一)4.1 需求建模概述与需求建模概述与结构化建模构化建模4.2 数据模型数据模型与与ERE
6、R图本章本章结构构4.3 功能模型数据流功能模型数据流图4.4 行行为模型状模型状态转换图4.5 数据字典数据字典4.6 判定表和判定判定表和判定树树6需求分析阶段模型的作用v帮助系帮助系统分析分析员理解系理解系统的信息、功能和行的信息、功能和行为,使得需求分析任使得需求分析任务更加容易更加容易实现,结果更加系果更加系统化。化。v它是它是评审焦点,是确定焦点,是确定SRSSRS完整性、一致性和精确完整性、一致性和精确性的重要依据。性的重要依据。v它是它是设计的基的基础,是,是软件要素的表示件要素的表示视图。7 从客从客户户需求到分析模型需求到分析模型v认认真听取客真听取客户陈户陈述他述他们们的
7、需求之后,分析人的需求之后,分析人员员就就可以挑可以挑选选出关出关键键字,将字,将这这些关些关键键字字转换转换成特定的成特定的模型元素。模型元素。v表表4.14.1列出了一些可能的映射列出了一些可能的映射:8单词类型型 示示 例例 分析模型分析模型组件件 名名词 人、人、组织、软件系件系统、数据、数据项或存或存在的在的对象象 数据存数据存储(DFD)(DFD)执行者行者(用例用例图)实体或体或实体属性体属性(ERD)(ERD)类或或类属性属性(类图)动词 动作、用作、用户可做的事情或可能可做的事情或可能发生生的事件的事件 处理理过程程(DFD)(DFD)用例用例(用例用例图)关系关系(ERD)
8、(ERD)状状态(STD)(STD)活活动(活活动图)表表4.1 映射映射示例示例9 “一位一位化学家化学家或或化学品化学品仓库保管人保管人员可以提出可以提出获得一种或多种得一种或多种化学制品化学制品的的请求求:一是提供一个存:一是提供一个存在于在于化学制品化学制品仓库清清单上的化学品上的化学品容器容器,二是向外,二是向外界界供供应商商提交一份提交一份订购新的化学品的新的化学品的订单。提出提出请求的人求的人在准在准备其其请求求时,必,必须能能够通通过在在线查找找供供应商目商目录表表找到特定的化学品。从准找到特定的化学品。从准备请求直到求直到执行行请求或取消求或取消请求期求期间,系,系统必必须跟
9、踪每一个化学跟踪每一个化学品品请求的求的状状态。系。系统还必必须跟踪每个化学品的跟踪每个化学品的历史史记录,从,从公司公司收到化学品直到它完全被用尽或收到化学品直到它完全被用尽或丢弃弃为止。止。”化学制品跟踪系化学制品跟踪系统示例示例10结构化分析的模型v结构化分析是一种建立模型的活构化分析是一种建立模型的活动,创建建描述描述信信息内容和信息流息内容和信息流的模型,依据功能和行的模型,依据功能和行为对系系统进行划分。行划分。v建模建模时,需需要要关注系关注系统最复最复杂和和风险最大的部分,最大的部分,以及最容易以及最容易产生歧生歧义和不确定性的部分。和不确定性的部分。11结构化分析的模型结构化
10、分析模型构化分析模型图124.2 数据模型与ER图v数据模型包括三种互相关数据模型包括三种互相关联的信息:的信息:数据数据对象象、描述数据描述数据对象的属性象的属性和数据和数据对象相互象相互连接的接的关系关系。1.数据数据对象是一个外部象是一个外部实体、一个事物(如体、一个事物(如报告)、告)、一次行一次行为(如(如电话呼叫)或事件(一个警呼叫)或事件(一个警报)、)、一个角色(如一个角色(如销售人售人员)、一个)、一个组织单元(如元(如销售部售部门、人事部、人事部门)、一个地点(如)、一个地点(如仓库)或一)或一个个结构(如文件)。构(如文件)。134.2 数据模型与ER图v如,人或如,人或
11、车可以被可以被认为是数据是数据对象,因象,因为它它们可可以用一以用一组属性来定属性来定义。v“数据数据对象描述象描述”包括了包括了数据数据对象象及其及其所有的所有的属性属性。数据模型只封装了数据,没有。数据模型只封装了数据,没有对数据的操数据的操作。作。142.属性属性属性定属性定义了数据了数据对象的性象的性质,数据,数据对象有象有许多属多属性,性,应选择一一组本本质的属性。的属性。例如,教例如,教师的属性有教工号、姓名、性的属性有教工号、姓名、性别、职称称、专业、研究方向、担任、研究方向、担任课程、住址、程、住址、电话等。等。如果如果设计“教学管理系教学管理系统”,关心与教学有关的,关心与教
12、学有关的属性、排除与教学无关的属性。属性、排除与教学无关的属性。153.关系关系数据数据对象是相互关象是相互关联的,如人可以的,如人可以“拥有有”车。拥有即它有即它们间的一种关系。的一种关系。实体和体和实体之体之间的关系被抽象的关系被抽象为联系。系。联系分系分为:1)一一对一(一(1:1)(一个丈夫只能有一个妻子)(一个丈夫只能有一个妻子)2)一一对多(多(1:N)(一个母一个母亲有多个孩子有多个孩子)3)多多对多(多(M:N)(侄子与叔叔侄子与叔叔)16实实体体关系关系图概念概念v最常使用的数据模型是最常使用的数据模型是实体体关系关系图(Entity-Relationship Diagram
13、(Entity-Relationship Diagram,ERD)ERD)v实体用体用单名名词来命名,在来命名,在实体体-关系关系图中用中用矩形框矩形框来表示来表示实体。体。实体体关系关系图中的中的菱形菱形框代表关系,它确定了一框代表关系,它确定了一对实体之体之间在在逻辑上和数量上的上和数量上的连接。关系的命名要能描述关接。关系的命名要能描述关系的系的本本质。v主主键:能唯一地能唯一地标识该实体的属性或属性体的属性或属性组。17ERD的图例18ERD的实例图4-2-1 4-2-1 “某校某校课程管理系程管理系统”的的实体体联系系图19图4-2-2 4-2-2 “化学制品跟踪系化学制品跟踪系统”
14、的的实体体联系系图21 4.3 功能模型数据流图v数据流模型把数据流模型把功能分解方法功能分解方法运用到系运用到系统统分析上,分析上,把复把复杂杂的的问题进问题进一步分解到一步分解到更更详细详细的的层层次次。v数据流模型很适用于事数据流模型很适用于事务处理系理系统和其他功能密和其他功能密集型集型应用程序。用程序。22数据流数据流图四种基本四种基本图形符号形符号v数据流数据流图有四种基本有四种基本图形符号:形符号:23画数据流程画数据流程图的原的原则数据流程数据流程图上所有上所有图形符号必形符号必须是前面所是前面所述的四种基本元素。述的四种基本元素。数据流程数据流程图的主的主图必必须含有前面所述
15、的四含有前面所述的四种基本元素,缺一不可。种基本元素,缺一不可。数据流程数据流程图上的数据流必上的数据流必须封封闭在外部在外部实体之体之间,外部,外部实体可以是一个,也可以是体可以是一个,也可以是多个。多个。4.3 功能模型数据流图24画数据流程画数据流程图的原的原则处理理过程至少有一个程至少有一个输入数据流和一个入数据流和一个输出数据流。出数据流。任何一个数据流子任何一个数据流子图必必须与它的父与它的父图上的上的一个一个处理理过程程对应,两者的,两者的输入数据流和入数据流和输出数据流必出数据流必须一致,即所一致,即所谓“平衡平衡”。数据流程数据流程图上的每个元素都必上的每个元素都必须有名字。
16、有名字。4.3 功能模型数据流图25为方便方便储户,某,某银行行拟开开发计算机算机储蓄系蓄系统,储户携携带存折存折前去前去银行行办理取款手理取款手续,他,他应把存折和填好的取款把存折和填好的取款单一并交一并交给银行工作人行工作人员检验。工作人。工作人员需核需核对账目,目,发现存折有效存折有效性性问题、取款、取款单填写填写问题或是存折、或是存折、账卡与取款卡与取款单不符等不符等问题时均均应报告告储户。在。在检验通通过的情形下,的情形下,银行行则应将取款将取款信息登信息登记在存折和在存折和账卡上,并通知付款。根据付款通知卡上,并通知付款。根据付款通知给储户付款。付款。26飞机机票预订系统DFD图下
17、下图是一个是一个飞机机票机机票预订系系统的数据流的数据流图,它反映的功能是:,它反映的功能是:旅行社把旅行社把预订机机票的旅客信息票的旅客信息(姓名、年姓名、年龄、单位、身份位、身份证号号码、旅行、旅行时间、目的地等、目的地等)输入机入机票票预订系系统。系。系统为旅客安排航班,打印出取票通知旅客安排航班,打印出取票通知单(附有附有应交的交的账款款)。旅客。旅客在在飞机起机起飞的前一天凭取票通知的前一天凭取票通知单交款取票,系交款取票,系统检验无无误,输出机票出机票给旅客。旅客。27画数据流程图的基本步骤把一个系把一个系统看成一个整体功能,明确信息的看成一个整体功能,明确信息的输入入和和输出。出
18、。找到系找到系统的外部的外部实体。一旦找到外部体。一旦找到外部实体,体,则系系统与外部世界的界面就可以确定下来,系与外部世界的界面就可以确定下来,系统的数的数据流的据流的源点和源点和终点点也就找到了。也就找到了。找出外部找出外部实体的体的输入数据流和入数据流和输出数据流。出数据流。在在图的的边上画出系上画出系统的外部的外部实体。体。28画数据流程图的基本步骤从外部从外部实体的体的输入流(源)出入流(源)出发,按照系,按照系统的的逻辑需要,逐步画出一系列需要,逐步画出一系列逻辑处理理过程,直至找程,直至找到外部到外部实体体处理所需的理所需的输出流,形成数据流的封出流,形成数据流的封闭。将系将系统
19、内部数据内部数据处理又分理又分别看做整体功能,其内看做整体功能,其内部又有信息的部又有信息的处理、理、传递、存、存储过程。程。如此一如此一级一一级地剖析,直到所有地剖析,直到所有处理步理步骤都很具都很具体体为止。止。29数据流数据流图的的层次次结构构 为了表达数据了表达数据处理理过程的数据加工情况,程的数据加工情况,需要采用需要采用层次次结构构的数据流的数据流图。按照系。按照系统的的层次次结构构进行行逐步分解逐步分解,并以分,并以分层的数的数据流据流图反映反映这种种结构关系,能清楚地表达构关系,能清楚地表达和容易理解整个系和容易理解整个系统。30分分层的数据流的数据流图数据流数据流图的的层次次
20、结构构31v在多在多层数据流数据流图中,中,顶层流流图仅包含包含一个一个加工加工,它代表被开,它代表被开发系系统。它的。它的输入流是入流是该系系统的的输入数据,入数据,输出流是系出流是系统所所输出出数据。数据。v底底层流流图是指其是指其加工不需再做分解加工不需再做分解的数据的数据流流图,它,它处在最底在最底层。v中中间层流流图则表示表示对其上其上层父父图的的细化化。它的每一加工可能它的每一加工可能继续细化,形成子化,形成子图。数据流数据流图的的层次次结构构32经过初步的需求分析,得到系初步的需求分析,得到系统功能要求:功能要求:1 1、监视病病员的病症(血的病症(血压、体温、脉搏等)。、体温、
21、脉搏等)。2 2、定、定时更新病更新病历。3 3、病、病员出出现异常情况异常情况时报警。警。4 4、随机地、随机地产生某一病生某一病员的病情的病情报告。告。医院病房监护系统产生生病情病情报告告监视病情病情更新病更新病历系系统功能要求:功能要求:1 1、监视病病员的病症(血的病症(血压、体温、脉搏等)、体温、脉搏等)2 2、定、定时更新病更新病历 3 3、病、病员出出现异常情况异常情况时报警。警。4 4、随机地、随机地产生某一病生某一病员的病情的病情报告。告。顶层:病病员护士士护士士病病员监护系系统病病员日志日志病症信号病症信号要求要求报告告病症病症报告告报警警医院病房医院病房监护系系统病病员日
22、志日志医院病房医院病房监护系系统顶层DFDDFD图第一第一层:病病员护士士护士士中央中央监视病症信号病症信号要求要求报告告病症病症报告告报警警局部局部监视生成生成报告告病病员极限极限更新日志更新日志病病员数据数据格式化格式化病病员数据数据生理信号生理信号极限极限值1324日志数据日志数据日志数据日志数据第二第二层:加工:加工“中央中央监视”分解分解计算超算超过极限极限值否否病员数据据超过极限值报警开解信号开解信号产生生报警信息警信息病病员极限极限格式化格式化病病员数据数据体温血压、体温脉搏生理信号极限值时间脉搏血压日期时钟格式化病员数据3.13.23.23.33.33.43.4医院病房医院病房
23、监护系系统二二层DFDDFD图计算超算超过极限极限值否否病员数据超过极限值报警开解信号开解信号产生生报警信息警信息病病员极限极限格式化格式化病病员数据数据体温血压、体温、脉搏生理信号极限值时间脉搏血压日期时钟格式化病员数据3.13.23.23.33.33.43.4第二第二层:加工:加工“中央中央监视”分解分解医院病房医院病房医院病房医院病房监护监护系系系系统统分分分分层层DFDDFDDFDDFD图图第一第一层格式化格式化病病员数据数据生理信号生理信号极限极限值病病员护士士护士士中央中央监视病病员日志日志病症信号病症信号要求要求报告告病症病症报告告报警警局部局部监视生成生成报告告病病员极限极限更
24、新日志更新日志病病员数据数据1324日志数据日志数据多多层数据流数据流图实例例商店商店业务处理系理系统38 经过分析,商店分析,商店业务处理的主要功能理的主要功能应当有当有销售、采售、采购、会、会计三大三大项。主要数据流。主要数据流输入的入的源点和源点和输出出终点是点是顾客和供客和供应商。商。然后从然后从输入端开始,根据商店入端开始,根据商店业务工作流程,工作流程,画出数据流流画出数据流流经的各加工框,逐步画到的各加工框,逐步画到输出端,出端,得到第一得到第一层数据流数据流图。数据流数据流图实例例商店商店业务处理系理系统39第一第一层数据流数据流图40销售售细化化第二第二层数据流数据流图4142