引言
很多刚学习软件开发的童鞋,对于一些软件术语或概念总搞不太清楚,比如软件框架和软件架构听名字感觉似乎差不多,其他它们之间还是有很大差别的,一个是一种设计思想,一个是软件半成品。
所以,还是有必要搞清楚二者之间的区别的差异哈。
软件框架
软件框架是面向某个领域的、可复用的半成品软件,为软件提供基础结构和一些规范约束。在软件框架的基础上进行开发,就可以避免从头开发,可以大大提高开发效率。软件框架其实很像开发商的清水房,清水房也是一个半成品房子,在清水房基础上进行装修,就比农村从挖地基开始自己一砖一瓦修建房子快很多。那精装房呢,那就相当于是成品软件,就没有程序员什么事了。
不过,框架也有不足的地方,就是开发的灵活性和扩展性要差一些。这个很好理解,清水房要装修开发商一般有一些规范约束,比如房屋结构是不能随便改的,特别是有些承重墙是不能打掉的。而农村修房子就没有那么多规范约束,想怎么修就怎么修,谁也管不着。那精装房呢?啥也不用改了,直接拎包入住。除非你是人傻钱多,拆了重新装修,和小品里的许君聪一样,任性、调皮。
软件架构
软件架构是面向复杂软件系统开发的最高级别的设计,架构设计就是把复杂软件系统分解为一些部件,并描述这些部件的职责及它们之间的协作行为,比如三层架构。软件架构师的工作就是进行复杂软件系统的架构设计,相当于建筑行业的建筑师;架构师输出的软件系统设计草图,而建筑师输出的是建筑系统设计草图,反正这两类人都是很牛逼的,位于金字塔顶端。那么程序员呢?这么给你说吧,程序员常被称为码农,工作被称为搬砖,这就相当于建筑行业搬砖的泥瓦匠,都是架构设计的具体实施者,位于金字塔的底端。听上去程序员好没有地位,但你想一想如果没有程序员的搬砖,再好的软件架构设计也只是一纸空谈,只有经过程序员的开发后,软件架构才可以体现在软件当中。
如果软件系统很简单,比如开发一个21点小游戏,那就没有必要杀鸡用牛刀,动用软件架构师啦,程序员就可以搞定啦。很多中小型软件公司里,就没有软件架构师,不是因为请不起,而是没有必要。因为本身开发的软件系统并不太复杂,使用行业已经比较成熟的软件架构设计方案即可,比如三层架构,就不需要软件架构师专门去设计架构。所以,架构师这种生物,主要在大厂里出没。而程序员就不一样了,如同打不死的小强,无处不在哈。
总结
软件架构和软件框架其实都是人类为了解决日益复杂的软件系统所带来的开发困难而采取“分而治之”思想的结果。
-
软件架构作用:降低开发复杂度(设计思想)
-
软件框架作用:提高开发效率(软件半成品)