“小型团队开发的软件结构性质量更高,而20人或以上规模的团队开发出的软件则不然。”-全球软件质量分析与检测领域的领军企业cast在其最新发布的《2017年应用软件健康度研究报告(2017crashreport)》中如是说。
《2017年应用软件健康度研究报告》是cast下属的cast研究实验室(castresearchlabs)就全球商业应用软件的结构性质量以及全球趋势发布的第四份年度报告。castresearchlabs的负责人、cast高级副总裁与首席科学家billcurtis博士表示:“这份报告是根据cast对多层级、多种编程语言的商业软件分析得出的匿名数据,围绕软件的牢固性(robustness)、安全性(security)、性能效率(performanceefficiency)、可变更性(changeability)与可移植性(transferability)这五个维度对软件质量进行的全面研究。”
cast的研究人员对8个国家,329家商业机构,1850个软件,总计10.3亿行的海量代码进行分析后发现,使用javaee编写的软件拥有最高的质量,而使用cobol编写的软件则质量最差。由于cobol在金融与保险行业的使用最为普遍,这些行业的应用软件健康度也是最低的。“当看到这个结果后,我立刻把存款从银行取了出来,放在了我的床底下,因为那里更安全。”billcurtis博士笑称。
另一个衡量软件结构性质量的关键因素是企业的cmmi等级,cmmilevel1的企业在软件的结构性质量上表现最差。报告指出,cmmilevel1的软件开发者往往被不切实际的交付日程表追赶,导致他们没有时间去跟踪并修复软件的bug,使得软件质量大打折扣。研究同时发现,企业的cmmi等级越高,他们的软件质量也会相应得到提升。
借助敏捷开发(agile)搭建软件架构也被证实是保证较高的软件结构性质量的一种手段。billcurtis博士建议:“软件的设计与架构应该更多采取sprintzero的方式,即在开发前期花更多的时间了解软件的设计与架构,从而保证后期不走弯路。”
软件质量检测工具的自动化程度与团队间的沟通也很大程度上决定了软件的结构性质量好坏。关于这一方面,billcurtis博士说:“目前的一些商业应用软件,其复杂程度已经超越了任何团队能够全部加以理解的范畴。比方说,一款软件可能由5到6种不同语言编写,拥有多个数据库与crm系统,而其中的互相联系错综复杂。如果仅凭直觉,团队往往会妄下错误的结论。”他同时认为,使用先进的工具进行回归测试、静态分析与动态模拟是十分有必要的:“与以往不同,人们只有通过相应的工具才能驾驭日益复杂的信息系统。”
软件开发者还应该关注那些难以对付的代码,以及造成这些问题代码的原因。这样一来,软件维护自然就不成问题,对软件的改动也不会对软件产生灾难性的影响。“一些问题代码也许平时只是躺在那里,开发者对于它们也无能为力。但也许一次软件更新就能触发这些问题代码。”所以说,导致问题的通常不是软件更新本身,而是更新所带来的‘副作用’。
it成本同样也是一个不小的问题,大型企业由于欠佳的软件质量,甚至会花费上亿的it成本,而这些成本往往是不必要的。面对如此庞大的it成本,头疼的不止是企业的cio,而更多是ceo了。
billcurtis博士在全球领先的软件质量分析与检测工具软件公司cast担任高级副总裁、首席科学家以及cast研究实验室的负责人。他同时也是cmm(能力成熟度模型)的创立者,曾先后在美国卡内基梅隆大学软件工程研究所(sei)与美国it软件质量联盟(cisq)担任重要职位。在billcurtis博士的带领下,cisq开展了软件计量与软件代码结构性质量特征的国际标准制定。
相关新闻
2016-03-09
2016-05-23
2016-09-01
2017-04-21
2017-07-18