Email:green.lyn@gmail.com教材:软件工程导论(第5版)张海藩编著清华大学出版社软件工程第三章需求分析3.1需求分析的任务需求分析的基本任务就是准确地回答“系统必须做什么?”这个问题。3.1.1确定对系统的综合要求对系统的综合要求有下述几个方面:1.系统的功能要求应划分出系统必须完成的所有功能。2.系统性能要求包括:联机系统的响应时间、系统需要的存储容量及后援存储、系统的安全性等。3.可靠性和可用性需求可靠性需求定量地指定系统的可靠性。例如,“机场雷达系统在一个月内不能出现2次以上故障“。可用性与可靠性密切相关,它量化了用户可以使用系统的程度。例如,在任何时候主机或备份机上的雷达系统应该至少有一个是可用的,而且在一个月内任何一台计算机上该系统不可用的时间不能超过总时间的2%以上。4.出错处理要求这类需求说明系统对环境错误应该怎样响应。例如,如果它接收到另一个系统发来的违反协议格式的消息,应该做什么?注意,上述这类错误并不是由该应用系统本身造成的。5.接口需求接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求等。6.约束设计约束或实现约束描述在设计或实现应用系统时应遵循的限制条件。常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准,应该使用的硬件平台等。7.逆向需求逆向需求说明软件系统不应该做什么。应该仅选择能澄清真实需求且可消除可能发生的误解的那些逆向需求。8.将来可能提出的要求应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做的目的是,在设计过程中对将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种扩充和修改。3.1.2分析系统的数据要求分析系统的数据要求,是软件需求分析的一个重要任务。通常采用建立概念模型的方法(见3.3节)。常用的图形工具有层次方框图和Warnier图。3.1.3导出系统的逻辑模型根据上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、E-R图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。3.1.4修正系统开发计划3.2与用户沟通获取需求的方法3.2.1访谈访谈是最早开始使用的获取用户需求的技术,也是迄今为止仍然广泛使用的需求分析技术。访谈有两种基本形式,分别是正式的和非正式的。在访问用户的过程中,使用情景分析技术往往非常有效。所谓情景分析就是对用户将来使用目标系统解决某个具体问题的方法和结果进行分析。情景分析技术的用处主要体现在下述两个方面:它能在某种程度上演示目标系统的行为,从而便于用户理解,而且还可能进一步揭示出一些分析员目前还不知道的需求。由于情景分析较易为用户所理解,使用这种技术能保证用户在需求分析过程中始终扮演一个积极主动地角色。3.2.2面向数据流自顶向下求精结构化分析方法(SA)就是面向数据流自顶向下逐步求精进行需求分析的方法。其过程如下图示:图3.1面向数据流自顶向下求精过程分析追踪数据流图用户复查细化数据流图有补充修正无补充修正需要分解不需要分解3.2.3简易的应用规格说明技术(P60)面向团队的需求收集法,用户与开发者密切合作3.2.4快速建立软件原型快速原型应该具备的第一个特性是“快速”。快速原型应该具备的第二个特性是“容易修改”。为了快速地构建和修改软件,通常使用下述几种方法和工具:(1)第四代技术包括众多数据库查询和报表语言、程序和应用系统生成器以及其他非常高级的非过程化语言。(2)可重用的软件构件使用一组已有的软件构件(也称为组件)来装配(而不是从头构造)原型。(3)形式化规格说明和原型环境3.3分析建模与规格说明3.3.1分析建模所谓模型,就是为了理解事务而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。结构化分析实质上是一种创建模型的活动。根据结构化分析准则,需求分析过程应该建立3种模型,它们分别是:数据模型、功能模型和行为模型。3.4节介绍的实体-联系图,描绘数据对象及数据对象之间的关系,是用于建立数据模型的图形。2.4节介绍的数据流图,描绘当数据在软件系统中移动时被变换的逻辑过程,指明系统具有的变换数据的功能,因此,数据流图是建立功能模型的基础。3.6节介绍的状态转换图(简称为状态图),指明了作为外部事件结果的系统行为。为此,状态图描绘了系统的各种行为模式(称为“状态”)和在不同状态间转换的方式,状态图是行为建模的基础。3.3.2软件需求规格说明软件需求规格说明,应包括以下内容:系统规格说明:主要描述目标系统的概貌、功能要求、性能要求、可靠性和可用性要求、约束和将来可能提出的要求等。数据要求:主要包括数据字典、描绘数据结构的层次方框图或Warnier图。用户系统描述:一份初步的用户手册。主要包括对系统功能和性能的扼要描述,使用系统的主要步骤和方法,以及系统用户的责任等。补充:软件需求规格说明大纲一、引言二、信息描述1.数据流图2.数据结构表示3.数据字典4.系统接口描述5.内部接口三、功能描述1.功能2.处理解说3.设计约束四、有效性准则1.性能界限2.测试种类3.所指望的软件响应4.特殊考虑五、参考文献(与该软件有关的文件资料的参考文献表)六、附录(补充信息、表格数据、图表、算法详细描述等)3.4实体-联系图为了把用户的数据要求清楚准确地描述出来,系统分析员通常建立一个概念性数据模型(信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。3.4.1数据对象(实体)客观存在并可相互区别的事物称为实体。可以是具体的人、事物、行为、事件、角色或抽象的概念。总之,可以由一组属性来定义的实体都可以被认为是数据对象。数据对象彼此间是有联系的,例如教师‘教’课程,学生‘学’课程。数据对象只封装了数据而没有对施加于数据上的操作的引用,这是数据对象与面向对象中的‘类’或‘对象’的区别。3.4.2属性实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。例如,学生的学号、姓名等。码(Key)唯一标识实体的属性集称为码。域(Domain):属性的取值范围称为该属性的域。3.4.3联系客观世界中的事物彼此间是有联系的,例如教师与课程间存在‘教’这种联系,学生与课程间存在‘学’这种联系。数据对象彼此之间相互连接的方式称为联系,也称为关系。联系可分为以下3种类型:(1)一对一联系(1:1)如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系。记为1:1。(例如:部门与经理)(2)一对多联系(1:N)如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B具有一对多联系。记为1:N。例如,教师和课程之间存在一对多的联系,即每位教师可以教多门课程,而一门课程只能由一位教师来教。(3)多对多联系(M:N)如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体集B具有多对多联系。记为M:N。例如,学生和课程之间存在多对多的联系,即每位学生可以学多门课程,而一门课程可以由多位学生来学。3.4.4实体-联系图的符号通常,使用实体-联系图(entity-relationshipdiagram)来建立数据模型。可以把实体-联系图简称为ER图,相应的把用ER图描绘的模型称为ER模型。ER模型使用简单的图形符号表达系统分析员对问题域的理解,ER图中包含了实体、联系和属性三种基本成分。表示方式:实体型1联系名实体型2111:1联系实体型1联系名实体型2mnm:n联系实体型1联系名实体型21n1:n联系例子:教师教1mnn学生课程学工号职称职务性别姓名学号系年级性别姓名成绩学时学分课名课程号图3.2某校教学管理ER图3.6状态转换图状态转换图(状态图)通过描绘系统的状态及引起系统状态转换的事件来表示系统的行为。3.6.1状态状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。系统对事件的响应,即可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。在状态图中定义的状态主要有:初态(即初始状态,最多一个)、终态(即最终状态,0至多个)和中间状态。3.6.2事件事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外部事件的抽象。例如,内部时钟表明某个规定的时间段已经过去,用户移动或点击鼠标等都是事件。简而言之,事件就是引起系统做动作或(和)状态转换的控制信息。3.6.3符号在状态图中,初态用实心圆表示,终态用一对同心圆表示。中间状态用圆角矩形表示,可分成上中下三部分:状态名称(必须有),状态变量名字和值(可选),活动表(可选)。活动表语法:事件名(参数表)/动作表达式活动表中经常使用的标准事件:entry,exit,do状态之间的箭头线表示状态转换,箭头指明转换方向。状态转换的触发事件表达式应标在箭头线之上。事件表达式语法:事件说明[守卫条件]/动作表达式事件说明语法:事件名(参数表)动作表达式是一个过程表达式,当状态转换时执行初始事件事件表达式结束事件状态1状态2状态变量1状态变量2活动表1活动表2图3.3状态图中使用的主要符号3.6.4例子(P66)闲置挂断电话挂断电话拿起听筒拨号音Timer=0Do/响拨号音且增加timer拨号数字数字超时超时Do/响蜂鸣音无效号码存储的信息Do/播放信息有效号码忙音Do/响忙音接通中Do/试接通占线已接通振铃Do/振铃通话受话人回话受话人断线电话断线信息播完图3.4电话系统的状态图3.7其他图形工具3.7.1层次方框图层次方框图用树形结构的一系列的矩形框描绘数据的层次结构。产品硬件软件服务处理机存储器外部设备系统软件应用软件软件服务硬件服务培训图3.5层次方框图例子3.7.2Warnier图软件产品系统软件应用软件操作系统(P1)编译程序(P2)软件工具编辑程序(P3)测试驱动程序(P4)设计辅助工具(P5)图3.6Warnier图例子Warnier图也用树形结构描绘信息,它可以表明信息的逻辑组织,即它可以指出一类信息或一个信息元素是重复出现的,也可以表示信息有条件出现。3.7.3IPO图IPO图是输入/处理/输出图的简称,是美国IBM公司发展完善起来的一种图形工具,能方便地描绘输入数据、对数据的处理和输出数据之间的关系。IPO图的基本形式是在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框中列出产生的输出数据。处理框中列出处理的次序暗示了执行的顺序。IPO图中还用类似向量符号的粗大箭头清楚地指出数据通信的情况旧的主文件事务文件1.校验主记录2.校验事务记录3.更新主记录有效的主记录有效的事务记录更新后的主文件输入处理输出图3.7IPO图的一个例子IPO表系统:____________作者:_________模块:____________日期:_________编号:____________注释:被调用:调用:输入:输出:处理:局部数据元素:图3.8改进的IPO图的形式3.8验证软件需求3.8.1从哪些方面验证软件需求的正确性一般说来,应该从下述四个方面进行验证:一致性:所有要求必须是一致的,任何一条需求不能和其他需求互相矛盾。完整性:需求必须是完整的,规格说明书应包括用户需求的每一个功能或性能。现实性:指定的需求应该是利用现有的硬件技术和软件技术基本上可以实现的。有效性:必须证明需求是正确有效的,确实能解决用户面对的问题。3.8.2验证软件需求的方法1.验证需求的一致性:人工审查、软件工具验证(需形式化需求)2.验证需