英语原文共 20 页,剩余内容已隐藏,支付完成后下载完整资料
信息和软件技术72(2016)48-67
目录列表可在ScienceDirect上找到
信息和软件技术
期刊主页:www.elsevier.com/locate/infsof
研究PHP Web应用程序的发展
Theodoros Amanatidis,亚历山大Chatzigeorgiou *
希腊塞萨洛尼基马其顿大学应用信息学系
文章信息
文章历史:
2015年5月26日收到
2015年10月24日修订
2015年11月10日接受
2015年12月18日在线提供
关键词:
PHP
软件演变
雷曼法则
软件维护
脚本语言
软件存储库
摘要
背景:软件演进分析可以揭示维护实践的重要信息。 大多数分析软件演化的研究都集中在以Java和C等编译语言编写的桌面应用程序上。但是,今天大量的Web内容都是由用PHP编写的Web应用程序提供支持,因此软件系统的演变 这样的脚本语言值得一个独特的分析目标:本研究的目的是分析开源PHP项目的演变,试图调查雷曼软件进化的规律是否在Web应用的实践中得到了证实。
方法:已经为30个PHP项目的后续版本收集了数据(变更和指标),而统计测试(主要是趋势测试)已经用于评估每个法则对被审查的Web应用程序的有效性。
结果:我们发现法则:I(持续变化),III(自我调节),IV(组织稳定性保持),V(熟悉度保持)和VI(持续增长)得到证实。 但是,只有法则I和VI的结果才具有统计意义。 另一方面,根据我们的结果,法则II(增加复杂性)和VIII(反馈系统)在实践中并不成立。 最后,对于声称质量随时间而下降的法则(法则VII),结果是不确定的。
结论:根据雷曼法则和项目持续维护的预测,所审查的网络应用程序的确具有不断增长的特性。 但是,我们还没有发现证据表明质量会随着时间的推移而恶化,如果其他研究证实,这一发现可能会引发对PHP Web应用程序不受软件老化影响的原因的进一步研究。
copy;2015 Elsevier B.V.保留所有权利
1.引言
脚本语言起源于易于使用,专用的解释性编程语言,支持松散的数据类型,但很快演变为强大的,通用的和高级语言,从而促进了Web的发展[1]。现在,脚本语言的流行从开源存储库托管服务提供商(如SourceForge1和GitHub2)中的统计数据中可以清楚地看出。 诸如PHP,Javascript,Python,Perl和Ruby等语言是开发客户端和服务器端应用程序最受欢迎的选择,由巨大的社区和大量文档支持。 作为LAMP(Linux-ApacheMySQL-PHP)平台的一部分,PHP特别被广泛应用于世界各地的服务器。 表1显示了两个开源软件存储库托管提供商的十大编程语言和附带的项目共享。
表格1
由sourceForge&Github托管的公共开源项目的前十种语言。
*百分比是指用前十种语言开发的项目总数的比率。
**截至2015年10月的数据已从http://sourceforge.net和http://github.com中检索。
脚本语言的普及可能归因于它们的易用性,使得应用程序的快速开发和屏蔽内存管理等低级问题成为可能[1]。根据Prechelt [2],他将在脚本语言(Perl,Python,Rexx和Tcl)中开发的实现时间与在C / C / Java中编写相同功能的时间进行了对比,脚本语言的开发时间显着缩短 大约一半的编译语言时间)。 各种作者都认为脚本语言更适合真正的编程实用主义,因为它们释放了程序员的创造力和想象力[1]。 早在1998年,Ousterhout [3]就声称新的应用程序将完全用脚本语言编写,而所谓的系统编程语言将主要用于开发组件。
程序员的创造力和想象力[1]。 早在1998年,Ousterhout [3]声称新的应用程序将完全写入在脚本语言中,而所谓的系统编程语言将主要用于开发组件。
在这项工作中,我们调查了PHP Web应用程序的发展,旨在深入了解相应软件系统的维护方式。这项研究的动机是以下三个事实:(a)有一种潜在的看法认为,脚本语言不适合正确的软件工程,可以支持大型软件项目的维护[1]。 但是,科学文献很难找到这种说法,因为它们没有真实的证据支持。 (b)学术界对计算机科学入门课程中脚本语言的适用性持怀疑态度。尽管如此,应该指出的是,越来越多的软件工程课程的概念用Ruby和Python等语言进行说明[5]。 (c)最后,据我们所知,目前还没有关于用PHP编写的软件项目演变的实证研究(除[6]中的工作外),而有关编译软件进化的大量研究语言,如Java。
软件演化经常从雷曼八项法则的角度进行研究[7],这些法则描述了不断发展的软件系统的规模,变化和质量趋势。 因此,本研究的主要目标是调查雷曼网络应用程序进化规律的有效性。 由于之前对其他编程语言进行过类似的研究,因此可以将此分析视为复制研究,将之前的研究结果与针对PHP的研究结果进行对比。
本文的其余部分组织如下:在第2节中,我们特别讨论了有关软件进化和雷曼软件演化定律的相关工作。第3部分介绍了我们的案例研究设计的细节以及有关已审项目的信息。 雷曼的进化定律的有效性在第4节中进行了研究。在第5节中,我们总结了我们的结果并与以前的作品进行了比较。 第6部分介绍了软件研究人员和从业人员可能产生的影响。 第7节讨论有效性威胁,最后我们在第8节中总结。
2.相关工作
软件开发的分析是软件开发和维护中研究最深入的方面之一。这种实证研究很大程度上得益于软件库中多种可用数据的存在,从而允许调查与软件项目所有方面有关的研究问题,包括其源代码,文档,开发人员,错误报告等。Kagdi等人提出了关于挖掘软件库以研究软件进化方面的80多种方法的综合调查。[8]。Godfrey和German [9]在综述文章中讨论了软件演化和维护之间的关系,突出了环境中基本变化的概念。
表2
雷曼法则的最新制定
自七十年代以来,软件进化一直在研究中.Lehman在1974年基于对OS / 360操作系统的研究,首次提出了软件进化的三个基本原则[10]。 后来,雷曼修改了现有的原则并提出了两个新的原则[11]。 在八十年代初,雷曼出版了新版法则III,IV和V [12]。 最后,雷曼公布了一个更新的法则公式,包括更多的公式[7],并在2006年重新发布了最新的公式[13]。 表2列出了软件演化八个定律的最新公式:
随着开源软件的兴起,一些研究调查了这些法则的有效性,并且在某些情况下发现一些法则尚未得到证实[14]。 Godfrey和Tu研究了Linux Kernel [15]的演变,并在后来的几个其他开源系统中进行了研究[16]。他们的重点是内核的增长,使用LOC作为大小度量标准,并发现Linux以几何速率增长。 Robles等人。 [17]也研究了更广泛的开源系统,包括Linux内核。根据与Godfrey&Tu的协议,他们发现系统的平稳增长并不常见,并且认为在某些情况下,开源软件的开发并未遵循已知的法则。 2008年,男士等人。 [18]研究了Eclipse的发展。他们发现,法则I和VI在实践中得到了确认(即系统以持续的工作率持续进行调整),而法则II没有得到确认(即复杂性没有呈现增长趋势)。后来,谢等人。 [19]研究了七个开源项目中所有八种进化规律的有效性。他们分析了653次正式发布和累计69年的进化,证实了8项法则中的4项(I,II,III和VI)。以色列和Feitelson [20]在2010年也研究了对Linux Kernel的法则验证。他们发现Godfrey&Tu发现的超线性增长[15,16],并由Robles等人证实。 [17]从一点变为线性。最终他们证实了第三和第四条法则,与上述研究不同。同年,Businge等人。 [21]还审查了Eclipse的21个第三方插件的法则验证。他们得出的结论是,法则I,III和VI得到确认,而V则没有。后来,Neamtiu等人[22],他的工作是谢等人的研究扩展。 [19],研究了九个开源C项目。作者仅对第1法和第6法进行了验证,反对他们先前研究中的结论[19]。在最近的一项工作[23]中,Kaur等人研究了两个C 项目,发现法则I,II,III,V,VI和VII在实践中持有,而对于IV和VIII,他们不能得出一个安全的结论。
很明显,根据所检查的系统和采取的方法,不同的法则通过不同的研究得到证实。 第5.2节提供了一些关于雷曼定律有效性的研究结果的比较概述,以及本文中关于PHP代码观察到的结果。
3.案例研究设计
这项研究的目的是研究是否在实践中证实了PHP Web应用程序中雷曼的软件进化定律。 为了实现这一目标,我们分析了来自30个不同规模和领域的PHP项目的数据。 在以下小节中,我们介绍了设计的四个部分。 即目标和研究问题,案例选择,使用过程和工具以及数据分析。
3.1目标和研究问题
本研究的目标是采用GoalQuestion-Metrics的形式化(GQM)方法[24]可以表述为:
分析用PHP编写的Web应用程序的后续版本为评估目的
关于它们的演变
从研究人员和软件开发人员的角度来看在雷曼法则的软件演化背景下。
根据这个目标,下面的研究问题可以制定,这将指导这项研究:
RQ:用PHP编写的Web应用程序的发展是否符合标准雷曼的进化规律?
研究问题然后分解成八个研究每个雷曼法则都有一个问题。
3.2案例选择
如前所述,我们的研究主要关注使用脚本语言PHP开发的Web应用程序。 选择Web应用程序的动机是PHP主要用于Web上下文中,特别是在广泛使用的LAMP平台(Linux-Apache-MySQL-PHP)中。 选择项目的标准是:
- 源代码应公开可用(如果项目分布在源代码存储库托管提供程序(如Github)上,代码可公开使用)。
- 项目应具有不同的规模和寿命,以获得具有代表性的样本(例如,我们选择了几乎相同数量的三个规模集群项目,即1-10 KLOC,10-50 KLOC和gt; 50 KLOC)
- 项目历史上至少应有5个版本来证明进化分析的正确性(这些信息由存储库提供
- 项项目应该是面向对象的,以便在类和方法级别进行分析(这一要求已通过使用所使用的工具对已识别类的数量进行计数来检查)。
这些项目的源代码已经从Github和Sourcefore中检索出来,因为它们收集了大量的项目和广泛的使用。 为这项研究选择的项目显然是满足上述标准的所有项目的一个子集。 我们研究中的大型项目,即项目Drupal,Wordpress,laravel,symfony,phpmyadmin和Zendframework,都是在与PHP开发人员讨论后指出它们的重要性和高质量的指示。 其余项目已通过浏览所有项目进行选择,按相关性排序并筛选出与上述标准不匹配的项目。 已经选择了30个项目来对结果进行人工调查,并对已确定的趋势进行视觉解释。
表3
审查项目概述
表3列出了这些项目,并概述了它们的功能,寿命,千行代码大小和分析版本数量。 应该指出的是,一些检查项目相对较小(如Nononsenseforum)而其他人则是拥有广大开发人员和用户社区的大型项目(例如WordPress)。
图1.(a)文件和(b)基于最新版本的已审项目的功能细分
根据定义,Web应用程序需要多种技术。 在第一级,Web应用程序在服务器端包含源代码(在受检项目中使用PHP编写)以及接管向客户端呈现网页的代码(用HTML,CSS,JavaScript等编写)。 除代码外,Web应用程序还包含代码库访问的其他资源(例如图像,字体,媒体文件等)。 应该提到的是,objectionientation是在PHP4版本中引入的,并且从版本PHP5开始得到完全支持。 但是,典型的PHP Web应用程序包含函数以及类(方法)。 为了提供这种内容类型分布的总体情况,图1给出了(a)文件和(b)被检查项目最新版本的功能和方法细目。 大约一半的文件是PHP文件,10个函数中有近9个是方法。
3.3 使用过程和工具
图2.用于分析PHP项目变化类型和频率的工作流程。
为了执行这项研究,已经开发了一个PHP工具,该工具能够解析多个项目发布的目录(作为单个压缩文件上传)并提取连续发布之间的更改。 相应实体(文件,类别,函数或方法)的位置来识别每个级别的添加,删除和移动,而为了识别变化,该工具检查同一实体的身体在两个 连续发布(删除空行和注释后)。 整个工作流程如图2所示。
一旦从分析的源代码和目录结构中提取信息(步骤1-4),将原始数据存储在MySQL数据库中。 开发的工具还会考虑每次考虑两次连续发布(步骤5)的数据库查询,并将更改存储在数据库中(步骤6)。最终,该工具以HTML格式显示结果(步骤7)。
此外,为了以量化的方式评估法律的有效性
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[22836],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。