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建模设计模式笔记的更多相关文章

  1. 设计模式学习起点 UML类图笔记

    UML类图笔记 大学开设的软件设计课程一般都会学习UML类图,大部分关于设计模式的描述都是使用的UML类图,可以说类图的表示是学习设计模式的起点.UML定义类之间的关系主要有六种:泛化关系.实现关系. ...

  2. [时序图笔记] 步步为营UML建模系列五、时序图(Squence diagram)【转】

    概述 顺序图是一种详细表示对象之间以及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)以及它们之间可发送的消息组成,它强调消息之间的顺序. 顺序图是一种详细表示对象之间以及对象与系统外 ...

  3. UML建模:学习笔记(1)

    UML:学习笔记(1) 事物 结构事物 类: 接口: 协作:(定义元素之间的相互作用) 用例:(在系统外部和系统交互的人) 组件:(描述物理系统的一部分) 节点:(一个节点可以被定义为运行时存在的物理 ...

  4. UML建模学习1:UML统一建模语言简单介绍

    一什么是UML? Unified Modeling Language(UML又称为统一建模语言或标准建模语言)是国际对象管理组织OMG制定的一个通 用的.可视化建模语言标准.能够用来描写叙述(spec ...

  5. 为什么需要学UML建模

    今天在看<设计模式>的时候,看到了许多的UML模型图,案例中作者用极少的代码却能讲清楚讲好设计模式的背景和思想,抽象成一张张的UML图就能很好的review和复盘,这对于在工作中习惯用代码 ...

  6. Rose与PowerDesigner:两款UML建模工具的对比

    声明 本文转载自:Rose与PowerDesigner:两款UML建模工具的对比 正文 本文和大家重点讨论一下Rose与PowerDesigner:两款UML建模工具的对比,Rose和PowerDes ...

  7. UML建模文章总结

    一.为什么要学习UML UML是Unified Modeling Language(统一建模语言)的简称.UML是对软件密集型系统中的制品进行可视化.详述.构造和文档化的语言.制品{Artifact} ...

  8. EA UML 建模——类图

    Enterprise Architect(EA) 是一个功能比较强悍的建模工具,本篇文章仅使用其 UML 建模功能,其他更多功能,可以Google. 一.简单梳理C#中类与类.类与接口.接口与接口的关 ...

  9. PowerDesigner与UML建模应用

    一.   PD简介 PowerDesigner 是一个集所有现代建模技术于一身的完整工具,它集成了强有力的业务建模技术.传统的数据库分析和实现,以及UML对象建模.通过了元数据的管理.冲突分析和真正的 ...

随机推荐

  1. Windows内核进程管理器解析

    Windows内核是如何实现线程挂起的?如何实现线程挂载到进程的?如何实现杀死进程和线程的? 从源码分析一下,这些操作具体在源码上是如何实现的. 进程创建.线程切换.线程跨越CPU权限级.进程挂靠.杀 ...

  2. PHP完整的AES加解密算法使用及例子(256位)

    依赖PHP自身的mcrypt扩展 <?php class aes { // CRYPTO_CIPHER_BLOCK_SIZE 32 private $_secret_key = 'default ...

  3. Hadoop(四)HDFS的高级API操作

    一 HDFS客户端环境准备 1.1 jar包准备 1)解压hadoop-2.7.6.tar.gz到非中文目录 2)进入share文件夹,查找所有jar包,并把jar包拷贝到_lib文件夹下 3)在全部 ...

  4. int类中的方法

    我们知道在python中,一切对象都是类,对象的方法都封装在类中,现在来探讨一下int类中的方法: 我们可以通过help(int)和dir(int)来查看int类中都封装了那些方法:     1.bi ...

  5. python爬虫实战(四)--------豆瓣网的模拟登录(模拟登录和验证码的处理----scrapy)

    在利用scrapy框架爬各种网站时,一定会碰到某些网站是需要登录才能获取信息. 这两天也在学习怎么去模拟登录,通过自己码的代码和借鉴别人的项目,调试成功豆瓣的模拟登录,顺便处理了怎么自动化的处理验证码 ...

  6. 洛谷P1993 小K的农场 [差分约束系统]

    题目传送门 小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b ...

  7. 洛谷——P1330 封锁阳光大学

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

  8. 剖析ironic

    关键技术 在安装操作系统时需要存储介质来存储系统镜像.需要控制物理机开关机,在网络部署环境中还需要预启动环境. PXE (预启动环境) IPMI(电源管理) iSCSI(存储) 什么是PXE PXE( ...

  9. 简单机器学习人脸识别工具face-recognition python小试,一行代码实现人脸识别

    摘要: 1行代码实现人脸识别,1. 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片.其中每个人一张图片,图片以人的名字命名.2. 接下来,你需要准备另一个文件夹,里面是你要识别的图片.3 ...

  10. [ARC051D]長方形

    [ARC051D]長方形 题目大意: 给定\(A_{1\sim n}\)和\(B_{1\sim m}(n,m\le2000,|A_i|,|B_i|\le10^5)\),矩阵\(C_{i,j}=A_i+ ...