软件工程中的需求分析

时间:2022-06-14 02:15:30

软件工程中的需求分析

摘要:软件工程中包含需求、设计、编码和测试四个阶段,其中,软件工程第一个也是很重要的一个阶段是需求工程,需求分析又是需求工程中重要的一环。它是指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程,决不是软件工程中最简单的一个步骤,它包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。本文就需求分析在软件工程中的作用,层层剥离,深入浅出,进行了粗浅层次的探讨。

关键词:软件工程;CMM;需求管理;需求分析

中图分类号:TP311 文献标识码:A 文章编号:1674-7712 (2012) 18-0039-01

“软件工程”这个名词是1968年美国和西欧的一些科学家在NATO(北大西洋公约组织)会议上第一次提出的,是利用工程学的方法开发和维护计算机软件的一门学科。本篇论文粗浅分析的是软件工程中的需求分析。

软件开发由需求分析、概要设计、详细设计、编码、软件测试、项目维护和软件集成几部分内容组成。英文中有个全称为CapabilityMaturityModelforSoftware,缩写为SW-CMM,简称为CMM,用汉语表达出的意思就是——“能力成熟度模型”,也就是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。软件开发被CMM的核心视为一个过程,并根据这一核心原则对其进行过程监控与研究,目的是更加科学化、标准化,在监督过程中发现影响项目的关键问题并予以解决,使企业能够更好地实现商业目标。软件开发人员开发和维护软件及相关产品的一套行为、方法、实践及变换过程被定义为软件过程,它包括软件开发过程和软件管理过程。CMM把软件开发机构按照不同开发水平划分为5个级别,每个等级被分解为几个KPA(关键过程域),KPA是指在某个成熟度等级应重点关注的区域,也是达到此成熟度等级必须解决的关键点。在CMM中成熟度第二等级有6个关键过程域,主要涉及建立软件项目管理控制方面的内容。即:需求管理(RM)、软件项目计划(SPP)、软件项目跟踪与监控(SPTO)、软件子合同管理(SSM)、软件质量保证(SQA)、软件配置管理(SCM)。

软件项目管理中还有一个非常关键的步骤——需求管理。对于计算机系统的认识,很多用户有很多盲区,对于系统的具体需求往往也比较模糊,经常出现疏漏或者是错误的问题,随着项目的进展,凸现的会愈发明显。对于开发人员来说,软件产品的部分内容必须重新开发,这就意味着需求的变更。而对于整个软件项目管理而言,势必要重新分配资源、调整计划、估算成本等等。需求分析的完整与否可以控制软件质量、决定项目周期、增减项目成本。故而:需求管理工程越来越成为热点。

需求获取的正确性和有效性要求很高:角色的专业化、业务创新的复杂、交付速度等等。有时缺少特定需求的某些信息。在解决这个不确定性之前,可能必须与客户商议,检查与另一个系统的接口或者定义另一个需求。使用“待确定”符号作为标准指示器来强调软件需求规格说明中的这些需求的缺陷。

设计一个软件应用系统的起点与基本依据是需求分析。对用户来讲最重要的是有效性,高效性,灵活性,完整性,互操作性,可靠性,健壮性,可用性。对开发者来说最重要的是可维护性,可移植性,可重用性,可测试性。在属性取舍方面,用户和开发者必须确定属性优先级,做决策时始终遵照优先级,为了达到产品特性的最佳平衡,必须在需求获取阶段识别,确定相关的质量属性并为之确定优先级。当为项目定义重要属性时利用属性间正负关系图可防止发生与目标冲突的行为。通常一个软件项目合同的签订,体现的可能是整个系统的目标需求,面向用户的需求往往被忽略,对于这种情况一定要注意需求更改的可控性。任何一个需求分析因客观原因可能存在着需求更改的现象,要使受需求变化影响的产品与需求变更一致,就要建立需求的基准版本和更改版本,真正了解用户想要解决的实际问题,即使需求的变更比较频繁,也要注重需求的稳定性。直接影响到软件过程的改进因素离不开需求分析的完整性和变更可控性,它不仅可以决定软件的质量、开发成本的高低、甚至是导致项目成败的关键。

需求管理员是软件工程组(SEG)中要明确定义的一个角色。具体操作步骤有几点:

第一:多角度全方位的对项目进行分析并且对项目的可行性进行论证;

第二:对客户进行需求调研,整理客户需求,负责编写用户需求说明书;

第三:负责将完成的项目模块给客户做演示,并收集完成模块的意见;

第四:协助系统架构师、系统分析师对需求进行理解。

有了上述铺垫,毋庸置疑的一个角色也要出场了,那就是——需求工程师。再好的软件如果没有做好需求分析也将失去市场意义,失去生存活力。需求工程师是沟通用户与开发人员的桥梁,做好需求分析是一个产品是否能够适应用户要求的关键所在。需求工程师们在了解用户又了解技术的基础上掌控项目发展的风向标。

计算机软件工程中的需求分析要解决的任务是"做什么"的问题,全面地理解用户和开发人员的各项要求,准确表达所接受的需求。之所以重要,是因为它具有决策性、方向性、策略性的作用,从某种程度上说,它的作用可能并不小于程序设计,而且是提高软件质量的基础,也是决定一个软件项目成败的关键。

参考文献:

[1]孙琦龙.一种加强软件项目管理的实践模式[J].科技信息,2008.

[作者简介]王一帆,大连交通大学09级日语和软件工程二班。

上一篇:高职物联网专业人才培养模式探究 下一篇:城市社区弱势群体教育保障机制探析