高级需求分析UML建模设计模式笔记
1.REQ->HLR 分析 全系统性质->AD设计 Context,BOM,Conception
2.REQ->LLR 分析 模块分析->DD设计 + 编码 Feature,BRM,UC,UCD
3.DD设计->代码结构设计 模块内 30个功能 ->类/序列图设计,反射/继承/接口/设计模式/实体类/抽象/配置文件 代码结构设计: 设计目标:正确性目标-> 功能性需求目标:代码结构能够实现全部业务要求 非功能性需求目标:
复用性:避免代码冗余
可扩展性:满足全部 业务功能 <->Feature 可变性要求
安全性:加密,身份认证,验证,授权,XSS
性能:秒钟计算,内存缓存
代码稳定性:代码结构设计后代码平均每一个月的重构次数; 分类->封装类
根据业务+单一职责
30Featrue ->30类
Featrue->类/公有方法/私有方法 不须要根据业务设计
领域模型:实体数据 UC->KPC 关键功能点->公有方法 接口设计/基类的设计/抽象类/复用设计/继承/委让 1.接口设计原则:
a.用于模块功能暴露,多用于模块间
b.接口定义纯虚,全部实现必须有个性实现
c.接口传入參数与传出參数尽量避免使用基本数据类型
d.接口传參应尽量使用领域模型[实体数据]
e.接口名称应尽量使用业务名称
f.接口定义应由自身模块定义,不能由调用方决定,自治
FindData(ID)
FindData(ID,Date) 假设加入请调用方自己加入日期解析
g.接口最小化/接口单一,通过组合复用进行接口复合调用 2.基础类与继承的设计:
Class:基础类的最经常使用形式,无法强制子类个性化实现
Abstract Class: Class继承代码复用,定义纯虚
Interface : 无法代码复用,继承树,完整被暴露到外部 继承与委让/复用设计:代码复用
使用委让进行代码复用 可扩展性设计:
1.分析Featrue可变性,共性
2.设计BaseClass,共性定义在基类中,可变性通过纯虚定义在子类里,设计出继承体系/继承树
3.全部调用方,调用基类,不能直接调用子类
4.通过多态,由基类调用到子类
5.定义Factory,完毕多态过程
6.多态业务逻辑定义在xml文件 依赖倒置原则:
调用方应该调用抽象或者基类,而不是调用子类 里氏替换原则:
检验可扩展性的继承树是不是有效 类的划分:
信息专家:业务逻辑类Service
数据实体:保存数据 Entity结尾
创建者:可扩展性设计 Factory
管理者:管理模块内的全部的类,Manager/缓存数据实体)
边界类:接口实现Imp
界面类: View
控制器: Control 具体设计的实践原则:
1.分析Featrue,BRM(活动图)
2.分析细节需求
3.根据设计核心原则[根据封装+单一职责原则,从Featrue->类的划分]
4.分析细节需求->方法的定义
5.分析BRM->类间关系定义
6.根据GRASP设计原则,将类划分成7大类别
7.分析Feature可变性,逐一分析
8.根据Feature可变,分析共性与特性,共性形成继承基类,特性形成了子类,完毕继承树设计,根据开闭原则
9.改动调用方调用基类,根据的是依赖倒置原则
10.定义Factory+xml 实现扩展设计
11.根据里氏替换原则,验证继承树调用过程中是否存在风险
12.复用性设计
13.逐一分析Featrue,须要对外提供訪问,设计为接口 根据[接口设计实践原则,接口最小原则]
14.通过设计模式改良设计
15.完毕类图设计
16.完毕序列图(时序图)设计
17.进行团队间具体设计评审
18.形成具体设计文档
19.未来应不断监控设计的变更,由需求导致设计的重构[採用72种重构方法,进行可扩展性重构] 规范
创建性设计模式:
抽象工厂模式:不直接New来生成类的实例
原型模式:
Builder模式:
Singleton单例模式: 结构性模式
面板模式:复杂过程的封装 能够跨类调用
适配器模式:对于外部组织封装 不能够跨类调用
装饰器模式:就是根据配置文件进行for调用不同的清洗方法
代理模式:典型的webserver调用
高级需求分析UML建模设计模式笔记的更多相关文章
- 设计模式学习起点 UML类图笔记
UML类图笔记 大学开设的软件设计课程一般都会学习UML类图,大部分关于设计模式的描述都是使用的UML类图,可以说类图的表示是学习设计模式的起点.UML定义类之间的关系主要有六种:泛化关系.实现关系. ...
- [时序图笔记] 步步为营UML建模系列五、时序图(Squence diagram)【转】
概述 顺序图是一种详细表示对象之间以及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)以及它们之间可发送的消息组成,它强调消息之间的顺序. 顺序图是一种详细表示对象之间以及对象与系统外 ...
- UML建模:学习笔记(1)
UML:学习笔记(1) 事物 结构事物 类: 接口: 协作:(定义元素之间的相互作用) 用例:(在系统外部和系统交互的人) 组件:(描述物理系统的一部分) 节点:(一个节点可以被定义为运行时存在的物理 ...
- UML建模学习1:UML统一建模语言简单介绍
一什么是UML? Unified Modeling Language(UML又称为统一建模语言或标准建模语言)是国际对象管理组织OMG制定的一个通 用的.可视化建模语言标准.能够用来描写叙述(spec ...
- 为什么需要学UML建模
今天在看<设计模式>的时候,看到了许多的UML模型图,案例中作者用极少的代码却能讲清楚讲好设计模式的背景和思想,抽象成一张张的UML图就能很好的review和复盘,这对于在工作中习惯用代码 ...
- Rose与PowerDesigner:两款UML建模工具的对比
声明 本文转载自:Rose与PowerDesigner:两款UML建模工具的对比 正文 本文和大家重点讨论一下Rose与PowerDesigner:两款UML建模工具的对比,Rose和PowerDes ...
- UML建模文章总结
一.为什么要学习UML UML是Unified Modeling Language(统一建模语言)的简称.UML是对软件密集型系统中的制品进行可视化.详述.构造和文档化的语言.制品{Artifact} ...
- EA UML 建模——类图
Enterprise Architect(EA) 是一个功能比较强悍的建模工具,本篇文章仅使用其 UML 建模功能,其他更多功能,可以Google. 一.简单梳理C#中类与类.类与接口.接口与接口的关 ...
- PowerDesigner与UML建模应用
一. PD简介 PowerDesigner 是一个集所有现代建模技术于一身的完整工具,它集成了强有力的业务建模技术.传统的数据库分析和实现,以及UML对象建模.通过了元数据的管理.冲突分析和真正的 ...
随机推荐
- POJ 3159 Candies(差分约束+spfa+链式前向星)
题目链接:http://poj.org/problem?id=3159 题目大意:给n个人派糖果,给出m组数据,每组数据包含A,B,C三个数,意思是A的糖果数比B少的个数不多于C,即B的糖果数 - A ...
- 三十分钟理解计算图上的微积分:Backpropagation,反向微分
神经网络的训练算法,目前基本上是以Backpropagation (BP) 反向传播为主(加上一些变化),NN的训练是在1986年被提出,但实际上,BP 已经在不同领域中被重复发明了数十次了(参见 G ...
- 渗透常用SQL注入语句合集
1.判断有无注入点; and 1=1 and 1=2 2.猜表一般的表的名称无非是admin adminuser user pass password 等..and 0<>(select ...
- Eolinker——前置用例返回的reponse值进行传递
如下补充均是Eolinker的文档中未说明的部分 示例:将login接口reponse中的mobile的值作为参数,传递给”重置密码”的请求体“code" 1.打开”前置用例“,先点击左上角 ...
- 2017-2018-1 20179202《Linux内核原理与分析》第二周作业
本周着重学习了汇编指令,并通过反汇编C程序了解栈帧变化. 实践 看了孟老师的演示视频后,我重新写了C程序,如下: int main() { int a=1,b=2; return g(a,b); } ...
- Wannafly挑战赛7 D - codeJan与青蛙
codeJan喜欢观察世界.有一天,codeJan发现一个非常奇怪的现象.有一些年轻的青蛙聚集在一条直线上的某些位置上,同一个位置可能有多个青蛙.这些青蛙每次只会向前跳一米,并且每只青蛙每跳一次都会发 ...
- Linux check whether hyperthreading is enabled or not
There parameters need to be obained: no. of physical CPU; no. of cores on each CPU; no. of all threa ...
- nyoj 737 石子合并 http://blog.csdn.net/wangdan11111/article/details/45032519
http://blog.csdn.net/wangdan11111/article/details/45032519 http://acm.nyist.net/JudgeOnline/problem. ...
- NOIP2017 D1T2时间复杂度
这道题在考试时看到感觉与第一题放反了位置(因为我还没有看到第一题是结论题) 对于每个语句进行栈的模拟,而如果有语法错误就特判. 对于每一条for语句我们将其与栈顶元素连边,复杂度是1的我们不用考虑,如 ...
- [BZOJ4869][六省联考2017]相逢是问候(线段树+扩展欧拉定理)
4869: [Shoi2017]相逢是问候 Time Limit: 40 Sec Memory Limit: 512 MBSubmit: 1313 Solved: 471[Submit][Stat ...