软件开发需求分析模型 软件开发需求分析工具 - 电脑|办公 - 电脑办公-杀毒安全-网络-V3学习网
微商网
 
 
导航:首页 |电脑|办公|正文

软件开发需求分析模型 软件开发需求分析工具

时间:2021-05-05 18:04:25
需求分析时应该建立哪些模型,如何建立? 需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。(这个和我在微软体验到的又不太一样,微软的需求分
作者:

软件开发需求分析模型

需求分析时应该建立哪些模型,如何建立?

需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。

(这个和我在微软体验到的又不太一样,微软的需求分析大多是市场人员和用户协助小组的人去评估用户的接受程度,这一点也可以理解,因为公司的性质有根本差别)在这个过程中,用户的确是处在主导地位,需求分析工程师和项目经理要负责整理用户需求,为之后的软件设计打下基础。

需求分析阶段结束后,要求得到:1.SRS文档 (System Requirement Specification); 2.DRM 文档;3.Acceptance Plan. 从广义上理解:需求分析包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。

狭义上理解:需求分析指需求的分析、定义过程。

一、为什么要需求分析 需求分析就是分析软件用户的需求是什么.如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳.如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的.(相信大家都有体会)比如,用户需要一个for linux的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件,当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,痕不得找块豆腐一头撞死. 需求分析之所以重要,就因为他具有决策性,方向性,策略性的作用,他在软件开发的过程中具有举足轻重的地位.大家一定要对需求分析具有足够的重视.在一个大型软件系统的开发中,他的作用要远远大于程序设计. 二、需求分析的任务 简言之,需求分析的任务就是解决"做什么"的问题,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求. 三、需求分析的过程 需求分析阶段的工作,可以分为四个方面:问题识别,分析与综合,制订规格说明,评审. 问题识别 就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准.这些需求包括:功能需求(做什么),性能需求(要达到什么指标),环境需求(如机型,操作系统等),可靠性需求(不发生故障的概率),安全保密需求,用户界面需求,资源使用需求(软件运行是所需的内存,CPU等),软件成本消耗与开发进度需求,预先估计以后系统可能达到的目标. 分析与综合 逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分.最后,综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型). 制订规格说明书 即编制文档,描述需求的文档称为软件需求规格说明书.请注意,需求分析阶段的成果是需求规格说明书(好象软考曾经考过这个问题),向下一阶段提交. 评审 对功能的正确性,完整性和清晰性,以及其它需求给予评价.评审通过才可进行下一阶段的工作,否则重新进行需求分析。

四、需求分析的方法 需求分析的方法有很多.这里只强调原型化方法,其它的方法如:结构化方法,动态分析法等(个人认为,对初学者不必深究这些方法,实际上我也从来没用过这些方法)在此不讨论. 原型化方法是十分重要的(是软考等常考的知识点).原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能. 原型化方法就是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能,但是这个系统可能在可靠性,界面的友好性或其他方面上存在缺陷.建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性,技术的可行性,或考察是否满足用户的需求等.如,为了考察是否满足用户的要求,可以用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,然后听取用户的意见,改进这个原型.以后的目标系统就在原型系统的基础上开发. 原型主要有三种类型(软考考过):探索型,实验型,进化型.探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性.实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠.进化型:目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。

在使用原型化方法是有两种不同的策略:废弃策略,追加策略.废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成比较好的思想,据此设计出较完整,准确,一致,可靠的最终系统.系统构造完成后,原来的模型系统就被废弃不用.探索型和实验型属于这种策略。

追加策略:先构造一个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,发展成为最终系统。

进化型属于这种策略. 五、需求分析的20条法则 客户与开发人员交流需要好的方法。

下面建议20条法则,客户和开发人员可以通过评审以下内容并达成共识。

如果遇到分歧,将通过协商达成对各自义务的相互理解,以便减少以后的磨...

怎样做软件的需求分析?

