用云计算实例谈解决软件危机的FO方法_赵文银的博客专栏_艾瑞网普通作者_艾瑞网专家专栏

来源:百度文库 编辑:神马文学网 时间:2024/04/19 13:32:55

     

      一、云计算必须要面对和解决软件危机的问题

      如同盖楼房一样,当我们盖几层或十几层的楼房时,对楼房结构和公共设施等要求不会很高,有些问题还可以不考虑。但是如果盖几十层或者上百层楼房的时候,很多原来可以忽略的问题,就会变成必须要面对和解决的问题了。软件开发如同盖楼房一样,云计算属于盖魔天大楼。

      无论是政府、学界或是企业界,现在对云计算的关注度迅速增高,对云计算的应用怀有很大的期待。人们从不同的角度来分析定义云计算,并探讨云计算对人类未来的影响和云计算存在的问题。但是,当前很少有人谈及云计算面临的一个本质的问题——如何解决云计算带来的更加严重的软件危机。

      云计算是以应用为目的,通过互联网将必要的大量硬件和软件按照一定的结构体系连接起来,并随应用需求的变化不断调整结构体系建立的一个内耗最小,功效最大的虚拟资源服务中心。云计算将对人类社会产生重大影响:

      1、云计算将导致人们的思维方式发生重大改变。人们将学会站在整体的角度来处理问题,用和谐平衡的思想来处理系统里局部之间的关系。

      2、云计算将导致软件行业的最终消亡。随着云计算应用的发展,软件开发会如人们现在用提供的Word等工具编辑文字一样,用户将自己编制所需要的软件程序,为用户专业编程的软件行业会逐步消亡。

      3、云计算将促使全球资源迅速集中。各种资源通过技术手段按照市场规则将被分类集中,这种集中使得资源的使用效率达到最大化,同时资源的分配在有效监控下做到了尽可能的公平。

      在云计算里,大量的计算机组成了一个庞大的计算资源中心,大量的软件系统组成了一个庞大的云计算软件系统,而这些软件系统原来是孤立的分散在不同的计算中心里。当数百万或者数亿个功能集中到一个“云”里,而且它们之间有很多的关联关系的时候,软件危机带来的危害有可能让云计算系统无法正常运营,甚至会崩溃。因此,云计算必须要面对和解决软件危机的问题。

      北京乾坤化物数字技术有限公司开发的全国农村产品数据服务平台和果业数据服务平台是一个云计算实例。

      二、全国农村产品数据服务平台分析

      全国农村产品数据服务平台(http://sngy.cn.em258.com/)是一个巨复杂系统,每个功能系统都会涉及地名区域、产品分类、行业分类、政府部门、供销单位、产品所有人等等关联关系。而对于一个具体的产品,在其生命周期里会涉及到大量的服务系统。比如:苹果,从种植户准备种植开始,涉及到预计种植面积、果苗提供,农机服务、农资服务、产量统计、销售、质量检疫、物流运输、商贸服务、产品跟踪等多个软件功能系统。这些系统之间同时又相互关联;任何一个系统的数据的变化都有可能导致其它系统的变化。

      全国农村产品数据服务平台是一个“智慧”系统。以甘蔗种植为例,对于一个局部系统来说,比如某个县,甘蔗产量大面积减产,如果没有其它地区的产量平衡,那么系统会得到明年白糖产量会减少的分析结论。但是,如果另外一个县的甘蔗大丰收,由于在全局范围内达到了平衡,所以得到的最终分析结论是明年白糖产量会平稳。如果把这个思路拓展到全球金融体系,假如我们建立了全球金融云计算系统,那么这次全球性的国际金融危机或许就不会发生了,因为这个云计算系统会实时跟踪局部或者全球的金融状态变化。

      图一是全国农村产品数据服务平台和所属的果业数据服务平台。从图中可以看出,该“云”计算平台是由很多“子云”计算平台组成。比如该“云”平台中包含果业、蔬菜业、养猪业、药材、乳品业、养鱼业等。果业平台中又包含很多“子云”平台,比如果品产销服务,农资服务,物流服务等。

      从图一中可以看出云计算软件系统和传统的软件系统的最大不同点。传统软件从展示形式上只有第一层,即全国这一层。而云计算软件系统是一个由地名支撑的空间多层结构,是一个金字塔结构的软件架构体系。每个地名结构树的结点上有一个独立的和第一层一样的数据服务软件平台。

      图二是全国农村产品数据服务平台的地名结构树示意图。从图二可以看出,这是一个按照结构树方式进行管理定位的地名支撑的空间多层结构金字塔。地名结构树本身是采用遗传特征来建立关联关系和管理的。

       图一 按地名结构树管理的“云嵌套”系统

      在第一个“云”里,果业可以看成一个“质点”来进行处理,它分布在金字塔的所有结点上。但是进入果业“云”后,它本身又是按照地名金字塔方式分布的软件系统,而其构成部分“物流服务”被看成一个“质点”来处理。可见全国农村产品数据服务平台是一个由很多“子云”按照一定的关联关系嵌套起来的巨复杂“云”。

       图二 带遗传特征的地名结构树

      图三是果业云里的产销服务系统和物流服务系统。实际上这是一个SAAS软件服务“云”。这是一个更加复杂的“云”,其功能软件分布在由地名和分类构成的复合金字塔结点上。比如张三可以使用陕西鹿马村猕猴桃软件管理系统,李四可以使用湖南三家田村柑橘软件管理系统。这样设计目的是因为不同区域的产品种类是不同的,用户的需求也是不同的,他们只需要与自己相关的软件服务功能。

      分类也是采用带遗传特征结构树的方式来管理的,其形式和地名结构树一样,可以根据需要无限分层。

      产销系统是一个由多个应用服务系统组成的“云”,比如和果品产销相关的功能服务,包括生产服务,报价,销售,网点,管理等,而且在这个“云” 里,功能系统是可以根据需要动态增加或者减少的。

      “云”里的每个具体功能系统具有“进化”功能,即根据环境的变化,功能可以动态调整修改,以便适应环境的需要。

      图四里的连接线显示了各大不同功能系统之间的关联关系,果品销售系统里的销售地区和物流服务中货运服务系统里的货运目的地有关联关系,货运服务系统里的目的地又和车辆配载里的发货地地有关联关系。事实上,果业系统里的功能模块之间存在着复杂的关联关系,相互产生影响。

      从以上的分析可以看出,“云计算果业数据服务平台(http://sngy.cn.em258.com/)”是一个非常复杂的系统,目前有近 200个功能系统,比如果业生产销售、农资服务、物流服务等。如果采用传统的软件开发方法,完成近200个系统至少需要几十万行程序代码,并且很难处理软件系统的复杂结构关系,软件危机隐患会很严重。

      但是由于该平台的开发采用了FO软件开发方法,因此完成近200个系统目前只使用了几百行程序代码。

      三、FO软件开发方法是如何解决软件危机的

      1、关于软件危机

      软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

      (1)软件危机的外在表现

      上世纪80年代以来,软件工程研究与实践取得了可喜的成就,软件技术水平有了长足的进展,但是软件工程所取的一些新技术和新方发,也因运营模式和经济利益等原因未被广泛推广和开源应用,软件生产水平依然远远落后于硬件生产水平的发展速度。软件危机不仅没有消失,而且还有了加剧之势。主要表现为:① 软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升。② 软件开发效率的提高速度远远跟不上信息化发展的需要,软件开发的严重滞后不能充分利用现代计算机硬件所提供的增长潜力。

      云计算将引发一种新的危机——数量增长危机,即无限增长的云计算组成成员间的有效连接以及无限增长数据的快速管理。这两种无限多的量将会使软件面临新的深层次危机。

      (2)软件危机的内在根源

      最早的软件因为比较简单,代码也比较少,还不存在危机。随着计算机技术的发展,数据处理能力的不断提高,计算机的应用不断得到扩大,软件开发的工作量和难度随之增加,软件代码量愈来愈多……,软件危机也就产生和加重了。

       图三 果业云里的产销服务和物流服务系统

       图四 功能模块之间的关联

      目前99%的软件应用需求已不再是定义良好的数值计算问题,而是难以精确描述且富于变化的非数值型应用问题。因此,当人们的应用需求变化发展的时候,往往要求通过改变软件来使计算机系统满足新的需求,以便维护用户业务的延续性。

      在全国农村产品数据服务平台里,货运服务不是一个简单的数值计算问题,而是一个应用分析问题。比如陕西周至县某天发出多少量车,其目的地是那里,而在某一天,预计湖南永顺县有多少量车到达等等。而且这样的需求将会随着时间的变化有可能发生重大的调整。

      软件的本质就是把用户的应用需求采用一种程序语言通过计算机实现的对应逻辑映射。按照这个定义,软件如同是一种翻译,把一种文字的作品翻译成另外一种文字的作品。同样的原著,不同的翻译者,翻译后的作品是有差别的。比如郑振铎翻译泰戈尔的《飞鸟集》,和冰心翻译的《飞鸟集》就有差别。这种差别主要来自于他们的个性化的思维。

      程序员逻辑思维的差异导致了程序结构的差异,即便是同一个程序员,在不同的时间里,其思维的改变也会导致程序的差异。比如1000个软件工程师来完成一个项目,在同一时间,可能会产生1000种不同思维的产品。如果考虑同一个人在不同时间的思维的变化,其结果可能是无法预计的。这种不确定的作品的表现形式是程序代码的序列不同。也就是说,我们无法得到一个事先就可以确定的程序代码序列,代码的最终序列要由程序员的临场决定。

      另一方面,用户需求通常是很复杂,而且这种复杂度是不可能做任何简化。对于一个由很多维构成的复杂系统,我们很难通过图形展示方式来描述它们的结构。这种复杂度在刚开始的时候,我们并不太了解,只有在完成了一定的工作或者在系统正式运行后,才发现一些内含的复杂结构,并需要必须处理这些结构。由此可见,软件危机的内在根源就是软件开发本身缺乏标准和规范,以及因需要处理复杂系统所编制的杂乱又庞大的代码。

      2、FO是如何解决软件危机难题的

      从软件危机的本质原因可以看出,如果采用现有的传统软件开发方法,是无法解决云计算带来的软件危机。因为,传统的方法不能解决软件复杂度的难题,也不能把程序代码控制在有限的数量范围内。FO方法可以从根本上解决这两个难题。

      (1)关于FO软件开发方法

      FO软件开发方法是一种把哲学方法和软件编程技术相结合的软件开发方法。它是在面向对象的基础上做进一步抽象的方法。

      FO方法包含三部分内容,面向事实的分析(Fact-Oriented Analysis)、面向结构的设计(-Oriented Design)、面向形式的编程(Form-Oriented Programming) 的软件开发方法。

      (a) 面向事实的分析是一个哲学处理方法,它是采用哲学方法对用户提出的需求模型进行分析,形成和现实模型对应的逻辑模型。这个逻辑模型包含结构和对象两部分。而对象部分又分为形式(内部特性)和配置(外部特性)两部分。

      以农村数据服务平台为例,来说明分析的过程。

      首先把现实需求模型当成一个整体,然后把它分解成几个组成部分。比如农村数据服务平台包含果业、蔬菜、药材、养猪等很多业务部分,这些业务通过地名关联方式延伸到不同的地区。然后对果业系统进行分解,该系统包含果品产销、农机服务、物流服务等,这些服务通过地名关联方式延伸到不同的地区,同时通过分类关联关系延伸到不同的类型,比如果品产销里面的猕猴桃销售、柑橘销售等。通过这种方式,一步一步的细分,一直分解到对象,对象是最简单的。

      其次,这些分析采用命题形式表达出来就得到一个逻辑模型,这个模型是现实模型的影象。逻辑模型的对象和连接方式由现实模型决定。

      第三,将对象分为内部特性和外部特性两部分,内部特性是对象的本质特性,是固定不变的,称为形式;外部特性是非本质的表现特性,是可以变化的,比如颜色、形状、空间等,称为配置。

      形式是无色的(没有具体的含义),相同形式的对象所以有区别是因为其配置的不同。

      第四,制定一个“规定”,依据这个规定,配置由一系列的符号构成。

      第五,形式只关心符号本身,而不关心符号所代表的具体含义。如果一个符号在不同的场景有不同的含义,那也只是其对象不同。但是对于形式来说,处理的是同一个符号,没有区别。

      第六,采用群的方式对逻辑模型里的构成部分进行重新归类,这样就很清楚的知道该模型里包含了多少类同构群。按照群的特征,如果是同构,则只需要处理一个就可以了,其余的可以利用同构性直接获得。比如一个信息管理网站,尽管有科技信息发布管理,社会信息发布管理,汽车信息发布管理,但它们属于同构群,因此只需要处理一个就可以了,其余的通过同构性特性处理就可以得到。比如一个包含几百个功能模块的大型内容管理门户网站,只需要程序员开发几个功能系统就可以了,其余的采用同构性得到,这样就大大减少了软件开发和维护的工作量。

      (b) 面向结构的设计是对逻辑模型里的结构部分进行处理,先采用哲学方法对结构进行分解,使一个复杂的空间结构变成一系列简单的维的组合。比如地名维,分类维,栏目维,工作维,工作部门维等。然后采用技术的方法来实现这些维,比如地名维是一个包含多个带有遗传特征的结点代码元素的集合。

      在真正做好了系统分析工作之后,进行设计就相对比较轻松了。在进行系统分析时,已经整理出了对象的连接方式,即结构。这个连接方式不是单一的线性方式,是一个多维的空间连接方式。同时每个维也不一定是线性的,更多的是非线性的。在“农村数据服务平台”中,有地名维,行业分类维,栏目表现维,产品质量状态维,组织机构维等,地名维是一个树状结构,产品质量状态是线性结构。

      利用软件架构体系搭建工具,建立一个多维空间结构模型,对象位于空间的结点上。对象之间是通过空间结构模型来建立联系的。结构模型的搭建和对象的设计是彼此独立进行的,也就是说,它们各自的修改不会相互影响,比如修改了结构不会改变对象的功能,反之亦然,但是会对系统产生影响。

      维是采用代码形式实现的,结点代码确定了一个唯一的空间位置。

      (c) 面向形式的编程是一个简单技术实现过程。形式部分采用程序代码来实现,由程序员把逻辑模型里的对象形式描述语言翻译成为计算机程序语言。配置部分采用文本描述方式来实现,可以由行业专家来完成。

      对形式的编码是对简单功能的编码。如果该对象的形式具有复合功能,那么该对象是一个事实,需要再进行分解,因为对象必定是简单的。对形式的编码实际上得到的是一个无色(即无具体指向)的功能程序,该程序通过配置得到一个具体的对象。

      配置是对象外部特征的描述。一旦给出了具体的描述,就意味着建立了一种“规定”。不同的人有不同的描述方式。描述只关心符号而不关心符号所代表的含义。

      配置和形式有本质的区别,配置属于哲学命题,是可以采用不同的方式描述,即可以有不同的规定。形式是客观存在的,是固定的,也就是说尽管不同的程序员的思想存在差异,但是编写的程序是一样的,当然由于思维方式的不同,代码的多少会存在差异。

      同一个功能程序(形式)和不同的配置结合,就得到了不同的对象。如果一个功能程序(形式)的程序代码为500行,和来自不同行业的1000个不同的配置描述结合,就得到了1000个不同的软件系统。由于软件危机是由程序代码引发的,因此在这1000个软件系统里,由于只有500行代码,因此基本上可以认为软件危机已经被解决。而1000个软件系统的配置描述,尽管数据量很大,但是它们不会引发软件危机。这些数据就是软件系统的“基因”,决定着软件的多样性。

      微软操作系统中庞大的程序代码里隐藏做无数的漏洞,这些漏洞让操作系统变得很不安全。如果采用FO方法把操作系统的程序代码控制在有限的数量范围内,比如10万行代码,而其功能的多样性通过“基因”方式来实现,那么隐藏在程序里面的漏洞将基本上不会存在。最简单的办法就是组织100个程序员,每人负责1000行代码,他们的工作只有一件事,就是每天寻找这1000行代码里存在的问题。

      (2)FO方法是如何解决软件危机的

      目前,在全国农村产品数据服务平台的果业系统提供近200个功能,涉及果品生产销售、农机服务、农资服务、物流服务等。该软件体系要求每个村有自己的独立系统,即按照现行的行政管理方式建立云计算平台里的管理模式,分中国、省、市、县、乡镇、村、用户七级行政辖区管理,比如乡镇系统管理该乡镇辖区的相关系统。产品或者服务同时将按照不同的分类来进行管理。对于一个具体的产品,会涉及到相关的政府部门,比如食品安全,质量检疫,运输管理部门,农科站等。

      可见,果业系统的复杂度很高而且规模比较大,是不能采用建模方法(比如UML)来简化复杂度,去掉其中某些部分。

      FO方法首先按照哲学方法对用户需求模型进行分析,并形成逻辑模型,逻辑模型是现实需求模型的映射,逻辑模型由两部分构成,连接形式和对象。

      然后把连接形式按照类型的不同进行分解,每一类表示一个维,这样就得到了一个由多维构成的复杂空间架构。对象位于架构的结点上。在果业数据服务平台里,有树状结构的地名维,不同的产品分类维,栏目维,产品状态维等。

      最后把对象进行处理,对象的内部特性即形式通过程序代码来实现,而对象的外部特性通过文本描述的方式来实现。

      通过FO方法,仅使用几百行程序代码便实现了全国农村产品数据服务平台所属的果业数据服务平台近200个功能系统的目的。这几百行代码是对象的内部特性。事实上,很多对象的内部特性是一样的,对象的差异由外部特性即配置决定,比如形状、颜色、空间等。

      北京乾坤化物数字技术有限公司研发和使用FO方法简便有效地解决了软件开发费用和进度失控、软件的可靠性差、生产出来的软件难以维护等软件危机的早先主要问题。

      同时,北京乾坤化物数字技术有限公司还使用自主知识产权的乾坤树,解决了云计算所需无限多成员间的有效连接以及无限增长数据的快速管理引发的新的软件深层次危机。

      乾坤树是从北京乾坤化物数字技术有限公司发现的整数树特性基础上的定义的一种新数据结构。乾坤树是带遗传基因的可无限增长的树。以计算方式将数据快速按规则在乾坤树对应的结点上进行存取。使用乾坤树时在几百个数据与无限多数据中查询某一存储的数据,所需时间及乎一样。因乾坤树的技术不属于FO方发,在此不多介绍。

      四、FO方法对未来IT技术产生革命性的影响

      FO软件开发方法基于一个基本假定,而这个假定是通过观察而总结归纳出来的,即:任何一个复杂的连接形式都可以采用维的形式来处理;很多的对象的内部特性即形式是相同的,之所以是不同的对象,是因为它们的外部特性不同。

      在这个基本假定正确的前提下,FO方法将对未来IT技术产生革命性的影响。

      1、任意庞大功能的软件系统,其程序代码都可以控制在有限的范围内,比如1万行或者10万行程序代码。

      2、任意复杂的软件架构都可以转换为多个简单维的组合。

      3、对象的形式是有限的,也就是说,随着应用的增加,需要编程的形式会越来越少。通过开源方式,这些有限的程序会越来越优化。人们的主要工作转移到对对象外部特性的描述配置上,软件的生产效率会得到极大的提高。

      4、用户可以通过调整软件架构的组成维或者调整对象的配置来调整软件的功能,而这个过程是可以在运行中动态完成的。

      五、结论

      由于FO软件开发方法解决了云计算带来的软件危机难题,因此会进一步加快云计算应用的步伐。

     


用云计算实例谈解决软件危机的FO方法_赵文银的博客专栏_艾瑞网普通作者_艾瑞网专家专栏 用云计算实例谈解决软件危机的FO方法_赵文银的博客专栏_艾瑞网普通作者_艾瑞网专家专栏 江礼坤:如何通过互联网打造个人品牌_江礼坤的博客专栏_艾瑞网普通作者_艾瑞网专家专栏 传统品牌做B2C,绝不是革现有渠道的命!_庄帅的博客专栏_艾瑞网普通作者_艾瑞网专家专栏 国内比较购物大行其道细数行业细分便民之路_吴基俊的博客专栏_艾瑞网普通作者_艾瑞网专家专栏 浅谈传统企业开通电子商务网的几大内部壁垒(一)_聂风的博客专栏_艾瑞网普通作者_艾瑞网专家... 旅游如何做网络营销?_熊大寻的博客专栏_艾瑞网专家_艾瑞网专家专栏 先做大流量还是先探索盈利模式_刘兴亮的博客专栏_艾瑞网专家_艾瑞网专家专栏 奢侈品暗战互联网_司新颖的博客专栏_艾瑞网专家_艾瑞网专家专栏 嫉妒美国人用Gmail免费打电话?_陈永东的博客专栏_艾瑞网专栏 博客营销之寻找素材的九个途径_毛从任的博客专栏_艾瑞网专栏 软件设计_接口_中间层 - hongjiqin的专栏 - CSDN博客 社交媒体参与度的优化和投资回报率_Harry?Gold的博客专栏_艾瑞网专栏 粮贩贾四_《华夏时报》专栏_媒体专栏_财华网 3D多媒体_视频视频专栏_软件资讯_太平洋电脑网软件资讯频道. 搜索引擎八年后的机会(上)_普通__专家视点_eNet商用软件频道 公车改革的启示_专栏_经济观察网_2008-03-17_孙立平 一位革命者的反思_专栏_经济观察网_2009-09-30_雷颐 走向黑暗的改革_专栏_经济观察网_2010-11-15_贺绍奇 男左女右专栏之十六:旧情人的故事_红了绿了的博客_红了绿了 男左女右专栏之十六:旧情人的故事_红了绿了的博客_红了绿了 从“民工潮”到“民工荒”的反思-董登新个人专栏 _ 董登新 _ 中金博客 项兵:中国的三代企业家_名家专栏 ASP.NET2.0_缓存 - 唐太宗的专栏 - CSDNBlog