目录
4 结构化分析
4-2 需求分析的基本概念
第1关:软件需求分析的定义、任务和过程
任务描述
本关任务:了解软件需求分析的定义、任务和过程。
相关知识
为了完成本关任务,你需要掌握:
软件需求分析定义
软件需求分析的具体任务
软件需求分析过程
在经济发展中,我们常常讲到形成由需求牵引供给,供给创造需求的更高水平动态平衡,同样,在软件工程中,我们仍然可以将其进行深入理解,在构建软件功能时,我们要充分根据用户需求来实现我们软件的功能,同样,我们也可以通过创造更好的功能,让用户了解到自己在其他方面的需求,实现在软件工程领域的高水平动态平衡。
软件需求分析定义
需求分析是软件定义时期的最后一个阶段,它的基本任务不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。并在在需求分析阶段结束之前,由系统分析员写出软件需求规格说明书,以书面形式准确地描述软件需求。即准确地回答“系统必须做什么?”。
软件需求分析的具体任务
确定对系统的综合要求(功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、 逆向需求、将来可能提出的要求)
分析系统的数据要求
导出系统的逻辑模型
修正系统开发计划
软件需求分析过程
软件需求分析过程图如下:
图 1 软件需求分析过程图
需求获取是开发人员与客户或用户一起对应用领域进行调查研究,收集系统需求的过程。
需求分析是将获取到的需求准确的理解、求精,并将其转化为完整的需求定义(包括建模),进而生成需求规约的过程。
第2关:系统的8个综合需求
任务描述
本关任务:了解需求的定义和组成,掌握系统的具体的8个综合需求,区分其定义及特征。
相关知识
为了完成本关任务,你需要掌握:
软件需求的定义和组成;
8个综合需求各自具有的特征。
需求分析是软件定义时期的最后一个阶段,它的基本任务不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
软件需求的定义
IEEE软件工程标准词汇表(1997年)中把传统软件需求定义为:
用户解决问题或达到目标所需的条件或权能;
系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能;
一种反映上面1或2所描述的条件或权能的文档说明。
需求分析工作的成果是需求分析文档。
软件需求的组成
图 1 软件需求的组成
软件需求由高到低可以分为三种不同的层次:业务需求、用户需求、功能需求。每个层次的需求代表了不同层次的需求特征。
业务需求:反映组织机构和客户对系统、产品高层次的目标要求。
用户需求:从用户使用的角度给出需求的描述。
系统需求:从系统的角度描述要提供的服务以及所受到的约束。
功能性需求:描述系统应该做什么,即为用户和其它系统完成的功能、提供的服务。
非功能性需求:产品必须具备的属性或品质。
设计约束:设计与实现必须遵循的标准、约束条件。如运行平台、协议、选择的技术、编程语言和工具等。
例子:旅游服务公司需要一个机票预定系统。
业务需求:旅客需要查询航空公司的机票来预定机票;航空公司需要根据具体场景来销售或下架机票。
用户需求: 这两类用户怎样去查询系统,查询哪些信息,还需要哪些操作。
具体来说,可以将系统的需求分为功能需求和非功能需求两大类,具体可以分为如下8种类型:
功能需求
这方面的需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。
例如:如果旅客预定机票过程中没有指定座位偏好,机票预订系统就应当随机为它分配。
非功能需求
非功能需求描述了系统必须展现的属性或特性和必须要遵守的约束,包括系统在性能、可靠性和可用性、接口、约束等方面的特征。
性能需求
性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的需求。
例如:机票预定系统所支持的用户在线人数至少为50000。
可靠性和可用性需求
可靠性需求定量地指定系统的可靠性。
可用性与可靠性密切相关,它量化了用户可以使用系统的程度。
例如:机票预定系统在一个月内发生故障的次数低于三次,体现了系统的可靠性需求。
在任何时刻系统中的服务器或备份服务器至少有一个是可用的,体现了系统的可用性需求。
出错处理需求
这类需求说明系统对环境错误应该怎样响应。例如,如果它接收到从另一个系统发来的违反协议格式的消息,应该做什么?注意,上述这类错误并不是由该应用系统本身造成的。
在某些情况下,“出错处理”指的是当应用系统发现它自己犯下一个错误时所采取的行动。但是,应该有选择地提出这类出错处理需求。我们的目的是开发出正确的系统,而不是用无休止的出错处理代码掩盖自己的错误。总之,对应用系统本身错误的检测应该仅限于系统的关键部分,而且应该尽可能少。
例如:系统中若某个节点因负载过高停止运行时需要有一定的错误处理机制如启动备份节点来保证系统的正常运行。
接口需求
接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。
例如,系统应该提供第三方登录接口,客户端必须通过post请求的方式来向服务端系统请求数据。
约束
设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条件。在需求分析阶段提出这类需求,并不是要取代设计(或实现)过程,只是说明用户或环境强加给项目的限制条件。常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台。
例如,系统应该满足跨平台的特性,应用所使用的所有文本数据将以XML格式的文件进行存储等。
逆向需求
逆向需求说明软件系统不应该做什么。理论上有无限多个逆向需求,我们应该仅选取能澄清真实需求且可消除可能发生的误解的那些逆向需求。
例如:一个用户账号不允许多个设备同时登录。
将来可能提出的需求
应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做的目的是,在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种扩充和修改。
例如:系统要尽可能地考虑向后兼容性,为下代版本更新留出预留空间。
闯关要求
为了方便旅客,某旅游平台拟开发一个机票预定系统。旅客将旅客信息输入该系统,系统为旅客安排航班,旅客在飞机起飞前一天凭取票通知和账单交款取票,系统核对无误即印出机票给顾客。请根据机票预定系统案例描述以及相关知识点,完成相应题目。
第3关:需求获取的4类方法
任务描述
本关任务:了解需求获取的4类方法。
相关知识
为了完成本关任务,你需要掌握:
1.访谈(情景分析)
2.面向数据流自顶向下求精
3.简易的应用规格说明技术
4.快速建立软件原型
“从群众中来,到群众中去” ——毛泽东
用户是需求之源,需求直接或间接地从用户中产生,需求分析是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程,只有了解用户需求的本质,才能更好地服务于用户。
访谈(情景分析)
访谈是一种传统的需求输入来源,访谈通过对用户进行提问来获取用户的意见,也是当前软件开发者使用的最广泛、最直接的需求分析技术。
访谈有两种基本形式,分别是正式的和非正式的访谈。
正式访谈: 系统分析员将提出一些事先准备好的具体问题
非正式访谈: 分析员将提出一些用户可以自由回答的开放性问题,以鼓励被访问人员说出自己的想法。
调查表:
当需要调查大量人员的意见时,向被调查人分发调查表是一个十分有效的做法。经过仔细考虑写出的书面回答可能比被访者对问题的口头回答更准确。
情景分析:
在访问用户的过程中使用情景分析技术往往非常有效。所谓情景分析就是对用户将来使用目标系统解决某个具体问题的方法和结果进行分析。
面向数据流自顶向下求精
图 1 面向数据流自顶向下求精过程
简易的应用规格说明技术
提倡用户与开发者密切合作,共同标识问题,提出解决方案要素,商讨不同方案并指定基本需求。
1.进行初步的访谈
2.开发者和用户双方组织的代表出席会议
3.每个小组为每张列表中的项目制定小型规格说明
4.根据会议成果起草完整的软件需求规格说明书
快速建立软件原型
快速建立软件原型是最准确、最有效、最强大的需求分析技术,快速原型就是快速建立起来的旨在演示目标系统主要功能的可运行的程序。
构建原型的要点是:它应该实现用户看得见的功能(例如,屏幕显示或打印报表)省略目标系统的“隐含”功能(例如,修改文件)。
当用户对需求的了解不清晰时,软件开发人员可以通过快速构建原型系统的方式对用户进行需求挖掘。系统需求分析人员在初步获取需求之后,通过简单地分析快速地构建出一个原型系统,该原型系统相当于目标系统的第一个可操作的模型,用户在使用该原型系统的过程中对当前系统提出修改意见,软件开发人员以用户的修改意见为指导来修改这个原型系统,直到用户满意为止,最后系统需求分析人员基于这个过程整理总结出用户的最终需求。
闯关要求
为了方便旅客,某旅游平台拟开发一个机票预定系统。旅客将旅客信息输入该系统,系统为旅客安排航班,旅客在飞机起飞前一天凭取票通知和账单交款取票,系统核对无误即印出机票给顾客。请根据机票预定系统案例描述以及相关知识点,完成相应题目。
第4关:需求确认、软件规格说明
任务描述
本关任务:请根据需求确认和软件需求规格说明书回答下列问题
相关知识
为了完成本关任务,你需要掌握:
1.需求确认
2.软件需求规格说明书
需求确认
验证软件需求的正确性,一般应从4个方面进行:
一致性
所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
完整性
需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
现实性
指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。
有效性
必须证明需求是正确有效的,确实能解决用户面对的问题。
软件需求规格说明书
软件需求规格说明书是需求分析阶段得出的最主要的文档。通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需
求、接口需求、约束、逆向需求以及将来可能提出的要求。自然语言的规格说明具有容易书写、容易理解的优点,为大多数人所欢迎和采用。
GB88版需求规约如下图所示:
4-3 结构化分析的基本概念
第1关:结构化分析的基本概念
任务描述
本关任务:了解结构化分析的定义、发展,所具有的方法和优缺点
相关知识
为了完成本关任务,你需要掌握:
1.结构化分析的定义
2.结构化分析的要点
3.结构化分析的方法
4.结构化分析的优缺点
结构化分析的定义
结构化分析(Structured Analysis,SA)是指20世纪70年代末,由Demarco等人提出的,是面向数据流进行需求分析(Requirements Analysis,RA)的方法,旨在减少分析活动中的错误,建立满足用户需求的系统逻辑模型。
结构化分析的要点
根据软件内部数据传递、变换的关系,采用自顶向下,逐层分解的方法,经过一系列分解和抽象,建立系统的逻辑模型。结构化体现在将软件系统抽象为一系列的逻辑加工单元,各单元之间以数据流发生关联。
结构化分析的方法
结构化分析方法给出了一系列帮助系统分析人员产生功能规约的原理与技术。它一般利用图形表达用户需求,使用数据流图、数据字典及描述加工逻辑的结构化语言、判定表和判定树等工具来建立一种结构化的目标文档和需求规约说明书。
数据流图(Data Flow Diagram,DFD):描述系统由哪几部分组成,各部分之间有什么联系。
数据字典(Data Dictionary):定义了数据流图中每一个图形元素。
结构化语言、判定表、判定树:详细描述数据流图中不能被再分解的每一个加工。
结构化分析的优缺点
结构化分析方法是通过对用户的调查,以软件的需求为线索,获取当前系统的具体模型;去掉具体模型中非本质因素,抽象出当前系统的逻辑模型;并将分析的结果用图形表示,方法简单,易于掌握和使用,是一种行之有效的方法。但它也具有一定的局限性,主要表现在:
1、结构化分析方法要求对系统有完整确切的需求定义,这是非常困难的。
2、结构化分析方法需要书写大量的文档,随着分析的深入,这些文档需要及时进行更新,即使在工具的辅助下,仍有一定的难度。
3、结构化分析方法描述的模型仅仅是书面的,因此该方法的人机界面表达能力差,很难使从中及时地获得用户的反馈信息。
第2关:结构化分析方法
任务描述
本关任务:掌握结构化分析含义与基本思想,学会使用结构化分析工具。
相关知识
为了完成本关任务,你需要掌握:
1.结构化分析定义
2.结构化分析步骤
3.结构化分析组成
结构化分析定义
结构化分析 (Structured Analysis,SA),70年代末由DeMarco等人提出。结构化分析方法是将待解决的问题看作一个系统,从而用系统科学的思想方法(抽象、分解、模块化)来分析和解决问题。
结构化分析步骤
结构化分析方法一般由建立当前系统的具体模型、抽象出当前系统的逻辑模型、建立目标系统的逻辑模型、完善目标系统的逻辑模型四个步骤组成:
建立当前系统的具体模型
系统的具体模型是对现实环境的真实写照,包含了现实环境中用户进行某项业务的具体执行过程,是用户具体的需求的模型化描述,解决了当前系统怎么做的问题。为了便于用户理解通常需要用结构化分析工具数据流图把当前系统的具体模型描述出来。
2. 抽象出当前系统的逻辑模型
系统的逻辑模型是对系统的具体模型的抽象,只考虑当前系统中最本质的因素而忽略次要的因素,只反映当前系统必须要满足的属性或性质,解决了当前系统做什么的问题。
3. 立目标系统的逻辑模型
目标系统的逻辑模型是对当前系统逻辑模型的进一步抽象,从更深层次上明确目标系统要实现什么功能,执行什么业务,通过对当前系统逻辑模型与当前业务需求的对比,确定当前系统的逻辑模型的改动范围,删去目标系统与当前系统之间不可实现的部分,并对可变动的部分进行修改,最终获得目标系统的逻辑模型。在数据流图中可表示为自顶向下、逐层分解、逐步求精的过程。
4. 完善目标系统的逻辑模型
为了对目标系统做出完整的描述,还需要考虑处理细节和约束限制条件等,如用户的交互方式、输入输出格式、系统的错误处理方式、质量性能要求、安全等级等。
结构化分析组成
结构化分析方法主要包括以下4个部分:
1、信息域,数据模型(E-R图)
2、软件功能,功能模型(数据流图)
3、软件行为,行为模型(状态/活动图)
4、分层细化
第3关:数据规范化
任务描述
本关任务:理解数据规范化的概念并完成相关问题
相关知识
为了完成本关任务,你需要掌握:
1.数据规范化的概念
2.第一范式(1NF)第二范式(2NF)第三范式(3NF)
数据规范化的概念
软件系统经常使用各种长期保存的信息,这些信息通常以 一定方式组织并存储在数据库或文件中,为减少数据冗余, 避免出现插入异常或删除异常,简化修改数据的过程,通常需要把数据结构规范化。
第一范式(1NF)第二范式(2NF)第三范式(3NF)
通常用“范式(normal forms)”定义消除数据冗余的程度。
第一范式(1NF)每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。 例如:
第二范式(2NF)满足第一范式条件,而且每个非关键 字属性都由整个关键字决定(而不是由关键字的一部分来决定)。
第三范式(3NF)符合第二范式的条件,每个非关键字 属性都仅由关键字决定,而且一个非关键字属性不能仅仅 是对另一个非关键字属性的进一步描述(即一个非关键字属 性值不依赖于另一个非关键字属性值)。
通常按照属性间的依赖情况区分规范化的程度。属性间依赖情况满足不同程度要求的为不同范式,满足最低要求的是第一范式,在第一范式中再进一步满足一些要求的为第二范式,其余依此类推。
范式(1 NF)数据冗余程度最大,第五范式(5 NF)数据 冗余程度最小。但是,范式级别越高,存储同样数据就需 要分解成更多张表,因此,“存储自身”的过程也就越复 杂。
随着范式级别的提高,数据的存储结构与基于问题 域的结构间的匹配程度也随之下降,因此,在需求变化时 数据的稳定性较差。
范式级别提高则需要访问的表增多,因此性能(速度) 将下降。从实用角度看来,在大多数场合选用第三范式都比较恰当。
4-4 结构化分析方法-数据流图
第1关:数据流图-画出外部实体
任务描述
本关任务:能根据需求画出系统的数据流图。
相关知识
为了完成本关任务,你需要掌握:
1. 数据流图的含义
2. 数据流图符号表示
3. 层次结构数据流图
4. 数据字典的含义
5. 数据字典的符号表示
数据流图
数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的图形表示。
设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以它也是今后进行软件设计的很好的出发点。
数据流图符号表示
数据流图有四种基本符号:
正方形(或立方体)表示数据的源点或终点;
圆角矩形(或圆形)代表变换数据的处理(加工);
开口矩形(或两条平行横线)代表数据存储;
箭头表示数据流,即特定数据的流动方向。
层次结构数据流图
为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。
在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据。
底层流图是指其加工不需再做分解的数据流图,它处在最底层。
中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。
图 1 层次结构数据流图
数据字典
数据字典的定义:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据字典的作用:在软件分析和设计的过程中给人提供关于数据的描述信息。数据流图和数据字典共同构成系统的逻辑模型, 没有数据字典数据流图就不严格,然而没有数据 流图数据字典也难于发挥作用。只有数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
一般说来,数据字典应该由对下列4类元素的定义组成:
1.数据流
2.数据流分量(即数据元素)
3.数据存储
4.处理
数据字典的符号表示
图 2 数据字典符号表示
闯关要求
为了方便旅客,旅行平台拟开发一个机票预定系统。航空公司会根据航班信息来安排航班,并将航班信息存储在订票信息中;旅客 订票时,旅客将旅客信息输入该系统,系统根据旅客信息在订票信息中查询合适的航班,并返回机票信息,然后系统根据机票信息 打印机票,最后将机票信息返回给旅客。请根据上述描述完成相应的数据流图。
测试说明
请按照描述画出机票预定系统数据流图中的旅客外部实体。请将文件保存至“/home/headless/Desktop/workspace/myshixun/数据流图/submit/step_detail_1/”目录下,文件命名为“step1.mdj”。
第2关:数据流图-画出加工
测试说明
请按照描述画出机票预定系统数据流图中的订票加工。请将文件保存至“/home/headless/Desktop/workspace/myshixun/数据流图/submit/step_detail_2/”目录下,文件命名为“step2.mdj”。
第3关:数据流图-画出数据存储
测试说明
请按照描述画出机票预定系统数据流图中的订票信息数据存储。请将文件保存至“/home/headless/Desktop/workspace/myshixun/数据流图/submit/step_detail_3/”目录下,文件命名为“step3.mdj”。
第4关:数据流图-画出数据流
测试说明
请按照描述画出机票预定系统数据流图中外部实体旅客到加工订票之间的数据流旅客信息。请将文件保存至“/home/headless/Desktop/workspace/myshixun/数据流图/submit/step_detail_4/”目录下,文件命名为“step4.mdj”。
第5关:数据流图-机票预定系统
闯关要求
为了方便旅客,旅行平台拟开发一个机票预定系统。航空公司会根据航班信息来安排航班,并将航班信息存储在订票信息中;旅客订票时,旅客将旅客信息输入该系统,系统根据旅客信息在订票信息中查询合适的航班,并返回机票信息,然后系统根据机票信息 打印机票,最后将机票信息返回给旅客。请根据上述描述完成相应的数据流图。
测试说明
请按照描述画出机票预定系统的数据流图。请将文件保存至“/home/headless/Desktop/workspace/myshixun/数据流图/submit/step_detail_5/”目录下,文件命名为“step5.mdj”。
4-5 结构化分析方法-实体-联系图
第1关:实体联系图-画出实体
任务描述
本关任务:能根据需求画出E-R图。
相关知识
为了完成本关任务,你需要掌握:
1.实体-联系图(E-R图)的概念
2.实体-联系图的符号表示,能够根据需求画出E-R图
实体-联系图(E-R图)的概念
实体-联系图(Entity Relationship Diagram,ERD),E-R图是进行需求分析、归纳、整理、表达和优化现实世界数据及其联系的重要工具。E-R图是用来建立数据模型的工具。数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,反映了用户的现实环境,而且与在软件系统中的实现方法无关。数据模型中包含3种相互关联的信息:数据对象(实体)、数据对象的属性及数据对象彼此间相互连接的关系。
数据对象(实体)
数据对象: 是对软件必须理解的复合信息的抽象。
复合信息: 是指具有一系列不同性质或属性的事物,仅有单个值的事物(例如,宽度)不是数据对象。
可以由一组属性来定义的实体都可以被认为是数据对象。如:外部实体、事物、行为、事件、角色、单位、地点或结构等。
数据对象彼此间是有关联的。
例如:在该机票预定系统中存在多个实体,如旅客、航空公司等。
属性
属性定义了数据对象的性质。必须把一个或多个属性定义为“标识符”,当我们希望找到数据对象的一个实例时,用标识符属性作为“关键字”(通常简称为“键”)。
例如:在该机票预定系统中,顾客具有姓名、性别、身份证号码、工作单位、旅行目的地、旅行时间等属性。
联系
数据对象彼此之间相互连接的方式称为联系,也称为关系。联系可分为以下3种类型:
一对一联系(1∶1)
把身份证看成一个实体,身份证与顾客的联系是一对一的,一位顾客只能拥有一个身份证,并且每个身份证只对应于一位顾客。
一对多联系(1∶N)
把机票看成一个实体,顾客与机票之间存在一对多的联系,即每个顾客可以购买多个机票,但每张机票必须由一位顾客所拥有。
多对多联系(M∶N)
航空公司与第三方售票平台之间存在着多对多的联系,第三方售票平台可提供多家航空公司的机票信息,航空公司的机票也可以在多个售票平台进行售卖。
实体-联系图的符号
ER图中包含了实体(即数据对象)关系和属性等3种基本成分:
通常用矩形框代表实体;
用连接相关实体的菱形框表示关系;
用椭圆形或圆角矩形表示实体(或关系)的属性;
并用直线把实体(或关系)与其属性连接起来;
闯关要求
旅客订票前需要完善自己的身份信息和旅行信息,包括姓名、性别、身份证号码、工作单位、旅行目的地、旅行时间等;通常机票包括时间、价格、等级等信息;航空公司来自不同的国家和地区;旅客可订购多张机票,但一张机票只能属于一位旅客;航空公司可以出售多张机票,但一张机票只能属于一家航空公司。请根据以上描述画出该机票预定系统的E-R图。
测试说明
请按照描述画出机票预定系统E-R图中的旅客、机票、航空公司三个实体。请将文件保存至“/home/headless/Desktop/workspace/myshixun/ER图/submit/step_detail_1/”目录下,文件命名为“step1.mdj”。
第2关:实体联系图-画出属性
测试说明
请按照描述画出机票预定系统E-R图中的旅客、机票、航空公司三个实体的属性。请将文件保存至“/home/headless/Desktop/workspace/myshixun/ER图/submit/step_detail_2/”目录下,文件命名为“step2.mdj”。
第3关:实体联系图-画出联系
测试说明
请按照描述画出机票预定系统E-R图中的旅客、机票、航空公司三个实体之间的联系。请将文件保存至“/home/headless/Desktop/workspace/myshixun/ER图/submit/step_detail_3/”目录下,文件命名为“step3.mdj”。
4-6 结构化分析方法-状态转换图
第1关:状态转换图-画出初态终态
任务描述
本关任务:能根据需求画出系统的状态转换图
相关知识
为了完成本关任务,你需要掌握:
1.状态转换图的概念
2.状态转换图的符号表示
状态转换图的概念
状态转换图(State Transform Diagram,STD)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作(例如,处理数据)。
状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。系统对事件的响应,既可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。状态转换图的状态有三种包括初态(即初始状态) 、终态(即最终状态)和中间状态,在一张状态转换图中只能有一个初态,而终态则可以有0至多个。
事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。简而言之,事件就是引起系统做动作或(和)转换状态的控制信息。
状态转换图的符号表示
初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。
中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下3个部分。上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名字和值,这部分是可选的;下面部分是活动表,这部分也是可选的。
状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。状态变迁通常是由事件触发的,在这种情况下应在表示状态转换的箭头线上标出触发转换的事件表达式;如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。
图 1 状态转换图
闯关要求
机票预定系统中涉及的状态是机票的状态。当新的航空公司入驻之后,系统管理员会向数据库中添加机票相关信息,该机票进入审核状态,当该机票审核通过后,则处于待售状态;在销售过程中,如果该机票全部销售完毕,则进入售罄状态;销售过程中,如果航班取消,机票会进入下架状态,机票售罄或下架后,管理员清空机票信息,机票会进入退出流通状态,最后管理员删除机票。请根据上述描述画出相应的状态转换图。
测试说明
请按照描述画出机票预定系统状态转换图的初态和终态。请将文件保存至“/home/headless/Desktop/workspace/myshixun/状态转换图/submit/step_detail_1/”目录下,文件命名为“step1.mdj”。
第2关:状态转换图-画出中间状态
测试说明
请在上一关的基础上画出机票状态转换图中的审核中间状态。请将文件保存至“/home/headless/Desktop/workspace/myshixun/状态转换图/submit/step_detail_2/”目录下,文件命名为“step2.mdj”。
第3关:状态转换图-画出状态转换
测试说明
请在上一关的基础上画出机票状态转换图中的初态至审核之间的状态转换添加机票。请将文件保存至“/home/headless/Desktop/workspace/myshixun/状态转换图/submit/step_detail_3/”目录下,文件命名为“step3.mdj”。
第4关:状态转换图-画出机票状态转换图
闯关要求
机票预定系统中涉及的状态是机票的状态。当新的航空公司入驻之后,系统管理员会向数据库中添加机票相关信息,该机票进入审核状态,当该机票审核通过后,则处于待售状态;在销售过程中,如果该机票全部销售完毕,则进入售罄状态;销售过程中,如果航班取消,机票会进入下架状态,机票售罄或下架后,管理员清空机票信息,机票会进入退出流通状态,最后管理员删除机票。请根据上述描述画出相应的状态转换图。
测试说明
请按照描述画出机票预定系统的状态转换图。请将文件保存至“/home/headless/Desktop/workspace/myshixun/状态转换图/submit/step_detail_4/”目录下,文件命名为“step4.mdj”。
4-7 结构化分析工具
第1关:层次方框图
任务描述
本关任务:能根据需求画出系统的层次方框图
相关知识
为了完成本关任务,你需要掌握:
1.层次方框图的相关概念
2.能根据需求画出系统的层次方框图
层次方框图
层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)。随着结构的精细化,层次方框图对数据结构也描绘得越来越详细,这种模式非常适合于需求分析阶段的需要。系统分析员从对顶层信息的分类开始,沿图中每条路径反复细化,直到确定了数据结构的全部细节时为止。例如对某产品进行细化的过程如下图所示:
图 1 层次方框图
闯关要求
考虑机票预定系统中顾客相关信息的组成情况,顾客信息由个人信息和旅行信息两部分组成,每部分又可进一步细分。个人信息又可分为身份信息和工作信息;身份信息可细分为姓名、性别、身份证号码;工作信息可细分为工作单位;旅行信息可细分为旅行时间、旅行目的地等。请根据上述描述将下面的层次方框图补充完整。
图 2 层次方框图任务
第2关:Warnier图
任务描述
本关任务:能根据需求画出系统的Warnier图
相关知识
为了完成本关任务,你需要掌握:
1.Warnier图的相关概念
2.能根据需求画出系统的Warnier图
Warnier图的概念
法国计算机科学家Warnier提出了表示信息层次结构的另外一种图形工具。Warnier图用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段。Warnier图可以表明信息的逻辑组织,可以按顺序、选择、重复三种结构来层次化的分解信息结构。用Warnier图可以表明信息的逻辑组织,可以指出一类信息或一个信息元素是重复出现的,也可以表示特定信息在某一类信息中是有条件地出现的。重复和条件约束是说明软件处理过程的基础,所以很容易把Warnier图转变成软件设计的工具。
Warnier图符号表示
{}花括号内的信息条目构成顺序关系,花括号从左到右排列表示树形层次结构
⊕表示不可兼具的选择关系
−表示非
()圆括号内的数字表示重复次数
(1,n)表示重复结构,(0,1)表示选择结构,(1)或不标表示顺序结构。 例:
图 1 Warnier图
图中表示一种软件产品要么是系统软件要么是应用软件。系统软件中有P1种操作系统,P2种编译程序,此外还有软件工具。软件工具是系统软件的一种,它又可以进一步细分为编辑程序、测试驱动程序和设计辅助工具,图中标出了每种软件工具的数量。
闯关要求
考虑机票预定系统中的顾客信息,某顾客要么是VIP用户要么是普通用户;VIP用户最多可同时预定10张机票,普通用户最多可预定5张机票;除此之外VIP用户还可拥有5次机票折扣优惠,并可选择接机服务。请根据以上描述将Warnier图补充完整。
图 2 Warnier图任务
第3关:IPO图
任务描述
本关任务:能根据需求画出系统的IPO图
相关知识
为了完成本关任务,你需要掌握:
1.IPO图的相关概念
2.能根据需求画出系统的IPO图
IPO图的概念
在输入/处理/输出图(Input Processing Output,IPO)中,左边的框中列出有关的输入数据。
中间的框内列出主要的处理,处理框中列出处理的次序暗示了执行的顺序,但是用这些基本符号还不足以精确描述执行处理的详细情况。
在右边的框内列出产生的输出数据。
在IPO图中还用类似向量符号的粗大箭头清楚地指出数据通信的情况。
图 1 IPO图
图 2 IPO表
在需求分析阶段可以使用IPO表简略地描述系统的主要算法(即数据流图中各个处理的基本算法)。
需求分析阶段,IPO表中的许多附加信息暂时还不具备,但在设计阶段可以进一步补充修正这些图,作为设计阶段的文档。
这正是在需求分析阶段用IPO表作为描述算法的工具的重要优点。
闯关要求
考虑机票预定系统的注册登录模块,系统获得新用户信息后,首先使用注册模块完成新用户的注册,然后使用登录模块完成用户的登录。用户登录完成后会显示用户档案信息,用户可以进行机票预定。请结合上述信息将下面的IPO图转换为IPO表。
图 3 IPO图任务
图 4 IPO表任务
第4关:Petri网
任务描述
本关任务:用Petri网表示系统的规格说明
相关知识
为了完成本关任务,你需要掌握:
1.Petri网的概念
2.Petri网包含的4种元素
3.Petri网的工作原理
Petri网的概念
并发系统中遇到的一个主要问题是定时问题。这个问题可以表现为多种形式,如同步问题、竞争条件以及死锁问题。定时问题通常是由不好的设计或有错误的实现引起的,而这样的设计或实现通常又是由不好的规格说明造成的。如果规格说明不恰当,则有导致不完善的设计或实现的危险。用于确定系统中隐含的定时问题的一种有效技术是Petri网,这种技术的一个很大的优点是它也可以用于设计中。
Petri网是由Carl Adam Petri发明的,在性能评价、操作系统和软件工程等领域,应用得都比较广泛。已经证明:用Petri网可以有效地描述并发活动
Petri网包含的4种元素
Petri网包含4种元素:一组位置P、一组转换T、输入函数I以及输出函数O
图 1 Petri网元素
其中:
一组位置P为P1,P2,P3,P4,在图中用圆圈代表位置。
一组转换T为t1,t2,在图中用短直线表示转换。
两个用于转换的输入函数,用由位置指向转换的箭头表示,它们是:
I(t1)={P2,P4}
I(t2)={P2}
两个用于转换的输出函数,用由转换指向位置的箭头表示,它们是:
O(t1)={P1}
O(t2)={P3,P3}
注意,输出函数O(2)中有两个P3,是因为有两个箭头由t2指向P3.
Petri网的标记是在Petri网中权标(token)的分配。
图 2 Petri网标记
其中:
上图中有4个权标,其中一个在P1中,两个在P2中,P3中没有,还有一个在P4中上图中的标记可以用向量(1,2,0,1)表示。
Petri网的工作原理
Petri网具有非确定性,如果数个转换都达到了激
发条件,则其中任意一个都可以被激发。
当t1被激发时,P2和P4上各有一个权标被移出,而P1上则增加一个权标。 Petri网中权标总数不是固定的,在这个例子中两个权标被移出,而P1上只能增加一个权标。此时的标记为标记为(2,1,0,0)。
图 3 Petri网转换t1
t1激发后P2上有权标,因此t2也可以被激发。当t2被激发时,P2上将移走一个权标,而P3上新增加两个权标。此时的标记为(2,0,2,0)。
图 4 Petri网转换t2
对 Petri网的一个重要扩充是加入禁止线。禁止线是用一个小圆圈而不是用箭头标记的输人线。通常,当每个输入线上至少有一个权标,而禁止线上没有权标的时候,相应的转换才是允许的。在下图中,P3上有一个权标而P2上没有权标,因此转换t1可以被激发。
图 5 Petri网禁止线
闯关要求
为了方便旅客,某旅游平台拟开发一个机票预定系统。旅客将旅客信息输入该系统,系统为旅客安排航班,旅客在飞机起飞前一天凭取票通知和账单交款取票,系统核对无误即印出机票给顾客。请根据机票预定系统案例描述以及相关知识点,完成相应题目。
B,ABCD,A,C,B,A,B