疯狂

STANDING ON THE SHOULDERS OF GIANTS
posts - 481, comments - 486, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

架构永远都没有最好的,只有最合适的

Posted on 2010-11-01 15:36 疯狂 阅读(594) 评论(0)  编辑  收藏 所属分类: 架构

    软件架构的选择和设计并不是很容易做出的,一个成功的软件架构取决于N多的因素,软件架构这个词向来就是最为模糊的一个词,个人认为软件架构实在是个很大的话题,业界一直采用的形象比喻就是建设房子时的房屋结构图,以软件的角度来说,软件架构应至少包括软件开发时使用什么语言、形成软件开发时可运行的核心基础框架、软件应用模块的设计(包括模块内聚的功能、对外提供的服务等)、软件测试的方法、软件部署的方法以及团队开发的方法,那么怎么来选择和设计软件架构呢,其衡量的因素是什么呢,个人认为其中质量和快速是衡量软件架构的选择和设计是否成功的两个最重要的因素。
为什么说质量和快速是两个最重要的因素呢?首先来看看这里的质量和快速分别包含了什么内容:
质量
软件的质量是软件能否成功的非常非常重要的因素,就个人看来,软件质量应包括软件功能性需求的实现、软件非功能性需求的实现。
软件功能性需求中最重要的就是要确定对于客户而言商业价值最高的部分是什么,这一项对于软件架构而言的影响是软件应用模块的设计上,而软件应用模块的设计呢,通常要取决于可运行的核心基础框架的设计和实现上;
软件非功能性需求则通常会包含很多要素,像软件灵活性、可扩展性、高响应等,在这些众多的要素中同样要选择出对于目前软件最重要的要素是什么,这会影响到软件架构中的软件开发语言的选择、可运行的核心基础框架。
软件的质量还有需要考虑的要素就是软件测试的方法了(这也会影响到选择什么语言来开发软件),这点对于软件质量而已,无疑是非常重要的一点。
快速
软件能否快速开发完成也已经成为了软件能否成功的重要因素,快速开发完成的意思非常容易理解,但它其实很大的程度影响到了软件架构的选择和设计,很明显的它将影响到软件开发使用什么语言、软件开发时可运行的核心基础框架、软件部署的方法以及团队开发的方法等等,团队中的人很大程度上决定了软件开发时使用什么语言(这个时候也要注意,其实什么语言会影响到开发的速度、开发的质量等,例如erLang的设计目标是为了可构建容错的系统、c则更适合从底层控制整个系统的交互、java具备丰富的基础库、业界资源和更适合复杂业务的需求),至于核心基础框架、部署的方法、团队开发的方法的设计都是为了快速这个目标的。
从上面的两个因素我们可以看到,要使得软件高质量且快速的完成,软件架构在选择和设计上时非常重要的是寻找到一种平衡,所以软件架构要做到模式化其实并不容易。
在这里多说下别的话,其实从上面所述能看出,去评论哪种语言会死是没有什么意义的,并不会有一种语言放在任何环境下都适合,就像在互联网网站的建设上,我想可能很多人都会选择php+c或类似的语言体系,但大家其实可以仔细去想想,是不是网站的建设上一定要这样的两种语言才能承担互联网的高并发等需求呢,或许你更应该做的是从该网站最重要的非功能性需求、团队等等因素来考虑,就像如果你的团队是java性质的团队,而网站最重要的非功能性需求又是支持业务的灵活性的话,那么我会觉得c这样的过程化语言绝对不是这种情况下的最佳选择,而java却是这种情况下的最佳选择,可能很多人会说java太慢呀,什么的,其实并不尽然,很多时候靠硬件以及优秀的架构完全可以弥补掉java比c这样的程序运行相对更慢的毛病,:),这也算是给java的一个平反吧,呵呵,毕竟java相对c而言还有更大的好处那就是java程序的开发无论从质量还是快速开发上肯定强于c,我这样说并不是说一定要选择java,我只是想说明应该根据什么样的情况来选择和设计什么样的架构,那才是最合理的,所以架构永远都没有最好的,只有最合适的,而这也是架构师最难做的原因,架构师在做架构的设计和选择时遵循的出发点就是保证软件高质量且快速的完成。  


 转载自:http://www.blogjava.net/BlueDavy/archive/2007/10/11/151907.html

只有注册用户登录后才能发表评论。


网站导航: