需求模型-->领域模型-->设计模型-->实现模型

/ 技术相关 / 0 条评论 / 340浏览

需求模型之5w1h8c

  1. 需求VS功能 需求:客户想要的效果,对客户有价值的事情 功能:系统为了实现客户的价值而提供的能力/功能 举例: 汽车:驾驶是需求,刹车、加速、转弯是功能 打印机:打印是需求,进纸、设定、与电脑连接等是功能 pos机:买单是需求,商品扫描、金额汇总、收银等是功能
  2. 需求的重要性 1/3的项目失败或陷入困境是因为需求原因导致的 garbage in,garbage out 屎上了生产饼干的流水线,最后产出的是像饼干一样的屎 修复需求错误的问题成本极高
    • 编码阶段修复发现一个错误耗费人类是1个单位
    • 测试阶段修复需求错误的成本是5-10倍
    • 维护阶段(产品上线后),修复需求错误成本是20倍 ps:在需求阶段修复错误,成本只需要0.1-0.2即可 结论:需求错了,几乎要把软件项目重做一遍
  3. 需求分析的目的
    1. 记录员,记录客户的需求
    2. 分析员,和客户一起分析,完善需求
    3. 引导员,能够引导客户的需求
  4. 需求分析的方法 需求分析518方法,简称我要发,具体就是5w1h8c

5w:

when:用户想在什么时间用,例如半夜备份的任务,很明显我们得知该需求需要自动化执行 where:用户想在什么地方用,例如垃圾桶室内和室外的区别,同样的事物放到不同地方用肯定不一样 who:用户想让谁来用,不仅是人,也可以是一个系统 what:用户想要我们程序的输出结果是什么,如图片,文档,系统 why:问一问用户为什么要这么做,(你不问,他基本不说),包括客户所有觉得不爽的事情 ps:why是核心

1h:how

用例方法

8c:8个constraint约束

性能performance

性能是系统提供相应服务的效率。主要包括响应时间、吞吐量 性能是很多系统架构设计的关键约束条件之一 例如,同样一个web网站,虽然都是提供信息给用户流量,设计一个日访问量1w的网站与日访问量10亿的网站,二者的设计截然不同

成本cost

成本指为了实现系统而需要付出的代价 成本也是很多系统架构设计的关键约束之一 例如客户只愿意花100w,而我们却设计了一个耗费1000w的系统

时间time

指客户要求什么时候交付

可靠性reliability

指系统长时间正确运行的能力,银行、证券、电信这些公司,对宕机时间要求很严格

安全security

指对信息安全的保护能力,涉及到钱、身份证、社会保险号等需求对这个要求很高

合规性compliance

指满足各种行业标准、法律法规、规范等,例如3C、SOX、3GPP,ITUT

技术性technology

有的客户可能要求我们采用某种技术 例如客户现在都是windows服务器,要求我们基于windows平台开发

兼容性compatibility

指我们的产品与客户其他已有的产品或系统的兼容能力,要知道现在很少有产品是孤立运行的,特别是在大企业、大公司中,多个系统都是相互交互、互相配合的。新的系统必须能够和已有的系统配合,否则将无法运行 特别提醒:5w+1h属于功能属性 8c属于质量属性

写用例的技巧

三段法:NEA

  1. 正常处理(normal):分析正常流程
  2. 异常处理(exception):分析每一步异常情况和对应的处理
  3. 替代处理(alternative):分析每一步是否有其他替代方法,以及如何做

用例名称

一般情况下,用例名称即需求名称

2. 场景

场景即用例发生的环境,正好对应5w中的:when、where、who、

3. 用例描述

描述详细的用例内容,对应5w中的what和how 即用户应该怎样做,以及每个步骤中的输出,但不要求每个步骤都有一定的输出,可以有也可以没有,也可以有多个

4. 用例价值

描述用例对应的客户价值,对应5w中的why

5. 约束和限制

即真个需求流程中相关的约束和限制条件,对应518方法中的8C

领域模型

需求分析阶段不区分面向对象还是面向过程 领域模型是完成从需求分析到面向对象设计的一座桥梁 定义:领域模型是对领域内的概念或现实世界中对象的可视化表示,又称为观念模型、领域对象模型、分析对象模型 它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系

领域模型主要两个作用:

1. 发掘重要的业务领域概念
2. 建立业务领域概念之间的关系

归纳领域建模的方法:

三字诀:找名词、加属性、连关系。

找名词(找完后需要删除不是领域对象的名词,具体删除什么,与不同领域有关,没有统一标准,靠经验) 加属性(有些属性并没有在用例中明确给出,靠行业经验自己添加) 连关系(画UML图)

设计模型

面向对象类设计的具体步骤

第一步:领域类映射

类筛选:并不是每个领域类都会出现在软件中 名称映射:对应 属性映射:对应,照搬 提炼方法:领域类中并没有方法,在用例中找动词,并将他们映射成方法

第二步:应用设计原则和设计模式
第三步:拆分辅助类(领域类可以在实现阶段拆分为几个类)

实现模型

选取一种支持面向对象的语言实现我们的设计