•设计是一种创造性的过程,它考虑如何实现所有客户的需求; 设计所产生的计划也称为设计
•早期的设计专注于系统的体系结构
•后续的设计专注于如何实现单个的单元
•大部分设计工作是例程设计 (routine design), 通过对相似问题的解决方案进行复用和调整来解决当前问题 hhh很真实了
•软件体系结构也有一般性的解决方案, 称为体系结构风格
多种理解决策以及评估选择的体系结构的工具:设计模式、设计公约、创新设计、设计原则
概念
体系结构Architecture:一种软件解决方案,用于解释如何将系统分解为单元, 以及单元如何相互关联,还包括这些单元的所有外部特性。
设计模式design pattern:一种针对单个软件模块或少量模块而给出的一般性解决方案,它提供较低层次的设计决策。它是一个共同的设计结构的关键方面,包括对象和实例, 角色和协作,责任分配。
设计公约Design Convention:一系列设计决策和建议的集合,用于提高系统某方面的设计质量。当一种设计公约发展成熟时,将会被封装成设计模式或体系结构风格,最后可 能被内嵌为一种程序语言结构。
软件体系结构开发过程
建模:尝试可能的分解
分析:分析初步的体系结构
文档化:记录体系结构的决策
评审:检查体系结构是否满足需求
然后形成SAD 软件体系结构文档
•流行的设计方法:
–面向功能的分解
–面向特征的分解
–面向数据的分解
–面向进程的分解
–面向事件的分解
–面向对象的设计
•当系统的每个活动都仅由对应的软件单元实现,并且每个软件单元的输入和输出都已经明确地被定义时,设计才可以说是模块化的
•如果一个软件单元的接口能够准确无误地指定该单元的外部可见行为,则称该软件单元是定义明确的
模块化 以及 定义明确的概念?
•常见体系结构视图:
–分解视图
–依赖视图
–泛华视图
–执行视图
–实现视图
–部署视图
–工作分配视图
•体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
定义:软件体系结构风格是已经建立的、大规模的系统结构模式。
六种体系结构风格:
管道和过滤器、客户与服务器、对等网络、发布-订阅、信息库和分层
管道和过滤器,当输入数据经过一系列的计算和操作构件的变换形成输出数据时,可以应用这种体系结构。
管道/过滤器、批处理序列都属于数据流风格
•把系统任务分成为几个独立的功能模块。这些功能模块采用通过系统的数据流连接。
•在管道-过滤器风格下,每个功能模块都有一组输入和输出。功能模块称作过滤器(filters);功能模块间的连接可以看作输入、输出数据流之间的通路,所以称作管道(pipes)。
•管道-过滤器风格的特性之一在于过滤器的相对独立性,即过滤器独立完成自身功能,相互之间无需进行状态交互。
优点
•设计者可以将整个系统的输入、输出特性简单的理解为各个过滤器功能的合成。
•基于管道-过滤器风格的系统具有较强的可维护性和可扩展性
•支持一些特定的分析,如吞吐量计算和死锁检测等
•管道-过滤器风格具有并发性 、
缺点:
•交互式处理能力弱
•具体实现比较复杂
–数据流同步问题
–数据加密与解析
编译器的管道过滤器风格
课本没有
•层次结构风格
整个系统被组织成一个分层结构,每一层为上层提供服务,并作为下一层的客户。
实例:ISO网络体系结构
•优点:
–层次结构风格支持系统设计过程中的逐级抽象
–基于层次结构风格的系统具有较好的可扩展性
–层次结构风格支持软件复用
•缺点:
–并不是每个系统都可以很容易地划分为分层的模式
–很难找到一个合适的、正确的层次抽象方法。
•客户机/服务器(C/S)体系结构是基于资源不对等,且为实现共享而提出来的。
•C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络。
服务器提供服务,客户端通过请求应答协议访问服务
客户向服务器发送一个可执行的函数,乘坐回调callback
•优点:
–界面和操作可以很丰富
–安全性高
–响应速度快
•缺点:
–适用面窄
–用户群固定
–维护成本高
•B/S体系结构主要利用不断成熟的WWW浏览器技术,特别是浏览器嵌入的多种脚本语言
•B/S体系结构有三个主要组成部分:浏览器、 Web服务器、数据库服务器。
•优点:
–维护和升级方式简单
–交互性较强
•缺点:
–在速度和安全性上需要花费巨大的设计成本
–通常需要刷新页面(Ajax等可以一定程度缓解该问题)
通信开销大
•体系结构风格只能实现一般意义上良好的性质。为了保证对特定属性的支持,具体的策略将被使用:
–可修改性
–性能
–安全性
–可靠性
–健壮性
–易使用性
–商业目标
•故障树分析方法在系统可靠性分析、安全性分析和风险评价中具有重要作用和地位。既可用于定性分析又可定量分析。
•在故障树分析中,对于所研究系统的各类故障状态或不正常工作情况统称为故障事件。与故障事件对应的是成功事件。两者均称为事件。
•故障树是一种为研究系统某功能故障而建立的一种倒树状的逻辑因果关系图
特点
•是一种图形演绎法,是故障事件在一定条件下的逻辑推理方法,可针对某一故障事件,作层层追踪分析(自上而下);
•这种图形化的方法清楚易懂,使人们对所描述的事件之间的逻辑关系一目了然,而且便于对各种事件之间复杂的逻辑关系进行深入的定性和定量分析;
•由于故障树将系统故障的各种可能因素联系起来,可有效找出系统薄弱环节和系统的故障谱,在系统设计阶段有助于判明系统的隐患和潜在故障,以便提高系统的可靠性;
•故障树可作为管理和维修人员的一个形象的管理、维修指南,可用于培训使用、维修和管理人员,可用来制订维修计划和检修排故方案
(1) 选择顶事件。据工程实际需要选择合理的顶事件
(2) 建立故障树
(3) 故障树的定性分析
a) 故障树的简化
b) 求最小割集
(4) 故障树的定量分析
a) 求顶事件的发生概率
b) 重要度分析
(5) 确定设计上的薄弱环节(找出问题所在)
(6) 采取措施,提高产品的可靠性和安全性
常用事件和符号
注意中间和顶部 是 举行
底部是圆形,其余用不太到
故障树=》最小割集树 本质上就是 逻辑表达式的运算
这个A1 G5 就是
G1 = G2 * G3 = (G4G5) * (A4A5) = (A1+A2 )*(G5)
故障树的定量计算
利用最小割集计算事件发生的概率
•SAD 应该包含的信息:
–系统综述
–视图
–软件单元
–分析数据和结果
–设计合理性
–定义,术语表,缩写词