一步步教你如何写需求分析_第1页
一步步教你如何写需求分析_第2页
一步步教你如何写需求分析_第3页
一步步教你如何写需求分析_第4页
一步步教你如何写需求分析_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章需求分析第三章需求分析3.1需求分析的任务及需求分析的过程3.2与用户沟通获取需求的方法3.3数据流图3.4实体-联系图3.5状态转换图3.6其他图形工具3.7验证软件需求

为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的前提和关键,不论我们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会给用户带来失望,给开发者带来烦恼。

需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。对目标系统提出完整、准确、清晰、具体的要求。在需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求。在需求分析的过程中,分析员和用户都起着关键的、必不可少的作用。要建立分析所需要的通信途径,以保证能顺利地对问题进行分析。用于需求分析的结构话分析方法必须遵守的准则:理解并描述问题的信息域,建立数据模型定义软件必须完成的功能,建立功能模型描述作为外部事件结果的软件行为,建立行为模型对三个模型进行分解,用层次的方法展示细节3.1需求分析的任务:确定对系统的综合要求:1.功能需求:必须完成的所有功能。2.性能需求:必须满足的定时约束或容量约束,通常包括速度(响应时间)、磁盘容量、安全性等方面的需求。3.可靠性和可用性需求:量化了用户可以使用系统的程度。4.出错处理需求:这类需求说明系统对环境错误应该怎样响应。确定对系统的综合要求:5.接口需求:接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。6.约束:说明用户或环境强加给项目的限制条件。常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台。7.逆向需求:逆向需求说明软件系统不应该做什么。8.将来可能提出的要求:列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。分析系统的数据要求软件系统本质上都是信息处理系统,因此,必须分析系统的数据要求,这是软件需求分析的一个重要任务。分析系统的数据要求通常采用建立数据模型的方法:实体——联系图(E-R图)。复杂的数据由许多基本的数据元素组成,数据结构表示数据元素之间的逻辑关系。利用数据字典全面的定义数据。利用图形工具辅助描绘数据结构。从数据流和数据结构出发,逐步细化软件功能,找出各元素之间的联系,接口特性和设计上的限制,给出目标系统的详细逻辑模型。导出系统的逻辑模型:数据流图实体-联系图状态转换图数据字典加工处理说明书等修正系统开发计划开发原型系统:使用户对目标系统有一个更直接、更具体的概念,从而能更准确提出用户需求。(关键的困难在于成本)编制需求分析文档:《需求规格说明书》任务概述:系统目标,运行环境,条件与限制数据描述:概念模型:E-R图逻辑模型:数据流图数据定义:数据字典,加工说明数据库描述:名称和类型功能描述:软件功能要求性能描述:软件性能要求(处理速度、响应时间、安全限制等)。编制需求分析文档:《需求规格说明书》(续)运行描述:用户界面、硬件接口、软件接口、故障处理等。质量保证:阐明软件在交付使用前需要进行的功能测试和性能测试,并且规定源程序和文档遵守的各种标准。技术审查和管理复审管理复审:在软件生命周期的每个重要的里程碑(一般是每个阶段计划、需求分析、设计、编码、维护)对工程项目的成本、实际花费、投资回报的前景等从管理的角度进行审查。技术审查:在软件生命周期的每个阶段进行正式而严格的技术审查,尽量发现隐藏的错误。正式技术评审是软件工程实践者实施的一项软件质量保证活动。评审的主要内容系统定义的目标是否与用户的要求一致;系统需求分析阶段提供的文档资料是否齐全;文档中的所有描述是否完整、清晰、准确反映用户要求;与所有其它系统成分的重要接口是否都已经描述;被开发项目的数据流与数据结构是否足够,确定;所有图表是否清楚,在不补充说明时能否理解;主要功能是否已包括在规定的软件范围之内,是否都已充分说明;软件的行为和它必须处理的信息、必须完成的功能是否一致;设计的约束条件或限制条件是否符合实际;是否考虑了开发的技术风险;是否考虑过软件需求的其它方案;是否考虑过将来可能会提出的软件需求;是否详细制定了检验标准,它们能否对系统定义是否成功进行确认;有没有遗漏,重复或不一致的地方;用户是否审查了初步的用户手册或原型;软件开发计划中的估算是否受到了影响。需求分析的原则必须能够表达和理解问题的数据域和功能域数据域:数据流,数据内容和数据结构。功能域:加工变换。必须按自顶向下,逐层分解的方式对问题进行分解和不断细化。要给出系统的逻辑视图和物理视图。逻辑视图:给出软件要达到的功能和要处理的数据之间的关系。物理视图:给出处理功能和数据结构的实际表示形式。3.2与用户沟通获取需求的方法

