编著者:张克强    微博:张克强-敏捷307

软件project7原则简单介绍

美国著名软件project专家鲍伊姆(B.W.Boehm,也又另译为勃姆)在总结软件project准则和信条的基础上,于1983年提出软件project的7条基本原则,也是软件项目管理应该遵循原则。勃姆觉得。这7条原则是确保软件产品质量和开发效率的最小集合,相互独立但结合得相当完备。

1. Manage using a phased life-cycle plan. 用分阶段的生命周期计划来管理

2. Perform continuous validation. 进行持续的确认

3. Maintain disciplined product control. 坚持有纪律的产品控制

4. Use modern programming practices. 利用现代编程实践

5. Maintain clear accountability for results. 维护对结果的清晰责任追究

6. Use better and fewer people. 使用少而精的人员

7. Maintain a commitment to improve the process. 保持提升过程的承诺



约束理论TOC的关键链项目管理

关键链项目管理(Critical Chain Project Management,CCPM)方法是Eliyahu Goldratt博士在其小说体专著《关键链》(Critical Chain)中提出的一种新的方法,其支持者们觉得,这是一种全新的、革命性的思维方式。能够有效地缩短工期,提高项目满足进度与预算约束的能力。可是也有人觉得,CCPM的独特性只体如今这一术语上。---摘自百度百科

关键链被用来替代关键路径分析方法。关键链差别于关键路径的主要特征例如以下:
使用资源依赖 缺乏寻求最佳方案的方法。这意味着一个“足够好”的解决方法已经足够了,由于: 就眼下所知,没有不论什么分析方法能找到一个绝对的最佳的(比方,整体的最短关键链)。 估算上的固有的不确定性,远远大于最优和接近最优(即“足够好”的解决方式)之间的差异。 插入缓冲 项目缓冲(Project Buffer,缩写为PB) 输入缓冲(Feeding Buffer。缩写为FB) 资源缓冲(Resource Buffer。缩写为RB) 监測项目的进展和缓冲的使用率,而不是规划个别任务的进展速度。 ---摘自百度百科

讨论的缘起

@TOC中国 发了条微博 :1.项目的客户为什么须要设定里程碑?
2.客户希望用里程碑达到什么目的?

张克强-敏捷307:好多项目管理类和软件project的书都是这么说的。toc怎样破?

TOC中国:回复@张克强-敏捷307:回复@张克强-敏捷307:破什么?

张克强-敏捷307:《关键链》对此有新做法,我以为你会提,你是要提否?

张克强-敏捷307:回复@TOC中国:在软件开发领域。请查看鲍伊姆-软件project七原则,发表于上世纪80年代初。

然后,我找到个介绍鲍伊姆-软件project七原则的网络文章,做了推荐:

@张克强-敏捷307 勃姆的软件project7条基本原则-文章页-PChome手机版 http://t.cn/Rv6ah88 @TOC中国

開始争论

解救与逍遥:不同层次的管理人员必须严格依照计划各尽其职地管理软件开发与维护工作,绝不能受顾客或上级人员的影响而擅自背离预定计划。【第一条就是自说自话了。


           张克强-敏捷307:怎么自说自话了?scrum是符合此条的
解救与逍遥:SCRUM说了“绝不能受顾客或上级人员的影响而擅自背离预定计划”?
 
     Glen-Wang:一切经PO
       张克强-敏捷307:sprint
backlog的改动是需各方允许的,注意原文中的“擅自”
 
解救与逍遥:一方面说
“不成功的软件项目中约有一半左右源自计划不周”,还有一面有说“绝不能受顾客或上级人员的影响而擅自背离预定计划”。 这不是逻辑混乱吗?加上“擅自”只是是留个退路的修辞。假设了解过TOC的 CCPM 项目管理方式,就会知道基于严格里程碑计划的复杂项目。必将失败。(6月9日 17:23)
 
   张克强-敏捷307:回复@解救与逍遥:我觉得其逻辑非常正常。计划不好,项目easy会失败;未经各方允许改动计划。更easy失败。

另。scrum的review
meeting实质上是里程碑评审。忠实的满足了此条软工原则。

(6月9日 18:27)


张克强-敏捷307:回复@解救与逍遥:你要是用toc能证明软工原则是错的,或者已经过时,你就是新一代软工大师。假设你真有所得,建议写成论文,有道理的话,发表出来,想来轰动世界。以上我是认真的,绝非嘲讽。

(6月9日
18:36)

 
  解救与逍遥:回复@张克强-敏捷307:我就问一个问题,每一个里程碑都按时达成是整个plan按时达成的充分条件
还是 必要条件?至于ccpm项目管理方式已经被收入到pmbok中了,论文早已轮不到我这种后生晚辈写了。

(6月9日 18:51)

 
           张克强-敏捷307:你这问题本身不恰当。pmbok是怎样说ccpm的?有链接否?
 
          张克强-敏捷307:pmbok收ccpm可并不一定说明软工原则失效,项目管理与软件project有重合。但不等同
 
          解救与逍遥:我是在pmbok上看到过,只是说的非常简略。具体哪里要问下pmp专家了 @京东PMO蔡德辉 。