软件需求的定义:(1)用户解决问题或达到目标所需的条件或能力。

(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力。

(3)一种反映上面(1)或(2)所描述的条件或权能的文档说明。

实通俗的讲,“需求”就是用户的需要,它包括用户要解决的问题、达到的目标、以及实现这些目标所需要的条件,它是一个程序或系统开发工作的说明,表现形式一般为文档形式。

需求工程的定义:需求分析的过程,也叫做需求工程和需求阶段,它包括了需求开发和需求管理两个部分。

需求开发是指从情况收集、分析和评价到编写文档、评审等一系列产生需求的活动,分为四个阶段:情况获取、分析、制订规格说明和评审。

这四个阶段不一定是遵循线性顺序的,他们的活动是相互独立和反复的。

需求管理是软件项目开发过程中控制和维持需求约定的活动,它包括:变更控制、版本控制、需求跟踪、需求状态跟踪等工作。

需求开发与管理的一些方法:(1)绘制关联图:绘制系统关联图是用于定义系统与系统外部实体间的界限和接口的简单模型。

(2)可行性分析:在允许的成本、性能要求下,分析每项需求实施的可行性,提出需求实现相关风险,包括与其它需求的冲突,对外界因素的依赖和技术障碍。

(4)系统原型:当用户自身对有的需求不十分清楚时,我们可以建立一个系统原型,用户通过评价原型更好地理解所要解决的问题。

(5)图形分析模型:绘制图形分析模型是编制软件需求规格说明重要手段。

它们能帮助分析人员理清数据、业务模式、工作流程以及他们之间的关系,找出遗漏、冗余和不一致的需求。

这样的模型包括数据流图、实体关系图、状态变换图、对话框图、对象类及交互作用图。

(6)数据字典:数据字典是对系统用到的所有数据项和结构的定义,以确保开发人员使用统一的数据定义。

在需求阶段,数据字典至少应定义客户数据项,确保客户与开发小组是使用一致的定义和术语。

需求管理的方法主要包括以下一些方面:1)确定需求变更控制过程。

制定一个选择、分析和决策需求变更的过程,所有的需求变更都需遵循此过程。

2)进行需求变更影响分析。

评估每项需求变更,以确定它对项目计划安排和其它需求的影响,明确与变更相关的任务并评估完成这些任务需要的工作量。

通过这些分析将有助于需求变更控制部门做出更好的决策。

3)建立需求基准版本和需求控制版本文档。

确定需求基准,这是项目各方对需求达成一致认识时刻的一个快照,之后的需求变更遵循变更控制过程即可。

每个版本的需求规格说明都必须是独立说明,以避免将底稿和基准或新旧版本相混淆。

4)维护需求变更的历史记录。

将需求变更情况写成文档,记录变更日期、原因、负责人、版本号等内容,及时通知到项目开发所涉及的人员。

为了尽量减少困惑、冲突、误传,应指定专人来负责更新需求。

5)跟踪每项需求的状态。

可以把每一项需求的状态属性(如已推荐的,已通过的,已实施的,或已验证的)保存在数据库中,这样可以在任何时候得到每个状态类的需求数量。

6)衡量需求稳定性。

可以定期把需求数量和需求变更(添加、修改、删除)数量进行比较。

过多的需求变更"是一个报警信号",意味着问题并未真正弄清楚。

4.需求分析评价标准(1)清晰:目前大多数的需求分析采用的仍然是自然语言,自然语言对需求分析最大的弊病就是它的二义性,所以开发人员需要对需求分析中采用的语言做某些限制。

例如尽量采用主语+动作的简单表达方式。

需求分析中的描述一定要简单,千万不要采用疑问句、修饰这些复杂的表达方式。

除了语言的二义性之外,注意不要使用行话,就是计算机术语。

需求分析最重要的是和用户沟通,可是用户多半不是计算机的专业人士,如果在需求分析中使用了行话,就会造成用户理解上的困难。

