我们看一下选择开源软件面临的挑战,开源软件在商业领域应用的越来越多。现在八大服务器在全球使用率是50%到60%,这个比微软IS高的多,大家一般来说基于BI的服务器,有微软IS,还有JAVA,还是HP,还有甲骨文,包括现在SUM公司,包括微软也参与进来了,把LINUX换了,换成WINDOWS,很多的东西还在用。
相对来说开源软件相应的优势:
首先,成本,较低的产品购买成本,大家都能够得到代码的情况,按照市场竞争规律,得不到好价钱,需要把其他的东西附加进去。
第二,有权使用源代码,由于源代码是开放的,被参与的程度大,因此成熟的开放源码项目甚至比同类的商业软件要更加安全。开源软件有一个理念,大家都来找错误,都来找BUG,有无数双眼睛都来找,但这也需要一个时间过程,从理论来讲,品质上是可以得到保证的。
第三,开放架构,开源软件通常是通过社区开发出来,开源软件通常设计为模块化的,模块化代码是可扩展的,并易于调试。
第四,品质,源代码和架构的透明使得管理良好的项目能够开发出成熟、高品质的产品。
大家有一个问题,开源软件是不是安全,我不这么认为,我认为开放的东西最安全,安全都是相对的,像微软IE的漏洞,黑客发现IE的漏洞不讲,满足在小范围利用。人们对开源代码的理解也不一样,可能我没发现问题,他发现了,但他道德不好,也会做和刚才一样不好的事情。
我们看一下选择开源软件面临的挑战。我们为什么要进行开源软件评估呢?就跟这个问题有关系了。
首先是选择,对于一些软件类别,选择几乎是无限的。
第二,支持,大多开源软件包没有得到专业支持。所有的开源社区协议里面都有一条就是不担保,商业软件和不担保是两回事,假如说我买了一个Oracle数据库,当机了,数据没了,Oracle是不赔的。
第三,寿命,由于大多开源项目没有得到商业公司的支持,未来的产品版本跟进就取决于社区的努力。
第四,速度,很多开源项目是以“早发布,频繁发布”这样的原则来牵引社区,这就造成了在开源世界中唯一持续的就是变化,很多开源软件的潜在用户根本来不及追随开源世界普遍存在的软件包快速更新的步伐。
第五,不成熟项目的低质代码,部分开发者缺乏完成一个完整产品所需的资源或必须的经验,一些新的项目通常都没有经过正式的软件工程或测试。刚才也提到了,测试在开源方面是不受重视的,这个是有问题的,因为也是受到规模和成本的限制,测试没有完成做出来。所以开源软件品质的有两个极端,一个是很高,一个很低,所以我们要有成熟度评估模型来评估开源软件。
下面讲一下开源成熟度评估模型,1979年McCall等人提出软件质量模型,用11个特性表征来形容。1991年发布的ISO9126标准从六个方面衡量软件的质量,功能性、可靠性、可用性、效率,可维护性,可移植性等,再加一个产品说明就可以成为一个测试案例。
我们国内也有8566、8567两个推荐性的标准。
卡内基梅隆大学以及CodeZoo、SpikeSource及英特尔公司等也提出了一个商业就绪分级。
在这个基础之上,我们2004年也提出来一个,也跟卡内基梅隆大学和英特尔公司交流过,我们提出了国内一个开源软件成熟度评估模型。
我们把质量、功能、可用性、安全、性能、可扩展性、体系结构等等都考虑了,还要考虑,软件比较时间,软件许可证类型,许可证不同对于后续的发展和应用有相当大的关系。当然我们可以关起门来,我们不用许可证,就奉行拿来主义,你直接这么做是没有问题的,但是对开源的发展,对授权来讲,也是不正确的。所以软件许可证也是受人关注的。还有软件发布周期,知识产权等。
在这里面我们有一个评估流程,我现在需要评估一个反垃圾邮件的系统,我们会去进行一个产品调查,我知道我目标有哪些,有一个初步的筛选,在这个基础上选取一些重要的质量属性圈权重,并确定不同的优先级。另外和相应的用户共同选定质量属性的权重,因为选择软件的时候,有的人觉得功能很重要,有的人觉得界面很重要,三个用户来选择一款编辑器,有可能是三个不同的结果,因为三个人对不同的产品和不同的软件关注度不一样。
文章来源于领测软件测试网 https://www.ltesting.net/