ABSD(基于架构的软件设计)
1. 基础:功能分解、通过选择架构风格实现质量和业务需求、软件模版的选择。
2.过程:架构需求、设计、文档化、架构复审、实现、演化
4+1视图模型
1.通过多个视角,描述软件架构。
2. 4视角:逻辑视图,开发视图,进程视图,物理视图;1:场景视角。
逻辑视图描述有哪些功能模块;开发视图描述代码组织结构;进程视图描述功能模块间的通信和流转机制;物理视图描述部署相关内容。场景视角通过具体用例描述具体的功能和场景属性。
DSSA 特定领域软件体系结构
1. 领域分析:产出领域模型,即领域需求。
2. 领域设计:依据领域需求,设计解决方案。
3. 领域实现:根据领域设计,进行方案的落地。
软件架构的演化步骤:需求变化归类,制定体系结构演化计划,修改、增加、删除构件,更新构件的相互作用,构件组装和测试,技术评审。
架构评估方法
1. 分类:基于问卷调查或检索表、基于场景的方式、基于度量的方式。
2. 场景:场景是从风险承担者的角度对系统的交互的简短描述。在架构评估中,一般用刺激、环境、响应三方面来对场景进行描述。
3. SAAM:用于架构的最终版本。输入为:问题描述、需求声明、架构描述。步骤为:场景开发、架构描述、单个场景评估、场景交互、总体评估。
4.ATAM:对多个质量属性进行评价和折中。
5.CBAM:对架构设计的成本和收益进行建模和评估。
数据库
1. 事务的特性:原子性,持久性,一致性,隔离性。
原子性:都成功才算成功,只要有一个失败就回滚操作。
持久性:事务提交后,对数据的更改永久生效,即使系统奔溃也不会丢失。通过先写日志,后写磁盘实现。
一致性:数据符合预定义的业务规则。
隔离性:事务并发执行的时候,相互感受不到彼此对数据的更改。
2. 数据库设计范式
1. 1NF:属性具有原子性,即属性不可以再拆分。
2. 2NF:非主属性完全依赖主属性,而不是部分函数依赖。比如主键为复合主键AB,函数依赖关系为A -> C,则C部分依赖了主键,则不满足2NF。
3. 3NF:消除非主属性对主属性的传递依赖。比如A为主键,依赖关系为A -> B -> C,C可以间接通过A被找到,即对主属性有传递依赖。必须是直接依赖。
4. BCNF:消除主属性对候选码的函数依赖。即所有决定因素都是主属性。比如,主属性A,候选码B,通过B -> A则不符合BCNF。
OSI 模型
应用层 提供用户接口 http,DNS,FTP 浏览器,邮件
传输层 端到端传输数据 tcp,udp
网络层 ip寻址,路由选择 ip 路由器
数据链路层 MAC寻址 交换机
物理层 传输比特流 网线,光纤,集线器