`
softstone
  • 浏览: 461106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

没有需求就没有软件

金芝(转载自计算机世界)
(转载自软件工程专家网www.21cmm.com)

  需求工程无疑是当前软件工程中的关键问题,从美国于1995年开始的一项调查结果就足以看出这一点。在这项调查中,他们对全国范围内的8000个软件项目进行跟踪调查,结果表明,有1/3的项目没能完成,而在完成的2/3的项目中,又有1/2的项目没有成功实施。他们仔细分析失败的原因后发现,与需求过程相关的原因占了45%,而其中缺乏最终用户的参与以及不完整的需求又是两大首要原因,各占13%和12%。

  需求工程又是软件工程中最复杂的过程之一,其复杂性来自于客观和主观两个方面。从客观意义上说,需求工程面对的问题几乎是没有范围的。由于应用领域的广泛性,它的实施无疑与各个应用行业的特征密切相关。其客观上的难度还体现在非功能性需求及其与功能性需求的错综复杂的联系上,当前对非功能性需求分析建模技术的缺乏大大增加了需求工程的复杂性。从主观意义上说,需求工程需要方方面面人员的参与(如领域专家、领域用户、系统投资人、系统分析员、需求分析员等等),各方面人员有不同的着眼点和不同的知识背景,沟通上的困难给需求工程的实施增加了人为的难度。

  最初,需求工程仅仅是软件工程的一个组成部分,是软件生命周期的第一个阶段。虽然大家也都知道需求工程对软件整个生命周期的重要性,但对它的研究远远没有对软件工程的其他部分的研究那么深入。

  在传统软件工程生命周期中,涉及需求的阶段称作需求分析。一般来说,需求分析的作用是:

  ● 系统工程师说明软件的功能和性能,指明软件和其他系统成分的接口,并定义软件必须满足的约束;

  ● 软件工程师求精软件的配置,建立数据模型、功能模型和行为模型;

  ● 为软件设计者提供可用于转换为数据设计、体系结构设计、界面设计和过程设计的模型;

  ● 提供开发人员和客户需求规格说明,用于作为评估软件质量的依据。

  但从当前的研究现状来看,需求工程的内容远不止这些。需求工程是系统工程和软件工程的一个交叉分支,涉及到软件系统的目标、软件系统提供的服务、软件系统的约束和软件系统运行的环境。它还涉及这些因素和系统的精确规格说明以及系统进化之间的关系。它也提供现实需要和软件能力之间的桥梁。

  需求工程的基本活动包括:

  ● 抽取需求;

  ● 模拟和分析需求;

  ● 传递需求;

  ● 认可需求;

  ● 进化需求。

  每个活动都有它基本的动机、任务和结果,也有各自的困难所在。

  首先,开始一个项目是因为要对现行系统进行改造。要改造一个系统是因为现行系统存在需要解决的问题。如:现行系统与当前情况不符合、出现新的商机或者可能节省时间、资金和资源等,这就是抽取需求的动机。在这个阶段,需求工程师的任务是认识问题之所在,获取足够多的知识,最后成为问题领域的专家。需求工程师常采用W6H方法去认识问题领域,即6个以W打头的问题,一个以H打头的问题,如表1所示。

  需求抽取是非常困难的,其主要原因有:

  ● 缺乏领域知识,应用领域的问题常常是模糊的、不精确的;

  ● 存在默认的知识,即难以描述的日常知识(常识问题);

  ● 存在多个知识源,而且多知识源之间可能有冲突;

  ● 面对的客户可能有偏见,如不能提供你需要了解什么或不想告知你需要了解的事情。

  需求抽取的方法一般有问卷法、面谈法、数据采集法、用况法、情景实例法以及基于目标的方法等,还有知识工程方法,如:场记分析法、卡片分类法、分类表格技术和基于模型的知识获取等。

  需求工程的第二个阶段是模拟和分析需求,目前有许多工作都以此为目标进行。需求分析和模拟的出发点在于:

  ● 指导抽取;

  ● 帮助需求工程师了解进展;

  ● 帮助发现问题;

  ● 帮助检查对问题的理解。

  需求分析和模拟又包含三个层次的工作。首先是需求建模。需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。自然语言形式具有表达能力强的特点,但它不利于捕获模型的语义,一般只用于需求抽取或标记模型。半形式化表示可以捕获结构和一定的语义,也可以实施一定的推理和一致性检查。形式化表示具有精确的语义和推理能力,但要构造一个完整的形式化模型,需要较长时间和对问题领域的深层次理解。对需求概念模型的要求包括:

  ● 实现的独立性:不模拟数据的表示和内部组织等;

  ● 足够抽象:只抽取关于问题的本质方面;

  ● 足够形式化:语法无二义性,并具有丰富的语义;

  ● 可构造性:简单的模型块,能应付不同复杂程度和规模的描述;

  ● 利于分析:能支持二义性、不完整性和不一致性分析;

  ● 可追踪性:支持横向交叉索引并能与设计或实现等建立关联;

  ● 可执行性:可以动态模拟,利于与现实相比较;

  ● 最小性:没有冗余的概念。

  需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。

  企业模拟是一种软系统方法,涉及整个组织,从各个不同的视点分析问题,包括目标、组织结构、活动、过程等。有的企业模拟还建立可执行的领域模型。采用企业模拟方法产生的不仅仅是规格说明,还可以得到许多关于企业运作的状况分析。目前代表性的工作包括:信息模拟、组织模拟和目标模拟等。

  功能需求模拟从不同视点为模拟软件提供服务,包括结构视点和行为视点等,主要方法有:结构化分析、面向对象分析和形式化方法。结构化分析是一种面向数据的方法,以数据流为中心。其核心概念包括:进程、数据流、数据存储、外部实体、数据组和数据元素。有代表性的模拟工具有:数据流图、数据字典、原始进程规格说明。面向对象分析以对象及其服务作为建模标准,比较自然,对象也具有相对的稳定性。主要模拟的元素有:对象、类、属性、关系、方法、消息传递、Use Cases等。其主要原理包括分类继承层次、信息隐藏、汇集关系等。形式化方法从广义上说,是应用离散数学的手段来设计、模拟和分析,得到像数学公式那样精确的表示。从狭义上说,就是使用一种形式语言进行语言公式的形式推理,用于检查语法的良构性并证明某些属性。形式化方法一般用于一致性检查、类型检查、有效性验证、行为预测以及设计求精验证。引入形式化机制的目的是:

  ● 减少二义性,提高精确性;

  ● 为验证打下基础;

  ● 允许对需求进行推理;

  ● 允许执行需求。

  但是人们常常不用形式化手段,因为:

  ● 形式化涉及太多细节,分析的级别较低;

  ● 形式化的核心问题是一致性和完整性,而不是获取需求;

  ● 没有合适的工具;

  ● 要求更多的代价。

  传递需求的主要任务是书写软件需求规格说明,其目的是:

  ● 传达对需求的理解;

  ● 作为软件开发项目的一份契约;

  ● 作为评价后续工作的基线;

  ● 作为控制需求进化的基线。

  对需求规格说明感兴趣的群体包括:用户、客户;系统分析员、需求分析员;软件开发者、程序员;测试员;项目管理者。

  认可需求就是让上述人员对需求规格说明达成一致,其主要任务是冲突求解,包括定义冲突和冲突求解两方面。常用的冲突求解方法有:协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。

  进化需求的必要性是明显的,因为客户的需要总是不断(连续)增长的,但是一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化(变化)就成为软件进化的首要问题。对传统的变化管理过程来说,其基本成分包括软件配置、软件基线和变化审查小组。当前的发展是软件家族法,即产品线方法。多视点方法也是管理需求变化的一种新方法,它可以用于管理不一致性并进行关于变化的推理。

分享到:
评论

相关推荐

    没有需求就没有软件——需求工程简论.doc

    没有需求就没有软件——需求工程简论.doc

    软件需求评审表单1

    软件需求评审表单项目名称评审对象版本号提交日期编制人评审日期评审方式评审准则完整性:软件需求规格说明书中没有遗漏必要需求可行性:软件需求规格说明书中每一个需求都

    软件需求工程 Software Requirements Engineering

    软件需求无疑是当前软件工程中的关键问题,没有需求就没有软件.分析失败的原因发现,与需求过程相关的原因占了45%,而其中缺乏最终用户的参与以及不完整的需求又是两大首要原因,各占13%和12%。

    软件需求调查表 软件分析 软件市场客户群分析

    软件需求调查表 调查人姓名 调查人所在部门 调查人职务 该软件的使用者 ...做软件前 先要分析市场 有没有客户群 做出来的软件有没有用 都是给谁去用 等等 需求性分析 才能做出好一个合适大家的软件

    软件需求分析方法总结

    撰写优秀的需求没有一个简单的公式。很大程度上,它是从过去的需求问题中得来的教训与经验。这儿有几条当你写作软件需求时应记在心上的原则: 保持句子和段落简短。 从开发者的立场来看,检查需求陈述是否足够...

    软件开发的需求开发及需求管理

    软件开发的需求开发及需求管理 需求工程在软件开发中是一个首当其冲的问题。如果没有一个清晰、完善的...当然,软件需求分析作为软件开发的第一步,也是决定性的一步,也就理所当然的左右了一个软件项目的成功与否。

    软件工程之需求分析-详解需求分析

    目前国内软件在开发中还没有对软件开发的过程进行明确规定,文档不完整,也不规范,软件项目的成功往往归功于软件开发组的一些杰出个人或小组的努力。这种依赖于个别人员上的成功并不能为全组织的软件生产率和质量的...

    软件需求分析课件

    李老师需求分析英文ppt及参考书pdf,李老师没有任何中文版ppt

    需求管理软件平台之oBridge诞生

    作为一位软件企业或研发团队的领导,您是否在为没有完整的需求工程解决方案而苦恼?如果您是一名项目经理,是否经常因软件需求问题影响开发质量和进程?您的需求团队成员(需求设计人员、需求实施者,需求分析人员)...

    软件工程需求文档

    实验课程:软件工程 实验项目:《餐饮管理系统》需求分析说明书 指导老师:庞雄文 开课时间:2012 ~ 2013年度第 1学期 专 业:软件工程(数字媒体) 班 级:2010级7,8班 学 生:邓润锋 何嘉妮 余晶晶 学 号:...

    没有需求文档如何设计测试用例.zip程序开发文档软件开发文技术档下载

    没有需求文档如何设计测试用例.zip程序开发文档软件开发文技术档下载没有需求文档如何设计测试用例.zip程序开发文档软件开发文技术档下载没有需求文档如何设计测试用例.zip程序开发文档软件开发文技术档下载没有需求...

    软件工程之需求分析

    目前国内软件在开发中还没有对软件开发的过程进行明确规定,文档不完整,也不规范,软件项目的成功往往归功于软件开发组的一些杰出个人或小组的努力。这种依赖于个别人员上的成功并不能为全组织的软件生产率和质量的...

    经典的软件需求分析(第2版)

    如果没有正式的可验证的软件需求及有效管理需求的系统,开发人员开发出来的程序通常会与客户需要的程序不一致。在本书中,Karl Wiegers对其获奖文章中的最佳实践进行了整理和扩充,这些实践是所有软件开发参与者的...

    软件工程需求分析

    谢谢没有描述谢谢没有描述谢谢没有描述谢谢没有描述谢谢没有描述

    软件需求说明书(GB856T-88)及需求分析实例

    需求分析是论文中很重要的一部分,更有些学校需要单独完整提交,照着软件需求说明书(GB856T-88)写是没有错的,可根据自己系统特点做些改变及处理,另附实例一篇

    软件需求-提高需求分析的能力和水平

    绝大部分的软件开发人员都没有接受过高效需求工程所需技能的正规培训。但许多开发 人员在职业生活中的某个阶段总会扮演一个需求分析员的角色,与客户一起工作:收集,分 析,编写需求文档。不能过高期望开发人员在...

    软件需求UML软

    关于UML建模语言的软件需求分析,需求是⋯⋯指明必须实现什么的规格说明。它描述了系统的行为、特性或属性, 是在开发过程中对系统的约束。 从上面这些不同形式的定义不难发现:并没有一个清晰、毫无二义性的“需求...

    需求跟踪矩阵表.rar 实例

    详细的测试需求还是衡量测试覆盖率的重要指标,测试需求是计算测试覆盖的分母,没有详细的测试需求就无法有效的进行测试覆盖计算。 软件测试执行阶段是由一系列不同的测试类型的执行过程组成的,每种测试类型都有其...

    汽车租赁系统软件需求说明书

    本文档描述了汽车租赁系统的软件需求规格。汽车租赁系统是专门针对汽车租赁企业所开发的一种实现以经营管理为基础、以决策分析为核心的企业信息管理系统,它涵盖了汽车租赁的所有环节,将原始的人工统计方法转换为先进...

Global site tag (gtag.js) - Google Analytics