风险驱动软件设计学习笔记
2021-11-14 11:13:21 0 举报
AI智能生成
风险驱动软件设计
作者其他创作
大纲/内容
软件架构
定义:架构是系统的骨架,直接影响质量,约束整个系统
关注内容:软件元素,元素的相互关系,各种属性
需要场景:小的解空间(难度),高失败风险,质量属性,全新领域,产品线
架构类型:推定架构(行业参考) 参考架构
架构现状:无架构,选择架构,研发架构
架构分类:企业架构(基础架构),应用架构
风险驱动模型
步骤:识别风险制定优先级,选择技术改机,评估降低到特定程度
风险预估:失败概率*失败的影响
架构的度:为架构付出的努力与失败的风险相称
展开方式:演进式架构(边开发边架构),计划式架构(先规划后开发),最小化架构.方式取决于团队与系统
架构投入:小项目%5时间,大项目30%,特大项目40%时间
概念模型
概述
领域模型特点:领域模型,不可控,不变的事实
设计模型:边界模型(接口承诺),内部模型(内部实现)
代码模型:设计的实现
任何模型都有主模型:所有细节与主模型一致
领域模型
别名:概念模型,概要模型,抽象模型,表达领域细节
辅助手段:概念列表和定义
与设计模型关系:不涉及系统,与设计模型分离
具体说明:功能场景描述
设计模型
注意事项:不可能全面描述,用视图,封装,嵌套多角度说明
边界模型:系统的行为,系统与外部交互的数据,以及系统的质量属性,不考虑细节
内部模型:细节实现
代码模型
体现架构的编码
编码体现设计意图
模型
模型元素
部署元素
组件,就是可以独立部署系统
模块,功能相关
连接器
类型:本地过程,远程过程,sql,管道,共享内存,事件广播,企业总线,拉取数据,增量复制
模型关系
投影关系(视图)
视图解决两个问题:规模和复杂性
视图即需求
主模型
分割关系
被分割的合在一起组成整体,由小到大
组合关系
由整体分割成更小的部分
分类关系
按着类型来分
泛化关系
一个类型归到另一个类型
指定关系
细化关系
同一个东西有高细节低细节划分
开放和封闭的细化语义
嵌套
绑定关系
依赖关系
一个的变化会导致另一个的变化
使用关系
软件建模设计
团队配合:让每个人理解架构
设计工作量:合理架构,避免大量设计
避免自顶向下(产生小问题)
估算,识别风险,多个候选方案,重用模型
软件模型
现实实际映射模型,模型内设计,应用到现实世界
抽象规模和复杂度,提供出洞察力和解决手段
分析质量,忽略细节,增强推理
理解模型,编写模型,增强推理
提问在前,解决在后:首先明白解决哪些问题,用哪些手段,每个手段优劣
封装与分割
开发人员需要关心设计是否优雅
使用层级嵌套的方式来结构化系统
好处
更大规模
降低复杂性
手段
把系统分为分散的块
封装
帕纳斯模块
有可能变化的细节都被隐藏在模块内部
有多种方案,细节被隐藏
暴露数据结构是一个巨大的风险
模块和组件的边界或接口与内部的实现分开描述
创建封装
抽象数据类型ADT
把模块,接口,组件当做抽象数据类型
系统拆分策略
端口分割
组件使用端口与其他组件通信
功能分割
相关功能组合到一起
质量属性与属性驱动分割
小型系统关注功能
大型系统更多关注质量属性
典型类型
很独立模块,很少与其他模块主动联系
例如:权限
正交抽象
吧组件的职责转换到一个不同的领域
例如数据库,消息
组装拼图
已有的组件,新老系统并行,重用
架构风格
风格约束
风格约束集合
一致性和可理解性
沟通
设计重用
确保质量
风格分类
分层,通过层调用
管道,消息机制,端口
批量顺序处理
共享数据
对等
map-reduce
0 条评论
下一页