在wiki上,software framework的解释是In computer programming, a software framework is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code, thus providing specific functionality. Frameworks are a special case of software libraries in that they are reusable abstractions of code wrapped in a well-defined Application programming interface (API), yet they contain some key distinguishing features that separate them from normal libraries.
上文对软件框架的解释中,比较重要的概念是抽象,封装,继承和重写,同面向对象语言的特征很接近,那么,如何才能确定或者积累一套框架呢?一个高质量的框架的标准是什么呢?为了解答上述两个问题,先分析一下框架的目的是什么?
当公司接到第一个项目时,可以没有框架,某个程序员直接用SSH搭建起来,然后实现合同中的系统功能,达到用户要求,便可以交差了,实现系统功能的时间一般很短,大概占项目时间的三分之一到四分之一,而大量时间却浪费在了完善阶段,为什么一个项目时间会浪费在完善上,举一个例子,当项目系统功能开发完成时,用户提了一个小要求,某几个功能的名称需要修改一下,这种看似简单的小问题,如果当初程序员为了偷懒,把这些名称硬写到页面中的话,而恰恰这个名称涉及30个页面,程序员杯具了,他需要一两天的时间修改,如果用户不客气,一下子提出十几个类似这样的小问题,项目经理杯具了,项目可能需要延期一个月完善并测试。
我想,很多起初做项目的朋友,都会遇到类似这样的问题,用户反复的提出一些让你没法拒绝的意见,全部都是该名称、换位置、调颜色、换图片等搬砖工作,程序员一遍一遍的修改一些技术含量为零的需求,测试人员需要不厌其烦的一遍一遍测试,项目成本也在悄无声息的增加。最后,老板一拍桌子,大喊一声“XXX,当初说项目两个月完工,为什么做了四个月?”程序员大喊一声:“XXX,爷不干了,天天变来变去的,有完没完啊?”项目经理最后只能以离职收场。
解决上述问题很简单,就是利用框架中的第二个概念——封装,所有的重复代码、变量,包括java、javascript、html,全部封装起来,如果是个性化变量及配置,可以考虑配置文件,即使是批量改,也要集中到一个地方修改,这就是配置文件的重要作用之一。
框架的第一个目的,简单来说,就是方便控制项目时间。对于用户来说,小的意见总是会有的,而且这些意见也是让你无法拒绝的。对于项目经理来说,项目需要修改时,大的漏洞并不可怕,因为他直观,并且单一,例如性能问题,安全问题,这些是硬伤,解决一次就能完成任务,而且有理由延期或者签订补充合同。而如何能简单快速修改项目中没有技术含量的小问题,才是成本控制的关键,因为用户需求是不可控制的,只能控制修改问题的时间。
(未完待续)
分享到:
相关推荐
若依前后端分离框架去掉首页 登录后跳转至动态路由的第一个路由 (第一个子菜单) 若依前后端分离框架去掉首页 登录后跳转至动态路由的第一个路由 (第一个子菜单) 若依前后端分离框架去掉首页 登录后跳转至动态...
AceAdminUI框架是外国很流行的一个UI框架,很适合后台开发人员.zip AceAdminUI框架是外国很流行的一个UI框架,很适合后台开发人员.zip
浮动框架链接是一种特殊的框架,它是在浏览器窗口中嵌套子窗口,也就是整个页面并不是框架页面,但是却包含一个框架窗口,在框架窗口内显示相应的页面内容。浮动框架的语法是:页面源文件"> 浮动框架可以设置很多...
大屏展示的框架,,,,,
flex框架之Cairngorm框架,包括Cairngorm框架
人民银行“三三二一”总体技术框架人民银行“三三二一”总体技术框架人民银行“三三二一”总体技术框架人民银行“三三二一”总体技术框架人民银行“三三二一”总体技术框架人民银行“三三二一”总体技术框架人民银行...
JUnit是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性: 1、用于测试期望结果的断言(Assertion) 2、用于共享共同测试...
Java 棋牌游戏框架 WG棋牌包网项目, java服务器.支持单台游戏服务器一到两千人同时在线. 包含: 1.游戏基础框架 2.网关,路由通信模块 3.游戏机器人框架 4.大厅,房间,桌子流程 5.完善的统一棋牌控制库存框架,支持游戏...
gdi+游戏框架这是一个用vc6.0写的Win32游戏框架.当然,这算不上引擎.该源码付带了一个简单的粒子系统,用来模拟雪花测试.因为用了png图片绘制雪花,所以得到平均每秒也只有32帧.对于2D游戏来讲够了.如果用透明渐变的话...
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。
"微粒框架"是一个开源社区版的应用开发框架,它类似于微擎,旨在为开发者提供一套完整、灵活、高效的开发工具。 1. 多元化的模块:微粒框架提供了丰富的模块,支持社区、商城、教育、新闻等多种类型的应用开发。 2...
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。
框架结构一榀框架手算计算书.doc
Xposed鸭是一款基于Xposed Installer的修改版软件,他弥补了原版XPosed框架无法在线下载的遗憾,使其成为Xposed Installer的一个非常有趣的替代品。 安装Xposed框架非常简单,只需要下载并安装Xposed鸭,然后点击...
为什么说“零信任”将成为网络安全流行框架之一【鹏越.docx零信任是什么?为什么说“零信任”将成为网络安全流行框架之一【鹏越.docx零信任是什么?为什么说“零信任”将成为网络安全流行框架之一【鹏越.docx零信任...
为什么说“零信任”将成为网络安全流行框架之一【鹏越.pdf零信任是什么?为什么说“零信任”将成为网络安全流行框架之一【鹏越.pdf零信任是什么?为什么说“零信任”将成为网络安全流行框架之一【鹏越.pdf零信任是...
jquery是ajax最常用的一个框架。
要学习框架知识的朋友请下载,一本很好的讲述框架的书。下载后可以查看。
一个自定义的开发框架 Framework 一个自定义的开发框架 Framework