(1)准备工作的中心目标就是降低风险:一个好的项目规划者能够尽可能早的将可能的风险清除掉,以使项目的大部分能够平稳的进行。目前软件项目中最大的风险来自糟糕的需求分析和糟糕的项目计划,因此准备工作就倾向于集中改进需求分析和项目计划。
(2)作为技术人员,我们的一部分工作就是培训周围的非技术人员,讲解开发过程。
观点:在开始编码、测试、调试之前进行需求分析和架构设计——才能保证关键方面都做的正确。
“老板就绪”测试:如果觉得你的老板已经明白了“在开始构建之前进行前期准备”的重要性,那么可以进行以下测试:a、我们最好立刻开始编码,因为将会有很多的调试工作需要做。b、我们并没有为测试安排太多的时间,因为将来不会发现多少缺陷。c、我们已经非常详细的研究了需求和设计,我想不出在编码和调试期间还会遇到什么问题。
(3)绝大多数项目都不可能完全使用迭代式开发法或者完全使用序列式开发法,预先详细说明100%的需求和设计是不切实际的,不过对绝大多数项目来说,“尽早把哪些是最关键的需求要素和架构要素确定下来”是很有价值的。
一条很有用的经验规则:计划好预先对80%的需求做出详细说明,并给“稍后再进行详细说明的额外需求”分配一定的时间。然后在项目进行过程中,实施系统化的变更控制措施,只接受那些最有价值的新需求。另一种替代方案是只对最重要的20%的需求做出详细说明,并且计划以小幅增量开发软件的剩余部分,随着项目的进行,对额外的需求和设计做楚详细说明。
(4)如何在序列开发法和迭代开发之间做出选择:
选择序列开发法:需求相当稳定;设计直接了当,而且理解透彻;开发团队对于这一领域非常熟悉;项目的风险很小;“长期可预测性”很重要;后期改变需求、设计和编码的代价可能很昂贵。
选择迭代开发法:需求并没有被理解透彻,或者出于其他原因你认识是不稳定的;设计很复杂,或者有挑战性,或者两者兼具;开发团队对于这一领域不熟悉;项目包含很多风险;“长期可预测性”不重要;或其改变需求、设计和编码的代码不是很高。
这里我有个问题:
什么是“长期可预测性”?
posted on 2007-09-18 08:44
探丫头 阅读(1012)
评论(2) 编辑 收藏 引用 所属分类:
《代码大全》读书笔记