利用扩展公理化设计理论减少全球软件开发工程中的复杂性外文翻译资料

 2022-09-26 02:09

英语原文共 14 页,剩余内容已隐藏,支付完成后下载完整资料


利用扩展公理化设计理论减少全球软件开发工程中的复杂性

Hadi Kandjani, Madjid Tavana, Peter Bernus, Lian Wen, Amir Mohtarami

摘要

全球软件开发(GSD)工程最应该被理解为本质复杂适应性活动系统,不能单纯地视为“人为设计的系统”,因为有意的设计/控制事件和过程(利用“软件工程”模型)混杂有突变的事件和进程(或许可以通过模型解释)。因此,要将GSD工程理解为复杂系统,需要将GSD研究的最前沿,与研究复杂性的其他学科(如企业架构、复杂性和信息理论、公理化设计理论)相结合,如同在软件工程学科中处理的那样。在本文中,我们研究GSD工程的复杂性,并提出柯氏复杂性的上界估计(KC)来估算项目计划的信息内容(作为复杂性度量)。我们将证明如何就复杂性比较两种假设例的优与劣,并提出扩展公理化设计理论的应用以减少GSD工程在规划阶段的复杂性,以及保证项目执行阶段期间的复杂性尽可能低。

  1. 引言

要在规定的预算和时间内,以及让客户满意、满足功能性和非功能性要求而完成项目,全球软件开发(GSD)工程需要经历复杂的过程。GSD的概念意味着一同设计、管理和执行一个软件联合开发项目的生命周期,来自不同组织和地理位置的分散团队作用如一个供应链。这种结构本身就会增加分布式GSD工程的复杂性,其中一部分是由于软件开发产品间的动态依赖,以及工程规划生命周期间与软件开发团队间的依赖。由于大量元素及GSD产品、工程或工程活动间的大量依赖,这种复杂性会产生不确定性和模糊性。

鉴于GSD项目高度分散的性质,完全集中控制很难实现,而后这些项目可以看作本质复杂适应性系统:不能单纯地将其视为“人为设计的系统”,因为有意的设计/控制事件和过程( “软件工程”,利用模型)混杂有突变的事件和进程(或许可以通过模型解释)。

存在着各种各样的工程系统,包括由全球工程工作完成的软件产品。共性是同为一个高度复合(或复杂)项目设计,因为其中许多项目通常是在“没有复杂性理论框架”的情况下设计的。GSD也因此在变得更复杂,除非发展(或从复杂性领域适配)了用于减少复杂性的基础理论、准则和相应方法。复杂性领域的一个最终目标就是代设计、运营和管理复杂系统中的“经验方法”以一个更“科学”的方法。所以复杂性是面对GSD工程的一个重要问题,因为失控的复杂性可能产生不期望的设计质量,故而满足不了GSD工程的要求。在进一步讨论之前,可能会产生的第一个问题就是:“何为复杂性?”

Gershenson将系统的复杂性()定义为其元素数量()、其间相互作用数量()、各元素的复杂度()及元素间相互作用复杂度()的函数。公理化设计(AD)理论将将一个“复杂”系统定义为一个无法预测从而一直满足其功能性设计的系统。Suh和其他作者,如Melvin,通过考虑“一直满足所有功能要求的可能性”来定义系统复杂性的概念。功能要求在AD中定义为“在功能域中完全表征一个产品功能需求(软件、组织、系统等)的最小一组独立要求”。

对于软件工程师来说,一个并不总是满足其功能性要求的软件,其概念可能有些奇怪,对此类事件的正常反应是,这是因为缺乏完整的检验。然而,大型系统的检验不可能毫无纰漏,尤其因为必须考虑的一点是通过变换满足前提条件的输入以产生正确输出的可能性取决于其他的“假定输入”,例如当时必须发生变换、必要的处理能力和存储必须可用。即使一个系统的每一部分都设计得在独立性上表现上佳,,它们也不一定一直在各个可能的运行场景(数量可能多得让人捉襟见肘)中表现得与系统的各部分相应,意味着需要一个可以解释复杂性的理论、以及可用于减少复杂性的方法。

公理化设计理论旨在提炼出“何为好设计”的两个“设计公理”的本质,特别是从消除多余复杂性的观点。许多读者可能已熟悉AD,但对不熟悉的人,第三节会简要介绍本理论核心设计公理的详情。

文献中出现了很多AD在产品设计、系统设计、组织决策以及软件开发中的应用。Kim等人在软件开发中首次应用了AD,Suh也在系统设计中首次应用。Do和Park还引入了将AD专门应用于软件设计的新概念。基于AD的设计软件会生成“lsquo;模块rsquo;间非耦合和弱耦合的相互关系和布置”,而且易于变更,修改和扩展。Harutunian等人使用了AD的第一条(“独立”)公理来估计提供最佳软件开发项目序列的设计决策。Suh和Do将AD理论的独立公理和面向对象编程设计相结合,来设计大型软件开发系统。它们都能缩短软件的交货时间,提升可靠性,降低成本,提高生产效率。

