需求分析八字要诀:穷举、分类、分层、抽象
1.1穷举
1. 当知道某一种可能的时候,要举一反三,列出所有的可能,针对问题全局考虑解决方案。
2. 例子:开发一个库存管理系统,有入库单、出库单、损溢单3中类型单据,有2张账本:库存流水账、库存成本帐。当考虑记账的算法时,就要考虑3*2种情况,即要考虑6种算法。
3.在做软件需求时,尤其需要通过穷举法确保需求的完备性。
4.头脑风暴是穷举法的一种有效方法。
1.2分类
1.将事物进行结构化,将复杂的问题条例化。穷举出来后,可以采用分类的方法将问题进行有效地组织,寻找事物之间的共性
2.在需求开发时,可以对需求从多个方面分类:
a)按需求的种类分为功能需求、性能需求、接口需求、其他需求;
b)按照需求优先级分为必需的、期望的、装饰的
c)按照需求影响范围,分为全局性需求、局部需求。
1.3分层
1.分类的一种,只不过分类时,类别之间没有关联关系。分层时,层与层之间有关联关系,如A层为B层提供服务,B层建立在A层的基础上。
在需求开发时,往往对需求划分为3个层次:目标层需求、业务层需求、操作型需求。不同层次需求的提出者,获取的方法、文档量、表达方式、评审方式、稳定性、返工影响、优先级的确定往往是不同的。如下表所示:
目标性需求是决策性需求,需要很稳定,不能轻易修改,在确定的时候需要慎之又慎。目标性需求对于双方所有人都是约束,它不仅仅含有软件需求,更重要的是对整个系统的要求。
业务需求是基本稳定的,一般覆盖系统的局部,可以比较详细地用文字描述出来,需求之间的关系错综复杂,这类需求一般变化也比较多,需要分析人员和需求管理者花费较大的精力来描述和管理。
操作性需求最适合采用原型的方法来描述,可以较直观的刻画出来,尽管变化多,但是很少有结构性的变化。
1.4抽象
1.从众多事物中抽取共同的、本质的特征,而舍弃其非本质的特征。共同特征是指那些能把一类事物与其他类事物区分开来的特征,(这些具有区分作用的特征,又称为本质特征)
2.在抽象时,相同与不同,决定于从什么角度来抽象。抽象的角度取决于分析问题的目的。
a)案例:对于汽车和大米,从买方的角度看都是商品、都有价格,这是它们的共同特征,而从其他方面看,它们则是不同的。
3.要抽象,就必须进行比较,没有比较就无法找到共同的部分。