软件的定义—需求分析《软件工程》2.2项目需求分析当项目计划完成之后,软件项目就进入了下一个重要的阶段即软件需求分析阶段。它的基本任务是准确地回答“系统必须做什么?”这个问题。Whytodo?—可行性研究√Whattodo?—需求分析√Howtodo?—系统设计需求分析的概念需求分析的任务并不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。需求分析是指开发人员要准确地理解用户的要求,进行细致的调查分析,将用户非形式化的需求陈述转化为完整的需求定义,再由需求定义转化为相应的软件需求规格说明书(即需求分析的结果)的过程。需求规格说明书的主要部分是详细的数据流图,数据字典和主要功能的算法描述。通过验收的需求规格说明书是今后软件设计和项目验收的依据。需求分析的过程需求分析对于整个软件开发过程以及软件产品的质量至关重要。从收集资料到形成软件需求分析文档,一般来说要经过四个过程:获取用户需求,分析用户需求,编写需求文档,评审需求文档。霸气、我下手早我会暖i囚奴ﻬ我是你男神i时光蹉跎人心易碎i温暖女神!小小怪下士冠你之名i为何心酸惯得全是病i我甩脸子i昨天的未婚妻,马何在?对你礼貌陪你闹i随心所欲♚祭°但你是命却微凉ζ我独霸°我怕谁女医生要你管寡人°?朴大鸟少不顺眼。王晨正i敏感得很i圣托里尼那妞i香蕉不娇哎呀就你i泪丶为你落生死悠关跪下!有一面是你!萌萌小忙内づ牢狱之灾老子就这么拽、、、我诺敢娶、、镜中王者心永远是酸#三更半夜我们一起疯大宝贝万世无疆来自地球的我i怎会为我发光i鱼忘了旧伤疤i我必短裙相衬、边爷丑比多作怪你是狗给我走今天的大本营,啵一个不要不要嘛,谁是你媳妇i刺青爱人爱我不会停i哑巴的情歌-蓦然回首在相思、人情易暖死于灰、爱理吥理╮泪会流╰小情绪异想天开i挡住脸啊i见识贱”恍隔如世越听越心寒互不相扰°描绘你人生只是个词语不算超能力·纹化人っ心跳不争气ぃ已弃疗i不囍你i你忙喜欢你得爱人难留i你会怎么办她是个贱人-去酒吧最完美的侧脸妹子崛起々地狱魔姬全球中央何弃治,有点甜不必百口莫辩楚楚可怜高跟鞋!、不合格聊天来的快i我瞎你也瞎!陈小贱\'凉血少年易无情需求分析的任务需求分析的任务是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的定义和要求。本阶段要进行的具体工作如下:1.进行调查研究,获取用户需求(问题识别)。•这些需求包括:•功能需求:所开发的软件必需具备什么功能(最重要)。•性能需求:指待开发的软件应具备的性能指标,如存储容量,运行时间等。•环境需求:指软件运行时的软件、硬件要求。•用户界面需求:指人机交互方式、输入输出的数据格式等是否友好、便捷等。此外还有:可靠性需求、安全保密要求、用户界面需求、可移值性、可维护性等方面需求。•调查时可采用以下几种方式:①与用户交谈,向用户提出问题。②参观用户的工作流程,观察用户的操作。③向用户群体发放调查问卷表。④与同行、专家交谈,听取他们的意见。⑤分析已经存在的同类软件产品,提取需求。⑥从行业标准、规则中提取需求。⑦从Internet上搜索相关资料。分析员协同程序员通过调查分析,同时可以参考该项目的可行性报告和项目开发计划书,来获取当前系统的物理模型,可以采用系统流程图(是用来描述系统物理模型的一种传统工具)表示。例如:计算机售书的系统流程图如下页所示。计算机售书的系统流程图如下所示附:2.去除非本质因素,抽象出当前系统的逻辑模型。从当前系统的物理模型中去掉非本质因素,如地点、人物等,抽象出当前系统的逻辑模型,可以用数据流图表示。3.编写文档(1)编写“软件需求规格说明书”:目标系统的逻辑模型是通过软件需求规格说明书来描述的,该说明书是软件生命周期中一份极为重要的文档,它是对需求分析最终结果的描述,书写应当直观、清晰,易于理解和无二义性。(2)编写“初步用户使用手册”:主要反映软件的用户功能界面和用户使用的具体要求。能强制分析人员从用户使用的观点考虑软件。(3)编写确认测试计划:做为今后确认和验收的依据。(4)修改完善软件开发计划:指修改、完善并确定软件开发实施计划。4.需求分析复查。用户在分析员的介绍下,对需求分析结果进行仔细的复查。数据流图和数据字典是帮助复查的极好工具。5.需求分析评审和验收。对整个软件需求分析进行正式评审和验收,是软件需求分析的最后一个环节。评审通过是软件需求分析任务完成的标志。参加评审的人员有用户、管理部门以及软件设计、编码和测试人员。衡量需求分析是否正确,一般来讲,应从它的正确性、一致性、现实性、有效性等方面来进行验收。需求分析流程常用的需求分析的方法面向数据流的结构化分析方法(SA)面向数据结构的Jackson方法(JSD)面向数据结构的结构化数据系统开发方法(DSSD)面向对象的分析方法(OOA)等2.3数据流分析技术面向数据流进行需求分析的方法结构化分析方法适合于数据处理类型软件的需求分析具体来说,结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止数据流图(DataFlowDiagram,简称DFD)描绘系统的逻辑模型,是结构化系统分析的主要工具。数据流图(DFD)是描述软件系统中数据处理过程的一种有力的图形工具。数据流图中的主要图形元素数据加工(数据变换)数据源点或终点(外部实体)数据流数据存储数据流图中的基本符号(最新)或或或符号含义数据的源点或终点数据流数据存储加工(变换)画数据流图步骤1、首先画系统的输入输出,即先画顶层数据流图。顶层流图只包含一个加工,用以表示被开发的系统,然后考虑该系统有哪些输入数据,这些输入数据从哪里来;有哪些输出数据,输出到哪里去。2、画系统内部,即画下层数据流图。一般将层号从0开始编号,采用自顶向下,由外向内的原则。注意事项1、命名。不论数据流、数据存储还是加工,合适的命名使人们易于理解其含义。2、一般不画物质流。数据流反映能用计算机处理的数据,并不是实物,因此对目标系统的数据流图一般不要画物质流3、父图与子图的平衡。子图的输入输出数据流同父图相应加工的输入输出数据必须一致,此即父图与子图的平衡。3、局部数据存储。当某层数据流图中的数据存储不是由图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。4、提高数据流图的易理解性。注意合理分解,要把一个加工分解成几个功能相对独立的子加工,这样可以减少加工之间输入、输出数据流的数目,增加数据流图的可理解性。描述银行取款过程的数据流图数据流图的层次结构为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统分层的数据流图在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据底层流图是指其加工不需再做分解的数据流图,它处在最底层中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。结构化分析方法步骤示例商店业务处理系统这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能数据流图绘制步骤首先确定系统的输入和输出根据商店业务,画出顶层数据流图,以反映最主要业务处理流程经过分析,商店业务处理的主要功能应当有销售、采购、会计三大项。主要数据流输入的源点和输出终点是顾客和供应商。然后从输入端开始,根据商店业务工作流程,画出数据流流经的各加工框,逐步画到输出端,得到第一层数据流图第一层数据流图加细每一个加工框销售细化采购细化检查和修改数据流图的原则数据流图上所有图形符号只限于前述四种基本图形元素数据流图的主图必须包括前述四种基本元素,缺一不可数据流图的主图上的数据流必须封闭在外部实体之间每个加工至少有一个输入数据流和一个输出数据流在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡可以在数据流图中加入物质流,帮助用户理解数据流图图上每个元素都必须有名字数据流图中不可夹带控制流初画时可以忽略琐碎的细节,以集中精力于主要数据流数据词典数据字典(DataDictionary)是关于数据的信息的集合,通过数据字典对数据流程图中的各个元素作精确的定义与说明。它是数据流图的补充工具。数据词典与数据流图配合,能清楚地表达数据处理的要求。二者构成需求规格说明书的主要部分。词条描述——对于在数据流图中每一个被命名的图形元素,均加以定义,其内容有:名字,别名或编号,分类,描述,定义,位置,其它等。•数据字典的内容及格式数据字典是为分析人员和用户查找数据流图中有关名字的详细定义而服务的,因此也像其他任何字典一样,要把所有条目按一定次序排列起来,以便查阅。•数据字典有以下四类条目:数据流、数据项、数据存储、基本加工。其中,数据项是组成数据流和数据存储的最小元素。1)数据流条目给出了DFD中数据流的定义,主要部分是列出该数据流的各组成数据项。在定义数据流及数据存储组成时,通常要用到表2.4给出的符号。2)数据存储条目是对数据文件内容的定义,主要内容举例如下:数据存储名称:学生成绩库别名:无组成:学生学号+课程编码+成绩+备注组织方式:以学号为记录关键字升序排列。3)数据项条目给出某个数据单项的定义,内容通常为数据项的值类型、允许取值范围等,其定义结构与数据流条目类似。4)加工条目是用来说明DFD中基本加工的处理逻辑,对其他非基本加工则不必进行加工说明。加工条目主要由输入数据、加工逻辑和输出数据等部分组成,加工逻辑描述把输入数据转换为输出数据的过程,是加工条目的主体。为了使加工逻辑直观易读,有几种常用的描述方法,它们是结构化语言、判定表和判定树。加工条目内容举例如下:加工名称:查阅库存编号:1.2输入:合格订单输出:供货订单或缺货订单加工逻辑:根据库存记录IF订单项目数量该项目库存量的临界值THEN可供货处理ELSE此订单缺货,登记,待进货后再处理ENDIF(3)数据字典的实现数据字典的建立可以用手工和自动两种方式实现。手工方式是指把每一个字典条目写在卡片上,由专人管理和维护。自动方式是借助数据字典处理程序,把字典条目输入到计算机中,用计算机对它进行检索和维护。需求规格说明书编写规范需求规格说明书是在对用户需求分析的基础上,把用户的需求规范化、形式化而编写成的,其目的是为软件开发提出总体要求,作为用户和开发人员之间相互了解和共同开发的基础。它的主要内容包括:(1)概述。软件要求的简要说明。(2)界面描述。描述软件系统与其他部分(硬件、软件、人员等)的功能联系。(3)数据流分析。一套完整的分层数据流图和一本完整的数据字典。(4)质量评审要求。(5)其他。本章以实际项目“××社区卫生综合管理系统”的需求分析为综合实例,给出了软件需求规格说明书的编写规范,内容请参看附录三。数据及数据库需求在数据词典中,强调对数据存储结构的逻辑设计,并用数据结构表达数据项之间的逻辑关系。但任何一个软件系统都可能有成千上万个数据项,仅仅描述这些数据项是不够的,更重要的是如何把它们以最优的方式组织起来,以满足系统对数据的要求。有关数据库的基本概念在软件系统中需要处理的数据是现实世界中存在的事物及其联系的反映。人们通常将与数据处理有关的的领域分为三个世界:现实世界信息世界数据世界现实世界是存在于人们头脑之外的客观世界,现实世界中的事物可分成对象和性质两大类。对象可以是人、是物,还可以是实际的东西或概念的东西,例如,大学、城市等。对象还可以指事物与事物间的联系。性质则是指事物的性质或特征。信息世界也叫做观念世界,是现实世界在人们头脑中的反映。客观世界中的事物在信息世界中叫做实体,反映事物之间