系统需求分析与领域建模

  • 1. 软件开发概述
    • 1.1 开发流程概述
    • 1.2.需求阶段
    • 1.3.设计阶段
    • 1.4.实现阶段
    • 1.5.维护阶段
  • 2. 系统需求分析总体过程
    • 2.1 系统需求与业务需求
    • 2.2 领域划分建模
  • 3. 系统需求分析案例
    • 3.1 领域划分
    • 3.2 业务用例
    • 3.3 领域分析
      • 3.3.1 邮箱注册正常场景分析
      • 3.3.2 邮箱注册异常场景分析
      • 3.3.3 服务接口清单
      • 3.3.4 设计需求工作量评估 & 开发任务创建

1. 软件开发概述

1.1 开发流程概述

常见的软件开发主要有4个阶段,包括需求阶段,设计阶段,实现阶段以及维护阶段。本文主要阐述需求阶段的业务需求分析以及领域建模方式。用于学习记录总结。

1.2.需求阶段

需求调研 - 产出:业务需求说明书
需求分析 - 产出:需求分析说明出,可行性分析报告,原型(axure),UI,交互图,UED。
业务建模 - 产出:业务用例(用例图)
系统建模 - 产出:系统用例(时序图)
数据建模 - 产出:数据库设计(ER图)
建模一般使用Visual Paradigm,AE,墨刀,蓝湖等工具。

1.3.设计阶段

架构设计-网络拓扑图
领域划分-划分边界
接口拆分-接口文档,sdk
概要设计
详细设计

1.4.实现阶段

项目搭建- 项目架构
开发-接口开发,自测
测试-功能测试,性能测试(包括黑盒白盒测试,冒烟测试等)
联调-前后端以及关联调用系统
上线-开发,测试,预生产,生产环境联调

1.5.维护阶段

软件的生命周期从开发直至退役,所以后续迭代,维护阶段占大部分生命周期。

事实证明一个优秀的产品经理确实很重要,一个深入理解市场痛点,客户需求,具有独创性,前瞻性思维,使产品具有很好的布局规划,还要考虑落地的可实施性,上接VP,外接市场客户,内接设计开发,白鸦是,张小龙是,当然乔布斯也是。

2. 系统需求分析总体过程

2.1 系统需求与业务需求

“系统需求”不等同于“业务需求”,业务需求是由业务PD进行梳理。但接下来的设计是需要能将业务需求转换成系统需求,即转换成技术人员能理解的语言。

系统需求分析阶段的设计一句话目标就是
“将客户原始需求(IR - Initial Requirement)转换为设计需求(DR-Design Requirement)”。

2.2 领域划分建模

这个阶段是整个设计流程中最为关键和重要的一环。在这个过程中,我们主要要做的事如下:
1.领域划分。基于业务背景知识,先定义出业务域的初步划分。
2.领域建模。这个包括业务用例,业务建模,系统建模等

¡ 正常场景流程:用分析模型识别出边界类、控制类和实体类。其中边界类在后续会转换成DomainService模型、控制类会转换成内部的主要业务管理类/模块、实体类会转换成Domain Model。用时序图或鲁棒图完成一次业务正常会话过程的分析,识别出这几个分析模型。 这里最需要关注的是,不仅要识别出本业务域能对外提供什么边界类,更重要的是要能识别出我们需要其他业务域提供什么边界类;¡ 异常分支流程:对于正常场景的异常情况进行补充,定义出在异常操作场景下的业务规则是什么,一会后面举例;异常分支有时会很简单,简单的异常分支文字方式描述规则即可,对于非常复杂的异常分支,也是需要使用分析模型/鲁棒图等方式进行分析;¡ 潜在的用户需求:用户的原始需求有可能只是从某一方面出发的,从整体分析的角度看,我们可以对标业界友商同类产品,进行竞争分析,分析出是否有从原始需求关联出未来可能的潜在需求;¡ 非功能性需求识别:非功能性需求也叫做DFX需求(Design for XXX),如:可维护性需求、可测试性需求、可安装性需求、技术限制需求、高性能需求、高可用需求、安全性需求等。非功能性需求需求往往是会对架构、方案产生重大影响,一些非功能性需求需求往往还会要求进行技术预研、原型验证,看是否可行

