您好,欢迎访问三七文档
——结构化分析第三章结构化分析•与用户通信的技术•分析建模与规格说明(重点)•实体—关系图(重点)•数据流图(重点)•状态转换图•数据字典(重点)——结构化分析结构化分析方法(SA)结构化分析方法是一种建模技术基于计算机的系统是数据流和一系列的转换构成的在模型的核心是数据字典,它描述了所有的在目标系统中使用的和生成的数据对象。围绕着这个核心的有三种图:ERD、DFD、STD•数据流图(DFD)描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能(子功能);•实体—关系图(ERD)描述数据对象及数据对象之间的关系;•状态—迁移图(STD)描述系统对外部事件如何响应,如何动作。——结构化分析实体—关系图状态—迁移图数据流图数据对象描述加工规格说明数据字典控制规格说明•ERD用于数据建模•DFD用于功能建模•STD用于行为建模——结构化分析§3.1概述1.需求分析需求(Requirement)是指用户要求软件系统必须满足的所有功能、性能和限制。需求分析是发现、求精、建模、规格说明和复审的过程;是开发人员与用户双方一起充分理解用户的要求,明确地表达成一份书面资料——软件需求规格说明书。简单地说就是分析用户和市场的需要和要求,也称逻辑设计。它的过程是沟通的过程,理解和解释的过程。•系统分析员是连接用户与开发人员(系统设计员/程序员)之间的桥梁。系统分析员系统设计员程序员用户——结构化分析软件的需求:•功能需求•性能需求•环境需求•可靠性需求•安全保密要求•用户界面需求•资源使用需求•成本消耗需求•开发进度需求•预先估计以后系统可能达到的目标——结构化分析2.模型模型(Requirement)就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义描述。通常,模型由一组图形符号和组织这些符号的规则组成。结构化分析就是一种建立模型的活动,通常建立数据模型、功能模型、和行为模型等三种模型。模型既是软件设计的基础,也是编写软件规格说明的基础。需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。——结构化分析尽管目前存在许多不同的结构化分析方法,但是,所有这些分析方法都遵守下述准则:·必须理解和表示问题的信息域,根据这条准则应该建立·必须定义软件应完成的功能,这条准则要求建立功能模·必须表示作为外部事件结果的软件行为,这条准则要求·必须对描述信息、功能和行为的模型进行分解,用层次·分析过程应该从要素信息移向实现细节。——结构化分析§3.2与用户通信的技术1.访谈(会谈)正式的访谈:系统分析员将提出一些事先准备好的具体问题;非正式访谈:将提出一些可以自由回答的开放性问题,以鼓励被访问的人员表达自己的想法。情景分析技术:就是对用户运用目标系统解决某个具体问题的方法和结果进行分析。使用情景分析技术,使得系统分析员能够获知用户的具体要求。——结构化分析2.简易的应用规格说明技术这是一种面向团队的需求收集法,提倡用户与开发者密切合作,共同标识问题,提出解决方案的要素,商讨不同的方法并指定基本的需求.基本准则:1.在中立地点举行由开发者和用户双方出席的会议;2.指定准备会议和参加会议的规则;3.提出一个议事日程,这个日程应该足够正式以便能够涵盖所有要点,同时这个日程应该足够非正式,以便鼓励自由思维。4.由一个“协调人”来主持会议,他既可以是用户也可以是开发者,还可以是从外面请来的人;5.使用一种“定义机制”;6.目标是标识问题、提出解决方案要素、商讨不同的方法以及在有利于实现目标的氛围中指定初步的需求。——结构化分析3.软件原型即把系统主要功能和接口通过快速开发制作为“软件样机”,以可视化的形式展现给用户,及时征求用户意见,从而明确无误地确定用户需求。同时,原型也可用于征求内部意见,作为分析和设计的接口之一,可方便于沟通。特点:应该实现用户看得见的功能,省略目标系统的“隐含”功能。快速、容易修改。常用工具:第四代技术(4GT)可重用的软件构件形式化规格说明和原型环境——结构化分析§3.3分析建模与规格说明1.分析建模达到目标:(1)描述用户的需求;(2)为软件设计工作奠定基础;(3)定义一组需求,一旦开发出软件产品之后,就可以用这组需求为标准来验收该产品。实体—关系图状态—迁移图数据流图数据对象描述加工规格说明数据字典控制规格说明——结构化分析分析模型的核心是“数据字典”,它描述软件使用或产生的所有的数据对象。围绕着这个核心有三种不同的图:1.实体-关系图:描绘数据对象之间的关系,它是用来进行数据建模活动的图形,图中出现的每个数据对象的属性可以在“数据对象描述”中描述;2.数据流图:指出当数据在软件系统中移动时怎样被变换;描绘变换数据流的功能和子功能。数据流图是功能建模的基础。3.状态转换图:指明了作为外部事件结果的系统行为。为此,状态转换图描绘了系统的各种行为模型和在不同状态间转换的方式。——结构化分析2.软件需求规格说明框架:(1)引言A.系统参考文献B.整体描述C.软件项目约束(2)信息描述A.信息内容B.信息流(数据流、控制流)(3)功能描述A.功能分解B.功能描述(处理说明、限制、性能需求、设计约束、支撑图)——结构化分析C.控制描述(控制规格说明、设计约束)(4)行为描述A.系统状态C.事件和动作(5)确认标准A.性能范围B.测试种类C.预期的软件响应D.特殊考虑(6)参考书目(7)附录——结构化分析1、引言1.1目的1.2背景1.3定义1.4参考资料2、项目概述2.1产品描述2.2产品功能2.3用户特点2.4一般约束2.5假设与依据3、具体需求3.1功能需求3.1.1规格说明3.1.1.1引言3.1.1.2输入3.1.1.3输出3.1.1.4加工3.1.2外部接口3.1.2.1用户接口3.1.2.2硬件接口3.1.2.3软件接口3.1.2.4通讯接口3.2性能需求3.2.1数据精度3.2.2时间特性3.2.3适应性3.3设计约束3.4属性需求3.4.1安全性3.4.2可维护性3.4.3保密性……附录索引——结构化分析§3.4实体—关系图数据模型:数据模型包括三种互相关联的信息:数据对象,描述数据对象的属性,描述对象间相互连接的关系。•数据对象数据对象是对软件必须理解的复合信息的表示。或者说,数据对象是现实世界中省略了功能和行为的实体。•数据对象可以是外部实体,事物,角色,行为或事件,组织单位,地点或结构;•数据对象彼此间是有关联的;——结构化分析•数据对象只封装了数据,没有包含作用于这些数据上的操作。2.属性•属性定义了数据对象(实体)的特征。它可用来:•为数据对象的实例命名;•描述该实例;•引用另一个数据对象的实例。•标识符:为了唯一地标识数据对象的某一个实例,定义数据对象中的一个属性或几个属性为关键字(key)。——结构化分析3.关系数据对象彼此之间连接的方式称为关系,也叫联系。如一个学生“张鹏”选修两门课程“软件工程”与“计算机网络”,学生与课程的实例通过“选修”关联起来。•实例的关联有三种:一对一(1:1);一对多(1:m);多对多(n:m)。•这种实例的关联称为“基数”。基数表明了“重复性”。如1位教师带学生班的30位同学,就是1:m的关系。•联系也可能有属性。——结构化分析为确保模型的一致性并消除冗余,分析人员要掌握以下规范化规则:(1)数据对象的任何实例对每个属性必须有且仅有一个属性值;(2)属性是原子数据项,不能包含内部数据结构;(3)如果数据对象的关键属性多于一个,那么他的非关键属性必须表示整个数据对象而不是部分关键属性的特征;(4)所有的非关键属性必须表示整个对象而不是部分属性的特征。——结构化分析3.实体—关系图的符号实体关系图(ER图)是表示数据对象及其关系的图形语言机制。数据对象(实体)用矩形框来代表;用连接相关实体的菱形框表示关系;用椭圆形或圆角矩形表示实体(或关系)的属性;用无向边把实体(或关系)与其属性连接起来。实体属性关系——结构化分析图3.2某校教学管理ER图——结构化分析§3.5数据流图当信息在软件中移动时,它将被一系列“变换”所修改。数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。1.数据对象数据流图有四种基本符号:正方形(或立方体)表示数据的源点或终点;圆角矩形(或圆形)代表变换数据的处理;开口矩形(或两条平行横线)代表数据存储;箭头表示数据流,即特定数据的流动方向。(注意,数据流与程序流程图中用箭头表示的控制流有本质不同,千万不要混淆。)——结构化分析图3.3数据流图的符号——结构化分析2.例子假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据;零件编号、零件名称、定货数量、目前价格、主要供应者和次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数数据流图有四种成分:源点或终点、处理、数据存储和数据流。——结构化分析画出上述定货系统的数据流图可采用以下步骤。•从问题描述中提取数据流图的四种成分。•接下来考虑处理•最后,考虑数据流和数据存储•表3.1总结了上面分析的结果,其中加星号标记的是在问题描述中隐含的成分。——结构化分析表3.1源点/终点处理采购员仓库管理员产生报表处理事务数据流数据存储定货报表零件编号零件名称定货数量目前价格主要供应者次要供应者零件编号*事务类型数量*定货信息(见定货报表)库存清单零件编号*库存量库存量临界值——结构化分析一旦把数据流图的四种成分都分离出来以后,就可以着手画数据流图了。任何系统的基本模型都由若干个数据源点/终点以及一个处理组成,这个处理就代表了系统对数据加工变换的基本功能。从基本系统模型这样非常高的抽象层次开始画数据流图是一个好办法。在这个高层次的数据流图上是否列出了所有给定的数据源点/终点是一目了然的,因此它是很有价值的通信工具。——结构化分析下一步应该把基本系统模型细化,描绘系统的主要功能。(在图3.5中给处理和数据存储都加了编号,这样做的目的是便于引用和追踪。)接下来应该对功能级数据流图中描绘的系统主要功能进一步细化。当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同。——结构化分析图3.4(突出表明了数据的源点和终点)——结构化分析图3.5定货系统的功能级数据流图——结构化分析图3.6把处理事务的功能进一步分解后的数据流图——结构化分析画数据流图的步骤数据流图的表示方法不是唯一的。较好的方法是分层次的描述系统。1.画顶层数据流图列出系统的全部数据源和数据终点,将系统加工处理过程作为一个整体,就可得顶层数据流图。2.画各层的数据流图对系统处理过程自顶向下、逐步分解,每层画出数据流图。3.画总的数据流图这一步对了解整个系统很有好处,但也要根据实际情况来决定总图的布局,不要把数据流图画的太复杂。——结构化分析3.命名数据流图中每个成分的命名是否恰当,直接影响数据流图的可理解性,因此,给这些成分起名字时应该仔细推敲。下面讲述在命名时应注意的问题。(1)为数据流(或数据存储)·名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分。·不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)·如果在为某个数据流(或数据存储)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难。——结构化分析(2·通常先为数据流命名,然后再为与之相关联的处理命名。这样命名比较容易,而且体现了人类习惯的“由表及里”·名字应该反映整个处理的功能,而不是它的一部分功能。·名字最好由一个具体的及物动词,加上一个具体的宾语组成。应该尽量避免使用“加工”、“处理”等空洞笼统的·通常名字中仅包括一个动词,如果必须用两个动词才能描述整个处理的功能,则把这个处理再分解成两个处理可能·如果在
本文标题:软件工程3
链接地址:https://www.777doc.com/doc-4007960 .html