网上有很多其它具体的介绍。搜一下吧。有本toc的企管小说《关键链》讲这个。有兴趣还能够參加最近上海的ccpm的培训班。

 
          李凯-社会化营销

from=main" style="font-size:14px; line-height:21px; text-decoration:none; color:rgb(108,99,81); background-color:rgb(250,250,250)">:回复@解救与逍遥:这里事实上存在两种不同的如果:里程碑思维里。大概迟延症,早完毕隐瞒不报,多任务下带来的时间延长等问题是全然能够消除或控制的。进一步就是保护局部就等于保护全局。

而TOC是承认这些不确定性的,因此其相应之策是保护影响全局的关键路径,对其它局部採取宽松政策。(6月9日
19:12)


分析

张克强-敏捷307:我觉得关键链是考虑了资源瓶颈的关键路径,软件项目矩阵管理事实上已经覆盖了关键链的要点。并且关键链下并非全然取消里程碑,而是识别了更关键的里程碑。

我精读过此书//@解救与逍遥:有本toc的企管小说《关键链》

解救与逍遥:那克强觉得ccpm相对于传统方式的特点在哪里呢? 
张克强-敏捷307:我已经说了啊,其效果在软件领域不会明显。在积累大量数据的建筑领域也不会明显,在其他领域我预计效果会不错
 
      赵智平_极普TOC:CCPM,1颠覆了关键路径CPM,2去除学生综合症及帕金森综合症对项目的影响,3设置缓冲因应不确定性并给出预警机制
解救与逍遥:在软件领域不明显的理由是?
张克强-敏捷307:在软件开发领域,矩阵管理。敏捷团队。cmmi,各类模型等等已经覆盖并超越了关键链。建筑领域类似
 
      解救与逍遥:这个逻辑好奇怪//@张克强-敏捷307:在软件开发领域
 
      张克强-敏捷307:回复@解救与逍遥:锦上添花
vs. 雪中送炭啊!
 
      李凯-社会化营销

from=main" style="text-decoration:none; color:rgb(108,99,81); line-height:21px; background-color:rgb(250,250,250)">:由于对这些方法不懂。所以仅仅能问最主要的问题:这些方法的追求目标是不是与CCPM并不全然一致,实际上还超越了它?

 
        张克强-敏捷307:窃以为大目标是一致的,这些覆盖并超越了ccpm//@李凯-社会化营销:由于对这些方法不懂
 
              李凯-社会化营销:那么大目标是什么呢?超越的部分又是哪些?

这是一个值得学习的突破口

赵智平_极普TOC:软件开发的最大不确定性是什么?

是完毕任务的时间?软件需求?CCPM处理的最大不确定性是任务时间

张克强-敏捷307:敏捷迭代开发利用时间箱。别的行业非常难模仿
赵智平_极普TOC:为何要迭代?

由于能够锁定需求?需求被锁定,不确定性为任务的时间?//@张克强-敏捷307:敏捷迭代开发利用时间箱,别的行业非常难模仿

张克强-敏捷307:反过来,锁定时间。拥抱变化//@赵智平_极普TOC:为何要迭代?
赵智平_极普TOC:以时间缓冲(余量)决定可接受的需求变化,或可引用缓冲侵蚀做决策;需求是最大的不确定性,小批量逐次确认//@张克强-敏捷307:反过来,锁定时间,拥抱变化
 
 
         张克强-敏捷307:nod,好多toc术语,敏捷骚年一般不喜欢
 
         深圳老曲:ccpm中对人性的解释(不良多工、帕金森定律、学生综合症、墨菲定律等)能够用于敏捷的导入。但ccpm本身缺乏对软件开发实践的支持。
//@张克强-敏捷307:nod,好多toc术语。敏捷骚年一般不喜欢
 
         赵智平_极普TOC:CCPM能够支持的最大不确定性是任务时间及有限度地"拥抱"变化//@深圳老曲:
ccpm中对人性的解释
                        深圳老曲:ccpm以及传统的项目管理,背后的如果都是项目的内容、工期、质量是可以同一时候兼顾的。

在软件project领域,这个如果是是不成立的,所以敏捷则是固定时间、保证质量。首先交付价值最高的功能。

                       赵智平_极普TOC:假设我懂SDBR及C#,需求已使用UML定义,能够使用CCPM管理开发进度吗?
                       深圳老曲:可惜的是。包含UML在内的差点儿全部方法,都不能清晰、准确地把需求定义出来,特别是比較大或没有參考对象的项目。





