石头:2229 - 371 x
这项Nath Pandey* 1,D.B.Ojha2
|
相关文章Pubmed,谷歌学者 |
访问更多的相关文章全球研究计算机科学杂志》上
需求工程是关于软件开发的早期阶段。本文提出的历史背景和需求工程的需要。越来越多的问题,软件项目被追溯到需求过程中存在的问题,因此,需求工程实现的重要性。不同的定义进行了讨论。随后,需求工程解释用例的重要性。
介绍 |
创建软件不是一项容易的任务。会议在1967年和1968年以来北约科学事务委员会在软件问题[1],适当的工程软件已成为一个重要的话题。 |
需求工程是关于软件开发的早期阶段。越来越多的问题,软件项目被追溯到需求过程中存在的问题,因此,需求工程实现的重要性。需求工程举行国际研讨会”在圣地亚哥,加州,美国。因此,需求工程变得越来越接受。 |
各种技术、方法和框架已经开发来解决这方面的问题。然而,这些研究成果在行业的应用不是很广泛。据报道1994年,多数的失败导致不成功的软件项目都与贫穷需求工程实践。软件需求分析甚少,记录[2]。 |
作为软件开发的第一阶段,需求工程需要处理的问题是复杂的,不确定的、不断变化的,在严格的环境或组织约束。而软件项目的生命周期变长,项目的大小增加,需求工程师面临更多的挑战来分析和管理软件的需求。支持需求工程实践是必要的。尽管对需求工程工具的需求,目前可用的工具是有限的需求管理和建模[3]。为了提高工程实践的需求在软件行业中,有必要开发需求工程工具,提供更先进的早期阶段的支持。 |
软件中扮演一个重要的角色在今天的系统,因此,更多的费用和精力areinvested软件开发。自1970年代以来人们已经意识到,让正确的需求是一个成功的软件开发[4]的先决条件。在软件开发的挑战从实现转移到在其环境中定义软件的行为。为了更好地了解需求工程出现了软件与系统的其他部分。虽然很多努力已经放在需求工程,行业组织仍然练习糟糕的软件需求工程。转移这一行业组织遇到重大的问题。已经认识到缺乏智能的支持需求工程的一个主要原因是阻止应用需求工程方法。 |
定义 |
IEEE软件工程术语表[5]定义了一个要求: |
。一个条件或能力所需要的用户解决问题或达到客观; |
b。必须满足一个条件或能力,或拥有一个系统或系统组件,以满足合同,标准,规范或其它正式实施文档 |
c。记录表示一个条件或能力如(1)或(2) |
需求应该只状态系统应该做什么,而不是描述方法。需求可以分为两类:功能性需求和非功能性需求[6、7]。这两个术语的定义[8]。 |
功能性需求是一种软件需求,指定一个函数,一个系统或其组件必须能够执行。这些软件需求定义系统的行为,也就是说,基本过程或转换系统的软件和硬件组件执行输入来产生输出” |
非功能性需求是“软件需求描述不是软件会做什么,但软件将如何做。例子包括软件性能要求、外部接口需求,软件设计的约束和软件质量属性。 |
非功能性需求通常是很难测试;因此,他们通常是主观评估。” |
功能需求是专注于软件产品本身,非功能性需求还可以包括过程和外部需求[4]。有几种定义需求工程。不同的定义反映了需求工程的不同方面。一些工件,这并没有解决在早期的定义,明确包括在后来的。1990年,需求工程以下定义为[5]。 |
需求工程是: |
。研究过程中用户需要到达的定义系统,硬件或软件需求; |
b。研究和精炼系统的过程中,硬件或软件需求”。 |
这个定义强调了需求工程中的三个重要元素。“用户需求”、“学习”和“定义”,可以被解释为输入,任务,过程的输出。这个定义省略了用户以外的其他利益相关者的重要性。需求工程师需要与所有的利益相关者合作开发一个更完整的需求列表。 |
[9],给出以下定义需求工程是“一个系统开发需求通过一个迭代的过程,合作过程中分析问题,对观察结果归档各种格式和检查的准确性表示理解了”。 |
这个定义更侧重于活动需求工程包括观察、分析、检查的准确性,并记录。这个定义意识到有多个角色参与需求工程。它也承认某些活动在整个过程中发生一次又一次。“迭代”和“合作”成为需求工程的两个关键特征。1997年,需求工程定义如下[7] |
需求工程是一个术语,已经发明了涵盖所有参与活动的发现、记录、和维护一组要求计算机系统”。 |
这是一个非常宽泛的定义,包括所有相关的活动发现和维护的需求。在这个定义中,需求工程并不局限于软件开发的开始。它可以扩展到整个软件生命周期,以维护软件的需求。这个词的另一个定义是包含在[10] |
需求工程是软件工程的分支关心现实世界的目标,功能,软件系统和约束。也关心这些因素之间的关系,准确规范的软件行为,随着时间的推移,他们的进化和整个软件的家庭”。 |
这个定义显示了软件工程和需求工程之间的关系。这意味着需求可以应用到软件的重用的家庭。根据这个定义,需求工程的过程将继续,即使一个软件产品的生命周期,以促进成功产品的要求。 |
需求工程的不同定义表明,需求工程必须在各方面包括扩大范围、生命周期、活动过程和流程中涉及的角色。最后,需求工程过程的一个定义是在[11]。需求工程过程是“一套结构化的活动获得,验证和维护一个系统需求文档”。这个定义强调了需求工程过程是由一组结构化活动。 |
结果和讨论 |
需求工程的重要性: |
需求增加对系统的理解。错误的需求会影响所有的连续阶段软件开发。讨论了两个真正的产业项目在本节展示不足或不正确的需求工程如何影响整个软件项目。 |
伦敦救护服务项目中计算机辅助调度(LAS CAD)[12],一个基于计算机的系统协调根据紧急呼叫救护车。完整的计算机辅助调度系统时扩大为所有伦敦第一次用户系统面临的一系列变化,他们做他们的工作。控制人员和救护人员完全可以理解系统。 |
最终的结果是无效的服务,系统完全抛弃。在这个项目的开始,软件开发团队并没有与最终用户合作,因为政治和组织问题。没有最终用户和其他利益相关者之间的沟通使协议如何安装和系统将如何影响他们的工作。指定的系统工作的,但是它失败了,因为这些规范没有包括所有的利益相关者。 |
另一个例子是一个错误的例子在软件开发中需求管理制造麻烦[13]。这个项目是由软件保证技术中心(一部SATC)里。在项目的开始,项目团队专注于分解高级需求低层次需求,把不同的需求之间的联系到一个数据库中。随着项目的进行,需求增加。在点,当有1500三级要求,6000四级的要求,和19000个链接,需求成为一个巨大的混乱。 |
因此,要求工程师必须手动传输重要信息从旧工具这个案例表明,需求管理在软件开发中是一项非常具有挑战性的任务。另一个教训,可以从这个例子中,对需求工程工具非常重要。 |
结论 |
的主要衡量成功的软件是在一定程度上满足了它的目的。软件需求工程是发现的过程的目的。 |
引用 |
|