实施GJB5000A的组织通常都是按照GJB438B来编写软件需求规格说明,而在GJB438B的软件需求规格说明中要求描述需求的优先顺序和关键程度。 对于这一问题,我听到的最多回答是:优先顺序都是优先,关键程度都是关键。 这种回答显然是不理解分析需求的优先顺序和关键程度的意义,同时也确实不知道怎么来确定需求的优先级。 为什么要分析需求的优先顺序和关键程度?因为只有确定了优先顺序和关键程度,你就可以确定需求实现的先后顺序。 那位说了,我的软件都是一次交付所有功能,没有先后顺序!这话不能说的太满,谁知道将来会发生什么事儿,谁能保证不会在你没有实现全部需求的时候就要求你的软件出去参加某种试验? 所以,你最好还是学会如何确定需求的优先级,在需求分析的时候就确定先实现哪些需求,后实现哪些需求,以免事发突然,措手不及。 那么,如何确定需求的优先级呢? 确定需求的优先级,至少有两种方法。 第一个方法非常简单,就是客户决定。客户希望先使用哪些功能,你就先实现哪些功能。So Easy! 第二方法是建立需求优先级矩阵。参见下图。 需求优先级矩阵是个二维矩阵,它同时考虑了需求对客户的价值以及需求实现的技术风险这两个因素。通常我们把客户价值高用实现的技术风险也高的需求排定的优先级也最高;而客户价值低技术风险也低的需求排在最后,客户价值低且技术风险高的需求则是尽量避免。 为什么我们不会把技术风险低客户价值高手需求排在最前面呢?那是因为技术风险高的需求实现起来会埋藏很多错误,而对于错误,我们则希望越早发现越好,因为这样纠错成本更低。 最后,虽然我们可以使用需求优先级矩阵来帮助我们确定需求的优先级。但是由于各项因素的复杂性,客户价值维度和技术风险因素需要综合考虑,不可以用权重来简单计算。需求分析人员需要与客户多次沟通才可能对以上因素的内容达成一致。 这正是: 需求确定优先级,客户决定方法一 考虑价值和风险,二维矩阵可称奇 参考书目:软件开发践行录:ThoughtWorks中国区文集,作者:ThoughtWorks中国,出版社:人民邮电出版社 |
|