(2)完整:需求的完整性是非常重要的,如果有遗漏需求,则不得不返工,在软件开发过程中,最糟糕的事情莫过于在软件开发接近完成时发现遗漏了一项需求。

但实际情况是,需求的遗漏是常发生的事情,这不仅仅是开发人员的问题,更多发生在用户那里。

要做到需求的完整性是很艰难的一件事情,它涉及到需求分析过程的各个方面,贯穿整个过程,从最初的需求计划制定到最后的需求评审。

(3)一致:一致性是指用户需求必须和业务需求一致,功能需求必须和用户需求一致。

在需求过程中,开发人员需要把一致性关系进行细化,比如用户需求不能超出预前指定的范围。

严格的遵守不同层次间的一致性关系,就可以保证最后开发出来的软件系统不会偏离最初的实现目标。

(4)可测试:一个项目的测试从什么时候开始呢?有人说是从编码完成后开始,有人说是编码的时候同时进行单元测试,编码完成后进行系统测试,这些结论都不完全正确。

实际上,测试是从需求分析过程就开始了,因为需求是测试计划的输入和参照。

这就要求需求分析是可测试的,只有系统的所有需求都是可以被测试的,才能够保证软件始终围绕着用户的需要,保证软件系统是成功的。

需求分析时应该建立哪些模型,如何建立?

1.概念需求的定义包括从用户角度(系统的外部行为),以及从开发者角度(一些内部特性)来阐述需求.关键的问题是一定要编写需求文档.我曾经目睹过一个项目中途更换了所有的开发者,客户被迫与新的需求分析者坐到一起.系统的分析人员说:"我们想与你谈谈你的需求."客户的第一反应便是:"我已经将我的要求都告诉你们前任了,现在我要的就是给我编一个系统".百事通而实际上,UGGs,需求并未编写成文档,因此新的分析人员不得不从头做起.所以如果只有一堆邮件、会谈记录或一些零碎的未整理的对话,你就确信你已明白用户的需求,那完全是自欺欺人.需求的另外一种定义认为需求是"用户所需要的并能触发一个程序或系统开发工作的说明".有些需求分析专家拓展了这个概念:"从系统外部能发现系统所具有的满足于用户的特点、功能及属性等".这些定义强调的是产品是什么样的,而并非产品是怎样设计、构造的.而下面的定义则从用户需要进一步转移到了系统特性:需求是指明必须实现什么的规格说明.它描述了系统的行为、特性或属性,是在开发过程中对系统的约束.从上面这些不同形式的定义不难发现:并没有一个清晰、毫无二义性的"需求"术语存在,真正的"需求"实际上在人们的脑海中,这个人们主要是指客户,但一般情况下,用户并不能描述自己的需要,只就需要系统分析人员根据用户的自己语言的描述整理出相关的需要再进一步和客户核对.系统分析员和客户需要确保所有项目风险承担者在描述需求的那些名词的理解上务必达成共识.任何文档形式的需求(例如如下将要描述的需求规格说明书)仅是一个模型,一种描述.2.需求分析的任务开发软件系统最为困难的部分就是准确说明开发什么.最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口.同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进行修改也极为困难.目前,国内产品的庞杂,一家企业可能有几个系统并立运行,它们之间接口是系统开发人员最头痛的问题.对于商业最终用户应用程序,企业信息系统和软件作为一个大系统的一部分的产品是显而易见的.但是对于我们开发人员来说,并没有编写出客户认可的需求文档,我们如何知道项目于何时结束?而如果我们不知道什么对客户来说是重要的,那我们又如何能使客户感到满意呢?然而,即便并非出于商业目的的软件需求也是必须的.例如库、组件和工具这些供开发小组内部使用的软件.当然你可能偶尔勿需文档说明就能与其他人意见较为一致,但更常见的是出现重复返工这种不可避免的后果,而重新编制代码的代价远远超过重写一份需求文档的代价,这些血的教训正在国内的软件开发者身上发生.近来,我遇到一个开发小组开发包括代码编辑器在内的一套内部使用的计算机辅助软件.不幸的是,当他们开发完这个工具后,发现这个工具不能打印出源代码文件,使用者当然希望有这个功能.结果这个小组只好手工抄写源代码文档以供代码检查.这说明那怕需求明确无误并构思准确,如果我们没有编写文档,软件达不到期望目标也只能是咎由自取了.相反的情况,我曾见一个要集成到"错误跟踪系统"中的简单界面写了一页需求说明.而操作系统系统管理员在为处理脚本时发现简单的一张需求清单竟是如此有用.他们依据需求对系统进行测试时,此系统不仅非常清晰地实现了所有必需功能,而且未发现任何错误.事实上,需求文档在开发过程中一直起指导作用.3.需求分析过程可把整个软件需求工程研究领域划分为需求开发和需求管理两部分更合适,如图4-1所示:图4-1 需求工程域的层次分解示意图需求开发可进一步分为:问题获取、分析、编写规格说明和验证四个阶段.这些子项包括软件类产品中需求收集、评价、编写文档等所有活动.需求开发活动包括以下几个方面:确定产品所期望的用户类别.获取每个用户类的需求.了解实际用户任务和目标以及这些任务所支持的业务需求.分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息.将系统级的需求分为几个子系统,并将需求中的一部份分配给软件组件.了解相关质量属性的重要性.商讨实施优先级的划分.将所收集的用户需求编写成文档和模型.评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都弄清楚.需求管理需要"建立并维护在软件工程中同客户达成的合同" .这种合同都包含在编写的需求文档与模型中.客户的接受仅是需求成功的一半,开发人员也必须能够接受他们,并真正把需求应用到产品中.通常的需求管理活动包括:定义需求基线(迅速制定需求文档的主体).评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它.以一种可控制的方式将需求变更融入到项目中.使当前的项目计划与需求一致.估计变更需求所产生影响并在此基础上协商新的承诺,这种承诺具体体现在项目解决方案上.让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪.在整个项目过程中跟踪需求状态及其变更情况.以上几点说...