TOC之关键链项目管理遇到软件project7原则的更多相关文章

  1. 【PMP】关键路径法与关键链法

    通俗理解 关键路径法:把项目上的资源都事先全部分到每个活动上. 关键链法:每个活动不打富余,项目经理自己掌握资源,哪个成员执行过程中遇到困难,再给他单独分配资源. PMBOK定义 关键路径法:关键路径 ...

  2. 《敏捷软件开发-原则、方法与实践》-Robert C. Martin读书笔记(转)

    Review of Agile Software Development: Principles, Patterns, and Practices 本书主要包含4部分内容,这些内容对于今天的软件工程师 ...

  3. Atitit 深入理解软件的本质 attilax总结 软件三原则"三次原则"是DRY原则和YAGNI原则的折

    Atitit 深入理解软件的本质 attilax总结 软件三原则"三次原则"是DRY原则和YAGNI原则的折 1.1.1. 软件的本质:抽象  1 1.2. 软件开发的过程就是不断 ...

  4. KISS My YAGNI,KISS (Keep It Simple, Stupid)和 YAGNI (You Ain’t Gonna Need It)软件开发原则

    http://www.aqee.net/kiss-my-yagni/我们都知道KISS (Keep It Simple, Stupid)和 YAGNI (You Ain’t Gonna Need It ...

  5. 最简单直接地理解Java软件设计原则之开闭原则

    写在前面 本文属于Java软件设计原则系列文章的其中一篇,后续会继续分享其他的原则.想以最简单的方式,最直观的demo去彻底理解设计原则.文章属于个人整理.也欢迎大家提出不同的想法. 首先是一些理论性 ...

  6. 这样学BAT必面之软件设计原则,还不会就是我的问题

    学习设计原则是学习设计模式的基础.在实际开发过程中,并不要求所有代码都遵循设计原则,我们要考虑人力.时间.成本.质量,不能刻意追求完美,但要在适当的场景遵循设计原则,这体现的是一种平衡取舍,可以帮助我 ...

  7. UML类图的补充及软件设计原则

    UML类图的补充及软件设计原则 UML 从目标系统的不同角度出发,定义了用例图.类图.对象图.状态图.活动图.时序图.协作图.构件图.部署图等 9 种图. 1.uml补充 统一建模语言(Unified ...

  8. 项目管理、软件、禅道 VS JIRA

    项目管理软件之争,禅道和JIRA大对比 - 简书https://www.jianshu.com/p/2533c0b7e456 [原创]项目管理软件之争,禅道和JIRA大对比 - zhengqiaoyi ...

  9. 敏捷软件开发 原则 模式 与实践 - OCP原则

    最近在读BOB大叔的敏捷软件开发,特别是TDD那一章节,启示真的不少,从测试驱动开发,讲到驱动表明程序设计的意图,从设计意图讲到对象依赖的解耦,从解耦建立Mock对象. 其实是对每个模块都编写单元测试 ...

随机推荐

  1. ibatis传入list对象

    在使用ibatis的时候经常需要传入list对象,sql语句如下. <select id="GET-PERSONS" parameterClass="java.ut ...

  2. solr 统计频率(term frequency)

    1.统计单词在某个字段出现的频率次数 term frequency实现使用了function query. 例如统计‘公司’这个关键字在text这个字段中出现的次数 在返回的时候进行计算统计,即在返回 ...

  3. PhantomJS用法示例

    收录待用,修改转载已取得腾讯云授权 前言 大家有没有发现之前我们写的爬虫都有一个共性,就是只能爬取单纯的html代码,如果页面是JS渲染的该怎么办呢?如果我们单纯去分析一个个后台的请求,手动去摸索JS ...

  4. (转)Vue.use源码分析

    我想有过vue开发经验的,对于vue.use并不陌生.当使用vue-resource或vue-router等全局组件时,必须通过Vue.use方法引入,才起作用.那么vue.use在组件引入之前到底做 ...

  5. 云计算之路-阿里云上:禁用Windows虚拟内存引发的重启

    昨天(2013年8月6日)下午,承载www.cnblogs.com主站的两台云服务器分别自动重启了1次,由于这两台云服务器使用了负载均衡(SLB),重启并未影响网站的正常访问. 与这次重启相关的Win ...

  6. 算法(第四版)学习笔记之java实现可以动态调整数组大小的栈

    下压(LIFO)栈:可以动态调整数组大小的实现 import java.util.Iterator; public class ResizingArrayStack<Item> imple ...

  7. Windows正在使用无法停止通用卷怎么办

    最后解决方案1: 1.双击任务栏上的安全删除硬件图标 2.按下Ctrl + Alt + Del 组合键调出"任务管理器": 3.结束其中的explorer.exe进程,此时桌面上的 ...

  8. 关于winform中子窗体最大化的问题

    在构建winform程序时,普遍的做法是将主窗体设置成 MDI Container,使它可以放置工作窗体(Form 而非 UserControl).工作窗体作为子窗体填充工作区,一般设置 FormBo ...

  9. Keep-Alive简介及在Tomcat中配置

      Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接.市场上 的大部分Web服务器,包括iPlanet.IIS和 ...

  10. Spring集成Jersey开发(附demo)

    下文将会初步介绍如何在Spring中集成Jersey,并附简单的demo 所依赖的技术版本: Jersey 1.8 Spring 3.0.5.RELEASE 1. 项目依赖 pom.xml定义(注意去 ...