翻译计算机期刊请高人帮忙翻译附件
摘要:
为物体的可维护性的经验证据-定向系统一点也不决定性的,部分适当对比较早的研究主题和系统 uesd 的缺乏代表性。我们以经验为主地为现在操作而且被软件 professtionals 维护了的牛鼻子任务软件调查了这一个议题。 信用赞成制度的二个功能相等版本被维护,被定向 (OO) 的一个物体和被定向 (NOO) 的另一个非物体。我们发现 OO 类群花比较少的时间超过它的 NOO 类似版本维持一个软件 artifects 的较棒的数字,这一种不同为软件发育举起周期的所有时期拿着了。 这一个结果是由于 UML 的用处对于 OO 版本的冲击分析, 成为有效的理解和通讯的因素。给 NOO ...全部
摘要:
为物体的可维护性的经验证据-定向系统一点也不决定性的,部分适当对比较早的研究主题和系统 uesd 的缺乏代表性。我们以经验为主地为现在操作而且被软件 professtionals 维护了的牛鼻子任务软件调查了这一个议题。
信用赞成制度的二个功能相等版本被维护,被定向 (OO) 的一个物体和被定向 (NOO) 的另一个非物体。我们发现 OO 类群花比较少的时间超过它的 NOO 类似版本维持一个软件 artifects 的较棒的数字,这一种不同为软件发育举起周期的所有时期拿着了。
这一个结果是由于 UML 的用处对于 OO 版本的冲击分析, 成为有效的理解和通讯的因素。给 NOO 版本的不够设计规格在转移设计的解决办法发育方面导致了不明确和昂贵的缺点。也 OO 版本的封包似乎对于维护工作减少心智的负荷而且造成密码重复使用。
另一方面,文件的数字被处理增加的和,因此,属国管理为 OO version。Furthermore 被需要,尽管很多的调音,OO 版本比它的 NOO 类似版本更慢地跑。比较文脉上的因素 , 像是方法,程序和维护工具需要在软件专业人士上的较多的场研究。
一般广泛地相信物体的使用-定向例 incresases 软件可维护性。(詹森,2000)然而,这推想利益目前为止不是实验式地 balidated。一些经验的研究已经被运行向这一个议题发表演说,但是结果约会已经是非决定性。
(詹森,2002)此外,事实上所有研究已经被引导在一很好地-受约束的实验室设定在特别地为实验被发展的软件上,和它不清楚这些结果能被外推法到真实的软件。除此之外,几乎所有实验已经在学生上被运行,并非在软件专业人士身上。
在这一张纸,我们描述在操作真实的牛鼻子任务系统的二个版本上被运行的维护实验。一个版本在使用结构化例的 C 被发展,另一个在 C++ 使用物体定向的例。两者的版本是主要的-软件专业人士的队的 tained。
在第 2 节中,我们在这一个议题上讨论讲研究。在第 3 节 wo 中强调我们的研究在真实的软件而不是实验室软件上被运行。我们的实验的细节在第 4 节中出现,andthe 造成第 5 节。技术的不同在第 7 节中被在第 6 节 , 和物体-obiented 系统的表现关心讨论。
第 8 节包含讨论和我们的结论。
2。可维护性和物体-定向例
如国际标准组织/IEC 12007(1995) 所定义,维护是发生的程序当 "软件遭受修正编码和由于一个问题或进步或适应的需要联合的文件 。
"根据这种操作的定义,维护发生,每当一种过失被修理,否则需求改变,不顾的是否这前或后农产品的安装发生。当 IEEE 标准被修正因此遵从 ISO/IEC12007。 的时候,为电的和电子学工程师 (IEEE) 和电子的工业同盟 (EIA) 的 TheInstitute 后来采用了这一种定义 (IEEE/EIA,1998),当安逸由于哪一种一个软件系统或者产品能被修正改正一种过失或者遵照改变需求的时候,可维护性可能被定义。
我们现在转向物体的冲击-在可维护性上定向例。物体-定向例包含一些清楚的特征, 像是纲,物体,遗传,多态现象和电动装订。我们需要在每一个这些特征的可维护性上知道冲击。首先考虑遗传。关于遗传树的高度如何影响可维护性的经验研究的结果已经互相反驳。
举例来说,戴利以及其他人。(1996) 用三层遗传发现那个物体定向的软件花重要比较少的时间维持胜于和没有 inheritance。However 的相等以物体为基础的软件,被车匠 (1998) 描述的一个这实验的回答发现相反的效果。
Harrison 以及其他人。(2000) 然后运行了使用零的相似的实验,三,和五层遗传而且发现修正在和没有遗传的版本上比较容易。最近更常。Prechelt 以及其他人。(2003) 表示时候运行特定的维护工作容易增加如水平遗传的数字增加。
反驳的结果被弗里曼和 Schach(在杂志报纸) 和解了的这些, 在一系列的三实验方面表示遗传对可维护性的冲击是工作-受扶养者。二个功能相等的 C++ 计画被构造,一用一个遗传序位和另一个公寓。
一件维护工作比较容易在和遗传序位的版本上运行,一件第二件工作在平坦的版本上比较容易,而且一件第三件工作相等地容易在两者的版本上运行。
我们在物体的其他特征的可维护性上关于冲击的任何经验的证据不了解 -定向例, 像是纲,物体,多态现象和电动装订。
直到对相反者的证据已经被获得,不不合理的是相信这些特征也可能有一件工作-受扶养者产生。如果这的确是情形,它会在控告物体定向的例的软件发育的可维护性上解释反驳的经验结果。但是即使其他特征没有一件工作-在可维护性上的受扶养者效果,事实:遗传的冲击显然地是工作-受扶养者使决定物体定向的例如何影响可维护性是困难。
3。 真实的和实验室软件比较
在可维护性上的在物体定向例的效果方面的经验的研究,包括 (白里安以及其他人。,1997。2001:车匠,1998;戴利以及其他人。,1996;Deligiannis 以及其他人。
,2003,2004;弗里曼和 Schach,inpress;Harrison 以及其他人。,2000;Prechelt 以及其他人。,2003),通常已经在学生上被运行,并非在软件专业人士身上。
实验的系统很小,排列从数百到在密码的最数千线。叁加者是知道的他们是主题,因此结果可能是藉着 Hawthorne 效果。(Gillespie,1993)最后,实验在为那个目的特别地被写的软件上通常是 perormed ,而且维护工作是人造的。
在差别,我们的研究被设计调查 , 方式专业人士在练习中维持牛鼻子任务操作的软件。 (系统的细节在哪一个之上我们的实验在第 4。1 节中被运行出现)形成了我们的实验的主题的变化请求任意地从真实变化请求的组被选择,而且叁加者没被告诉他们将运行的维护工作是实验的主题。
在 objuect 的多有小面性质看得到的地方-定向例,sigle 的结果实验 , 我们描述这里不能够被推广到物体-在 general。Instead 中定向软件,这一张纸的目标将提供关于我们的实验的尽可能很多的数据,在这里的结果呈现能被和在真实的软件上被运行的多种将来的维护实验的结合的希望是多种研究员, 达成 statisically 关于物体技术对可维护性的冲击有效的结论。
4。实验的细节
4。1 系统细节
这一项研究在韩国在主要的信用卡被在一个场设定引导公司。在 2003 年,公司的年度售卖体积对于现金进步是安装的大约二百五十亿元购买 , 和四百七十亿元。
售卖通常在经由在全国家的很多成员商店 ( s 车站,餐馆, 等等。) 和大约 3,000个零售频道发生了的即时的信用卡 swiping 交易被伐木。 每日交易的平均数字使过失的使用成为必要-宽容的系统和纵排的 Himalaya 伺候器 (12个处理器) 维修那大约公司的二千万个卡片持有人。
实验在被专业人士维护的牛鼻子任务信用赞成制度上被运行。 由于移动一个遗赠物系统, 软件的二个功能相等版本是操作的; 物体定向的版本在 C 被实现++, 在 C 和 TAL(组合器) 的结构化版本。
在什么跟随,我们使用缩写 OO 提及软件的物体定向版本, 和非物体定向的版本 NOO。
叁加者能得到的文件在表 1 被概述。两者的类群被为维护工作给相同的需求规格。 剩余的需求文件对例是特定的为哪一个他们已经被发展。
已经被画的被利用流程图解的 NOO 类群和工作描述在上面描述全部的系统。 另一方面, 队有责任的已经为发展 OO 版本详细说明即使用 UML 使用-情形的图表和描述的商务功能。
转向分析和设计时期,NOO 类群有了一连串的计画功能 (模块) 和他们的相互依赖。
这是对 OO 类群的纲图表的同等物。 除此之外, OO 类群利用了操作规格,这证明了如操作名字,签字,成份成份,先决条件, postconditions 的操作细节, 和在假码被写的丝或丝毛交织的粗布逻辑。
NOO 类群似乎在一个略微表面的水平引导他们的冲击分析; 他们偏爱为详细的分析仰赖原始码。 在手上, OO 类群成员是必需的分析。产生的操作规格, 连同表示叁加纲的视野和接口的一个纲图表一起, 可能是理由为什么 OO 类群能够位于要更容易被修正的部份, 而且有较少的个昂贵的缺点。
NOO 分析的生产目录和设计状态表示文件 NOO 类群必须部署。 这与 OO 版本的丝或丝毛交织的粗布可描绘文件类似,这在合乎逻辑的和实际的文件之间表示那个映射。
两者的类群在落实状态期间利用了原始码和在测试状态期间利用了测试情形。
最后状态,配置计划证明 , 目录构成部署 , 分别者编译了计画。
4。3 维护工作细节
在这实验方面被运行的维护工作任意地从一个 488个变化请求 (CR) 的池被选择。更详细地, 被委托的所有的 CRs 被评估被那资讯计划部门关于可行性和有效性。
然后, 每 CR 被分配一个数字在 1 和 9之间反映资源, 既技术上的且管理的, 那被估计被需要实现那一个变化。 CRs 对二个最高的水平分配了,1 和 2, 通常符合在被估计需要一些人的政府政策或者外部的环境方面的改变-数个月实现。
下一个水平。 3 直到 5, 被指定给通常会有关一个人需要的 CRs-月的努力。 CRs 在水平 6 和 7 通常正在提高一或二个使用者接口炫耀。 CRs 对最低的水平分配了,8 和 9, 相对地很简单, 而且被估计需要一些人-每天实现。
大多数的 CRs 似乎比较小;消除 8 和 9 占大约 50% 的所有变化请求,而且只有大约 10-20% 的 CRs 被分配消除 4 或者比较高的。(见到表 2)
被用于研究的维护工作是信用额度整合 (CLI) ,任意地从水平-4 变化请求被选择的真实的 CR 。
先前,每个客户已经为信用卡购买和现金进步被分配分开的信用极限。 CLI 的目的将为每个客户介绍一个全部的信用额度。
4。4 叁加者细节
总数为 12 是被参与这实验的专业人士。 他们中的六个被指定给 NOO 类群。
那些在 NOO 类群中是信用卡的职员已经维持现在的遗赠物系统最后好几年,和如此所有得好的公司知道的 CLI 讲活动和程序。 另外六是专业人士被分派到 OO 类群。有参与再建使用物体定向的例和 C 的旧的系统的整个程序++, 那些在 OO 类群中被视为持有对 NOO 类群的在 CLI 同等物中的专长。
4。5 程序的细节
首先,叁加者在维护工作上被作摘要。他们被要求保存一笔他们的维护活动的详细记录,包括被花费的时间和人工品。 一种我们的研究的目标将调查维护练习的状态当避免人造的控制时候当做很多当做可能的。
因此, 我们没有强迫叁加者改变他们的维护程序; 相反的,当他们正在维持系统的时候,我们试着观察程序。 因为工作在二个操作的系统上被运行, 那是解释工作的重要,而且要求两者的类群尽量正确地记录他们的活动的那些叁加者的经理。
然而,叁加者没被告诉他们的工作是实验的部份,因此,他们把他们的录音和报告责任视为他们的例行维护活动的部份了。 结果, 结果是不依照 Hawthorne 效果。(Gillespie,1993)
4。
6 依赖的变数细节
我们收集的数据从 OO 和 NOO 类群用来计算二个可维护性韵律学 (白里安以及其他人。,2001)。首先公制者在人中是完全的努力-数分钟必需的了解,修正, 而且测试对 CLI 是必需的人工品。
另一个公制的是制造软件人工品的变化的体积。 变化体积依下列各项被测量:
。页数在一份文件中改变了;
。被修正的密码的可运行线的数字;
。测试情形的数字构造;
。被写构造测试手写体的密码的线的数字;
。
被需要被编译的文件的数字; 而且
。被需要被部署的文件的数字
当维护实验在实验室被运行的时候, 它只对叁加者是通常适当的指出什么变化他们感觉应该被做; 通常没有对叁加者的需要实现变化和检查产生的软件无过失而且使被修正的需求满意。
在差别, CLI 维护工作是需要被制造一个牛鼻子任务系统的一个真实的变化。 因此,两者的类群是成功地完成 CLI 维护工作所必要者。 两者的韵律学在完全的系统发育生活周期各处被收集; 需求,分析,设计,落实,测试和配置。
这二韵律学,努力和变化体积,是我们的依赖变数。
4。7 数据确认细节
在维护工作的完成上,努力记录小心地被调查。 面谈被拿着澄清任何的明显在-之下或在陈述之上。 然后,和所有的保管赌注的人类群会议被组织试着在努力数据中加亮任何的学名差错。
变化体积数据被藉由游戏攻略和检验在哪一个所有的叁加者和管理的职员叁加检查。
5。结果
我们首先在最初三时期期间比较了可维护性。 (需求,分析和设计时期)第三和第四的纵队表 3 指出完全的努力 (在人中-数分钟) 运行那三时期是有关两次同样地对于 NOO 是大的聚集当做因为 OO 聚集。
(1,260 对 570个人-数分钟) 尤其, NOO 类群为分析和设计需要了超过三次像 OO 类群一样的很多的努力。 (1,020 对 310个人-数分钟) 它很清楚, 在最初三时期期间, OO 例的使用减少了维护努力必需的。
(在表 3 的数据反映被牵涉的技术上的努力; 我们没有测量管理的努力)
也提议 3 表示分析的变化体积和 OO 类群的设计人工品超过 NOO 的聚集。 因为 OO 类群有了较多的人工品维持胜于 NOO 类群,所以这不是令人惊讶的,这有了只有一些强制性的文件。
OO 类群校订了 UML 人工品 , 像是活动图表,使用-情形的图表和纲图表。 因为设计式样广泛地被雇用, 我们发现,序列图表表示太多重复的操作和因此一点价值。 UML 在表达所有的商务细节方面被视为不够的。
因此,商务细节在操作规格被证明。 另一方面, NOO 类群几乎不证明了任何的使用者需求而且仰赖口述的通讯。 因此它相当料想不到 OO 类群花费了比较少的努力; 这在第 7 节被讨论。 在摘要, OO 版本非常地较少的努力除了对文件的较多的变化之外超过 NOO 版本。
然后我们在最后三时期 (落实,测试和配置) 期间比较了可维护性。提议 4 揭露 NOO 的努力在落实期间聚集状态是大约三次 , OO 的聚集。(660 对 215个人-数分钟) 然而 OO 类群似乎藉由利用适当文件节省时间,NOO 类群必须靠他们自己再创轮形体。
对于 CLI 需求, NOO 类群似乎诉诸削减-和-浆糊策略当类似现在系统的实现功能性的时候。 甚至在现阶段,他们时常需要口述地和系统分析家和商务使用者讨论不易了解的需求。 除此之外, 相当多的时间被由于全球变数的重使用采取。
。卡片强打的输入水流;(举例来说, 卡片编号 , 有效性时期) 而且
。被分享的常数和线在外部的文件中宣布而且解救了
除此之外,尽管事实: NOO 类群跑些微地少于一半像 NOO 类群一样的许多测试情形, NOO 类群令人惊讶地在测试状态中超过 OO 类群 (1,103 对 182个人-数分钟) 投资了大约六次较多的努力。
(15 对 39) OO 例的优越进入配置状态之内继续, 哪里 NOO 类群几乎提出两次像 OO 类群一样的很多的努力 (30 对17个人-数分钟)。 关于最初三时期,这些结果指出 OO 例减少维护努力。
我们现在在表 4 中转向变化体积数据。 在落实状态期间, NOO 类群跟它的 OO 类似版本比起来修正了密码 (182) 的少可运行线。 (277) 当信用卡购买,而且现金进步分开地被对待的时候,结果是令人惊讶的。
因为信用卡购买,只有 51条可运行密码的线为 NOO 版本被修正, 与对于 OO 版本的 268条行相反。 藉由现金进步, 然而, 这一个趋势被颠倒; 在 NOO 版本被更新的密码的可运行线的数字是 131, 当做反对到只有 9 在 OO 版本中。
这主要地是可归于编码 OO 版本里面的重复使用哪里在另一个成份 (现金进步) 中,为一个成份 (信用卡购买) 被写的商务逻辑被利用,藉由一点的修正。 另一方面,给在 NOO 版本的每一个二个成份的商务逻辑独立地本质上被发展。
测试状态, OO 类群产生了为 CppUnit(2004) 组成密码的 283条线的广泛的测试手写体, a C++ JUnit 的落实。 这减少了测试的努力, 当做先前描述。 如表 4 所反映,较多的文件必须在 OO 版本被编译而且部署。
这是由于纲的好粒状。 一起拿,尽管被牵涉的另外的文件,OO 版本比需要比较少的努力有利。
6。 技术的不同
在维护程序和被在构造牛鼻子任务系统的二个版本方面已经被雇用的技术的不同主要地引起的被二个类群雇用的人工品中有主要的不同。
NOO 版本已经被构造使用结构化方法和在 C。 被实现 NOO 类群成员因此要在 C 规划,使用结构化方法和情形工具。在手上, OO 版本已经被发展使用 UML 而且提高 (统一了程序), 而且在 C 实现++ 由于物体定向的情形工具。
在最初三时期 (需求,分析和设计) 期间, OO 类群很重地依赖 UML,然而 NOO 类群不得不利用直接的系统分析家和保养者之间的通讯。 这影响冲击分析被二个类群运行了的方法。 NOO 类群必须藉由读现有的原始码了解 CLI 工作。
另一方面, OO 类群调查了多种 UML 图表,包括使用-情形的图表,纲图表和序列图表。
引人注目的不同也在落实和维护工作的测试时期被发现。 当他们需要决定什么修正必须被制造他们的系统的版本的时候,在 OO 的保养者通常聚集提及设计文件。
他们也调查了操作规格,这为这一个目的包含了适当的商务逻辑。 然而, NOO 版本的保养者必须仰赖系统分析家。 不幸地,这个直接的通讯容易在分析家和保养者之间来回地转移设计解决方面增加经常开支了。
有完成他们的修正, 两者的类群生产了相似的测试情形。 然而,被雇用的技术是不同的。 NOO 类群发展 , 喂了每个测试情形的一个模拟器对他们的系统的版本在一个数据库中解救了, 而且在测验结果记录中储存了结果。
其他一只手, OO 类群雇用了在 CppUnit(2004) 被写的测试的手写体,这解救了在记录中测验结果。
7。 表现议题
在测量表现之前,我们确定经核准交易测试情形的数字对 OO 和 NOO 版本是相同的, 和同样地对于拒绝的交易。
一个内部的软件模拟器被构造产生我们的测试情形。 最初, 100个测试情形由在早先年的商务行动之上被收集的测试数据构成。 一次开始的测试已经被通过, 我们楼梯式的对一百万增加了测试情形的数字。
这一个程序显示了许多学名差错和需要被修理的缺点。
然后整体而言,我们着手进行调查二个版本的软件建筑学的表现,包括 CLI 工作。 这对牛鼻子任务软件是必要的哪一必需的快速转机时间; 一个失败对适宜的如此一个限制会无疑地造成软件设计的彻底检查和建筑学 (Balsamo 以及其他人,2004)
因为 OO 版本的表现坚持地不如 NOO 版本,信用卡公司最后决定,在他们的客户的兴趣, 以大约百万元的费用购买另外的计算机资源, 包括一双处理器。
另外的磁盘片储藏 , 和软件执照。(对于纵排的中间设备) 清楚地,公司决定它关于计算资源值得花费百万元为了要在将来的维护上节省钱。那是,这一项研究反映信用卡的结论公司一个物体定向的系统比一个相等的非物体定向的版本更可维持。
8。 讨论和结论
这一项研究发现,全部地,修正了 OO 版本的类群成员需要了比较少的努力维持的软件人工品比处理 NOO 版本的他们的类似版本多。 资源的这有效利用是显然的不管软件发育生活周期的状态。
这一个发现似乎以被运行比较物体的一些实验的结果争执-导向的和非物体定向的软件发育, 包括 (贝姆-戴维斯和罗斯,1992; Hadar 和 Hazzan,2004; Pennington 以及其他人。
,1995)。 然而,那些实验处理软件发育了,然而我们的实验是软件维护的调查。
软件维护的 OO 技术的优越由于 UML 的用处可能是对于冲击分析, 如 OO 类群所雇用。 再一次, 实验测试 UML 的力量, 像是 ( Hadar 和 Hazzan,2004; 购买以及其他人。
,2001), 在维护的上下文里面没被运行。
。收起