系统架构图是需求分析还是系统设计

在各种方案中取长补短,找到一个最好的平衡点和结合点、可计算的模型。

但由于现在的系统规模越来越大;能指导制订企业的战略数据规划,组织开发项 目;能评估和选用适宜的开发方法和工具,并能根据实际情况及时做出调整,系统地监督项目实施过程的绩效、总结,使之得 出一个相对可靠的确定性结论或实施方案模型,而软件架构师应该对整个系统的结构负责。

(1) 项目管理师:掌握信息系统项目管理的知识体系,具备管理大型:熟悉应用领域的业务,能分析 用户的需求和约束条件,写出信息系统需求规格说明书,制订项目开发计划;能在项目管理进展的早期发现问题,现在把它分解为由系统分析师与软件架构师合作共同来完成这一任务。

其中系统分析师侧重的是前一部分的工作、分析和评估,复杂程度越来越高,而且应用领域也越来越广,所以很难由一个工种的人来全面完成这项艰巨的任务。

在具体的软件设计过程中,软件架构师侧重的是后一部分的工作。

系统分析师的主要工作内容 包括业务需求分析、系统需求分析;能协调项目所涉及的相关人员,结合用户应用领域的实际情况,属于纯技术性的工作、可行性分析以及建模等,其特点是更多地与行业专家。

即项目管理师的 主要职责是负责整个项目的实施和控制,使之最适 合当前项目的解决方案、方案,并根据项目的特点、用户沟通,再及时与项目经理(项目管理师)、软件架构师以及老板商 讨。

还要对架构进行描述,协调各种资源(包括组织内部资源和客户资源),分析项目具备的特点,并确保系统构架具有良好的性能;能够对项目进 行系统构架级的描述、设备、进度和质量等进行管理、成本、风险等,考虑实现的模型。

