笔者在提出SERU过程框架的时候常说到一个观点,就是我们并不缺乏软件工程,需求工程的理论,技术,缺乏的是将这些理论和技术有效的应用到实践。而作者的SERU过程框架正好是将软件工程理论和具体的需求实践工作真正的结合起来了,个人认为最核心的不是提出了很多重要的需求诫语,更重要的是可以通过SERU框架系统来梳理和回顾我们的需求开发和需求管理活动。
首先对SERU模型的四个字母再做一个说明
S:Subject Area,表示子问题域,其核心思想是要通过业务来分解系统,尽量保证业务独立和低耦合。
E:Event,表示业务事件,通过业务事件能够找到流程,通过流程能够找到不同场景和用例。
R:Report,表示报表,统一处理查询,分析和统计类需求。
U:Use Case,表示用例,需求组织的最小单位,到了需求分析阶段的重要活动和产出。
SERU过程框架模型将需求过程分解为了三个阶段,第一个阶段是需求定义,重点是主题域划分和业务事件识别。第二个阶段是理清需求框架和脉络,重点是通过业务流程图转到具体的领域类图和用例图。到了第三个阶段重点就是填充需求细节,包括用例的详细编写,界面和交互设计等。
第一阶段-需求定义阶段
需求定义阶段强调了一个重点就是高屋建瓴和从顶向下的思路。当要做一个全新的软件产品的时候,我们首先肯定是进行需求收集和调研,所以书里面专门谈到了需求捕获的最佳实践,包括用户的访谈和调查,现场的观摩等。同时也提出了类似任务卡片等很好的现场需求捕获工具。为什么一开始要强调第一阶段对系统的宏观把握和高屋建瓴,因为在做一个全新的软件产品的时候我们很容易收集到大量用户现有的流程,表单,组织架构等信息和资料,但是这样很容易一次的陷入到需求细节中而对企业的业务没有一个宏观的把握。
主题域划分+上下文图,是需求定义阶段的重要输出。主题域划分主要是从业务的视角来考虑子系统应该如何划以降低业务本身的耦合,在书中也专门提到了主题域划分的思考应该从组织结构为线索,从分管领导找突破以及借鉴典型的业务职能区块等。主题域划分清楚了下一步重点就是要确定主题域的范围,自然引入了上下文关系图,其核心就是要将主题域或子系统作为一个黑盒来分析,搞清楚边界和其于外部用户的交互。通过理清楚上下文关系图后第一阶段的输出基本就很容易明确了,即业务事件+报表需求。
在这里我觉得重点要借鉴的就是从顶向下的系统思维和分而治之,这是解决问题很重要方法。同时刚开始一定不要跳过这个阶段而落入需求细节。主题域和业务事件是两个重要概念,而这两个概念核心又是业务场景。
第二阶段-需求分析阶段
在第二个阶段重点就是粒度的细化,从主题域我需要细化一层到识别了关键业务对象的领域视图,从业务事件进行流程分析我们需要讲业务事件细化一层到具体的业务活动,而业务活动正式我们在识别用例的时候的重要参考。所以在这里我们基本清楚了第二阶段刚开始是通过业务事件进行业务流程分析,业务实体分析,业务场景分析,识别领域类和用例。
需求分析就是先分解,在提炼,然后在这个过程中消除矛盾。不管是采用结构化的方法还是面向对象的方法,分解是人类控制复杂性,认知复杂事物的最佳实践。现代工程理论更建议采用业务导向的分解而非系统导向的分解。在第一阶段的分解我们可以看到以主题域为主线索,具体的分解过程为目标系统-》主题域-》业务事件;到了第二阶段则是以业务流程为主线索进行分解,具体为业务事件-》业务流程和业务活动-》领域类图和用例。
业务流程是对信息系统进行庖丁解牛的核心线索,每个业务事件都是一个业务流程的触发,因此针对每个业务事件都应继续做业务流程分析。对于业务流程是企业核心业务的重要载体,业务流程本身就是结构化的,而且是分级的,通过分析业务流程就能够识别企业核心业务活动,为需求建模做好准备工作。
在这个阶段我们看到两个重要输出,一个是静态的领域类涉及到领域建模,而领域建模的重点就是标识类,明确类之间的逻辑关系和数量关系,添加重要的结构规则。另外一个就是动态的用例,在RUP核心三要素中专门强调了用例驱动,足见用例建模的重要性,但是我们要注意到第二阶段的重点仍然是搭框架结构,因此并没有要求要识别所有的领域类和用例。
第三阶段-需求细化
需求细化是什么?在第二阶段我已经通过分解和细化到达了具体的用例,而第三阶段的重点就是单个用例以及该用例可能涉及到的界面部分建模。书中将用例分为三类是有一定道理的,即业务用例,报表用例和接口用例。对于业务用例的重点是基本流,扩展流和业务规则。对于报表类的用例重点则是报表的输入,输出内容,输出格式。在这里有个情况不得不提出的就是,一些报表类用例脱离了只要不是项目历史开发人员很难看懂,原因即是关键的报表的数据来源在哪里没有说清楚,这点也是报表类用例必须关注的要点。
如果将用例分为两个层次,第一重点就是关注业务活动流和规则的细化,另外一个就是涉及到交互和界面的建模和细化。这两个层次仍然有一定的关系,重点仍然是要先考虑业务流和规则,再来考虑交互和界面。如果先陷入到了界面建模再考虑业务流和规则,则又是顺序错误的开发人员思维,即违背了用例是业务活动驱动的初衷。
这里多说一句即是功能点估算在什么时候用,在第一阶段用是毫无意义的,最佳的使用点就是在需求细化后,具体的业务流和规则,需要的数据输入和输出都基本清楚后,最适合进行功能点估算。因此我们也建议一种方法,即第一阶段先进行专家法估算,到了第三阶段通过功能点估算对专家法估算内容进行验证。
|