常见的软件开发主要有4个阶段,包括需求阶段,设计阶段,实现阶段以及维护阶段。本文主要阐述需求阶段的业务需求分析以及领域建模方式。用于学习记录总结。
需求调研 - 产出:业务需求说明书
需求分析 - 产出:需求分析说明出,可行性分析报告,原型(axure),UI,交互图,UED。
业务建模 - 产出:业务用例(用例图)
系统建模 - 产出:系统用例(时序图)
数据建模 - 产出:数据库设计(ER图)
建模一般使用Visual Paradigm,AE,墨刀,蓝湖等工具。
架构设计-网络拓扑图
领域划分-划分边界
接口拆分-接口文档,sdk
概要设计
详细设计
项目搭建- 项目架构
开发-接口开发,自测
测试-功能测试,性能测试(包括黑盒白盒测试,冒烟测试等)
联调-前后端以及关联调用系统
上线-开发,测试,预生产,生产环境联调
软件的生命周期从开发直至退役,所以后续迭代,维护阶段占大部分生命周期。
事实证明一个优秀的产品经理确实很重要,一个深入理解市场痛点,客户需求,具有独创性,前瞻性思维,使产品具有很好的布局规划,还要考虑落地的可实施性,上接VP,外接市场客户,内接设计开发,白鸦是,张小龙是,当然乔布斯也是。
“系统需求”不等同于“业务需求”,业务需求是由业务PD进行梳理。但接下来的设计是需要能将业务需求转换成系统需求,即转换成技术人员能理解的语言。
系统需求分析阶段的设计一句话目标就是
“将客户原始需求(IR - Initial Requirement)转换为设计需求(DR-Design Requirement)”。
这个阶段是整个设计流程中最为关键和重要的一环。在这个过程中,我们主要要做的事如下:
1.领域划分。基于业务背景知识,先定义出业务域的初步划分。
2.领域建模。这个包括业务用例,业务建模,系统建模等
¡ 正常场景流程:用分析模型识别出边界类、控制类和实体类。其中边界类在后续会转换成DomainService模型、控制类会转换成内部的主要业务管理类/模块、实体类会转换成Domain Model。用时序图或鲁棒图完成一次业务正常会话过程的分析,识别出这几个分析模型。 这里最需要关注的是,不仅要识别出本业务域能对外提供什么边界类,更重要的是要能识别出我们需要其他业务域提供什么边界类;
¡ 异常分支流程:对于正常场景的异常情况进行补充,定义出在异常操作场景下的业务规则是什么,一会后面举例;异常分支有时会很简单,简单的异常分支文字方式描述规则即可,对于非常复杂的异常分支,也是需要使用分析模型/鲁棒图等方式进行分析;
¡ 潜在的用户需求:用户的原始需求有可能只是从某一方面出发的,从整体分析的角度看,我们可以对标业界友商同类产品,进行竞争分析,分析出是否有从原始需求关联出未来可能的潜在需求;
¡ 非功能性需求识别:非功能性需求也叫做DFX需求(Design for XXX),如:可维护性需求、可测试性需求、可安装性需求、技术限制需求、高性能需求、高可用需求、安全性需求等。非功能性需求需求往往是会对架构、方案产生重大影响,一些非功能性需求需求往往还会要求进行技术预研、原型验证,看是否可行
3.通过上述的场景分析识别出正常场景、异常分支、潜在需求、非功能性需求后,我们将每个正常场景对应成一个DR、每个异常分支对应一个DR、每个潜在需求对应一个DR、每条DFX对应一个DR,汇总到一个Excel表格中(用Excel会方便后期的设计管理);
4.各个域组织评审与补充设计需求。
5.对设计需求列表进行依赖关系分析,在Use Case中是有大的前置依赖定义,可以作为指导。 通过设计需求的依赖分析,我们会得到一个依赖关系树(也叫做系统解剖图)。基于系统解剖图,我们就能得到所有设计需求的前后依赖关系,进而就可以知道整体项目的关键路径是什么,最大的可并发度是在什么阶段等。
6.将刷新后的设计需求进行工作量评估,并按照业务域录入到AONE中,后期这些任务按照依赖关系定义出开发优先级并安排到具体的迭代中进行管理。
比如,目前我们在整理一个最小范围的电商系统内核构建。以本次项目需求涵盖的范围,我们初步识别出下面这些域:
我们以会员域为例,识别出的总体Use Case图如下:
在这个用例图中,识别出和用户账号相关的相关场景。比如,邮箱方式注册账号、SNS方式注册账号等。用例图中,需要
体现出场景与场景之前的前置关系、扩展子用例等关系。 所有的用例,都需要进行编号。
针对“邮箱注册账号”进行领域分析
我们对邮箱注册账号识别出其边界类、控制类以及实体类,绘制了正常的场景交互时序,如下
针对这个正常场景,我们可以很清楚的看到用户要完成一次正常的邮箱账号注册,需要分两步注册。第一次,是填写个人
信息,第二次是到注册邮箱中点击确认链接完成邮箱确认。 这里,我们识别出有两个关键的边界类要提供服务:1)邮箱
注册界面 2)邮箱确认界面 ,在具体描述时,我们要进一步描述这两个界面服务的细节,如下:
在正常场景梳理完后,我们可以挑战一些可能会出现的异常场景、非功能性需求识别等,比如:
在所有业务域的业务分析完毕,并输出设计需求清单后,比较重要的一个事就是汇总所有设计需求中设计到的接口清单。
接口清单要包括:
设计需求汇总完毕后,还需要做工作量评估和依赖关系分析(系统解剖图)。 这样就能够指导后续每个迭代的范围制定、
关键开发路径识别了。
一级开发任务建议就按照设计需求,一条一条的对应。如果该设计需求比较大,可以在该任务下建立子任务进行跟踪和迭
代安排。