3.通过上述的场景分析识别出正常场景、异常分支、潜在需求、非功能性需求后,我们将每个正常场景对应成一个DR、每个异常分支对应一个DR、每个潜在需求对应一个DR、每条DFX对应一个DR,汇总到一个Excel表格中(用Excel会方便后期的设计管理);
4.各个域组织评审与补充设计需求。
5.对设计需求列表进行依赖关系分析,在Use Case中是有大的前置依赖定义,可以作为指导。 通过设计需求的依赖分析,我们会得到一个依赖关系树(也叫做系统解剖图)。基于系统解剖图,我们就能得到所有设计需求的前后依赖关系,进而就可以知道整体项目的关键路径是什么,最大的可并发度是在什么阶段等。
6.将刷新后的设计需求进行工作量评估,并按照业务域录入到AONE中,后期这些任务按照依赖关系定义出开发优先级并安排到具体的迭代中进行管理。

3. 系统需求分析案例

3.1 领域划分

比如,目前我们在整理一个最小范围的电商系统内核构建。以本次项目需求涵盖的范围,我们初步识别出下面这些域:

3.2 业务用例

我们以会员域为例,识别出的总体Use Case图如下:
在这个用例图中,识别出和用户账号相关的相关场景。比如,邮箱方式注册账号、SNS方式注册账号等。用例图中,需要
体现出场景与场景之前的前置关系、扩展子用例等关系。 所有的用例,都需要进行编号。

3.3 领域分析

针对“邮箱注册账号”进行领域分析

3.3.1 邮箱注册正常场景分析

我们对邮箱注册账号识别出其边界类、控制类以及实体类,绘制了正常的场景交互时序,如下
针对这个正常场景,我们可以很清楚的看到用户要完成一次正常的邮箱账号注册,需要分两步注册。第一次,是填写个人
信息,第二次是到注册邮箱中点击确认链接完成邮箱确认。 这里,我们识别出有两个关键的边界类要提供服务:1)邮箱
注册界面 2)邮箱确认界面 ,在具体描述时,我们要进一步描述这两个界面服务的细节,如下:

3.3.2 邮箱注册异常场景分析

在正常场景梳理完后,我们可以挑战一些可能会出现的异常场景、非功能性需求识别等,比如:

  • 【异常场景】如果用户注册的邮箱已经注册过了,怎么办?
  • 【异常场景】如果用户在填写邮箱注册信息后,一直没有登录邮箱确认,怎么办?(比如,用其他人的信箱注册)
  • 【安全性】用户注册的密码安全性如何保证?是否有第三方社工库做弱密码验证? 第三方的社工库服务挂了怎么办?
  • 。。。等等
    这些异常的场景,我们还可以进一步细化出很多。针对这些异常场景,如果是比较复杂的,也应该提供时序图的方式,将
    边界类、控制类、实体类进行识别与设计。 如果是非常简单的,可以直接写出设计需求,做好规则约定,便于后续遇到这
    个场景,PD、开发、测试能按照统一的规则去验证。比如,上面提到的几个异常场景,相对比较简单,我们可以直接转换
    成设计需求,如下:

3.3.3 服务接口清单

在所有业务域的业务分析完毕,并输出设计需求清单后,比较重要的一个事就是汇总所有设计需求中设计到的接口清单。
接口清单要包括:

  1. 业务域对外提供的接口
  2. 业务域使用到其他业务域的接口。 比如,交易域要识别出对库存域有库存查询服务、库存预扣减服务、库存扣减服务的
    接口需求。库存域的同学汇总各个域的服务接口需求,后期统一考虑接口设计以及出入参模型设计。
    各个业务域要显性的把对外提供的接口需求也作为一个个单独的设计需求列在表格中,确保后续的任务没有遗漏。

3.3.4 设计需求工作量评估 & 开发任务创建

设计需求汇总完毕后,还需要做工作量评估和依赖关系分析(系统解剖图)。 这样就能够指导后续每个迭代的范围制定、
关键开发路径识别了。
一级开发任务建议就按照设计需求,一条一条的对应。如果该设计需求比较大,可以在该任务下建立子任务进行跟踪和迭
代安排。

