软件工程导论第3章需求分析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章需求分析3.1需求分析的任务需求分析的任务就是准确地回答“系统必须做什么?”这个问题,是通过系统分析员与用户一起商定,清晰、准确、具体地描述软件产品必须具有的功能、性能、运行规格等要求。软件需求分析阶段的目的是澄清用户的要求,并把双方共同的理解明确地表达成一份书面文档——软件需求规格说明书。用户与分析员的责任第3章需求分析需求分析的具体任务包括:1.功能需求这方面的需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。2.性能需求性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的需求。3.可靠性和可用性需求可靠性需求定量地指定系统的可靠性。可用性与可靠性密切相关,它量化了用户可以使用系统的程度。4.出错处理需求这类需求说明系统对环境错误应该怎样响应。例如,如果它接收到从另一个系统发来的违反协议格式的消息,应该做什么?注意,上述这类错误并不是由该应用系统本身造成的。在某些情况下,“出错处理”指的是当应用系统发现它自己犯下一个错误时所采取的行动。但是,应该有选择地提出这类出错处理需求。我们的目的是开发出正确的系统,而不是用无休止的出错处理代码掩盖自己的错误。总之,对应用系统本身错误的检测应该仅限于系统的关键部分,而且应该尽可能少。5.接口需求接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。6.约束设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条件。在需求分析阶段提出这类需求,并不是要取代设计(或实现)过程,只是说明用户或环境强加给项目的限制条件。常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台。7.逆向需求逆向需求说明软件系统不应该做什么。理论上有无限多个逆向需求,我们应该仅选取能澄清真实需求且可消除可能发生的误解的那些逆向需求。8.将来可能提出的要求应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做的目的是,在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种扩充和修改。需求分类一、综合需求3.1.3软件需求分析的任务环境需求功能需求性能需求(1)功能需求•系统做什么?•系统何时做什么?•系统何时及如何修改或升级?(2)性能需求软件开发的技术性指标例如:•存储容量限制•执行速度、相应时间•吞吐量(3)环境需求•硬件设备:机型、外设、接口、地点、分布、温度、湿度、磁场干扰等•软件:操作系统网络数据库(4)界面需求•有来自其它系统的输入吗?•到自其它系统的输出吗?•对数据格式有规定吗?•对数据存储介质有规定吗?(5)用户或人的因素•用户类型?•各种用户熟练程度?•需受何种训练?•用户理解、使用系统的难度?•用户错误操作系统的可能性?(6)数据需求•输入、输出数据的格式?•接收、发送数据的频率?•数据的准确性和精度?•数据流量?•数据需保持的时间?(7)资源需求•软件运行时所需的数据、软件。内存空间等资源。•软件开发、维护所需的人力、支撑软件、开发设备等。(8)安全保密要求•需对访问系统或系统信息加以控制吗?•如何隔离用户之间的数据?•用户程序如何与其它程序和操作系统隔离?•系统备份要求?二、逻辑模型结构化分析——数据流图(DFD)面向对象分析——类图和用例图三、需求评审对需求文档进行正式审查以需求为依据编写测试用例编写用户手册在需求开发早期即可起草一份用户手册确定合格的标准让用户描述什么样的产品才算满足他们的要求和适合他们使用的四、编写文档1.编写“需求说明书”;2.编写初步的用户使用手册;3.编写确认测试计划;4.修改完善项目开发计划。第3章需求分析3.2需求分析的过程需求分析阶段可分为四个过程:调查研究、分析与综合、书写需求分析的文档和评审。(1)调查研究系统分析员协同程序员向用户做需求调查,阅软件计划中的可行性报告和项目开发计划报告,访问系统现场,并由此确定当前系统必须做什么,并获得当前系统的具体模型,用数据流图或IPO图表示出来。第3章需求分析(2)分析与综合分析员需从数据流和数据结构出发,逐步细化所有的软件功能,找出系统中各元素之间的联系、接口特征和设计上的限制,分析它们能否满足功能要求,是否合理。依据功能需求、性能需求、运行环境需求等,剔除其中不合理的部分,增加其需要的部分。最终综合成系统的解决方案后,给出目标系统的详细逻辑模型。(3)编制需求分析阶段的文档软件需求说明书数据要求说明书初步的用户手册修改、完善与确定软件开发实施计划(4)需求分析评审系统定义的目标是否与用户的要求一致;系统需求分析阶段提供的文档资料是否齐全;文档中的所有描述是否完整、清晰、准确反映用户要求;与所有其它系统成分的重要接口是否都已经描述;被开发项目的数据流与数据结构是否足够,确定;所有图表是否清楚,在不补充说明时能否理解;主要功能是否已包括在规定的软件范围之内,是否都已充分说明;设计的约束条件或限制条件是否符合实际;开发的技术风险是什么;是否考虑过软件需求的其它方案;是否考虑过将来可能会提出的软件需求;是否详细制定了检验标准,它们能否对系统定义是否成功进行确认;3.3与用户沟通获取需求的方法访谈是最早开始使用的获取用户需求的技术,也是迄今为止仍然广泛使用的需求分析技术。访谈有两种基本形式,分别是正式的和非正式的访谈。正式访谈时,系统分析员将提出一些事先准备好的具体问题。在非正式访谈中,分析员将提出一些用户可以自由回答的开放性问题,以鼓励被访问人员说出自己的想法。3.3.1访谈•会谈法(1)识别信息源(2)计划会谈内容(3)进行访问(4)概括获取内容优点:面对面,灵活,适应性强;探讨较深入缺点:费时;获取信息难以评价;访问者带有偏见;被访者刻意隐瞒•发调查表法某某出版社系统调查表出版社系统调查表您认为提高工作效率,节省工作时间,减轻工作强度可采取哪些办法?6工作中手工处理什么问题解决不了?影响效率的问题有哪些?5工作中手工处理特别麻烦的事情是什么?4您每日都处理那些文件、数据、报表?3出版业务流程是什么?2您在哪个部门工作?1提出问题编号某某出版社系统调查表出版社系统调查表出版社计算机管理信息系统需要解决什么问题?11哪些问题是目前传统手工方法根本无法解决的?10如何改进业务流程使之更合理?9您的部门采用计算机管理工作情况如何?8您的部门需要成本核算和统计的内容有哪些?7提出问题编号•所有问题应局限于一个主题•应考虑回答者的背景:如受教育程度、行话等•应易于打分•所提供答案应具有排他性•所提问题用词应准确优点:经济、易于管理;可以快速将结果制表并分析缺点:只能采集一些特殊的、数量有限的信息;不具备灵活性;不能对问题的回答做进一步的探索和研究设计调查表应注意:•观察法观看与系统有关的实际处理过程进行信息采集•工作取样采集有关现行系统运行情况的信息,如错误率和错误分布情况软件系统本质上是信息处理系统,而任何信息处理系统的基本功能都是把输入数据转变成需要的输出信息。数据决定了需要的处理和算法,数据显然是需求分析的出发点。在可行性研究阶段许多实际的数据元素被忽略了,需求分析的目标之一就是把数据流和数据存储定义到元素级。3.3.2面向数据流自顶向下求精面向数据流自顶向下求精过程使用传统的访谈或面向数据流自顶向下求精方法定义需求时,用户处于被动地位而且往往有意无意地与开发者区分“彼此”。由于不能像同一个团队的人那样齐心协力地识别和精化需求,这两种方法的效果有时并不理想。为了解决上述问题,人们研究出一种面向团队的需求收集法,称为简易的应用规格说明技术。这种方法提倡用户与开发者密切合作,共同标识问题,提出解决方案要素,商讨不同方案并指定基本需求。3.3.3简易的应用规格说明技术快速建立软件原型是最准确、最有效、最强大的需求分析技术。快速原型就是快速建立起来的旨在演示目标系统主要功能的可运行的程序。构建原型的要点是,它应该实现用户看得见的功能(例如,屏幕显示或打印报表),省略目标系统的“隐含”功能(例如,修改文件)。3.3.4快速建立软件原型用户不清楚软件将会以什么形式实现业务,而对现有业务是非常清楚的。通过原型法,用户能直观的看到将来用软件是怎样实现业务,是否符合用户的期望值。原型主要描述2个问题:1界面处理流程和后台业务处理流程是否正确。-界面处理流程:界面是指用户面对的界面。用户只有看到具体的软件界面,才会形成感性的知识,才能对开发的系统提出具体要求,和进一步的改进需求。才能理解我们推荐的解决方案。另一方面,这也是检验PM对用户需求的理解是否正确,能否做出符合要求的产品。-后台处理流程:建模!解释后台处理的逻辑。模型是用户方面的技术人员。好的模型对于系统的扩展和改变至关重要。2原型法处理界面设计问题在不少项目中,一旦用户对界面挑剔起来将会花费大量时间。因此,在原型阶段,就应包括界面设计的原则。从界面风格,易用性,友好化,用户习惯等多方面达成一定规定,会对程序员在界面设计上节省大量时间。1、原型可以用于吸引需求,也有风险a、开发周期的控制更难。b、用户的需求扩大。(个人意见)2、原型可以做技术评估(大规模开发和实现之前,考核方案是否合适,规格说明是否可靠;找出软件方案中比较难的技术问题进行解决,解决不了换方案,工作量太大换方案,影响系统性能换方案....)3、原型不能用作进度估计(至少一般情况如此)4、做原型参与竞标,争夺项目(展示形原型)例如:大多数的动态网站,都是在客户初步的需求基础上,先制作一个大体上能表现功能的静态网站出来,然后客户根据这个静态网站提出进一步的详细需求,开发便按照这个详细需求来进行。为了快速地构建和修改原型,通常使用下述3种方法和工具:(1)第四代技术第四代技术包括众多数据库查询和报表语言、程序和应用系统生成器以及其他非常高级的非过程语言。第四代技术使得软件工程师能够快速地生成可执行的代码,它们是较理想的快速原型工具。第一代编程语言机器语言特征:面向机器。第二代编程语言汇编语言特征:用针对指令的符号代替二进制代码。第三代编程语言C、C++、pascal、特征:有类型的、过程式语言;标准化的和独立于硬件的;在这些语言中的操作必须用详细的、一步接一步的算法方式指定;做很少的隐含处理;是通用的第四代编程语言4GL特征:通常有自由形式的变量使用;通常不需要类型定义并允许动态类型的变量;不强调模块化、基于过程的编码式样;包含一些预定义的过程来进行各种高层操作,这些高层操作涉及大量隐含的处理。第四代语言(4GL)应当尽可能的提供你需要的简单语句,而不是如何处理它的详细过程。第三代程序fori=1to10printinexti语句多数被限制在算术操作上,带有有限的字符串功能。使用shell你可以在几分钟或几小时中把应用程序组装起来,而不是使用3GL要求的几周或几个月。在4GL中你应当可以用一或两行来写多数应用程序。使用shell你可以有如下表示:$cutsomecolumnsfile|grep'string'|sort|lpr这个简短的程序得到一个文件中的一些列,连接管道通过grep来得到带有特定字符串的行、排序它们并把它们发送到行打印机。在COBOL、PL/I、C和多数商业4GL中相同的报告将使用数十到数百行。(2)可重用的软件构件另外一种快速构建原型的方法,是使用一组已有的软件构件(也称为组件)来装配(而不是从头构造)原型。软件构件可以是数据结构(或数据库),或软件体系结构构件(即程序),或过程构件(即模块)。(3)形式化规格说明和原型环境3.4分析建模与规格说明3.4.1分析建模为了更好地理解复杂事物,人们常常采用建立事物模型的方法。所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。模型的作用建模的原因:•在建模过程中了解系统•通过抽

1 / 122
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功