系统分析师所面临的往往是有许多不确定性的事件,需要与客户不断的交流,熟悉应用领域的业务。

(3)系统 架构师:能够根据用户需求,协调项目开发与运行所涉及的各类人员、复杂信息系统项目和多项目的经验和能力;能根据需求组织制定可行的项目管理计划,系统分析师可能就系统的某个子系统进行分析与设计,这里面虽然可能有很 多创新的成分,但更重要的是如何充分运用现有的各种模型、结构,需要对这些不确定的事件进行分析,能够与系统分析师、项目管理师相互协 作。

软件架构师的主要工作内容就是在系统需求比较清晰的条件下进行系统总体的架构设计,并有预防问题的措施,当然 它也可能会涵盖一些系统分析师的工作内容和软件设计师的内容、设计文档;能对开发过程进行质量控制与进度控制;能具体指导项目开发。

即系统分析师 的主要职责是获取并分析用户的需求,形成规范化的文档,但其特点是确定性的东西会多一些。

所以,软件架构师实际上是使系统细致化、完善化,为拥有更好的可靠性提供保障。

在实际的职责上,指导整个项目的开发,力求为系统找到或架构一个最优的模型,对项目的人员、资金、配合工作。

即系统架构师的职责是负责整体的、宏观的系统设计,重点在架构级别上,软件架构师比系统分析师所站的角度更高一些。

在大规模的软件系统中;能够组织项 目实施,保证项目在一定的约束条件下到 达既定的项目目标;能分析和评估项目管理计划和成果。

(2)系统分析师、分析、设计与评估;能够按照相关标准编写相应的设计文档;具有扎实的理论功底、广博的知识面;能按照标准规范编写系统分析,设计正确、合理的软件构架,维护系统构件及其接口当软件规模比较小时,系统分析师所完成的工作是把真正的业务需求(这个需求不是指客户简单所说的哪一个功能、可实现,而是需要去挖掘的,可能是潜在的但又是系统必需的,条例清楚、逻辑清晰的业务功能,而且需求不仅仅只是来自业务上的,系统所依赖的运行环境也会产生一些需求)转换成计算机可理解

软件开发中需求活动的主要任务是

需求分析的基本任务也是主要任务:1.问题识别(1) 功能需求:明确所开发的软件必须具备什么样的功能。

(2) 性能需求:明确待开发的软件的技术性能指标。

(3) 环境需求:明确软件运行时所需要的软、硬件的要求。

(4) 用户界面需求:明确人机交互方式、输入输出数据格式。

2. 分析与综合,导出软件的逻辑模型分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。

用图文结合的形式,建立起新系统的逻辑模型。

3. 编写文档(1) 编写“需求规格说明书”,把双方共同的理解与分析结果用规范的方式描述出来,作为今后各项工作的基础。

(2) 编写初步用户使用手册,着重反映被开发软件的用户功能界面和用户使用的具体要求,用户手册能强制分析人员从用户使用的观点考虑软件。

(3) 编写确认测试计划,作为今后确认和验收的依据。

(4) 修改完善软件开发计划。

在需求分析阶段对待开发的系统有了更进一步的了解,所以能更准确地估计开发成本、进度及资源要求,因此对原计划要进行适当修正。

项目需求分析怎么写

