系统架构完整实例⼀基本概念
UML:⽤例图,类图,对象图,活动图,序列图,状态图,组件图,部署图
业务⽤例,系统⽤例
ADMEMS架构体系五个视图:(前3个软件架构,后2个系统架构)
逻辑架构,关注功能需求,划分⼦系统,划分模块。⽤例图,流程图
开发架构,关注代码层次结构,程序包,sdk,第三⽅库,中间件等
运⾏架构,关注并发,同步,死锁等
物理架构,关注部署,⽹络结构,服务器等基础设施
数据架构,关注数据持久化,存储。分布式,复制,同步等问题
TOGAF架构体系:业务架构、数据架构、应⽤架构、技术架构
五视图法做架构设计的步骤是逻辑架构->数据架构->开发架构->运⾏架构->物理架构。⽤例图->流程图->领域建模->ER图->微服务->技术栈->并发->部署
领域建模⽅法:⽤例分析法,四⾊建模法,事件风暴法
⽤例分析法:名词,加属性,连关系
a.概念分类列表:⼈、事物、地点、组织、概念、事件、规则、抽象名词、交易项⽬、⾓⾊、设备、组织结构(对⽤例进⾏识别:实体、过程中的信息、⾓⾊的输⼊输出、操作设备等)
b.名词分析法:识别问题域和⽤例描述中的名词和名词性短语作为候选的概念类和属性,从候选项中,摒弃多余的名词,确定最终的对象(注意是作为类还是属性,类可以是⼀种标识、状态和⾏为)
四⾊模型
moment-interval(时标性原型):时标性原型是建模的起点,它代表着我们需要记录的,某⼀时刻发⽣的事件。例如订单,⾏程,会议。
party, place, or thing(⼈-事-物原型):⼀种有形的,可唯⼀识别的实体。可以是⼈、机构、地点、物品等。
role (⾓⾊原型):⾓⾊是party, place, or thing的⼀种参与⽅式。例如,在⼀份雇佣关系中,某个⼈扮演者雇员的⾓⾊。那么这个⼈就是”party, place, or thing”,雇员就是”role”。
description(描述原型):表⽰资料类型的资源,是⼀种类似⽬录条⽬的描述,⽤来对对象进⾏分类或标记,可以被其它原型反复使⽤。例如,⼀个商品的品牌、描述属性。
事件风暴
识别领域事件,按时间顺序,名词
识别领域命令,动词
寻聚合,归类
领域边界确认
数据库设计充⾎模型c++和贫⾎模型java
⾃顶向下,⾃底向上
⽔平拆分,垂直拆分
宗旨:层次清晰,可维护,可复⽤,可扩展
模式:企业架构模式,设计模式,SOA模式,企业集成模式
SOLID设计原则
⼆数据架构
1 ER图
矩形标识实体,相当与类图的类。椭圆标识实体的属性,下划线表⽰主键。菱形表⽰关系。1:N表⽰约束。双矩形表⽰弱实体,必须依赖其他实体才能存在。
3范式
1NF 第⼀范式是指数据库的每⼀列都是不可分割的基本数据项,强调列的原⼦性。下图不符合1NF
2NF  第⼆范式要求数据表每⼀个实例或者⾏必须被唯⼀标识。除满⾜第⼀范式外还有两个条件,⼀是表必须有⼀个主键;⼆是没有包含在主键中的列必须完全依赖于主键,⽽不能只依赖于主键的⼀部分。
3NF 若某⼀范式是第⼆范式,且每⼀个⾮主属性都不传递依赖于该范式的候选键,则称为第三范式,即不能存在:⾮主键列 A 依赖于⾮主键列 B,⾮主键列 B 依赖于主键的情况。
三技术选型
计算密集型任务的特点是要进⾏⼤量的计算,消耗CPU资源,⽐如计算圆周率、对视频进⾏⾼清解码等等,全靠CPU的运算能⼒。这种计算密集型任务虽然也可以⽤多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执⾏任务的效率就越低,所以,要最⾼效地利⽤CPU,计算密集型任务同时进⾏的数量应当等于CPU的核⼼数。计算密集型任务由于主要消耗CPU资源,因此,代码运⾏效率⾄关重要。Python这样的脚本语⾔运⾏效率很低,完全不适合计算密集型任务。对于计算密集型任务,最好⽤C语⾔编写。
IO密集型,涉及到⽹络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的⼤部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。对于IO密集型任务,任务越多,CPU效率越⾼,但也有⼀个限度。常见的⼤部分任务都是IO密集型任务,⽐如Web应⽤。I
O密集型任务执⾏期间,99%的时间都花在IO上,花在CPU上的时间很少,因此,⽤运⾏速度极快的C语⾔替换⽤Python这样运⾏速度极低的脚本语⾔,完全⽆法提升运⾏效率。对于IO密集型任务,最合适的语⾔就是开发效率最⾼(代码量最少)的语⾔,脚本语⾔是⾸选,C语⾔最差。
全栈开发语⾔:js可开发前端,移动端RN,桌⾯端electron,后端nodejs
python可开发桌⾯应⽤(PyQt、wxPython等),使⽤ kivy 开发安卓 APP,服务端(twisted等),web端(Django、Flask等),爬⾍(pyspider等),硬件stm32(PyBoard等)
四实例
⽤例分析实例
名词
who : 学员、讲师、管理员
⽤例:
1. 管理员 创建了 北京 和 上海 两个校区
2. 管理员 创建了 Linux \ Python \ Go 3个课程
3. 管理员 创建了 北京校区的Python 16期, Go开发第⼀期,和上海校区的Linux 36期 班级
4. 管理员 创建了 北京校区的 学员 ⼩晴 ,并将其 分配 在了 班级  python 16期
5. 管理员 创建了 讲师 Alex , 并将其分配 给了 班级 python 16期 和全栈脱产5期
6. 讲师 Alex 创建 了⼀条 python 16期的 上课纪录 Day6
7. 讲师 Alex 为Day6这节课 所有的学员 批了作业 ,⼩晴得了A, 李磊得了C-, 严帅得了B
8. 学员⼩晴 在 python 16 的 day6⾥ 提交了作业
9. 学员李磊 查看了⾃⼰所报的所有课程
10 学员 李磊  在 查看了 ⾃⼰在 py16期 的 成绩列表 ,然后⾃杀了
11. 学员⼩晴  跟 讲师 Alex 表⽩了
名词列表:
django项目实例
管理员、校区、课程、班级、上课纪录、作业、成绩、讲师、学员
加属性
连关系
有了类,也有了属性,接下来⾃然就是出它们的关系了。
具有业务意义,过去式,持续性

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。