软件工程 第三章 需求分析.ppt
软件需求分析软件需求分析第三第三第三第三 章章章章软软件件需需求求分分析析是是软软件件生生命命期期中中重重要要的的一一步步,也也是是决决定定性性的的一一步步。它它的的基基本本任任务务是是准准确确地地回回答答“系统必须做什么?系统必须做什么?”。软件需求分析是在可行性的基础上进行的更细致软件需求分析是在可行性的基础上进行的更细致的分析工作,是对软件计划阶段所确定的系统目的分析工作,是对软件计划阶段所确定的系统目标和功能做进一步的求精和细化。标和功能做进一步的求精和细化。对目标系统提对目标系统提出完整、准确、清晰、具体的要求。出完整、准确、清晰、具体的要求。在可行性阶在可行性阶段的文档是系统需求分析的出发点。在需求分析段的文档是系统需求分析的出发点。在需求分析阶段分析员必须仔细研究这些文档并将它们细化。阶段分析员必须仔细研究这些文档并将它们细化。需求分析的原则:1.必须能够理解和表达问题的数据域,根据这条准则应该建立数据模型数据模型。2.必须定义软件应该完成的功能根据这条准则应该建立功能模型功能模型。3.必须描述作为外部事件结果的软件行为,根据这条准则应该建行为模型行为模型。4必须对数据、功能和行为的模型进行分解和不断细化,建立问题的层次结构层次结构。3.1 需求分析的任务需需求求分分析析阶阶段段的的任任务务:在在可可行行性性分分析析的的基基础础上上,进进一一步步了了解解确确定定用用户户需需求求。准准确确地地回回答答 “系系统统必必须须做做什什么么?”的的问问题题。对目标系统提出完整、准确、清晰、具体的要求。获得获得需求规格说明书需求规格说明书。需求分析的具体任务:1 1、确定系统的综合要求、确定系统的综合要求 系统功能要求系统功能要求这是最主要的需求,确定系这是最主要的需求,确定系统必须完成的所有功能。统必须完成的所有功能。系系统统性性能能要要求求应应就就具具体体系系统统而而定定,例例如如可可靠靠性性、联联机机系系统统的的响响应应时时间间、存存储储容容量量、安安全性能等。全性能等。系系统统可可靠靠性性和和可可用用性性要要求求可可靠靠性性需需求求是是定定量量地地指指定定系系统统的的可可靠靠性性。可可用用性性和和可可靠靠性性密密切相关,它量化了用户使用系统的程度。切相关,它量化了用户使用系统的程度。出出错错处处理理要要求求这这类类需需求求说说明明系系统统对对环环境境错误应该如何响应。错误应该如何响应。2 2 接接口口需需求求接接口口需需求求描描述述系系统统与与环环境境通通信信的的格格式式,常常见见的的接接口口有有:用用户户接接口口需需求求、硬硬件件接口需求、软件接口需求、通信接口需求。接口需求、软件接口需求、通信接口需求。约束约束描述在设计或实现应用系统时应遵守的描述在设计或实现应用系统时应遵守的 限制条件,常见的约束有精度限制条件,常见的约束有精度 、工具和语言约、工具和语言约 束、使用的标准、使用的硬件平台。束、使用的标准、使用的硬件平台。逆向需求逆向需求逆向需求说明软件系统不应该做什么。理论上有无限多个逆向需求,我们应该仅选取能澄清真实需求且可消除可能发生的误解的那些逆向逆向需求说明软件系统不应该做什么。理论上有无限多个逆向需求,我们应该仅选取能澄清真实需求且可消除可能发生的误解的那些逆向 需求。需求。将来可能提出的要求将来可能提出的要求对将来可能提出的扩充及对将来可能提出的扩充及修改作预准备。修改作预准备。2 2、分析系统的数据要求、分析系统的数据要求 软件系统本质上是信息处理系统,因此,软件系统本质上是信息处理系统,因此,必须分析系统的数据要求,这是软件需求分析的必须分析系统的数据要求,这是软件需求分析的一个重要任务。分析系统的数据要求通常采用建一个重要任务。分析系统的数据要求通常采用建立数据模型的方法。立数据模型的方法。必须考虑:必须考虑:数据数据 (需要哪些数据、数据间联系、数据性(需要哪些数据、数据间联系、数据性质、结构)质、结构)数据处理数据处理 (处理的类型、处理的逻辑功能)(处理的类型、处理的逻辑功能)3 3、导导出系统的逻辑模型出系统的逻辑模型通常系统的逻辑模型通常系统的逻辑模型用用DFDDFD图来描述。图来描述。4 4、修正系统的开发计划、修正系统的开发计划通过需求对系统的成通过需求对系统的成本及进度有了更精确的估算,可进一步修改开本及进度有了更精确的估算,可进一步修改开发计划。发计划。3.23.2与用户沟通获取需求的方法与用户沟通获取需求的方法 1.客户访谈访谈是最早开始使用的获取用户需求的一种方法,也是最常用的一种方法。访谈有两种基本形式,分别是正式和非正式的访谈。当需要调查大量人员的意见时,请被调查人填写调查表是十分有效的做法。在访问用户的过程中使用情景分析技术往往非常有效,所谓情景分析就是对用户将来使用目标系统解决某个具体问题的方法和结果进行分析,系统分析员利用情景分析技术,往往能够获知用户的具体需求。2.面向数据流自顶向下求精结构化分析方法就是面向数据流自顶向下逐步分解求精,在可行性研究阶段描绘出了目标系统的高层数据流图,但对数据考虑的不详,在这个阶段必须细化。通常把分析过程中得到的数据元素的信息记录在数据字典中,把对算法的简明描述记录在IPO图中。最后,分析员要对分析得出的结果即数据流图请用户进行仔细复查。图图3.1 面向数据流自顶向下求精过程面向数据流自顶向下求精过程3.3.简简易易的的应应用用规规格格说说明明技技术术(面面向向团团队队的的需需求求收集法)收集法)使用前两种方法定义需求时并不理想。因此,人们提出一种简易的应用规格说明技术,它是一种面向团对的需求收集间技术。这种方法提倡用户与开发者密切合作,共同标识问题,提出解决方案,商讨不同的方案并指定基本需求,目前,这种技术已经成为信息系统领域使用的主流技术 4.4.快速建立软件原型快速建立软件原型快速原型就是快速建立起旨在演示目标系统主要功能的可运行程序。它是最准确、最有效、最强大的需求分析技术。构建软件原型的要点是,应该实现用户看得见的功能,省略目标系统的隐含功能。快速软件原型的特点应该是:一是快速,二是容易修改。3.3 3.3 分析建模与规格说明分析建模与规格说明3.3.1 分析建模分析建模结构化分析实质上是一种创建模型的活动。为了开发出复杂的软件系统,系统分析员应该从不同角度抽象出目标系统的特性,使用精确的表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型。根据本章开头讲述的结构化分析准则,需求分析过程应该建立3种模型,它们分别是数据模型、功能模型和行为模型。通过需求分析除了创建分析模型之外,还应该写出软件需求规格说明书,它是需求分析阶段得出的最主要的文档。通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。自然语言的规格说明具有容易书写、容易理解的优点,为大多数人所欢迎和采用。3.3.2 软件需求规格说明为了把用户的数据要求清楚、准确地描述出来,系统分析员通常建立一个概念数据模型(也称为信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,它反映了用户的现实环境。数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象间的联系。3.4 实体-联系图数据对象(实体)数据对象(实体):客观世界中存在的且可区分的事物。联系联系:客观事物之间的联系(三类-1:1,1:N,M:N)属性属性:实体或联系所具有的性质。实体实体-联系图的符号联系图的符号用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体的属性。并直线把实体或联系与其属性连接起来。学生学生教师教师教教性别性别教教 工工号号职务职务姓名姓名职务职务姓名姓名性别性别学号学号年级年级系系课程课程课课 程程号号课名课名学分学分学时学时教教成绩成绩1NMN教师、学生及课程三者之间的ER图 3.5 数据规范化规范化理论是数据库逻辑设计的指南和工具,那么在概念设计阶段,也要用规范化理论为工具消除E-R图中冗余的联系。数据库中用“范式”来定义消除数据冗余的程度。分为5个范式。第一范式数据冗余程度最大,第五范式数据冗余程度最小,但是范式级别越高,存储自身的过程的越复杂。第二,随着范式级别的提高,数据的存储结构与基于问题域的结构间匹配程度也随之下降,所以当需求发生变化时数据的稳定性就差。第三,范式级别越高需要访问的数据表越多,访问速度就越低。从实用来说,一般选用第三范式比较恰当。3.6 3.6 状态转换图状态转换图 状态转换图(状态图)通过描绘系统的状态及系统的状态转换的事件,来表示系统的行为。因此状态转换图建立系统的行为模型。状态状态:状态是可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。状态主要有处态处态、终态终态、和中间状态中间状态。在一张图中只能有一个处态,而终态则可以有0至多个。状态图既可以表示系统的循环运行过程,也可以是系统的单程生命期。事件:事件:在特定时刻发生的事情,它是对引起系统做动作或从一个状态转换到另一个状态的外界事迹的抽象。状态图中符号状态图中符号在状态图中,处态用实心圆表示,终态用同心圆(内圆用实心圆)表示,中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下3个部分,分别放置状态名、状态变量的名字和值和活动表。其中,状态变量和活动表是可选的。事件名(参数表)事件名(参数表)/动作表达式动作表达式其中,事迹名可以是任何事件的名称,在活动其中,事迹名可以是任何事件的名称,在活动表中常使用表中常使用3种标准事件:种标准事件:entryexitdo,而而entry事件表示进入该状态的动作,事件表示进入该状态的动作,exit事件表示退出事件表示退出该状态的动作,该状态的动作,do事件表示在该状态下的动作,事件表示在该状态下的动作,需要时可以为事迹指定参数表,活动表中的动需要时可以为事迹指定参数表,活动表中的动作表达式描述做的具体动作。它是一个过程表作表达式描述做的具体动作。它是一个过程表达式,当状态转换开始时执行该表达式。达式,当状态转换开始时执行该表达式。活动表的语法格式如下:活动表的语法格式如下:事件表达式的语法如下:事件表达式的语法如下:事件说明守卫条件/动作表达式其中事件说明语法为:事件名(参数表)守卫条件是一个布尔表达式,如果同时使用事件说明和守卫条件,则当且仅当事件说明和守卫条件为真时,状态转换才发生。如果只有守卫条件没有事件说明,则只当守卫条件为真时,状态转换才发生。下图给出了状态图中使用的主要符号下图给出了状态图中使用的主要符号实例:实例:为了具体说明怎样用状态图建立系统的行为模为了具体说明怎样用状态图建立系统的行为模型,下面举一个人们非常熟悉的电话系统的状型,下面举一个人们非常熟悉的电话系统的状态图例子。见书态图例子。见书57页图页图3.4状态图中使用的主要符号3.73.7其它图形工具其它图形工具3.7.1层次方框图:层次方框图:层次方框图是用树形结构的一系列多层次的矩形框描绘数据的层次结构。数形结构的顶层是一个单独的矩形框,它代表一个完整的数据结构,下面各层矩形框代表这个数据的组成部分,最低层的各个框代表组成这个数据的实际数据元素。例如:描绘一个计算机公司全部产品的数据结构可以用下图表示:产产 品品 硬硬 件件 软软 件件 服服 务务 处处理机理机 存存储器储器外部外部设备设备系统系统软件软件应用应用软件软件软件软件服务服务硬件硬件维修维修培训培训操作操作系统系统编译编译程序程序软件软件工具工具层次方框图的一个例子层次方框图的一个例子 注意:层次方框图即可以表示数据的层次结构,也可以表注意:层次方框图即可以表示数据的层次结构,也可以表示程序的层次结构示程序的层次结构3.7.23.7.2Warnier Warnier 图图 Warnier 图用树形结构描绘数据的层次结构。它可以清楚地描绘信息的逻辑结构,可以表明一个或一类信息元素是重复出现的,也可以是特定信息在某一类信息中有条件出现的。因为重复和条件约束是软件处理过程的基础,所以很容易把Warnier 图转换成软件设计的工具。例子例子:用用Warnier图描绘一类软件产品,它说明图描绘一类软件产品,它说明了这种图形工具的用法。了这种图形工具的用法。软件产品软件产品系统软件系统软件操作系统操作系统(P1)编译程序(P2)软件工具软件工具编辑程序编辑程序(P3)测试驱动程序测试驱动程序(P4)设计辅助程序设计辅助程序(P5)应用软件应用软件Warnier图的一个例子图的一个例子3.7.33.7.3 IPOIPO图图输入、处理、输出图的简称。它能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。下图是一个主文件更新的例子:旧的主文件旧的主文件事务文件事务文件1、校验主记录、校验主记录2、校验事务记、校验事务记录录3、更新主记、更新主记录录1、校验主记、校验主记录录2、有效的事、有效的事务记录务记录3、更新后的、更新后的主文件主文件 一个一个IPO图的例子图的例子3.8 3.8 验证软件需求验证软件需求 从哪几个方面验证软件需求的正确性从哪几个方面验证软件需求的正确性一致性:一致性:任何一条需求不能和其他需求互相矛盾。完整性完整性:规格说明书应该包括用户需要的每一个功能和性能。现实性:现实性:指定的需求是用现有的硬件、软件技术可以实现的。有效性:有效性:需求是正确有效的,确实能解决用户面对的问题。验证软件需求的方法验证软件需求的方法一致性:一致性:人工审查形式化描述软件需求,软件工具自动验证。现实性:现实性:参考以往的开发经验,分析,仿真或模拟完整性和有效性:完整性和有效性:原型系统