Rapid Development
<<Rapid Development>>的中文版<<快速软件开发>>读书笔记,未完待续…
02 快速开发策略
可以采用如下4种策略来实现快速开发:
- 避免典型错误
- 打好开发基础
- 管理风险,以避免灾难的发生
- 采用面向进度管理的实践
开发速度的四维:人员(people),过程(process),产品(product)和技术(technology)
人力因素极大的影响着生产效率,同时任何关注提高生产效率的组织首先必须有一套良好的人员激励,团队合作,员工选择及培训的机制。
应尽早在错误发生的时候就查出来,错误在产品中停留的时间越长,清除错误所花的时间和费用也就越多。
03 典型错误
- 典型错误
a. 人员相关
- 挫伤积极性
- 人员素质低
- 对有问题的员工失控
- 英雄主义
- 项目后期加入人员
- 办公环境拥挤嘈杂
- 开发人员与客户之间产生摩擦
- 不现实的预期
- 缺乏有效的项目支持
快速开发的许多方面都需要高层对项目的支持,包括实际的计划,变更控制及新型开发方法的采用。 - 缺乏各种角色的齐心协力
- 缺乏用户介入
没有用户早期介入的项目充满需求误解的风险,易受项目后期功能蔓延的威胁。 - 政治高于物质
- 充满想象
b. 过程
- 过于乐观的计划
- 缺乏足够的风险管理
- 承包人导致的失败
- 缺乏计划
- 在压力下放弃计划
- 在模糊的项目前期浪费时间
模糊的项目前期是项目开始之前的时间,通常是花在审批和预算过程中。 - 前期活动不合要求
由于需求分析,总体设计和详细设计并不直接生成代码,对于急于砍掉不必要活动的项目,它们是最容易想到的目标。
跳过前期活动的项目通常在后期以10到100倍的代价完成被跳过的工作。 - 设计低劣
- 缺少质量保证措施
项目前期砍掉1天的质量保证活动,到项目后期需要3到10倍的处理代价。 - 缺少管理控制
- 太早或过于频繁的集成
- 项目估算时遗漏必要的任务
- 追赶计划
- 鲁莽编码
c. 产品
- 需求的镀金
- 功能蔓延
- 开发人员的镀金
- 又推又拉的交易
- 研究导向的开发
如果项目存在要求创建新的算法逻辑或采用新的计算技术这样的计算机科学约束,你就不能做软件开发,只能做软件研究。软件开发进度是完全有理由可以预测的,而软件研究进度甚至理论上都不可预知。
d. 技术
- 银弹综合症
- 过高估计了新技术或方法带来的节省
无论组织采用多少新工具或方法,以及这些工具或方法有多好,他们很少能够大幅度提高生成率。这些方法的优点部分被学习掌握它们所花费的大量时间和过程所抵消。新的方法承担由此而带来的新的风险。大多情况下,采用新的技术而带来的生产率的提高可达到10%,而不能假设可以提高1倍的生产率。项目重复使用以前的项目代码,是过高估算的一个特例,重复使用是一种非常有效的方法,但时间节省很少像预期的那样多。 - 项目进行中间切换工具
- 缺乏自动的源代码控制手段
04 软件开发的基本原则
- 管理原则
- 项目估算和进度安排
精确的估算时进行有效规划的必要前提,而有效的规划又是有效开发的必要条件。 - 项目计划编制
- 跟踪
- 度量
保证软件公司长期可持续运作的关键是能够收集基准数据来分析软件质量和生成率,也就是收集本公司全部项目中有关费用和进度的数据。
- 技术原则
- 需求管理
需求管理就是收集需求,把需求记录成文档,然后以此来跟踪设计和编码,并随时管理修改需求以适应随后项目的过程。 - 设计
- 构建
- 软件配置管理
软件配置管理(SCM)是管理项目成果的一种实践方法,使得项目在全程中可以保持一致的状态。SCM包括评估变更,跟踪变更,处理多版本,在不同的时间保存项目成果备份等实践。
05 风险管理
软件风险管理工作就是在风险成为影响软件项目成功的威胁之前,识别,着手处理并消除风险的源头。
风险管理由风险评估和风险控制组成。
- 风险评估由风险识别,风险分析,风险优先级组成
- 风险识别:就是提出一个潜在破坏项目进度的风险列表。
- 风险分析:评估每一个风险出现的可能性及其影响,判定风险的级别。
- 风险优先级:按风险影响大小排出一个风险优先级,这个风险列表将作为风险控制的基础。
- 风险控制
风险控制由风险管理计划,风险化解和风险监控组成。
- 风险管理计划:制定一个应对每个重要风险的方案,同时应确保每一个单独的风险管理计划之间已经与整体项目计划之间相一致。
- 风险化解:每个重要风险所对应计划的执行。
- 风险监控:就是对解决风险的过程进行监控,风险监控还可以包括识别新的风险,并将其反馈到正在进行的风险管理进程中等方面的工作。
08 估算
软件开发是一个逐渐改进的过程。估算只有随着对软件本身的认识清晰后才可能逐渐清晰。
把单点最可能的估算乘以乐观系数得到乐观估算,乘以悲观系数得到悲观估算,这样表达估算就是一个范围而不是一个定数。
TBD… P149