基于视点的面向方面需求工程方法分析-计算机软件与理论专业论文.docxVIP

  • 3
  • 0
  • 约4.44万字
  • 约 57页
  • 2019-03-30 发布于上海
  • 举报

基于视点的面向方面需求工程方法分析-计算机软件与理论专业论文.docx

华中科技大学硕士学位论文 华 中 科 技 大 学 硕 士 学 位 论 文 PAGE 10 PAGE 10 1 绪 论 1.1 课题背景 随着信息技术与我们日常生活结合的越来越紧密,越来越多的软件系统不可阻 挡地朝着更大更复杂的方向发展,人们对软件复用、维护和演化的要求也越来越高。 为了满足人们不断涌现出的对软件开发的新要求,软件工程学科出现了,它提出以 结构化的过程和活动为软件开发提供支持。在大部分软件过程框架中,需求阶段都 出现在软件工程的初始阶段,长期以来人们对其却未能给予足够重视。从 20 世纪 90 年代中后期起,人们对软件开发项目失败原因所做的总结[1]使业界清醒地认识到重视 软件开发需求阶段的必要性,需求工程开始作为独立的研究方向出现。自那时起, 不断有需求工程方法出现并在实践中使用,一些系统化需求分析方法的运用使软件 开发的现状得到改观。因此,我们可以说:对需求工程进行研究可以为从整体上提 高软件系统开发的质量和效率提供必要的指导和支持工具,从某种意义上讲,需求 工程方法的有效性、可行性以及实施效果对软件系统开发的成败具有决定意义和直 接影响。 尽管人们已经在需求工程领域做了大量卓有成效的工作,然而一些问题依然存 在。软件的可理解性随时间日益糟糕,许多日常维护和演化不得不做大范围、侵入 式的修改,软件制品的复用非常有限或者干脆难以实现。软件制品之间的可追溯性 也颇为有限,这使得演化过程更加困难。诸如此类问题很大一部分原因是在需求阶 段没有对需求很好的实现“关注点分离”。关注点分离是人类认识复杂事物、控制 事物复杂性的重要方法之一,其基本思想是一次仅识别、封装和操纵与特定概念、 目标(即关注点)相关联的软件组成部分。如果使用得当,我们可以很好的控制软 件系统的复杂性,便于实现软件复用、维护和演化。可以这样说,我们解决这些问 题的能力根本上取决于我们确保关注点分离的能力。 所有现代软件开发范式都通过各自的分解和组合机制在某种程度上对关注点分 离提供了支持。然而,无论是在结构化分析盛行的早些年,还是在如今——需求开 发思想更提倡从用户的场景出发,从业务流程出发的横向视角,而非自顶向下的纵 向视角,我们仍不断发现:无论我们如何创新分解的方式,Tarr 等人提到的“占优 分解的暴政”[2]却始终无法避免。占优分解是指将软件系统或与之相关的任何问题划 分成模块的主选方式。任一分解标准不可能适用于所有关注点,因而使某些关注点 (即,横切关注点)横跨划分边界散布,导致基本需求单元可能包含多个关注点的 信息。例如,用例的边界就不适用于非功能需求,需要另外的方法在需求分析过程 中对它们进行处理。此外,这种横切效果不仅局限于非功能需求,功能需求同样存 在。显然,因横切关注点带来的分散和缠结给模块化带来很大的障碍。事实上,这 个问题是分析横切一个需求文档集的关注点时普遍存在的问题之一,需求文档集可 能包括结构化的模型或者自然语言规格说明或者二者的结合。如果横切关注点没有 进行有效的模块化,那么就难以分析其对系统或其他关注点产生的影响。此外,如 果不对这些属性进行模块化那么可能在系统演化时对其他需求产生连锁影响[3]。 近年来出现的面向方面软件开发(Aspect-Oriented Software Development, AOSD) 技术提供了一种系统地识别、模块化、表示和组合横切关注点的方法。建立在已有 的软件开发技术和方法学的成果的基础上的 AOSD 技术为系统的处理横切关注点提 供了可能。然而人们最初在 AOSD 领域所作的工作大部分集中开发面向方面编程语 言(Aspect-Oriented Programming, AOP)、框架和平台,随着时间的推移,人们开始 意识到在需求阶段研究处理横切关注点的方法和技术很有其必要性,并提出了一些 面向方面需求工程技术试图解决这个问题。成功的关注点分离必须尽早开始[4]。面向 方面需求工程以实现关注点分离为核心,通过将方面概念引入需求阶段,旨在为横 切功能性和非功能性关注点的分离提供支持。然而当前的面向方面需求工程技术还 很少关注功能需求可能存在的横切特性。 综上所述,本课题的研究目的在于提出一种面向方面的需求工程方法,该方法 可以: (1)在需求阶段为横切的功能性和非功能性属性的分离提供进一步的支持,从 而为识别和管理因缠结的需求表示导致的冲突提供一种更好的方式。 (2)识别需求阶段的方面到后续开发阶段的软件制品的映射以及对其产生的影 响,从而在导出架构之前建立关键的决策点。 对本课题进行研究,可以在下面几个方面带来好处[5]: (1)确保所有项目干系人的关注点与总体需求和约束的一致性。 (2)处理难于理解、维护的缠结的需求表示。 (3)为模块化提供更好的支持从而降低开发、维护和演化代

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档