软件框架是如何产生的?
首先,思考一下什么是框架。
房屋结构
日常生活中“框架”一词经常被用到,例如建房子,要先搭框架;写作文要列提纲,就是梳理框架。从上面例子可以得出,框架可理解为结构。
软件中的框架如何理解呢?软件框架即是软件的体系结构。框架中包括了一些预先定义好的接口、类和对象,这些类与对象帮助程序员完成了一些基础或通用的操作,例如事务处理、数据访问等。因此,使用框架进行开发能够提高开发效率和代码质量。
其次,框架是如何产生的呢?
卡通形象-员工在编码
框架产生的目标是帮助开发人员解决一些通用的问题,提供通用问题的解决方案,让程序员将主要精力放在业务开发上。这些解决方案是经过验证的,可以在实际中应用的。
那么可以思考一下:框架中包含的这些通用问题的解决方法,又是如何得来的呢?答案就是:实践。
框架从实践中来,是对实践经验的总结。例如JavaEE中Struts框架的产生,则是在JSP/Servlet开发中为实现代码职责分离而总结出的MVC模式的实现。
框架是一些共性问题解决方案的集合。框架是高度抽象的、可复用代码的集合。
框架的产生是一个持续累积的过程,是一个持续改进的过程。
框架要实现“通用性”,在设计上必须是可扩展的、灵活的。因此,框架的设计过程是一个“重构”的过程。
从上面内容可以看出,框架是将(多个)项目中“典型代码”抽取出来,然后继续抽象和重构,最终形成的“经过实践验证的、可复用和高扩展的、解决通用问题的解决方案(代码)的集合”。
第三,框架是怎么开发的呢?
从第二点可以看出,框架来源于实际项目,但又高于项目。所以,框架都是与具体的项目开发语言是一致的。例如,开发C#项目,使用的框架就是C#语言编写的;开发Java项目,使用的框架就是Java语言编写的。 同类型语言编写的框架,能够更方便的应用到项目中。
最后,关于框架还应该知道的。
银弹
框架并不是万能的,虽然说框架帮助程序员解决了一部分通用问题,但框架不能帮助我们实现项目功能,具体的项目业务开发还需要程序员自己完成。
框架的存在并不是为了解决软件复杂度这一难题的。对于软件复杂度的问题,经典的词就是“没有银弹”,即没有一种方法/方案可以从根本上解决复杂度问题。