1访谈访谈有两种基本形式,分别是正式的和非正式的访谈。当需要调查大量人员的意见时,向被调查人分发调查表是一个十分有效的做法。在访问用户的过程中使用情景分析技术往往非常有效。某出版社系统调查表编号提出问题1您在哪个部门工作?2出版业务流程是什么?3您每日都处理那些文件、数据、报表?4工作中手工处理特别麻烦的事情是什么?5工作中手工处理什么问题解决不了?影响效率的问题有哪些?6您认为提高工作效率,节省工作时间,减轻工作强度可采取哪些办法?7您的部门需要成本核算和统计的内容有哪些?8您的部门采用计算机管理工作情况如何?9如何改进业务流程使之更合理?10哪些问题是目前传统手工方法根本无法解决的?11出版社计算机管理信息系统需要解决什么问题?2面向数据流自顶向下求精

软件系统本质上是信息处理系统,而任何信息处理系统的基本功能都是把输入数据转变成需要的输出信息。数据决定了需要的处理和算法,看来数据显然是需求分析的出发点。结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级。为了达到这个目标,通常从数据流图的输出端着手分析,这是因为系统的基本功能是产生这些输出,输出数据决定了系统必须具有的最基本的组成元素。沿数据流图从输出端往输入端回溯,应该能够确定每个数据元素的来源,与此同时也就初步定义了有关的算法。为了得到某个目前还没有的数据元素,或者得出这个数据元素需要用的算法尚不完全清楚。往往需要向用户和其他有关人员请教,他们的回答使分析员对目标系统的认识更深入更具体了,系统中更多的数据元素被划分出来了,更多的算法被搞清楚了。通常把分析过程中得到的有关数据元素的信息记录在数据字典中,把对算法的简明描述记录在IPO图(见3.7节)中。通过分析而补充的数据流、数据存储和处理,应该添加到数据流图的适当位置上。图3.1面向数据流自顶向下求精过程数据流图是帮助复查的极好工具。反复进行上述分析过程,把数据流图扩展到更低的层次。通过功能分解可以完成数据流图的细化。经过问题和解答的反复循环,分析员越来越深入具体地定义了目标系统,最终得到对系统数据和功能要求的满意了解。3简易的应用规格说明技术进行初步的访谈,初步确定待解决的问题的范围和解决方案。开发者和用户分别写出“产品需求”会议前准备开会讨论起草完整的软件需求规格说明书4快速建立软件原型快速原型应该具备的第一个特性是“快速”。快速原型应该具备的第二个特性是“容易修改”。为了快速地构建和修改原型,通常使用下述3种方法和工具:(1)第四代技术(2)可重用的软件构件(3)形式化规格说明3.3分析建模结构化分析实质上是一种创建模型的活动。需求分析过程应该建立3种模型,它们分别是数据模型、功能模型和行为模型。实体—关系图(ERD)描述数据对象及数据对象之间的关系;是用于建立数据模型的图形。数据流图(DFD)描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能(子功能);因此,数据流图是建立功能模型的基础。状态—迁移图(STD)描述系统对外部事件如何响应,如何动作。为此,状态转换图描绘了系统的各种行为模式(称为“状态”)和在不同状态间转换的方式。状态转换图是行为建模的基础。结构化分析的分析模型实体—关系图状态—迁移图数据流图数据对象描述加工规格说明数据字典控制规格说明分析建模通过需求分析而建立的模型必须达到下述的三个基本目标。描述用户的需求。为软件设计工作奠定基础。定义一组需求,一旦开发出软件产品之后,就可以用这组需求为标准来验收该产品。为了达到上述这些目标,在结构化分析过程中导出的分析模型的形式。3.3数据流图(DFD)是软件系统逻辑模型的一种图形表示,是从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程的工具。3.3.1符号数据流图中的主要图形元素数据流与加工之间的关系数据流与加工之间的关系----

