SERU需求分析是由徐峰老师于08年提出的一种以业务为驱动,实践为载体的需求分析体系。个人认为是一种理论最大化应用到实际业务中的方式:把传统的分析方法与建模理论应用到实际业务中,再对业务中的场景和问题结合uml,rup分析的方法进行业务建模,具体问题抽象化找到最佳的解决路径。有时候很多产品人在分析需求的时候只是凭一些逻辑分析的方法,通过几个原型就去规划信息系统或app的架构正是缺少需求理论分析的表现。

SERU需求分析意为Subject Area,Event/Report,User case三个需求分析创建的层次。分别对应了seru方法中三个重要的阶段: 明确目标和范围(开天辟地)、理清脉络和框架(泾渭分明)、填充需求细节(天圆地方);整个需求体系可划分为需求定义、需求捕获和需求分析, 通过主题域、事件、报表/管控点、用例四个关键分解项贯穿分析、建模和描述过程。我认为这有点像画素描的过程,首先把范围以及大致的框架画成型,然后画出各部分的骨架以及结构形成大致的形体,最后再添加每一个层次上的细节形成一幅完整的画作。需求分析建模也是有种艺术的境界。

图1 SERU模型

明确目标和范围

第一阶段,明确目标和范围也就是需求的定义阶段,在项目立项初始对需求范围的梳理阶段。这个阶段的核心目标是通过划分主题域(subject)、标示出每个主题域中的业务事件(event)和确定报表(report)的方式明确分析的范围和目标。在上一篇文章我已经完整叙述了整个划分和标示的流程,在这里简单地说一下。笔者提倡一种自上而下、逐层分解的分析思路。 在这个阶段需要按照业务流程来划分,以”事”为线索贯穿系统,用uml中的构件图建模并表达业务流程抽象化的过程。首先应该按照业务的职责区块来划分子系统,然后根据实现关系及使用关系标示出各系统之间的接口并且在这个阶段分析各子主题域之间的关系,最后一步进行主题域范围的明确,界定每个主题域内进行的功能以及相关的事件并且要考虑到Customer与Worker之间的关系。找到系统中所有的客户,考虑这些客户会引起什么事件的发生,这些事件会引起Worker什么样的工作,将这些都考虑进来。然后再补充Worker主动发起的动作,那么一个系统的所有事件就能没有遗漏地梳理完整了。

图2 划分子系统,确定关系

理清脉络和框架

第二阶段,理清脉络阶段就是对业务粒度的细化。该阶段的任务就是对每个业务事件、每类报表进行人事物三者之间关系的分析,并标示出绝大部分的用例。需求先分解再提炼,第一阶段是需求分解并形成组织架构的阶段,在第二阶段就是对需求进行提炼的过程。前面说过分解是一个自上而下的过程,那么按照一种线索进行分解时多个业务时间就会产生相互交叠的情况。提炼就是一种自底向上的方式将每个业务事件的类进行提炼,抽取出共性的部分,建立针对整个系统的全局领域模型。我们可以使用uml中的领域类图、流程图和用例图来理清需求的结构框架和行为脉络,把业务事件列表以及报表输出成领域模型和用例模型。业务流程的梳理应该是每个产品人的基本功,在这里我推荐使用跨职责流程图以及完善的活动图提炼出业务模型。

图3 跨职责流程图

图4 活动图

那么通过模型,我们可以看到子系统内业务流转的过程,从而确定逻辑关系以及数量关系。总而言之,理清脉络的方式可以通过uml中各种图例帮助产品人员理清业务流程,建立起完善的业务逻辑模型。在这里要善于合也要善于舍,合并提炼相同的业务类,舍弃细节的干扰,整理出子系统内层次清晰的架构。

图5 梳理脉络并且进行建模

填充需求细节

第三个阶段是填充细节阶段,该阶段的任务就是填充每个用例的实现细节,以便于开发人员进行具体的实现。往往产品人员在考虑需求范围的时候只考虑到功能性需求,在这个阶段要对非功能性需求以及设计约束进行更细致的补充。这个阶段的任务是对用例模型、领域模型标示出用例、领域类的细节进行填充。对于组织行为需求的用例,我们要填充用例的事件流;对于组织数据(结构)需求的领域类,我们要填充它的字段与格式。很多产品人员在归纳用例的时候会采用“先人后事”的思路,这种方式很容易陷入误区。我们应该讲人(角色,参与者)和事(场景,用例)分开考虑,在确定他们的关联时,要先事后人地考虑。用例说明可以分为两个层次,第一个层次重点关注业务活动的变化以及其中的约束条件,另外一个层次就是交互/界面在视觉层次上的建模和细化。这两个层次其实是纵深对应的关系,先考虑业务和规则,再考虑前端的交互和界面展示。在这个阶段不单单是对业务的考虑,同时前置条件,后置条件,基本事件流程,拓展事件流程,子事件流程都是用例的核心部分。

图6 填充需求细节

总结

