浅谈软件开发中的需求分析

发布时间 2023-11-08 02:36:13作者: Leo0OO

  摘要:当今世界对各行各业对软件的依赖程度越来越大,而在规定的时间和有限的预算内开发出准确满足客户需求的软件,对于许多开发者来说都是非常困难的一件事情。由于软件项目开发过程中的需求变更而导致软件项目开发失败的案例比比皆是,所以如何高质量的完成用户的需求分析已经被许多的软件公司列入了重要的流程化管理中。本文主要从软件的定义、需求分析的认知、策略、过程、方法和需求分析方法的情景分析来探讨需求分析对软件开发的重要性。

  关键词:软件开发;需求分析;软件工程;业务需求;用户需求;功能需求

  引言:缺乏用户参与、不完整的需求及不断变更的需求,是导致软件项目开发不能按进度安排完成和资金预算提前耗尽的主要原因。许多软件开发人员不能准确且熟练的收集客户的需求,

多开发者并不知道实用的需求工程技术,工程参与者有的甚至连“需求”是什么都有不同的看法和理解。软件开发中,信息沟通(交流)至少应与计算占有相同的比重,然而现实中却往往强调计算而忽略交流。

在软件工程中,软件的需求分析是软件定义时期的最后一个阶段,它是软件生存期中的极其重要的一步,需求分析的结果是软件开发的基础,关系到软件开发的成败和软件产品是否符合客户的需求。[1]

一、需求分析的认知

  需求分析是一个对客户意图不断进行揭示和与客户相互确认的过程,要经过可行性分析确定项目目标并与客户相互探讨来确定客户的目标产品是什么。

  需求分析有三个层次,分别是用户需求,业务需求和功能需求。[2]业务需求反映客户或组织结构对软件系统,产品的高层次目标需求,它们在项目视图和系统范围文档中说明。用户需求描述了用户使用系统必须要完成的工作或任务,这在例图中说明。功能需求定义了开发人员必须要实现的软件功能,使用户通过使用他们的软件,完成他们的工作,从而实现用户需求。除功能需求外,用户会对软件有更多的期望,比如,系统的使用是否流畅,系统是否易操作,执行的效率高不高,反应的速度快不快,可靠性如何等,这些就是非功能需求。

二、需求分析的策略

  对企业系统来讲需要面对不同层次、不同部门的客户,要广泛听取意见。不同组织机构层次,不同业务部门,甚至不同计算机使用水平的客户对系统的要求都会有所不同。比如,总经理级别的客户可能只会对宏观报表感兴趣,业务细节操作一遍不会发表什么意见。而部门经理则更加关注日常工作报表,系统功能的实现及可能的扩展策略。普通业务操作人员则关心操作方式,界面风格,易用性等等。因此,把客户分成不同的群组则变得非常有意义,这样会使需求分析的工作变得更加的简单。

三、需求分析的过程

  需求分析的过程就是将收集到的调研信息加以处理并理解它们,最终得到细致化的数据流程图。[3]

  首先将调用信息分成不同的类型,同时将客户信息结构化,编写成文档和示意图,作为提交给客户代表审核并纠正其中存在错误的一个书面文档。重复的详细叙述客户的需求,以确定客户或用户的目标和任务,并把它作为使用实例。再进行深入的收集和分析,消除与客户的任何冲突和不一致的观点,以拟定一个详细的使用实例,使其融合到必要的功能需求中,为后期的编写开发做准备。

  进行需求分析时,尽量理解客户用于表达他们的思维的过程,研究客户执行任务并做出决策的过程,提取出其潜在的逻辑关系。流程图和决策树是描述这些决策途径过程的好方法。避免使用客户提供的需求细节,因为可能会给后面的程序设计带来不必要的限制,周期性的检查需求获取,并与客户交流确认,以保证客户和用户参与者的注意力集中在与所讨论的话题适合的抽象层面上。此外,不可忽视非工程需求的描述,它表明了系统的限制和用户对成品质量的期望。

  如果项目开发周期允许,可以开发原型来与客户交流确认,随后根据客户提出的需求细化并修改用户界面设计,这有助于对需求达成共识,为以后的设计开发工作带来便利。