Chen等人利用了独立性公理来建立层次化知识库系统。他们建立了一个模拟模型,并将其与决策支持系统结合来说明所提出的的知识库系统的有效性。Huang扩展了AD原则并定义了两个主域:设计工作区和审核工作区。他们研究了基于该独立性公理的两个域间的关系。Huang和Jiang采用了模糊集理论,并将以往经验和见解表现为设计参数和评价标准。

Lindkvist和Souml;derberk使用AD的独立性公理与稳健性设计来比较与评估组件概念解决方案。Chen等人利用独立性公理促进现有软件的整合,与软件的修改,因为一个模块中的改变不会影响其他模块。Chen与Feng采用独立公理来测试计算机辅助设计模型是否满足独立性公理。Yi与Park开发了软件用以根据AD理论的独立性公理分析构建设计过程。

Togay等人提出了一种基于AD理论的面向构建的方法。在研究中,因AD进程模型未处理组件级的架构问题,扩展了由Suh和Do提出的V-Model。Kulaka提供了一个AD理论和原则的全面概览。

Suh将“复杂性对策”分为两个不同的域:于“物理域”处理和于“功能域”处理复杂性。在第一个域中,大多数的工程师、物理学家和数学家将复杂度视为一种“物体的固有特性,包括算法、产品、过程以及量产系统”。实用的方法是将复杂度作为一个,估计以可实现部分能何种程度地满足我们的既定目标的,相对概念。将GSD工程作为人工制品,使将AD理论应用至该工程,以及增加满足所有工程要求(即该工程总是按要求运作)的可能性。

本文的其余部分安排如下。第二节中我们介绍GSD工程和扩展AD理论的参考模型,,并在第三节使用该理论处理GSD规划和开发项目的复杂性问题。在这些论述后,第四节我们采用对设计矩阵复杂性的上限估计(通过套用一个信息理论中知名的复杂度度量,柯氏复杂性来(KC),并以此作为AD理论信息含量指标的间接测定)。利用这种间接方法可以测量目标设计的复杂性,随后本文的关注点是软件工程规划项目和软件产品开发项目本身(即我们不讨论软件产品的复杂性)。第五节,我们提出了两种假想例来但从复杂性角度比较好的和坏的GSD规划项目和开发项目。第六节我们讨论将管理功能从运营分离,第七节提出结论与未来的研究方向。

  1. 全球软件开发的参考模型

Prikladnicki等人提出了基于真实GSD案例研究的GSD参考模型,包括组织维度和工程维度:

组织维度(规划):Prikladnicki等人说明规划对于妥善组织和管理分布式工程来说很重要。他们将最初规划视为可以决定一个工程是否可被分布、如何规划其开发、如何协调和管理产出全球开发软件的GSD工程的正式的和基本的阶段。根据他们的案例研究,他们提出了以规划阶段(stage)为规划过程决定的开发项目活动的先导。为避免歧义,此处使用术语“stage”而非“phase”:关于生命周期(phase)和生命历程(stage)之间的重要区别的一种解释在附录里介绍(基于一般化企业参考架构和方法论(GERAM))。

项目维度(开发):包括Prikladnicki等人的解释“合作者之间工作的整体协调,团队间的接洽,与客户的接触交流以及解决冲突。”本维度被定义为处理需求分析、设计、建设、集成、测试的一系列,和最终产品投入运营的发行工作。

我们将这些维度解释为GSD生命历程中的两组进程:(A)GSD项目规划生命周期活动组及(B)GSD项目开发生命周期活动组。在工程学的其他领域,习惯将这两组分为两个分离的项目:一个招标项目(为规划)及一个EPC(设计、采购和建设)项目(后者通常由一系列相互关联的子项目组成)。

不过,也有一个重要的区别:此处A组有两个子集,前期的项目策划活动,即在招投标阶段的规划,以及项目执行阶段由项目经理执行的进行中项目规划活动(作为“灵活规划”的一部分,执行这种规划通常是由于在规划初期无法提供细节信息,或者由于需要修改原始项目规划的环境改变)。

  1. 用公理化设计(AD)理论处理的复杂性

根据Lloyd,尝试量化一个实体的复杂性时会出现三个问题:

  1. 描述一个实体的难度多大
  2. 创建一个实体的难度多大
  3. 何为一个实体的组织化程度

被应用于GSD项目的这些量度,如Kandjani和Bernus阐述的那样,归为可以表征将GSD项目作为一个系统来描述(a)功能、行为和状态、(b)架构(将GSD项目作为一个系统而言物理和功能结构之间的关系)、(c)(创建和改变GSD项目的)GSD规划进程的难度。这样的话,类别(a)和(c)衡量GSD项目的复杂性。与此相对,(b)将GSD规划实体的复杂性,部分以初始规划项目,部分以GSD项目的进行中的项目管理来衡量—以期设计,创建和维护GSD项目。