在需求分析,架构系统的时候往往我们产品人员会把大量的时间花在探索“怎么做”,很少对现实业务的整个过程进行思考。SERU需求分析的核心是从“人,事,物,接口”四条主线着手,沿着业务的脉络(业务主题域-业务事件/流程报表-业务活动-业务步骤)进行有机的分解,再以建模(构建-流程图-用例-事件流)的方式实现定向的需求分析。先从广义上对问题进行系统的拆分,以子系统的方式单独成一个封闭的集合,接下来考虑集合与集合之间的关系,最后完善集合内部符合业务流转的玩法。实际上我认为这个过程很像古代治国的方式,三个步骤对应着确定国家边界,国与国之间的延展,国内的治理。或许徐峰老师自身体现的也是一种设计系统架构的兵家思想。

转载于:https://www.cnblogs.com/kayvan/p/7232781.html

SERU最佳需求分析方法相关推荐

  1. 需求分析的过程是什么?_7大需求分析方法与5大分析过程

    面对业务部门层出不穷的需求,如何入手进行需求分析?有没有需求分析的标准方法论可供参考?以下就是为大家推荐的8大类需求分析方法: 流程图 原型 用例图 用户故事(3C原则) 词汇表 实体关系图ERD 分 ...

  2. php常量定义表达式,从表达式创建PHP类常量的最佳解决方法?

    我希望能够做到这样的事情: class Circle { const RADIUS_TO_CIRCUMFERENCE = M_PI * 2; // Not allowed private $radiu ...

  3. had oop 链接mysql_php – 将MySQL连接查询与OOP和对象相关联的最佳实践方法

    我正在开发一个 PHP Web应用程序,用户可以创建到目的地的旅行,并邀请其他用户参加这些旅行. 我有针对Destinations,Trips和Users的MySql表,以及一个名为Invites的表 ...

  4. iis php性能优化,IIS 6 的 PHP 最佳配置方法

    IIS 6 的 PHP 最佳配置方法 更新时间:2007年02月09日 00:00:00   作者: 作者:冷漠 虽然 LAMP 组合很不错,但是如果想要架设一台同时支持 PHP.ASP.ASP.NE ...

  5. 【转】软件需求分析方法

    软件需求分析(Software Reguirement Analysis)是研究用户需求得到的东西,完全理解用户对软件需求的完整功能,确认用户软件功能需求,建立可确认的.可验证的一个基本依据. 软件需 ...

  6. 面向对象的需求分析方法

    面向对象的需求分析方法 面向对象的需求分析方法的核心是利用面向对象的概念和方法为软件需求建造模型.它包含面向对象风格的图形语言机制和用于指导需求分析的面向对象方法学. 面向对象的思想最初起源于 20世 ...

  7. win7 mysql 密码_笔记本win7系统下mysql忘记密码的最佳解决方法

    MySQL是一个关系型数据库管理系统,在笔记本win7系统下编程的时候就需要用到MySQL数据库,不过有时候一段时间没用的话,可能会忘记数据库的登录密码了,当忘记密码就无法进入mysql,要如何解决呢 ...

  8. 软件测试需求分析方法有哪些,一起来看看吧

    目录 1.前言 1.1 什么是测试需求? 1.2 为什么要做测试需求? 2.测试需求分析方法 2.1 测试需求分析依据 2.2 测试需求架构划分 2.3 测试需求分析过程 3.总结 1.前言 1.1 ...

  9. 常见的需求分析方法(产品篇)

    需求分析方法 常见的需求分析方法有: 一.如何做结构化分析 二.如何做系统建模 三.需求加法 四.需求减法 总结 常见的需求分析方法有: 1. 结构化分析 2. 系统建模 3. 需求加法 4. 需求减 ...

最新文章

  1. Linux操作系统文件系统基础知识详解
  2. [转]ghost手动备份及遇见的问题
  3. logstash使用,结果输出到stdout
  4. OVS 添加端口流程(二十九)
  5. [BetterExplained]书写是为了更好的思考
  6. SAP Spartacus org unit list和unit detail的分屏显示原理
  7. 某银行大型管理系统端到端持续集成和交付实践
  8. 膜拜大牛!HTTPS面试常问全解析,吊打面试官系列!
  9. 使用多线程拷贝文件夹
  10. 机器学习原理与算法(六) 支持向量机
  11. day08面向对象-内部类、异常
  12. Oracle根据月份获取其是哪个季度
  13. 查看linux文件的日期格式,5个在Linux中管理文件类型和系统时间的有用命令
  14. 关联分析---Apriori算法和FPGrowth算法挖掘规则计算频繁项间的置信度
  15. 国产CAD_手机也能看CAD图纸了?国产软件助力CAD告别电脑时代!
  16. no module named pytz(pycharm)
  17. 使用easy_captcha生成登录验证码
  18. 聚类 k-means、yellowbrick和信用卡用户实例 -- 023
  19. 【树莓派C语言开发】实验14:PS2游戏手柄模块(关联PCF8591)
  20. Markdown 基础入门

热门文章

  1. linux关于程序的user,c – “get_user_pages”如何工作(对于linux驱动程序)
  2. Java学习笔记15
  3. Android性能优化之电量篇(四)
  4. 【Android UI】图片 + 文字展示by SpannableStringBuilder
  5. Swift Property Wrapper 属性包装器
  6. Postman--Pre-request执行其他接口
  7. JAVA常用知识总结(七)——Spring
  8. 关于java设计模式笔记
  9. linux设备驱动归纳总结
  10. 谷歌-百度世界杯大数据预测,哪家更准?