wqx的个人博客分享 http://blog.sciencenet.cn/u/wqx

博文

换只眼睛去看“云”

已有 4436 次阅读 2010-10-22 08:43 |个人分类:未分类|系统分类:科研笔记| 云计算, 软件工程

       

         这里的“云”是指“云计算”中的“云”,是近年来 IT 领域最火爆的两个名词之一(另一个是物联网)。

        云计算的好处大家说得多了:用户不用在自己的计算机上安装软件(这个过程有时非常费时、麻烦);按照使用情况付费,初期投入少(这对于许多中小企业用户非常重要);系统升级方便;等等。当然,也有人不断提醒云计算面临的问题:数据安全性、个人隐私、网络带宽、等等。

        云计算的上面这些特点多数是从用户角度进行考虑得到的。实际上,从云服务的提供者、运营者(二者可能是分离的)角度仔细分析,会发现许多新的有趣机会。尤其是运营者角度,由于掌握着大量的数据,从中可以分析、获取许多有价值的信息。其中,用户行为的分析尤其值得关注。阿里巴巴声称“2008年初,我们突然发现整个询盘数急剧下滑,欧美对中国采购在下滑。”“在2008年7月21日,奥运会前两个礼拜我们写了一封信,告诉企业界冬天来了,请所有企业做好准备。”阿里巴巴因此随后成立了与“淘宝”、“支付宝”并列的“阿里云”。

        下面我从软件工程研究的视角做个分析。云计算的核心是各类服务,而这些服务绝大多数由软件进行支持。

        软件工程研究人员的任务是不断寻找更好的软件开发与维护方法。所谓好的方法,粗略地说,应该能够“较低的成本”、“较少的时间”开发出“高质量的软件”。但长期以来,不同软件方法的比较非常困难。软件工程是1968年在 NATO 的一个会议上被正式提出的。2008年,软件工程的顶级会议上,当年 NATO 会议的重要参与人员Brian Randell 回顾了40年的发展,提出了软件工程发展的一些问题。其中一条就是软件开发方法的杂乱:目前有8000多种编程语言,而各种各样的开发方法、开发平台、开发框架、标准则更多!为什么有这么多方法?就是方法之间的比较困难,缺少数据说话,互相不能说服,缺乏共识。

        我个人分析,造成这种局面的原因有如下几方面:

        1)评估一个软件开发方法的实验数据获取困难。尤其是涉及“软件过程”、“软件设计”与“软件需求获取”的方法,获取验证的数据比较困难。相比之下,传统的“软件测试”以及近年来的“代码分析”获取数据则相对容易些。       

        2)软件开发涉及人的因素太多。这给评估的客观性造成了很大的困难:同样一个方法,让不同的开发人员去试验,效果差异会很大。当然,有一些消除这类因素的实验方法,但应用起来成本很高。             

        3)软件开发的特殊性。我近期的个人理解:软件开发实际上相当于传统行业(例如 制造) 的设计环节,其中的不确定性非常大。而对于传统行业的设计环节,不同设计方法的评估一样的不容易。       

        4)软件的应用领域过于广泛。不同的开发方法本来适用于不同的应用领域,它们之间的对比自然十分困难。这个已经不太像个原因了。

        云计算出现后,大量的软件运行在集中的服务器上。如果能继续延伸一下:在开发阶段,用户也是通过浏览器操作服务器上进行的,那就给获取软件生命周期的各种数据带来了很大的方便。

        1)获取软件制品。目前已经有许多开源代码库(CVS, SVN等)、项目跟踪系统(Bugzlla, Issue Tracker System),并已经有许多工作(Mining Software Repository)研究分析如下问题:共性的缺陷模式、缺陷是如何引入、消除的?软件是如何演化的?等等。近年来软件工程顶级会议上的许多文章与之相关。

        2)获取软件运行状况信息。在云计算模式下,完全可以将用户看作是一类特殊的测试人员,用户使用一次,就相当于帮助测试一次。在传统分发方式下,这类测试的结果获取困难。许多人在所用软件的软件出现错误时,都遇到过类似于“是否将出错信息发给生产商?”这样的信息。这就是生产商在收集特殊的测试数据,以便于找出软件中存在的缺陷。云计算模式中这类结果的获取就方便多了:软件本来就运行在服务的运营商那里。有了这些数据,分析出错根源就方便多了。

        3)获取用户的行为。类似地,传统方式获取用户的行为非常困难。微软曾经发去过”用户体验活动“,以获取这类数据。当软件工具部署在云中时,获取这些数据也十分方便,有了这些数据,开发者就可以知道一些重要信息:用户一般如何使用软件?哪些功能最受用户欢迎?这对于后续版本的演化是非常重要的。

        4)获取开发人员的行为。目前已经有一些研究分析这类数据(包括 SVN 中的信息),但检查点过粗,可能一天只有一两条数据。如果能够通过”云编程“的方式(例如利用 webIDE 开发),获取细粒度的行为信息,就可以将开发者的主观行为客观地记录下来。这对于了解不同类型用户的开发模式、不同开发方法的对比是非常有价值的。

        如果有这么多数据在手的话,应该可以很好地缓解上述“不同软件方法的比较非常困难”的局面。

 

 



https://blog.sciencenet.cn/blog-70859-375770.html

上一篇:软件研究成果交流新载体的探索
下一篇:立春的日子说春晚的《春天里》
收藏 IP: .*| 热度|

2 李兵 唐常杰

发表评论 评论 (3 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 12:00

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部