Kandjani和Bernus指出上述的(a)与(c)两项有一个共同点:将GSD项目描述为一个系统(以分析、设计或控制它)时,它们衡量一个“设计主管部门”处理的难度。

复杂性的(a)和(c)组意指在GSD层面的项目维度的复杂性,如Prikladnicki等人的GSD项目参考模型定义的那样。同时,类别B的复杂性表征了该参考模型的组织维度,即GSD项目的初始规划和运营管理。

当我们试图解决不得不使用GSD项目复杂设计描述的难题时,我们不得不求助于AD理论的复杂性度量。AD称得上是把为最佳设计的学科独立的方式方法和避免不必要的复杂性的特定目标的总结。然而,为了能够避免这个设计其他系统的系统本身的复杂性,扩充AD而引入一个递推公理,该公理规定一个设计系统的系统也必须遵循各公理。

需要注意的是AD推出了在任何工程领域减少复杂性的方法,包括软件开发领域。AD是一个关于复杂系统,即无法预测以一直满足功能性要求的系统的理论。AD解释出现的复杂性的缘由,并提供一个正式的设计理论以及两个必须满足以最小化复杂性的设计公理。AD通过系统一直执行期望功能的概率的负对数,也被AD称系统的“信息含量”。引号是为了提醒读者本文中我们会使用一个相似但并非相同的度量,即被一个对象的KC所定义和衡量的信息含量(见第四节)。

将公理化设计应用在软件工程上的想法并不新鲜。Arsenyan和Buyukozkan在软件业环境中提出了一种基于AD的协作模型。他们提出了一个协同软件开发的模型结构,以及软件开发中影响协作成功执行的策略和原则。他们基于AD的协同软件开发模型也可以用作对有效规划的参考模型,并用于开发GSD项目。

Carnevalli等人提出了用以减少QFD难度的AD应用,其结果亦可用于开发软件系统。本文中我们准备将公理化设计应用于以可衡量的方式减少GSD项目以及GSD规划进程的复杂性。为了能够展示我们所欲的公理化设计的用途,我们首先对AD进行一个简短的介绍。

徐将“设计”定义为一个映射函数的序列,从用户需求到功能要求,从功能要求到设计解决方案以及从解决方案到实现。他发现,在分析了大量的优劣设计之后,构成优设计(即具有大量期望特性的设计)可以被抽象为两个设计公理,即对所有的优设计都成立的陈述。下面我们将解释这两个公理。

公理I(独立性公理)

必须始终保持功能要求的独立性。

一个功能要求FRi独立于其他功能要求——如果存在“设计参数”[DP],满足当改变一个FRi时仅有一个DPi必定改变。设计参数Dpi是实现一个或多个功能要求的设计解决方案的一部分,如一个子系统可以是DP。从FRs到DPs的映射表示为[FR] = [[A]]*[DP],[FR]为FRs的向量,[DP]为DPs的向量,[[A]]是从DPs到FRs的映射矩阵,有效地描述了哪个DP对于哪个FR是必要的。

若[[A]]是哟个对角矩阵那么该设计是非耦合的(实现了完全的独立性)。如果[[A]]是三角矩阵那么该设计是弱耦合的(实施过程可“序列化”)。否则就是耦合的(DPs的实施过程不可“序列化”)。

公理II(信息公理)

在满足公理I的设计中,信息指数最小的设计为最佳设计。

Suh将信息指数(IC)定义为“成功概率”(此处的成功是指系统总是满足其FRs)的负对数。本文中我们使用设计矩阵的KC的上限估计来代表Suh的信息指数。

通俗地说,KC是对于一个对象内包含的信息量的度量。例如若项目P1的设计说明比项目P2的设计说明长得多,则我们会怀疑项目P1的设计说明有着比项目P2的设计说明更多的信息。

人们可能首先会想到,我们可以只为这种比较考虑一些简单的度量,比如包括了设计说明的文件中的特性的数量,或者一些其他的度量,但这会非常不理想,因为一个说明可能是以非常简洁的方式写的,而另一个则不是。所以我们真正感兴趣的,是P1和P2的可能描述中最短的分别有多长,因为这将给我们一个客观的衡量标准来进行比较。

在第四节,我们将对KC进行一个基本的数学上的介绍,但我们注意到,在应用环境中此项测量的计算有可能成为一个项目经营软件的内建函数,并且最终用户不需要知道此项计算的细节。

为了满足公理I,设计师会用设计矩阵和调整功能要求及矩阵的结构来达成一个非耦合设计或者弱耦合设计。当用最小化设计的信息指数来满足公理II的时候,前面提出的信息指数的计算也基于此矩阵。

公理I和II两者试图将系统结构的复杂性最小化,且可被用于设计复杂性更低的GSD项目。然而,考虑到G

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[150666],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。