定义:软件架构是该系统的一个或多个结构,由元素,外部元素属性与之间的关系组成。
好处:复用、指导开发、降低成本。
模型:结构模型、动态模型
软件架构需求:满足功能属性的前提下关注于质量属性,架构设计原则是为满足架构需求导找战术。
软件架构质量:
1.运行期质量属性
性能:性能是指软件系统及时提供相应服务的能力。包括速度、吞吐量和持续高速性三方面
的要求。
安全性:指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力。
战术:
对用户进行身份验证:包括动态密码、一次性密码、数字证书及生物识别等;
对用户进行授权:即对用户的访问进行控制管理;
维护数据的机密性:一般通过对数据和通信链路进行加密来实现;
维护完整性:对数据添加校验或哈希值;
限制暴露的信息;
限制访问:如用防火墙、DMZ 策略。
检测攻击。一般通过“入侵检测”系统进行过滤、比较通信模式与历史基线等方法。
从攻击中恢复。
恢复:与可用性中的战术相同;
识别攻击者:作为审计追踪,用于预防性或惩罚性目的。
易用性:指软件系统易于被使用的程度。
可伸缩性:指当用户数和数据量增加时,软件系统维持高服务质量的能力。例如,通过增加
服务器来提高能力。
互操作性:指本软件系统与其他系统交换数据和相互调用服务的难易程度。
可靠性:软件系统在一定的时间内无故障运行的能力。
持续可用性:指系统长时间无故障运行的能力。与可靠性相关联,常将其纳入可靠性中。
鲁棒性:是指软件系统在一些非正常情况(如用户进行了非法操作、相关的软硬件系统发生
了故障等)下仍能够正常运行的能力。也称健壮性或容错性。
2.开发期质量属性
易理解性:指设计被开发人员理解的难易程度。
可扩展性:软件因适应新需求或需求变化而增加新功能的能力。也称为灵活性。
可重用性:指重用软件系统或某一部分的难易程度。
可测试性:对软件测试以证明其满足需求规范的难易程度。
可维护性:当需要修改缺陷、增加功能、提高质量属性时,定位修改点并实施修改的难易程
度;
可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。
管道过滤(数据流)
面向对像组织(构架就是对象)
事件驱动
分层:下层为上层提供服务
仓库系统与知识库(触发选择为黑板系统)
C2(并行构件网格)
CS
三层CS(多了一层逻辑层)
BS:浏览器模式
注意:自定义的为解析器
面向服务形式,将软件系统拆开不同的服务模块(子系统),各服务模块之间相互独立,通过数据总线或连接管理器进行互操作。
设计原则:
接口定义、模块化、服务粗粒度、松耦合、互操作性。
UDDI:提供了服务发布、查找、定位功能,数据模型(描述业务服务基于XML)、服务注册、API(查找发布数据模块基于SOAP)组成
WSDL:
SOAP:面向对象协议
REST:基于HTTP的rest风格pu get delete一切都是资源
ESB企业服务总线:所有的服务注册在总线上由总线提供数据传数、转换、注册发现。缺点服务都依赖ESB。
微服务:将软件系统拆为不同的小服务,各服务是独立的,可独自运行,不像ESB那样依赖性强,微服务耦合性低、简单,易部署,可组合、可替换。通过RPC通讯
演变交付生命
以架构为驱动,一方面在需求不了解前不做架构设计,别一方面不需要了解所有需求后架构,可根据少数重要、优先级高的指标质理需求架构。
先期搭建架构骨架,在骨架上迭代
属性驱动
根据约束、功能、质量需求分解成模块
根据质量场景、功能集合选择适合的因素架构,验证用例和质量场景并精益求精
按架构组织开发团队
架构分解好后将模块分给开发小组,开发小组要做到高内聚低耦合,交协调模块之间通讯
开发骨架系统
以架构以引导开发可运行的骨架系统,骨架完成后在上面增量开发直到系统完成
XXX架构设计说明书
(架构设计重点在于将系统分层并产生层次内的模块、阐明模块之间的关系)
一. 概述
描述本文的参考依据、资料以及大概内容。
二. 目的
描述本文编写的目的。
三. 架构设计
阐明进行架构设计的总体原则,如对问题域的分析方法。
3.1. 架构分析
对场景以及问题域进行分析,构成系统的架构级设计,阐明对于系统的分层思想。
3.2. 设计思想
阐明进行架构设计的思想,可参考一些架构设计的模式,需结合当前系统的实际情况而定。
3.3. 架构体系
根据架构分析和设计思想产生系统的架构图,并对架构图进行描述,说明分层的原因、层次的职责,并根据架构图绘制系统的物理部署图,描述系统的部署体系。
3.4. 模块划分
根据架构图进行模块的划分并阐明模块划分的理由,绘制模块物理图以及模块依赖图。
3.4.1. 模块描述
根据模块物理图描述各模块的职责,并声明其对其他模块的接口要求。。
3.4.2. 模块接口设计
对模块接口进行设计,并提供一定的伪代码。
XXX概要设计说明书
(概要设计重点在于将模块分解为对象并阐明对象之间的关系)
一. 概述
描述本文的参考依据、资料以及大概内容。
二. 目的
描述本文的编写目的。
三. 模块概要设计
引用架构设计说明书中的模块图,并阐述对于模块进行设计的大致思路。
3.1. 设计思想
阐明概要设计的思想,概要设计的思想通常是涉及设计模式的。
3.2. 模块A
3.2.1. 概要设计
根据该模块的职责对模块进行概要设计(分解模块为对象、描述对象的职责以及声明对象之间的接口),绘制模块的对象图、对象间的依赖图以及模块主要功能的序列图,分别加以描述并相应的描述模块异常的处理方法。
3.2.2. 模块接口实现
阐明对于架构设计中定义的模块接口的实现的设计。
XXX详细设计说明书
(详细设计重点在于对模块进行实现,将模块的对象分解为属性和方法,并阐述如何实现)
一. 概述
阐述本文的参考依据、资料以及大概内容。
二. 目的
阐述本文的编写目的。
三. 模块详细设计
3.1. 设计思想
阐述对模块进行详细设计的思想。
3.2. 模块A
3.2.1. 详细设计
根据模块概要设计详细描述对于模块内对象的实现,包括对象的职责、属性、方法、对象内功能的流程图、对象关联的类、对象的异常。(需要绘制的主要为类图)
性能、可靠性(健壮、容错),可变性、互操作性、安全性、功能、可用性
ATAM 基于权衡:场景和需求收集、体系结构视图和场景实现、属性模型构造和分
STAM基于架构:主要输入问题是问题描述、需求声明和体系结构描述
将软件系统拆解成功能单元,架构模块视图通过文档枚举主要实现的模块、及模块关系。
架构风格:
1.分解:大模块分解为小模块利于理解,用于项目结构化和规划,信息隐蔽、封装
2.使用:功能单元的正确性相互依赖,应用扩展设计
3.分层:上层使用下层的服务,实现隐藏细节抽像,应用于增量开发
4.类或泛华:面向对象的设计,类之间的关系如依赖
1.客户机-服务器:客户机和服务器做为构建,协议与共享数据为连接件,应用于分布式、负载均衡、关注点分离
2.进程:通过通信形成进程间的关系,应用于性能、调度
3.并发:应用于资源竞争
4.共享数据:性能、数据完整性、可修改性
将软件架构映射到真实环境的形式。
1.部署:可用性、安全性
2.实现:配置控制、测试活动
3.工作分配:项止管理、技术安排
信息安全技术
对称加密:DES(64位秘钥长度56)、IDEA(64位 秘钥长度128) 特点速度快,缺点秘钥管理复杂。IDEA快于DES
非对称加密:RSA,ECC
MD5散列:运算后的结果叫消息摘要,可以验证数据可靠性防篡改
数字签名
可以解决否认、伪造、篡改及冒充问题。可用对称非对称算法
实现方案:签名客户端软件、鉴定中心,公钥、私钥
数字水印:是一种版权保护办法,图像加盖水印限制
秘钥分配中心KDC
每个用户都只保存自己的私钥SK和KDC的公钥PK,再从KDC中获取其他用户的公钥或临时秘钥K。像HTTPS
例子:
假设A,B都是KDC的注册用户并都保存着自己的秘钥SKA、SKB,设用对称机密算法来加密他们之间的这次对话,秘钥分配过程如下:
1.A向KDC发送SKA(A,B)表示想与B通话,这个请求是用A的私钥加密的。
2.KDC接收请求后用A的公钥解密信息后验证请求是A发的,根据某种算法生成用于A,B会话的秘钥K,向A返回PKA(K,PKB(A,K)),此返回是用A公钥加密只有A私钥解密,解密后得到K并将PKB(A,K)发给B
3.B收到请求后因为用的是B的公钥机密的所以B用私钥解密得到K。
验证:验证用户身份
授权:授权可访问的资源
审记:记录用户使用网络资源的情况,如IP MAC
数据库安全
防止数据外泄、丢失、损毁。需要实现数据库安全的完整性、保密性、可用性。安全策略一般有用户管理、存取控制、数据加密、审计跟踪检测。
基于UML需求分析
用例图表示需求,确定执行者与用例,用例与用例的关系,形成用例图。
包图类图表示系统总体结构,从需求中提取关键概念生成领域模型。
用例内容:用例名称、参于执行者、前置条件、主事件流、辅事件流、后置条件
建立顶层架构
UML包是对类进行归类分组的一种机制。尽量减少包之前的依赖,低耦合
顶层设计
MVC、分层、复合多种架构样式。
考虑因素:
包数量:不宜太多或在少
包之间耦合度:包之间的依赖尽量简单、稀疏
稳定性:将不稳定的类抽出来放一个包中
安全、保密:根据安全保密来划分包的访问权限
物理网络拓扑:规划物量网络拓扑
1.用例图
从用户角色描述系统的功能。并指出功以的执行者。本质上是功能分解、支持领域建模、面向对象用例驱动。关系有:关联、扩展、泛化、包含
2.静态图
类图:描述系统静态结构,包括,继承、聚合、关联、依赖等关系
对象图:是类的实现,反应某一个时间内对象的活动
包图:描述系统的分解结构,继承、构成、依赖
3.行为图
交互图:顺序图(对象间消息发送时间序列)、合作图(对象间的状态协作)
状态:描述对象的状态行为
活动:描述系统某一项的执行操作序列,可以并发、同步,包含控制流和信息流,例如:
活动:动作状态、活动状态
泳道:根据活动的职责划分所有的活动,每个泳道带表一个责任区,所关心的是职责