系统逻辑模型数据的加工或变换输入输出软件系统外部实体外部实体……外部实体外部实体……输入数据流输入数据流输出数据流输出数据流分层的数据流图数据流图的层次结构分层的数据流图2F0A0B0F1A0B0F2F3F4F5p1C1D1M1N1F4.1M1F4.2N1F4.3K2F4.4W2F4.5p1Y2X2第0层第1层第2层画数据流图的指导原则:所有图形符号只限于前面四种基本符号。第一层DFD应当是基本系统模型每个加工至少有一个输入数据流和一个输出数据流。在数据流图中,按层给加工框编号。注意父图和子图的平衡,维护信息的连续性图中每个元素必须有名字。数据流图中不可以夹带控制流。3.3.2例子假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。图2.5定货系统的基本系统模型图2.6定货系统的功能级数据流图图2.7把处理事务的功能进一步分解后的数据流图例子2在教材的销售过程中,首先学生拿着购书申请到会计处审查并开具购书发票,然后到出纳处交款,并开具领书单,学生拿着领书单到书库领书;在开具购书发票的过程中,若教材存量不够,则需要进行缺书统计,然后书库根据缺书情况去采购缺书,并通知学生补购教材。学生教材购销系统购书单领书单缺书单进书通知进书通知保管员1销售购书单领书单学生缺书单进书通知2采购保管员第1层第2层教材存量表F1缺书登记表F2外部实体外部实体教材销售子系统无效书单购书单1.3登记并开领书单1.2开发票1.1审查有效性1.4登记缺书1.5补售教材采购学生学生进书通知有效书单发票领书单缺书信息1销售购书单领书单缺书单进书通知2采购进书通知缺书登记表教材存量表学生保管员第2层补售书单第3层教材存量表F1缺书登记表F2各班用书表F3售书登记表F4外部项1销售购书单领书单缺书单进书通知2采购进书通知缺书登记表教材存量表学生保管员采购子系统

第2层第3层缺书单2.3修改教材库存和待购量销售进书通知进书通知2.1按书号汇总缺书2.2按出版社统计缺书保管员教材存量表F1待购教材表F5教材一览表F6缺书登记表F23.3.3命名1.为数据流(或数据存储)命名(1)名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分。(2)不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)。(3)如果在为某个数据流(或数据存储)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难。2.为处理命名(1)通常先为数据流命名,然后再为与之相关联的处理命名。这样命名比较容易,而且体现了人类习惯的“由表及里”的思考过程。(2)名字应该反映整个处理的功能,而不是它的一部分功能。(3)名字最好由一个具体的及物动词加上一个具体的宾语组成。应该尽量避免使用“加工”、“处理”等空洞笼统的动词作名字。(4)通常名字中仅包括一个动词,如果必须用两个动词才能描述整个处理的功能,则把这个处理再分解成两个处理可能更恰当些。(5)如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解。3.3.4用途画数据流图的基本目的是利用它作为交流信息的工具。数据流图的另一个主要用途是作为分析和设计的工具。当用数据流图辅助物理系统的设计时,以图中不同处理的定时要求为指南,能够在数据流图上画出许多组自动化边界,每组自动化边界可能意味着一个不同的物理系统,因此可以根据系统的逻辑模型考虑系统的物理实现。图2.8这种划分自动化边界的方法暗示以批量方式更新库存清单图2.9另一种划分自动化边界的方法建议以联机方式更新库存清单3.3.5数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用。只有数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。数据字典的内容一般说来,数据字典应该由对下列4类元素的定义组成:(1)数据流(2)数据流分量(即数据元素)(3)数据存储(4)处理(IPO)(5)外部实体内容:名称,别名,编号,分类,描述,定义,位置等1、数据字典的定义数据流名:说明:简要介绍作用即它产生的原因和结果。数据流来源:即该数据流来自何方。数据流去向:去向何处。数据流组成:数据结构。每个数据量流通量:数据量、流通量。(1)数据流词条的描述举例:购书单发票领书单审查并开发票开领书单无效书单学生12各班学生用书表学生教材存量表数据流名:发票说明:用作学生付书款的依据数据流来源:来自加工“审查并开发票”数据流去向:流向加工“开领书单”。数据流组成:学号+姓名+书号+单价总价+书费合计数据流条目举例:数据元素名:类型:数值(离散、连续),文字(编码类型),…