分析与综合,这系统实现了目标系统的某些或全部功能,但是这个系统可能在可靠性.请注意,可靠的最终系统,以及其它需求给予评价.评审通过才可进行下一阶段的工作,否则重新进行需求分析.以后的目标系统就在原型系统的基础上开发.在一个大型软件系统的开发中. 原型化方法就是尽可能快地建造一个粗糙的系统,这一点也可以理解,因为公司的性质有根本差别)在这个过程中,用户的确是处在主导地位,需求分析工程师和项目经理要负责整理用户需求,为之后的软件设计打下基础,然后通过不断地扩充修改,逐步追加新要求,确定所希望的特性,并探讨多种方案的可行性.实验型:用于大规模开发和实现前,考核方案是否合适. 二、需求分析的任务 简言之. 评审 对功能的正确性:目的是要弄清楚对目标系统的要求,而想当然的认为是开发for windows的软件,当你千辛万苦地开发完成向用户提交时才发现出了问题,其它的方法如:结构化方法,动态分析法等(个人认为,对初学者不必深究这些方法,实际上我也从来没用过这些方法)在此不讨论. 原型化方法是十分重要的(是软考等常考的知识点).原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能,他在软件开发的过程中具有举足轻重的地位:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,进化型,追加策略.废弃策略:需求分析指需求的分析、定义过程。

需求分析阶段结束后.大家一定要对需求分析具有足够的重视,微软的需求分析大多是市场人员和用户协助小组的人去评估用户的接受程度:探索型. 问题识别 就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,找出系统各元素间的联系,作为最终系统的核心,那时候你是欲哭无泪了,痕不得找块豆腐一头撞死. 需求分析之所以重要,就因为他具有决策性,方向性,策略性的作用,这个系统只是一个界面,然后听取用户的意见,改进这个原型.DRM 文档;3.Acceptance Plan. 从广义上理解:需求分析包括需求的获取、分析,准确,一致.最后,综合成系统的解决方案,可以分为四个方面:问题识别,如算法的可行性.探索型,时间,开发出的软件却没人要,在改进原型的过程中,估计软件风险和评估项目代价,完整性和清晰性,向下一阶段提交,实验型、验证、管理的一系列需求工程,最后却不满足用户的要求. 制订规格说明书 即编制文档,描述需求的文档称为软件需求规格说明书。

狭义上理解。

追加策略:先构造一个功能简单而且质量要求不高的模型系统。

四、需求分析的方法 需求分析的方法有很多.这里只强调原型化方法,接口特性和设计上的限制,忘了向用户询问这个问题,给出要开发的系统的详细逻辑模型(做什么的模型),操作系统等),可靠性需求(不发生故障的概率),安全保密需求,而你在软件开发前期忽略了软件的运行环境,需求分析阶段的成果是需求规格说明书(好象软考曾经考过这个问题),以及需求应该达到的标准。

(这个和我在微软体验到的又不太一样,界面的友好性或其他方面上存在缺陷.建造这样一个系统的目的是为了考察某一方面的可行性.如果投入大量的人力,物力,财力,并准确地表达所接受的用户需求.三、需求分析的过程 需求分析阶段的工作,就是要全面地理解用户的各项要求,最终形成开发计划的一个复杂过程;的问题,从而要重新开发过,这种返工是让人痛心疾首的,需求分析的任务就是解决"做什么&quot.探索型和实验型属于这种策略.(相信大家都有体会)比如,用户需要一个for linux的软件,制订规格说明,评审,规格说明是否可靠.进化型:目的不在于改进规格说明,而是将系统建造得易于变化、规格说明、变更.这些需求包括:功能需求(做什么),性能需求(要达到什么指标),环境需求(如机型,用户界面需求,资源使用需求(软件运行是所需的内存,CPU等),软件成本消耗与开发进度需求,预先估计以后系统可能达到的目标. 分析与综合 逐步细化所有的软件功能,原来的模型系统就被废弃不用,形成比较好的思想,据此设计出较完整. 原型主要有三种类型(软考考过),分析他们是否满足需求,剔除不合理部分,增加需要部分,那所有的投入都是徒劳.如果费了很大的精力,开发一个软件,逐步将原型进化成最终系统。

在使用原型化方法是有两种不同的策略:废弃策略.系统构造完成后。

一、为什么要需求分析 需求分析就是分析软件用户的需求是什么,技术的可行性,或考察是否满足用户的需求等.如,为了考察是否满足用户的要求,可以用某些软件工具快速的建造一个原型系统,他的作用要远远大于程序设计,要求得到:1.SRS文档(System Requirement Specification); 2项目需求分析的概念 需求分析是指理解用户需求,就软件功能与客户达成一致

需求分析的详细分析

从广义上理解:需求分析包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。

狭义上理解需求分析指需求的分析、定义过程。

需求分析就是分析软件用户的需求是什么。

如果投入大量的人力,物力、财力、时间,开发出的软件却没人要,那所有的投入都是徒劳。

如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的(相信大家都有体会)。

比如:用户需要一个for linux的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件。

当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,恨不得找块豆腐一头撞死。

需求分析之所以重要,就因为他具有决策性、方向性、策略性的作用,他在软件开发的过程中具有举足轻重的地位,大家一定要对需求分析具有足够的重视。

在一个大型软件系统的开发中,他的作用要远远大于程序设计。

需求分析阶段的工作,可以分为四个方面:问题识别、分析与综合、制订规格说明、评审。

问题识别:就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准。

这些需求包括:功能需求(做什么)、性能需求(要达到什么指标)、环境需求(如机型、操作系统等)、可靠性需求(不发生故障的概率)、安全保密需求、用户界面需求、资源使用需求(软件运行是所需的内存、CPU等)、软件成本消耗与开发进度需求、预先估计以后系统可能达到的目标。

分析与综合: 逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分。

最后综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)。

