软考高级系统架构师笔记
软件架构设计
概念
- 架构提供一个结构、行为和属性的高级抽象
- 架构风格是特定领域的惯用模式,架构定义一个词汇表和一组约束
- 架构是stakeholder交流的工具
- 是可传递和可复用的,可以预测软件的质量
- 有助于循序渐进的原型设计
4+1视图
- 逻辑视图: 给最终用户看的功能需求
- 开发视图:给开发人员看的
- 进程视图:给系统集成人员看的,性能分析等
- 物理视图:给系统工程人员看的,部署等
- 场景
UML的4+1视图
- 逻辑视图:分析人员,类与对象
- 实现视图:开发人员,组件
- 进程视图:系统集成人员
- 部署视图:运维人员
架构风格
- 数据流:batch, pipeline
- 调用/返回:子程序,oop, layer
- 独立构件:进程通信,event driven (隐式调用), 松耦合,消息队列
- 虚拟机:解释器,规则系统
- 仓库:db,以数据为中心
- 闭环:自适应巡航,温度控制
- C2: 分为构件和连接件
优缺点:
- 管道-过滤器
- 优点:模块可复用,可维护性和可扩展性强,具有并发性,模块独立性高
- 缺点:可交互性差
- 面向对象
- 优点:高度模块性,实现封装,代码共享性灵活,可维护性和可扩展性强
- 缺点:增加了对象之间的依赖关系
- 事件驱动
- 优点:容易实现并发处理多任务,可扩展性好,简化代码
- 缺点:削弱了对系统的控制能力,各个对象的逻辑复杂
- 分层风格
- 优点:支持系统设计过程中的逐级抽象,可扩展性好,复用性好
- 缺点:不同层次间耦合度高的系统很难实现
- 数据共享
- 优点:
- 缺点:只适合某些特定领域
层次架构
两层C/S --> 三层C/S --> 三层B/S --> 混合
- 两层C/S: 表示层和数据层
- 三层C/S: 表示层,逻辑层和数据层
- 三层B/S
- 表现层: MVC --> MVP --> MVVM
- 中间层
- 数据访问层
- 数据架构层
- 混合:C/S和B/S混合
MVC
J2EE中的例子:
- M: Entity Bean, Session Bean
- V: JSP
- C: Servlet M和V还是有一定耦合,状态更新时直接关联
MVP
P: Presenter, 实现了M和V的完全解耦
MVVM
VM: View Model, 双向绑定, js View: html, css M: Java
RIA
**RIA(Rich Internet Applications,富互联网应用)**是一种结合了传统桌面应用程序的响应性和Web应用程序的可访问性与易更新性的架构风格。它通过在客户端(通常是Web浏览器)运行富客户端应用程序,显著提升用户体验和应用性能。 一个典型的RIA应用是Google Docs,它允许用户在浏览器中像使用桌面应用一样编辑文档和表格,并支持实时协作,而无需刷新页面。
常用的RIA技术包括:
AJAX:通过XMLHttpRequest实现异步数据交互,提升界面响应性。
Flex:基于MXML和ActionScript开发企业级应用。
JavaFX:支持跨设备运行的Java技术。
Silverlight:微软推出的跨平台插件,支持多种编程语言。
SOA
服务,构件,对象
实现方式:Web Service, ESB
MDA
Model Driven Architeture
Model: 客观事物的抽象表示
3种核心模型
- 平台独立模型PIM
- 平台相关模型PSM
- Code
ADL
架构描述语言,Architecture Description Language 三个基本元素:构件,连接件,架构配置
DSSA
特定领域软件架构
基本活动:领域分析,领域设计,领域实现 参考的4种角色:领域专家,领域分析师,领域设计师,领域实现人员
ABSD
基于架构的软件开发方法,Architecture based software development
强调业务,质量和功能需求,有3个基础:
- 功能的分解
- 选择架构风格来实现质量和功能需求
- 软件模板的使用
用例用来描述功能需求,特定场景用来描述质量需求
6个子过程:
- 架构需求
- 架构设计
- 架构文档化
- 架构复审
- 架构实现
- 架构演化
架构评估
质量属性包括
- 性能:指系统的响应能力,即要经过多长时间对事件进行响应,或者在某断时间内完成事件的个数。
- 可靠性: 容错,健壮性
- 可用性:指系统能正常运行的时间比例。故障间隔时间
- 安全性:指在对合法用户提供正常服务的基础上,能够阻止非法用户入侵或拒绝提供服务的能力。
- 可修改性: 可维护性,可扩展,结构重组,可移植。指能以较高性价比对系统进行变更的能力。
- 功能性
- 可变性
- 互操作性
几个点:
- 敏感点:一个或多个构件的特性
- 权衡点:影响多个质量属性的特性,是多个质量属性的敏感点
- 风险点:潜在的、存在问题的架构决策所带来的隐患
- 非风险点:不会带来隐患
评估方法:
- 调查问卷或检查表
- 基于度量
- 基于场景
- SAAM, 软件架构评估法
- ATAM, 架构权衡分析法, 折中, 采用效用树来分析(只有4个属性,性能、可用性、安全性、可修改性)
- CBAM, 成本效益分析法
质量效用树:
- 效用
- 性能
- 可修改性
- 可用性
- 安全性
构件与中间件
构件的组装方式:
- 基于功能
- 基于数据
- 面向对象
构件组装失配的情况:
- 构件引起的
- 连接件引起的
- 由于系统成份对全局体系结构的假设存在冲突
三大构件标准:
- COBRA: 对象请求代理,对象服务,公共设施,应用接口,领域接口
- COM
- EJB: Session Bean, Entity Bean, Message Bean
生命周期
需求分析 --> 设计 --> 实现 --> 构件组装 --> 部署 --> 后开发
软件工程
软件开发方法
结构化 --> 面向对象 --> 面向服务
开发模型
- 瀑布
- 演化
- 增量
- 螺旋
- 原型
- 喷泉
- V模型: 测试贯穿始终
- 构件组装 CBSD
- RAD快速应用开发, SDLC + CBSD = RAD
- 统一过程
- 初始
- 细化: 设计及确定系统架构
- 构建
- 交付
- 敏捷
逆向工程
逆向工程是设计的恢复过程
- 实现级:抽象语法树,符号表,过程等
- 结构级:程序分量之间,调用图,结构图,数据结构
- 功能级:程序段之间
- 领域级:应用领域之间,实体关系模型
需求工程
DFD图:data flow diagram STD图: state transform diagram
软件系统建模
- 结构化建模方法
- 信息工程建模方法(数据库建模方法)
- 面向对象建模方法
系统设计
- 界面设计
- 软件设计
- 结构
- 数据
- 接口
- 过程
- 结构化设计
- 面向对象设计
数据库
三级模式和两级映像
三级模式
- 概念模式:所有数据的逻辑结构和特征的描述,只有一个
- 外模式:也叫子模式或用户模式,用户所关注的部分的逻辑结构
- 内模式:存储记录等,只有一个
两级映像:
- 逻辑独立性:概念模式变化时,不影响外模式
- 物理独立性:存储结构底部变化时,只要对内模式相应变化,不影响概念模式