以静态的思维看待平台与框架开发,极有可能最终导致所获得的平台与框架是一个臃肿、易出错的软件包袱。出现这种状况的原因,是我们没有明白平台与框架是存在生命周期的。
平台与框架也象人一样,存在形成、成长、成熟和衰退四大时期,图1示例说明了这几个时期。图中纵座标的适应能力,是指平台与框架对应用软件新需求的支持程度。其中的直线也只代表一种趋势,现实中更多地表现为存在波动的曲线。
图1
  
在平台与框架的形成时期,我们根据所需开发应用软件的需要,以模块化的思想设计出各种功能正交的软件模块。随着项目开发团队数量的增加,或者公司在同一行业内产品线的扩展,慢慢地,我们意识到这些模块所形成的集合应被各开发团队或产品线所共用,因此提出了打造平台与框架的设想。这一设想一旦获得公司技术管理层的支持,就使得平台与框架进入了它的成长期。
形成期的平台与框架功能相对简单,加上开发团队可能还没有积累起足够的行业经验,使其对应用软件的用户需求支持很单薄。
平台与框架一旦进入成长期,公司通常会成立独立的开发团队,并网罗经验丰富的工程师加入,专门负责其开发工作。在这一时期,开发团队的业务能力和软件设计能力是至关重要的资源,否则平台与框架无法满足公司期望的成长性,进而影响公司最终软件产品的交付时间与质量。
成长期的平台与框架其功能和稳定性都会不断增强。这一时期也有助于培养和锻炼开发团队的业务和软件设计能力。
随着平台与框架对用户所提出需求的不断满足,以及用户需求的相对稳定,平台与框架就跨入了成熟期。成熟期的平台与框架在功能上不会有大的变化,但稳定性仍应逐步提升,局部范围的软件重构也有可能较为常见。
当用户需求在一段时间的相对稳定后发生很大的变化,或者公司想在新开拓的业务领域内复用同一平台与框架,如果此时的平台与框架无法适应这种变化,且主导设计也没有与时俱进地改善,这将导致平台与框架逐步进入衰退期。
处于衰退期的平台与框架具有的特点是:原主导设计的一致性不断地被打破。正因如此,工程师觉得新功能的支持很象是 “贴狗皮膏药”,程序实现也逐步变得臃肿,这就引发了平台与框架在这一时期的另一个特点 — 稳定性变差。
如果平台与框架长期处于衰退期,它将最终变为我们的沉重包袱,摆脱这种困境的唯一方法是在兼顾已支持需求和新需求的情形下对之进行改进。此时的改进将是大范围的重构,乃至通过重新设计更改主导设计,这就将平台与框架带入新一轮的生命周期,图2示例说明了这种变迁。

图2
  
图中带有阴影的部分表示新的生命周期。注意:新的生命周期中仍存在形成时期,但其层次高于前一轮的。平台与框架在新的生命周期内是否成功,取决于能否进入新的成熟期,且其适应能力高于前一轮的。
推荐阅读

《实施软件平台与框架开发的注意事项》

转载于:https://blog.51cto.com/yunli/755982

软件平台与框架的生命周期相关推荐

  1. TP5框架的生命周期

    把握每个框架的生命周期,才能更好的去实现我们所写的代码逻辑. 生命周期:

  2. 深入了解asp.net框架。生命周期以及事件处理机制

    刚接触asp.net框架觉得很好奇.他的快速开发是怎么实现的.控件的状态又是怎么保持的.我们都知道http是无状态的.而且网上很多人都说使用asp.net框架使用服务器框架是非常慢的. 带着这些疑问我 ...

  3. php 追查框架生命周期,ThinkPHP5框架的生命周期:从发出请求到响应完成

    URL请求的生命周期 客户端通过URL发送访问请求 服务器端返回请求数据 TP5的生命周期 入口文件-->引导文件-->注册自动加载-->注册错误和异常机制-->应用初始化-- ...

  4. vue.js框架的生命周期:常用钩子函数

    //组件实例化之前执行的函数 beforeCreate:function () { alert("组件实例化之前执行的函数") }, //组件实例化完毕执行的函数 created: ...

  5. 第五章(1)Libgdx应用框架之生命周期

    生命周期 一个libgdx应用有一个良好定义的生命周期,管理应用的状态,比如创建,暂停和恢复,渲染和处理应用. ApplicationListener 应用开发者通过实现ApplicationList ...

  6. 玩一玩登录鉴权与生命周期

    登录与鉴权 玩一玩平台登录是依赖于QQ服务号,类似微信公众号的授权登录,只是玩一玩平台在后台自动获取用户对应的openId. 下面是详细的流程 游戏加载流程 游戏加载主要分为两个阶段,准备阶段 是由手 ...

  7. Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件

    1. 组件扫描 首先,必须让Spring扫描组件所在的包,并且,组件类的声明之前必须添加@Component注解! 其实,除了@Component注解以外,还可以使用以下注解实现同样的效果: @Con ...

  8. Spring框架学习day_01: 框架配置方式/ 管理对象的作用域/ 生命周期/ 组件扫描/ 单例模式:“懒汉式“,“饿汉式“

    1. Spring框架的作用 Spring框架的主要作用是创建对象和管理对象. 创建对象:类似于User user = new User(); 管理对象:随时可以通过Spring框架获取对象,甚至Sp ...

  9. Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)

    阅读目录 一.Django请求生命周期: 二.WEB开发模式: 三.cbv源码分析: 四.认识RESTful 补充知识:跨域 五.基于原生django开发restful的接口 六.drf安装.使用.A ...

最新文章

  1. GoogleTest测试框架搭建方法
  2. 糍粑大叔的独游之旅-开篇语
  3. iOS - OC NSLocale 本地化信息
  4. java 队列已满_java – ThreadPoolExecutor当队列已满时阻塞?
  5. ubantu之Git使用
  6. 如何提高自己的工作效率
  7. python构造函数_Python构造函数
  8. centos7.1下的mariadb数据库数据出现不支持中文问题
  9. Java程序调用OpenDDS
  10. LabVIEW编程LabVIEW开发Agilent 4294A 例程与相关资料
  11. 使用Python(OCR)收集体温打卡截图,并自动发消息提醒没交的人。
  12. iPhone iPad 设备型号对应表
  13. 2018年sfdc工作总结_前端绑数据 前端定义勿用驼峰命名法
  14. 吉他C大调和弦高把位图
  15. CyclicBarrier: 循环栅栏
  16. Vue报错Duplicate keys found unique.
  17. 怎么看计算机配件型号,如何看硬件参数
  18. jQuery DOM元素的遍历
  19. 提问的艺术 | 如何聪明地提问
  20. 使用Canvas绘制调色板和工艺卡片(续)

热门文章

  1. 《逻辑与计算机设计基础(原书第5版)》——1.7 格雷码
  2. VS2010 没有C#或者其他模板怎么办,不用重装
  3. 使用qt多线程的一个简单方法
  4. 在JavaScript中实现命名空间
  5. 用三层交换机实现大中型企业VLAN
  6. 大数据应用存在哪些安全隐患
  7. 第4代计算机的cpu,世界最小电脑进化第四代:继续用APU
  8. python 跳出for循环_Python跳出多重循环的方法
  9. web测试软件act,使用ACT对Web程序进行性能容量测试.doc
  10. java获取局域网内主机,java怎么获取局域网内所有主机ip