长度:取值范围:相关的数据元素及数据结构(2)数据元素词条的描述数据项名:货物编号别名:G-No,G-num简述:本公司的所有货物的编号类型:字符串长度:10取值范围及含义:第1位:[J|G](进口/国产)第2∼4位:L01..L29(类别)第5∼7位:“A00”..“A99”(规格)第8∼10位:“001”..“999”(品名编号)数据元素条目举例:(3)数据文件词条的描述数据文件名:简述:存放的是什么数据。 数据文件组成:数据结构。存储方式:顺序,直接,关键码。存取频率:数据文件条目举例:文件名:库存记录别名:无简述:存放库存所有可供货物的信息组成:货物名称+编号+生产厂家+单价+库存量组织方式:索引文件,以货物编号为关键字查询要求:要求能够立即查询加工名:加工编号:反映该加工的层次简要描述:加工逻辑及功能简述加工逻辑:简述加工程序,加工顺序执行频率:(4)加工逻辑词条的描述加工逻辑条目举例:加工逻辑名:登记报名单编号:1激活条件:收到报名单加工逻辑:{1.1检查报名单+1.2编准考证号+1.3登记考生}执行频率:2000次/日名称:外部实体名简要描述:什么外部实体有关数据流:数目:(5)外部实体词条描述(源点及终点词条描述)数据字典定义符号例子:某程序设计语言规定,用户说明的标识符是长度不超过8个字符的字符串,其中第一个字符必须是字母字符,随后的字符既可以是字母字符也可以是数字字符。标识符=字母字符+字母数字串字母数字串=0{字母或数字}7字母或数字=[字母字符|数字字符]存折格式存折=户名+所号+帐号+开户日期+性质+(印密)+1{存取行}50户名=2{字母}24所号=“001”..“999”(注:储蓄所编码,规定三位数字)帐号=“00000001”..“99999999”

(注:帐号规定由八位数字组成)开户日期=年+月+日性质=“1”..“6”

(注:“1”表示普通户,“5”表示工资户等)印密=“0”

(注:印密在存折上不显示)存取行=日期+(摘要)+支出+存入+余额+操作+复核年=[2003|2004|2005|2006|2007]月=“01”..“12”日=“01”..“31”摘要=1{字母}4

(注:表明该存取是存?是取?还是换?)支出=金额

(注:金额规定不超过9999999.99元)金额=“0000000.01”..“9999999.99”操作=“00001”..“99999”复核=“00001”..“99999”加工逻辑说明对数据流图的每一个基本加工,必须有一个基本加工逻辑说明阐明把输入数据转换为输出数据的策略,是加工说明的主体,在需求分析阶段,仅需要指出要加工“做什么”。而不是“怎样去做”,加工逻辑说明的工具:结构化英语,判定表,判定树。结构化英语(PDL)又称过程设计语言,伪码;它是一种介于自然语言与程序设计语言之间的语言。语言的正文用基本控制结构进行分割,加工中的操作用自然语言短语来表示其基本控制结构有三种:简单陈述句结构:避免复合语句;重复结构:while_do或repeat_until结构。判定结构:if_then_else或

