Paradigms 这个词的英文原意是风范、范例、模范、词型,我认为把Software paradigms译为“软件范型”更合适。所谓Software paradigms就是软件开发过程模型,毋庸置疑,选择一个良好的开发范型对于一个软件产品(项目)的开发至关重要,但是软件管理没有银弹,如何针对项目具体情况选择合适的范型是项目成功的第一步。
分为5大类:
瀑布:
迭代:演化;增量;喷泉。
螺旋:瀑布+演化+风险;其实严格的讲也是一种迭代;
转换:基于形式化规格说明语言及程序变换的软件开发模型,它采用形式化的软件开发方法对形式化的软件规格说明进行一系列自动或半自动的程序变换,最后映射为计算机系统能够接受的程序系统。变换模型的优点是解决了代码结构经多次修改而变坏的问题,减少了许多中间步骤(如设计、编码和测试等)。但是变换模型仍有较大局限,以形式化开发方法为基 础的变换模型需要严格的数学理论和一整套开发环境的支持,目前形式化开发方法在理论、实践和人员培训方面距工程应用尚有一段距离。
第四代:自动生成代码;
目前软件组织常采用的几种范型:瀑布;演化;增量;喷泉;螺旋;5种
| 适用场景 | 特点 | 缺点 |
瀑布Waterfall | 需求能够被很好的定义和理解;
| 阶段性明确; 基线(或里程碑)管理; 是其他范型的基础; | 项目结束前可能出现大量的集成和测试工作; 项目结束前用户都不能看到系统; |
演化evolution | 需求不明; 用户愿意更多的参与; | 瀑布模型的增量演化; 与瀑布相比,需要更有力的管理; | 需要用户更多的参与 |
增量 increment | 需求明确且可分段; 适用于开发公司产品; | 与瀑布相比可以很快的交付一个小的版本; 可以增量投资; | 早期对于整个产品的规划要求很高,如何后期发生变更就很麻烦。 管理成本高; 需求是唯一的风险源; |
喷泉 | 适用于面向对象; 以对象驱动; | 迭代和无缝; 各阶段是相互重叠和多次反复 | 控制不好容易无序; |
螺旋spiral | 不能确定需求; 项目风险很大; | 每一个周期都是一个瀑布; =瀑布+演化+风险; 支持动态的需求变化; |
项目组人员要求有较高的风险评估经验; 成本高; |
凡是软件项目十之八九都会遇到工期紧的问题,我们经常会采用一种快速跟进(fast tracking)的方法,就是在瀑布范型中的几个相邻的阶段彼此重叠,缩短开发周期,具体操作可以考虑采用网络图和关键路径法合理安排资源和时序。
软件开发的几种驱动模式:
需求驱动:以用户为中心;
测试驱动:以质量为中心;
风险驱动: 以风险为中心;