四、需求分析的方法

  需求分析的方法有很多,常见的分析方法有:结构化分析方法、功能分析方法、信息建模分析方法和诊断面向对象的分析方法等等。每一种方法虽然有不同的标号和分析策略,但它们也具有一些相同的特性,可具体概括为以下几个方面:在支持数据领域的分析机制上,所有的方法都直接或间接的引用了数据流,数据结构,数据内容等的数据领域属性。多数情况下,数据流的特征为将输入转换为输出的变化特征来描述;数据内容用数据词典机制来明确表示,或者通过数据或数据对象来隐含的表示;在功能表示方面,功能一般用数据加工和变化来表示。还有在接口的定义、问题分析的机制、对抽象的支持、逻辑视物和物理视图以及系统抽象模型方面都有相同或类似的机制。

五、需求分析方法的情景分析

  所谓情景分析的方法就是对客户将来使用目标软件解决某个具体问题的方法和结果的分析。

情景分析技术具体可以表现在以下两个方面:

  (1)   它能在某种程度上演示目标软件的行为,从而便于客户理解,而且可能进一步揭示出分析人员还未发现并确认的需求。

  (2)   由于情景分析的过程较为容易被客户接受并理解,使用这种技术能保证客户在需求分析中始终扮演一个积极主动的角色。需求分析的目标是分析并获知客户的真实需求,而这一信息的唯一来源就是客户,因此,让客户积极主动起来是需求分析工作获取成功的重要因素。

六、需求分析对软件开发的重要性

  通常一个大型软件的开发项目持续时间是非常长的,在这段时间里会因外界的环境变化和人的认识的不断深化,都会或多或少的改变对软件功能的要求和期望。也有一些是开发人员在开发途中与客户的深入沟通、多次协商所进行的修改。但是软件开发不同阶段进行的修改所付出的代价也是大不相同的。早期开发时进行的修改变动,因为涉及的范围比较小,因而付出的代价也比较低;而在软件开发中期进行修改变动,其软件配置的许多成分已经完成和衔接,这时引入一个变动可能要对所有已完成的软件配置和衔接配置进行相对应的修改,其过程不仅繁琐,工作量大之外,还会受到许多确定因素或不确定因素的条件限制,在修改和再开发逻辑上也是更为复杂的,因此这付出的代价将会大大增加;如果在软件开发即将结尾时引入变动,那么相对应的,在人力,物力,财力上就要付出相较前面所述的更高代价,这就很容易导致一个项目最后难以收尾而错过原先分析并计划好的出台时间,这方面也会使客户受到难以预测的损失。

  软件开发中的需求分析的最终的目的在于通过细致的调查研究和反复深入地与客户交流信息,尽可能全面、准确地了解并确认客户的需求,最早发现问题,确认问题,解决问题。如果急于求成,仓促上阵,对于客户的需求没有清楚并正确的认识就匆忙着手于编程,那这就如同不打好地基就盖高楼一样,最终必将垮台。

七、结语

  软件需求分析关系到软件开发的成败,也决定软件产品质量的关键。只有通过严谨且正确的需求分析才能把目标软件的功能和性能的总体概念描述为软件具体的需求规格说明,从而奠定软件开发的基础。在做分析时必须完全了解软件系统的业务流程,仔细分析软件系统中的数据,做出软件系统的数据流图,数据字典和功能说明等,并把它们写成正式文档,与客户仔细验证其正确性,直到最终与客户达成一致。这样才可以保证以后的软件开发会按照正确的方向进行,错误的损失率大大降低,最终获得成功。

  由此可以最后总结:软件开发中的需求分析对于软件的整个开发过程是起方向性,确定性作用的,是十分之重要甚至必要的一个过程。

引用文献



[1] [1]王继成, 高珍. 软件需求分析的研究[J]. 计算机工程与设计, 2002, 23(8):4.

[2] [1]吴政. 软件开发过程中的需求分析探讨[J]. 电脑知识与技术, 2008, 004(032):1125-1128.

[3] [1]魏晓宁. 谈软件开发中的需求分析[J]. 科技资讯, 2006(28):2.