- 用例之间的关系有泛化、包含和扩展
- 类之间的关系有关联 , 聚合 , 组合 , 依赖 , 泛化
- 实时系统是指向系统发出一指令后 , 在一个极短时间内系统回复结果
- 实时系统的特性 : 时间约束性(及时性) , 可预测性 , 高可靠性 , 与外部环境交互作用性 , 多任务类型 , 约束的复杂性 , 具有短暂超载的特点
- 架构所关注的质量属性主要包括 : 性能 , 可用性 , 可修改性 , 安全性
- 性能 Performance : 是指系统的响应能力 , 即需要经过多长时间才能对某个事件作出响应 , 或者在某段时间内所能处理的事件的个数
- 可用性 Availability : 是系统能够正常运行的时间比例 , 经常用两次故障之间的时间长度或者在出现故障时系统能够恢复正常的速度来表示
- 安全性 Security : 是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或者拒绝服务的能力 , 安全性又可划分为机密性 , 完整性 , 不可否认性及可控性等特性
- 可修改性 Modifiability : 是指能够快速地以较高的性能价格比对系统进行变更的能力 , 通常以某些具体的变更为基准 , 通过考察这些变更的代价衡量可修改性
- 架构评估方法主要从SAAM 和 ATAM 中选择
- SAAM评估方法的目的是验证基本的体系结构假设和原则 , 评估体系固有的风险
- SAAM评估参与者 风险承担者 , 记录人员 , 软件体系架构设计师
- SAAM 分析评估体系结构的过程包括六个步骤 , 即形成场景 , 描述体系结构 , 场景的分类和优先级确定 , 间接场景的单个评估 , 场景相互作用的评估 , 总体评估
- SAAM 评估把代表了未来可能做的更改的场景与架构对应起来 , 显现出架构中未来可能会表现出较高复杂性的地方 , 理解系统的功能 , 对多个架构所支持的功能和数量做比较
- ATAM 的目的是依据系统质量属性和商业需求评估设计决策的结果 , ATAM 希望揭示出架构满足特定质量目标的情况 , 使我们更清楚地认识到质量目标之间的联系 , 即如何权衡多个质量目标
- ATAM参与者 , 评估小组 , 项目决策者 , 架构涉众
- ATAM 评估过程包括九个步骤 , 描述ATAM方法 , 描述商业动机 , 描述体系结构 , 确定体系结构方法 , 生成质量属性效应树 , 分析体系结构方法 , 讨论和分级场景 , 描述评估结果 , 其中分析体系结构方法出现两次
- 设计模式分类 创建型模式 , 结构型模式 , 行为型模式
- 创建型模式抽象了实例化过程 , 它们帮助一个系统独立于创建 , 组合和表示它的那些对象 , 如 工厂方法 , 抽象工厂 , 生成器 , 原型 , 单例模式
- 结构型模式涉及到如何组合类和对象以获得更大的结构 , 结构型模式包括适配器 , 桥接 , 组成 , 装饰 , 外观 , 享元 , 代理
- 行为模式涉及到算法和对象间职责的分配 , 行为模式不仅描述对象或类的模式 , 还描述它们之间的通信模式 , 观察者 , 策略
- 微服务的基本思想在于考虑围绕业务领域组件来创建应用 , 这些应用可独立地进行开发 , 管理和加速 , 在分散的组件中使用微服务云架构和平台使部署 , 管理和服务功能交付变得更加简单
- 应用服务器是应用设计 , 开发 , 部署 , 运行 , 管理 , 维护的平台 , 应用服务器既是应用开发的平台 , 包括表示层 , 应用层和数据层的设计模式和编程环境 , 同时又是多层结构应用的部署运行平台
- 设计阶段 , 应用服务器完成底层通信 , 服务 , 并屏蔽掉复杂的底层技术细节 , 向用户提供结构简单 , 功能完善的编程接口 , 让用户可以专心于商务逻辑的设计
- 开发阶段 , 应用服务器提供了完全开放的编程语言和应用接口 , 同时提供快速开发的工具和手段, 帮助用户提高开发效率
- 部署阶段 , 应用服务器提供了对多种网络环境的支持 , 帮助用户在复杂的网络环境中配置系统参数 , 发挥系统最大性能
- 运行阶段 , 应用服务器基于开发技术标准 , 提供了系统的运行环境 , 以及系统的名字解析 , 路由选择 , 负载平衡 , 事务控制等服务 , 并提供系统容错 , 修复 , 迁移 , 升级扩展等功能
- 管理阶段 , 应用服务器提供图形化界面来管理整个系统的资源 , 而且系统在运行期间也能动态监控和管理
- NoSQL 支持高并发数据访问 , 性能较高
- NoSQL 的数据存储结构松散 , 能够灵活支持多种类型的数据格式
- NoSQL 能够支持海量数据的存储 , 且易于横向扩展
- NoSQL 基于分布式数据存储 , 不存在单点故障和性能瓶颈 , 系统可用性高
- NoSQL 现有的产品不够成熟 , 大多数产品处于初创期
- NoSQL 并未形成一定的标准 , 产品种类繁多 , 缺乏官方支持
- NoSQL 不提供对SQL的支持 , 学习和应用迁移成本较高
- NoSQL 数据库支持的特性不够丰富 , 现有产品提供的功能比较有限
- 分布式基础设施为构建分布式系统所提供的基础支撑 : 以下三条
- 构件管理支持 : 现有分布式基础设施一般通过构件容器为构件提供基本的运行环境 , 具体 功能一般包括管理构件的实例极其生命周期 , 管理构件的元信息等
- 互操作支持 : 现有分布式基础设施均提供了高层通信协议以屏蔽节点的物理特性以及各节点在处理器 , 操作系统 , 程序设计语言等方面的异构性 , 基于互操作支持 , 开发人员在开发与调用分布式对象时 , 军不惜要自己编写处理底层通信的代码
- 公共服务支持 : 现有分布式基础设施通常将针对分布式软件的通用支持集成于一身 , 以公共服务的形式提供给应用程序 , 其提供的常见的公共服务包括 , 命名服务 , 事务服务 , 安全服务 , 持久性服务等
- 在嵌入式系统中 , 软件采用开放式架构已经成为新的发展趋势 , 软件架构设计的优劣将直接影响软件的重用和移植能力
- 开放架构应具有以下四个基本特点
- 可移植性 : 各种计算机应用系统可以在具有开放架构特性的各种计算机系统间进行移植
- 可互操作性 : 如计算机网络中的各个节点机都具有开放架构的特性 , 则该网上各节点机间可互操作和资源共享
- 可裁剪性 : 如某个计算机系统是具有开放架构特性的 , 则在该系统的低档机上运行的应用系统应能在高档机上运行 , 原在高档机上运行的应用系统经裁剪后也可在低档机上运行
- 易获得性 : 在具有开放架构特性的机器上所运行的软件环境易于从多方获得 , 不受某个来源控制
- 企业信息化规划的内容
- 企业信息化规划不仅涉及到信息系统规划 , 同时与企业规划 , 业务流程建模等紧密相关 , 是融合企业战略 , 管理规划 , 业务流程重组等内容的 “业务 + 管理 + 技术” 的活动
- 企业信息化规划设计到业务流程重组和信息资源规划 , 信息技术战略规划 , 信息系统战略规划和企业战略规划等多个领域 , 所有的规划都应该围绕企业关键目标的实现而展开 , 并未企业目标的实现提供支持和必须的服务
- 进行信息化规划时 , 需要做好以下五个方面的工作
- 明确发展目标和实施重点
- 成立领导机构
- 做好企业业务信息化需求分析
- 确定企业信息化不同发展阶段的投资预算
- 制定必要的促进企业信息化建设的规章制度
- 采用ABSD方法进行软件开发时 , 需要经历架构需求 , 架构设计, 架构文档化 , 架构复审 , 架构实现和架构演化六个阶段
- 架构需求 : 明确用户对目标软件系统在功能 , 行为 , 性能 , 设计约束等方面的期望 , 其主要活动包括需求获取 , 标识构件 和架构需求评审
- 架构设计阶段是一个迭代的过程 , 利用架构需求生成并调整架构决策 , 主要活包括提出架构模型 , 将已标识的构件映射到架构中 , 分析构件之间的相互作用 , 产生系统架构和架构设计评审
- 架构文档化的主要活动是对架构设计进行分析和整理 , 生成架构规格说明书和测试架构需求的质量设计说明书
- 在一个主版本的软件架构分析之后 , 需要安排一次由外部人员参加的架构复审 , 架构复审需要评价架构是否能够满足需求 , 质量属性需求是否在架构中得以体现 , 层次是否清晰 , 构件划分是否合理等 , 从而标识潜在的风险 , 及早发现架构设计中的缺陷和错误
- 架构实现主要是对架构进行实现的过程 , 主要活动包括架构分析与设计 , 构件实现 , 构件组装和系统测试
- 架构演化阶段主要解决用户在系统开发过程中发生的需求变更问题 , 主要活动包括架构演化计划 , 构件变动 , 更新构件 , 构件的组装与测试和技术评审
- 在软件开发过程中可能遇到的问题包括
- 在架构需求获取过程中如何对捕获的架构需求进行筛选和优先级排序
- 在架构复审过程中如何解决评审人员的意见不一致问题
- 在架构实现过程中如何根据项目组实际情况选择开发语言与开发平台
- 在架构演化过程中如何筛选并处理用户需求变更等