众所周知,软件总是存在缺陷的。问题是,有多少人针对软件质量做系统性的研究和分析呢?比如说,到底谁的问题最大,是大众追捧的Java,还是奋力直追的C、C++,抑或久经沙场的Cobol?最近,一份可靠的调查为我们揭开了谜底。该调查组从 745个抽样应用程序的分析中得出结论,目前世界上有许多软件存在一些潜在的缺陷,在某种程度上为企业和机构带来了一定的风险。
何谓技术债(Technical Debt)
所谓“债”指的是债务,不管什么类型的债,总归不是什么好事。科技债也一样,像这样一类为程序构造设计、编码带来风险的程序被冠名为“技术债”(Technical Debt),Technical Debt指的是由于软件架构设计的致命缺陷造成了严重的灾难,因其严重性也一直受到越来越多的关注。
电影《无间道》的一句经典台词“出来混,迟早要还的”。对于70年代的计算机程序的开发专家来讲,他们是怎么也没有想到这些计算机程序那么有生命力,居然能活到21世纪。而由此带来的是叱咤风云的“千年虫问题”。
因此,说起“技术债”(Technical Debt),就不得不谈到一个石破惊天的血案“千年虫”。计算机2000年问题,又叫做"2000年病毒"、"千年虫"、或"千年病毒".缩写为"Y2K".是指在某些使用了计算机程序的智能系统(包括计算机系统、自动控制芯片等)中,由于其中的年份只使用两位十进制数来表示,因此当系统进行(或涉及到)跨世纪的日期处理运算时(如多个日期之间的计算或比较等),就会出现错误的结果,进而引发各种各样的系统功 能紊乱甚至崩溃。
软件质量评估不容小觑
无论是由于业务决策的失误还是编程能力的欠缺,那些性能糟糕的代码都可能导致电脑系统崩溃、安全漏洞、性能衰弱、或者数据损坏等。而且,代码修复本身又是一件耗费成本、花费技术精力的差事。因此软件质量评估不容小觑。
通常,我们在软件的测试与评估时,主要侧重于功能特征、可靠特征、易用特征和效率特征等几个方面。在评价活动的具体实施中,应该把被评估软件的研制任务书作为主要依据。
Cast Software是一款软件质量评估工具,专用于评估软件工程架构的稳健性和应用程序的编码质量,它系统分析了745个应用程序,总共涵盖365万行代码。上周四发布了一份分析结果的详细报告指出,Cast分析了来自将近12个行业中的160个国家的应用程序。该分析结果包含了1800多种应用程序开发中的违规类型。这些应用程序是用多种编程语言编写而成,包括Java EE, Cobol, .Net, C, C++ 等等。根据每小时修复违规代码的开销为$75的标准来统计的结果表明,平均修复每行Technical Debt代码需要花费$3.61。
软件质量评估:Cobol荣获最佳选择 Java App问题最多
COBOL是一种面向数据处理的、面向文件的、面向过程(POL)的高级编程语言。最早的高级编程语言之一,是世界上第一个广泛使用的高级编程语言,也是数据处理领域最为广泛的程序设计语言。经过40多年的不断修改、丰富完善和标准化,COBOL已发展为多种版本的庞大语言 COBOL程序,在财会工作、统计报表、计划编制、情报检索、人事管理等数据管理及商业数据处理领域,都有着广泛的应用。
COBOL的重要性可以用这句话来描述:世界上70%的数据都是用COBOL语言处理的,并且90%的ATM事务处理用的都是COBOL语言。每天在线处理的COBOL事务有300亿次。500强中有492家(包括全部的100强)使用了COBOL语言,目前在COBOL方面的投资已经超过3万亿美元,,据称用COBOL书写的程序超过了1000亿行,并且以每年大约50亿行代码的速度在增长。
Java EE(Java Platform,Enterprise Edition)是sun公司推出的企业级应用程序版本。这个版本以前称为 J2EE。能够为我们帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。
从编程语言的角度上看,Java EE造成的损失最坏,每行代码花费高达$5.42,而Cobol则前景最好,每行代码费用低至$1.26。
Cast的首席科学家Bill Curtis表示,他相信Cobol是最佳选择,因为Cobol的编程代码更为完善。在岁月的变更中,程序员“摸爬滚打三十年了”,早就修复了一些致命性的缺陷。
至于Java,Curtis表示,“目前有很多人跟风挤进Java领域,但是并不具备坚实的计算科学背景。”我们不难想象这样一个让人惊悚的实现,有很多人在编写代码,但是他们对软件工程却并不内行。
各公司纷纷热炒“技术债”
技术债务(Technical Debt)一直是个老生常谈的话题。“但是这个形象的比喻更容易被研究者接受,因为他们觉得Technical Debt真实地描述了他们工作的方式,而且与它们的工作息息相关”。
Cast的研究成果也越发受到IT企业的重视,特别体现在Technical Debt的理解上。国家科学基金项目的调查员,Maryland大学信息系统部的教授Carolyn Seaman表示,有越来越多的人开始关注Technical Debt,因为这个形象的比喻和大家已经产生了共鸣。Seaman还表示,提高软件质量的一大障碍是不太明确什么样的开发策略和开发方法可以提高软件的质量。
去年,Gartner呼应了这个主题,将这个术语定义为“IT Debt”。IT研究公司将世界范围的IT研究维护费用从2010年的500亿美元调升至一万亿美元。
在将注意力转移到Technical Debt上时,这会导致开发人员偷工减料。有时候,适当的偷工减料是必要的,但是忽略事实却是不可容忍的。
这两年以来,有越来越多的人开始关注Technical Debt。目前只有少量的代码来说明Technical Debt,在如何偿还Technical Debt、以及何时偿还、如何根据Technical Debt来改变需求方面还缺乏相应的指南。