case_of结构;商店业务处理系统中“检查发货单”if发货单金额超过$500then

if欠款超过了60天then在偿还欠款前不予批准

else

(欠款未超期)发批准书,发货单

else

(发货单金额未超过$500)

if欠款超过60天then发批准书,发货单及赊欠报告else

(欠款未超期)发批准书,发货单

(2)判定表如果数据流图的加工需要依赖于多个逻辑条件的取值,使用判定表来描述比较合适以“检查发货单”为例(3)判定树判定树也是用来表达加工逻辑的一种工具。有时侯它比判定表更直观。检查发货单金额>$500金额

$500欠款>60天不发出批准书欠款

60天发货单发出批准书、欠款>60天发出批准书、发货单及赊欠报告欠款

60天发出批准书、发货单3.4数据模型的表示方法:实体-联系图在数据处理中用数据模型描述客观世界中的事物及其联系。

数据模型中包含3种相互关联的信息:数据对象(实体),数据对象的属性,数据对象间相互连接的关系。数据对象(实体):是需被目标系统所理解的复合信息的表示。所谓复合信息是具有若干不同特征或属性的信息。数据对象可以是外部实体(如显示器),事物(如报表或显示),角色(如教师或学生),行为(如一个电话呼叫)或事件(如单击鼠标左键),组织单位(如研究生院),地点(如注册室)或结构(如文件)。数据对象只封装了数据,没有包含作用于这些数据上的操作。这与面向对象范型中的类和对象不同。具有相同特征的数据对象组成的集合仍然称为数据对象,其中的某一个对象叫做该数据对象的一个实例。

属性:定义了数据对象的特征。它可用来:①为数据对象的实例命名;②描述这个实例;③建立对另一个数据对象的另一个实例的引用。如学生数据对象的属性可以有学号、姓名、性别、出生年月、籍贯等。为了唯一地标识数据对象的某一个实例,定义数据对象中的一个属性或几个属性为关键码(key),书写为_id,例如在“学生”数据对象中用“学号”做关键码,它可唯一地标识一个“学生”数据对象中的实例。关系:各个数据对象的实例之间有关联。 如一个学生“张鹏”选修两门课程“软件工程”与“计算机网络”,学生与课程的实例通过“选修”关联起来。实例的关联有三种:①一对一(1:1);②一对多(1:m);③多对多(n:m)。

3.4.4实体联系类型符号表示用长方形表示实体型,在框内写上实体名。用椭圆形表示实体的属性,并用无向边把实体与其属性连接起来。用菱形表示实体间的联系,菱形框内写上联系名。用无向边把菱形分别与有关实体相连接,在无向边旁标上联系的类型。若实体之间的联系也具有属性,则把属性和菱形也用无向边连接上。3.4.4实体联系类型符号表示图3.2某校教学管理ER图举例:用E-R图表示某个工厂的物资管理涉及的实体:仓库:仓库号,仓库面积,电话号码零件:零件号,名称,规格,单价,描述职工:职工号,姓名,年龄,职称实体间的联系:一个仓库可以存放多种零件,一种零件可以存放在多个仓库中一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作职工之间具有领导和被领导关系,即仓库主任领导若干保管员E-R图表示3.5数据规范化软件系统经常使用的信息,通常按一定方式组织并存放在数据库或文件中。通常用“范式(normalform)”定义消除数据冗余的程度。常用的范式分为第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。判断规范化程度的条件是:1、关系中所有属性都是“单纯域”,即不出现“表中有表”2、非主属性完全函数依赖于关键字3、非主属性相互独立,即任何非主属性间不存在函数依赖。如果一个关系连条件

1都不满足,则这个关系是非规范化的。如果一个关系仅满足条件

1,则这个关系满足第一范式(1NF)。如果一个关系满足条件1、2,但不满足3,则这个关系满足第二范式(2NF)。如果一个关系同时满足条件

1、2和3,则这个关系表满足第三范式(3NF)。当数据模型达到3NF,一般情况下就能满足数据库应用的需要。3.6状态转换图状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论