应IT168写的专稿:
http://publish.itpub.net/m/2007-12-23/200712231855642.shtml
软件体系结构标准成熟度的思考
软件的体系结构标准是对系统或软件的构造方式的描述。当组织在开发软件应用系统时,体系结构的标准化很好的定义了开发过程当中的目标产品、开发模式、开发实践过程等相关内容。而在本文中,读者可以看到,软件体系结构标准能很巧妙的加速软件开发过程,使软件产品交付使用周期缩短,同时可以降低软件开发的成本。
一、 软件体系结构标准
尽管对一个IT公司来说,我们承认制定了软件体系结构标准确实是软件成熟度的体现,但是,一个构思很差或很不成熟的标准体系,比没有软件体系结构标准,会由于项目的风险而变得更加的糟糕。而真正的软件体系结构标准应该由成熟度特征、标准定义及模型分类等内容来进行体现,因此软件体系结构标准是随着技术的发展而发展的课题。
乘过飞机的人都知道,航空服务的流程是十分清晰的:从定票、机场登记、行李托运、登机安检到登机、安全注意事项、机上餐饮和娱乐服务再到下飞机离开,任何环节都是极其规范和标准的,无论哪家航空公司(国外或国内),在流程的一致性上几乎没有差异,显然,在这里服务流程的标准化是高质量服务的基础。可以设想,如果不同的航空公司服务流程不相同,将给顾客带来怎样的麻烦。
为什么要积极推行软件工程标准化工作,其道理是显而易见的。仅就一个软件开发项目来说,有多个层次、不同分工的人员相配合,在开发项目的各个部分以及各开发阶段之间也都存在着 许多联系和衔接问题。如何把这些错综复杂的关系协调好,需要有一系列统一的约束和规定。在软件开发项目取得阶段成果或最后完成时,需要进行阶段评审和验收测试。投入运行的软件,其维 护工作中遇到的问题又与开发工作有着密切的关系。软件的管理工作则渗透到软件生存期的每一个环节。所有这些都要求提供统一的行动规范和衡量准则,使得各种工作都能有章可循。
软件工程的标准化会给软件工作带来许多好处,比如:提高软件的可靠性、可维护性和可移植性(这表明软件工程标准化可提高软件产品的质量)提高软件的生产率提高软件人员的技术水平提高软件人员之间的通信效率,减少差错和误解有利于软件管理有利于降低软件产品的成本和运行维护成本有利于缩短软件开发周期。
二、 软件体系结构标准的优势
软件体系结构标准定义了一系列的软件开发边界,而开源软件或软件提供商正是应用这些软件边界来进行软件的开发。例如,我们日常软件开发中所用到的应用服务器、Ajax工具包、数据库或Web服务等等。此外,软件体系结构标准还定义了其它一系列的软件开发边界,而这些软件开发边界主要应用于体系模式或是具体的业务问题的解决,例如B2B(电子商务,Business to business)、商业智能系统等等。同时,这类软件边界还可以用于构建软件的体系基线,如在RUP(Rational Unified Process,统一过程)或是XP(Extreme programming,极限编程)中所应用的那样。
由于这种软件边界的存在,所以很多软件开发者或是系统架构师经常感觉到自己的创造能力受到了限制。那这种软件边界所带的好处或优势到底何在呢?通过软件边界的定义,就可以使已经解决的问题不在考虑的范围之内了。从而简化了很多问题。相反,开发人员的创造能力不但不会受到限制,反而可以集中精力于解决另外的业务问题。
在项目管理中,始终都非常关注交付成果(Deliverable)。完成全部交付成果,就意味着覆盖了全部的项目范围,所有的项目活动、项目资源,都是为了有效完成这些交付成果而发生的,交付成果在很大程度上反映了项目目标的要求。通过软件体系标准的建立,可以加速项目交付使用。。例如,对某一个项目所采用的软件体系标准的严格化制定,可以将此标准广泛的应用到类似的项目中去,可以节省类似项目的前期人力与时间投入。而组织的编辑规范可以明显的加速软件的交付使用过程。
三、 标准成熟特征
当然,并非所有的软件体系结构标准都可以加速软件产品的交付使用周期或是降低产品的开发费用。一套成熟与实用的标准有它自己的明显特征。
项目专家的建议与意见
软件体系结构标准的第一个特征,就是本标准是否已经得到了组织的IT项目专家的一致讨论与通过,并就相关的内容进行修改与重新制定。只有经过IT项目专家组的一致认可的标准,才可有可能成软件体系结构标准。例如,著名的De facto标准(De facto standard,有译实质标准、业界标准或非官方标准,是指一套技术上或其他方面的规格/标准,而该套规格/标准属于主流而且每个人都习惯依据为法定标准般跟随),可以从已经实现的项目中获得实惠的经验。而通过IT项目专家讨论一致通过的标准则可以应用于组织的其它项目中。
参考模型与实现
通过参考模型及建立的相关成文的文档,可以比较成功的解决产品或项目开发过程的一些实质业务问题。而参考实现由于是对参考模型的具体化,从而可以更加明确的改善项目的开发过程。所以,参考模型与参考实现都将会显著的加速体软件系结构的制定与建设。
支持度模型
支持度模型需要合理的在项目或产品开发过程使用。这通常包括开发、测试及产品环境的平衡等内容。在整个开发环境中,系统应用团队的角色及责任需要很明确的定义。而标准的制定及可操作性支持度模型的确定,通过是一个成熟标准的主要体现。
规划支持
规划支持主要通过采用特殊产品、配置的项目环境、模式等工具,来保证项目的正确实施,尽可能的避免项目失败。
产品实现
产品实现是评估标准成熟度的重要的指标。
而对于缺少如下的一些特征的项目,通过会产生一些项目风险:
没有经过项目专家就评估的标准,通常会以失败或部分的失败而告终;
没有参考模型和参考实现,标准将不能正确的被执行,同时可能增加软件开发的成本;
没有清晰的支持度模型,将会使软件开发人员的角色及责任重复或不清晰;
没有规划支持,则过往项目的经验不充分的加以应用与借鉴;
最后,没有产品实现,则软件产品不能通过实践来进行唯一的检验,不能使软件开发严格的遵循软件开发的生命周期。
四、 软件体系结构标准分类
根据体系结构标准的成熟度,可以对其进行适度的分类。如下图1所示,标准成熟度金字塔,最顶端的是最成熟的,而最低端的则是最不成熟的。
图1.结构成熟度金字塔
1)提交:这一级别意味着标准制定中已经考虑了产品、模式或实践等因素。
2)侯选:此级别表明已经通过了IT项目专家的详细审查。
3)推荐:推荐级别已经将参考模型及参考实现配置在合适的位置了。
4)实践:实践级别指已经定义了支持度模型,至少有一种产品实现。
5)最佳实践:有多个产品实现,同时对支持度模型进行重新定义。
上面的软件体系结构标准成熟度分类,为标准及其成熟度提供了一种比较客观的评估方式。可以有力排除了组织权力、个人喜爱、商业业务伙伴等人为因素的干扰。
当然,上面的分类,基本上遵循了W3C(World Wide Web Consortium)组织的标准分类,当然也有所变化与增加,例如增加了实践与最佳实践两个阶段,用来表明软件体系结构标准的高级别的成熟度。W3C定义标准的工作流程如下所示:
1)Submission
我们平常向会议或者杂志投递论文叫“paper submission",这里也一样。submission指由W3C member向www consortium投递自己的一个建议。W3C有可能决定不接收这个建议。
2)Notes
如果IBM向W3C提了一个Submission,而且W3C没有拒绝这个submission,那么它就进入Note阶段。Note的内容由IBM进行编辑修改,W3C是不管的。发表Note的时候,表示W3C还没有开始和这个submission有关的任何工作。
3)Working Groups
Notes被W3C认可后,W3C会成立一个Working Group。Group包括W3C member和有兴趣的外界团队和个人。
4)Working Draft
Draft会在w3c的站点上公布,并邀请公共的评论和意见。Working Draft一般不应该作为参考的资料,因为它还会经过大量的修改/更新,而且可能随时被废弃。比如现在WSDL2.0就还在Working Draft阶段,还会经过大量的修改。
5)Candidate Recommendations
这个阶段是可选的,依据论题的复杂程度而定。它一般不应该作为参考的资料,因为它还会经过大量的修改/更新,而且可能随时被废弃。
6)Proposed Recommendations
Proposed Recommendations是Working Groups工作的最后一个阶段。它有被继续修改的可能,但一般情况下,它很可能马上不做改动地成为w3c的recommendation。
7)Recommendation
Proposed Recommendations经过了W3C member的检查和W3C的主席的盖章后,成为 W3C recommendation。它一般是一个稳定的规范,可以作为参考资料进行学习。
五、 小结
在本文中,读者可以清晰的看到使用标准如何定义组织进行软件开发过程当中的产品、模式及实践。同时,可以感觉与体会到标准化为软件开发所带来的好处,例如加速软件产品或项目的交付周期,降低开发的总费用。
所以的标准不尽相似。而软件体系结构标准的主要特征却相似,主要包括项目专家建议与意见、参考模型及参考实现、支持度模型、产品实现及规划支持等。相应地,通过这些特征的判别,可以将标准分为以下五个级别:提交、候选、推荐、实践及最佳实践。
那么,读者所在的组织,已经建立了软件体系结构标准吗?他们可以按成熟度进行相应的分类吗?已经认识、定义、沟通及成熟度标准了吗?同时,有没有成功的加快产品交付使用的标准实践?如果都没有,读者可以考虑参考本文的内容,建立适合自己企业的标准体系。