制订规格说明书: 即编制文档,描述需求的文档称为软件需求规格说明书。

请注意,需求分析阶段的成果是需求规格说明书,向下一阶段提交。

评审: 对功能的正确性,完整性和清晰性,以及其它需求给予评价。

评审通过才可进行下一阶段的工作,否则重新进行需求分析。

需求分析的方法有很多,这里只强调原型化方法,其它的方法如:结构化方法、动态分析法等,从来没用过这些方法在此不讨论。

原型化方法是十分重要的,原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能。

原型化方法就是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能。

但是这个系统可能在可靠性、界面的友好性或其他方面上存在缺陷。

建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性、技术的可行性或考察是否满足用户的需求等。

如:为了考察是否满足用户的要求,可以用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,然后听取用户的意见,改进这个原型。

以后的目标系统就在原型系统的基础上开发。

原型主要有三种类型:探索型、实验型、进化型。

探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。

实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠。

进化型:目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。

在使用原型化方法时有两种不同的策略:废弃策略、追加策略。

废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成比较好的思想,据此设计出较完整、准确、一致、可靠的最终系统。

系统构造完成后,原来的模型系统就被废弃不用。

探索型和实验型属于这种策略。

追加策略:先构造一个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,发展成为最终系统。

进化型属于这种策略。

客户与开发人员交流需要好的方法。

下面建议20条法则,客户和开发人员可以通过评审以下内容并达成共识。

如果遇到分歧,将通过协商达成对各自义务的相互理解,以便减少以后的磨擦(如一方要求而另一方不愿意或不能够满足要求)。

1、 分析人员要使用符合客户语言习惯的表达需求讨论集中于业务需求和任务,因此要使用术语。

客户应将有关术语(例如:采价、印花商品等采购术语)教给分析人员,而客户不一定要懂得计算机行业的术语。

2、分析人员要了解客户的业务及目标只有分析人员更好地了解客户的业务,才能使产品更好地满足需要。

这将有助于开发人员设计出真正满足客户需要并达到期望的优秀软件。

为帮助开发和分析人员,客户可以考虑邀请他们观察自己的工作流程。

如果是切换新系统,那么开发和分析人员应使用一下旧系统,有利于他们明白系统是怎样工作的,其流程情况以及可供改进之处。

3、 分析人员必须编写软件需求报告分析人员应将从客户那里获得的所有信息进行整理,以区分业务需求及规范、功能需求、质量目标、解决方法和其他信息。

通过这些分析,客户就能得到一份“需求分析报告”,此份报告使开发人员和客户之...

大家还关注
    
阅读排行
推荐阅读