系统需求分析与领域建模相关推荐

  1. 嵌入式系统需求分析_嵌入式开发流程是什么?

    嵌入式开发流程 当前,嵌入式开发已经逐步规范化,在遵循一般工程开发流程的基础上,嵌入式开发有其自身的一些特点.主要包括系统需求分析(要求有严格规范的技术要求).体系结构设计.软硬件及机械系统设计.系统 ...

  2. 系统需求分析文档需要考虑的问题

    最近作了几次需求分析,有了一些经验,特共享出来. 欢迎指正. 我认为在系统需求分析中,有三个问题需要注意, 即 系统涵盖范围 用户对上线时间的要求 系统上线对目前系统整体的影响 系统覆盖的范围 很多用 ...

  3. Javascript 在WEB系统需求分析中的应用

    Javascript  脚本在WEB系统需求分析快速原型法中起到了不可替代的作用,其动态效果和可用性体验,能够有效增进系统分析员和客户之间的感官交流,将需求分析工作快速地引入到"使用之后&q ...

  4. 基于android点餐系统需求分析,基于Android的点餐系统的设计及实现

    内容简介: 基于Android的点餐系统的设计及实现,毕业论文,共58页,20083字,附开题报告.答辩文稿.源程序. 摘 要 随着无线网络(如4G.3G.GPRS)及无线网络技术与移动操作系统的不断 ...

  5. 如何写系统需求分析书

    如何写系统需求分析书 2008-02-25 16:06 如何写系统需求分析书 作者:三人行 2007-11-19 10:32:37 标签: IT/科技   在软件开发工程中我们所做的第一步:系统分析. ...

  6. 餐厅点餐系统需求分析

    点餐系统需求分析 背景说明: 在现代社会中,餐饮业是一个永远不会衰败的行业,当由于受到空间大小影响,盈利几乎不会有太大提高,想要增加更多盈利就必须提高服务效率,同时带动消费效率的提高,这时就需要考虑一 ...

  7. 毕业设计系统需求分析-“大楼要有高低层、单双号电梯,要抗7级地震”-04

    有一座建筑,主楼88层,高度达到了420米,一共有79台电梯,能抗7级地震,88层观光厅对外开放,游客可以体验"云中漫步".想一想这是那座建筑? 我来说答案吧: 它就是入选2019 ...

  8. 美团外卖uml流程图_基于UML的外卖订餐系统需求分析

    基于 UML 的外卖订餐系统需求分析 目录 1. 系统概况 ........................................................ 3 2. 系统需求 ... ...

  9. 校园网服务器系统需求分析,校园网需求及分析.doc

    校园网需求及分析 校园网络规划与设计 一.毕业设计课题名称 校园网络规划与设计 二.毕业设计任务 1.需求分析 2.系统设计原则和实现目标 (1)网络系统设计原则.系统建设目标 (2)网络性能分析 3 ...

  10. 第一讲 嵌入式系统需求分析与体系结构设计

    好啦,大家时间都很宝贵,废话不多说,正式进入今天的主题,讲讲嵌入式系统需求分析与体系结构设计 1.1软件需求分析 描述了系统做什么的问题.主要完成以下要求: 确定软件系统的功能需求和非功能需求: 分析 ...

最新文章

  1. ThinkPHP子类继承Controller类的注意事项
  2. python抢红包脚本实例-这个Python脚本牛逼了,秒抢红包,再不怕错过一个亿了!...
  3. 统计apache404错误ip并加入iptables防火墙
  4. python一键安装包_Python一键安装全部依赖包
  5. 恍然小悟,去掉Excel的worksheet(工作表)保护的新方法
  6. .NET Core Community 首个千星项目诞生:CAP
  7. nssl1143,jzoj3493-三角形【排序,数学,几何】
  8. 少儿编程100讲轻松学python(十七)-pycharm如何配置python环境
  9. c++ for循环 流程图_python 零基础必知--条件控制与循环语句
  10. 使用python学线性代数_最简单的神经网络简介| 使用Python的线性代数
  11. 同步异步 阻塞 非阻塞 异步调用 线程队列 协程
  12. php5.5开发环境配置,windows下配置php5.5开发环境及开发扩展
  13. 闲来无事,仿了一个百度杀毒主界面
  14. redis的运行机制
  15. iOS开发——策略模式
  16. 机器学习-DBSCAN密度聚类
  17. DDR 参数 内存延迟时序“CL-tRCD-tRP-tRAS”
  18. ORB-SLAM2代码阅读笔记(一):从mono_kitti单目运行开始
  19. 新手怎么用word制作表格
  20. MySQL例题一 综合案例(多条件组合查询)

热门文章

  1. 无线局域网中RADIUS协议原理与实现
  2. 测量学9_计算机地图绘图基础及数字地图中DEM应用
  3. 磁共振成像原理-物理基础(质子在外部磁场的情况)
  4. java输出日志_Java日志打印方法
  5. matlab神经网络结果怎么看,matlab神经网络实验报告
  6. 英语在计算机专业的作用,计算机专业英语的重要性.doc
  7. 数据结构之时间复杂度的计算
  8. matlab2012教程答案,MATLAB教程2012a习题解答1-7章完整版-张志涌编-北航.doc
  9. python文本文件合并,python将多个文本文件合并为一个文本的代码(便于搜索)
  10. 15款Django开发常用软件包