一. 软件体系结构的描述方法
概念:
软件体系结构由一定形式的结构化元素组成,即是构件的集合,处理构件负责加工数据,数据构件代表被加工的信息,负责连接组合不同的构件。
软件体系结构描述的基本原则:
从读者的角度撰写、避免不必要的重复、避免歧义、使用标准组织结构、保持文档时效性、记录理由、审查文档是否符合需求。
二、软件结构体系建模:
1、视图的概念:
是一组架构元素及其关联关系的表示;绑定了体 系结构描述时感兴趣的元素类型和关系类型,并显示了 他们;是一种复杂的管理方法。
视图的类型:
分解视图、使用视图、分层视图、类/泛化视图、进程视图……
2、由视图从而建立起基于视图的体系结构建模规范,如下:
- 逻辑视图:支持行为要求。关键抽象,是对象或对象类。
- 过程视图:解决并发和分发。将线程映射到对象。
- 开发视图:组织软件模块,库,子系统,开发单元。
- 物理视图:将其他元素映射到处理和通信节点。
- 用例视图:将其他视图映射到重要的用例(这些用例被称为场景)上对体系结构加以说明
以上就是Rational公司于1995年提出的“4+1“的用于体系结构描述的模型。
3、”4+1“中各个视图的作用:
- 逻辑视图:描述系统各部分的抽象描述。通常包括类图,对象图,状态图与协作图。
- 过程视图:描述系统中的进程。通常包含活动图
- 开发视图:描述系统的各部分如何被组织为模块与组件。通常包含包图与组件图
- 物理视图:描述如何将前三个视图中所述的系统设计实现为一组现实世界中的实体。通常包含部署图。
4、UML中基本构件:
- 用例图:代表了系统的外部视图,用于显示若干角色以及这些角色与系统提供的用例之间的连接关系。
- 类图:系统静态结构的描述,记录属性与方法还有类鱼类之间的关系:依赖、聚合、组合、泛化、实现。
- 对象图:类图的实例化,很多情况下可以使用类图精确的定义结构,但是该结构仍旧难以理解,这些情况下,对象图有利于理解。
- 状态图:擅长描述对象在多个用例中的行为,是描述类的对象所有可能的状态以及事件发生时状态的转移条件。
- 协作(通信)图:发送和接受消息的对象之间的组织结构。
- 序列图:反映对象交互的一种方式。按照交互的一系列顺序来展示交互。
- 活动图
- 包图
- 部署图:定义软硬件的物理结构
三、软件质量属性
1、软件的质量属性通常包括一下几个方面:
- 可用性
- 可修改性
- 性能
- 安全性
- 可测试新
- 易用性
可用性
概念:当用户使用系统时 系统可用的概率
响应衡量指标:故障时间百分比,修复故障所用时间。
提升可用性策略:
1、故障检测(ping/echo发送pign,根据收到的echo消息来做出响应,编程语言的抛出-捕获-处理的异常处理机制)
2、故障恢复:多平台开发、主动冗余、被动冗余
3、 故障避免:服务下线
可修改性
关注点:修改成本、哪些被修改、修改持续时间
衡量指标:修改完成时间、所花的人力成本、经济成本。
两个方向:限制修改范围、延迟绑定时间
几个策略:
- 模块高内聚、低耦合;
- 考虑可能会发生的修改;
- 让模块通用;
- 使用中介,共享数据;
- 名命服务器,解决位置依赖;
- 按需创建实例;
- 多态
…………
性能
关注点:响应速度
响应的衡量指标:处理所花的时间,单位时间处理事件的数目、处理的错误率/丢失率
提升性能的策略:
- 处理数据量不变的情况下,提高计算效率。
- 限制执行时间
- 限制待处理事件的队列长度
- 利用并发机制
- 增加可用资源(茹计算资源、存储资源、带宽资源)
- 先来先服务
- 固定优先级
安全性
关注点:在保证合法用户使用系统前提下,抵抗对系统的攻击。
响应衡量指标:发起攻击难度,从攻击中恢复的难度。
提升安全策略的方向:抵抗攻击、检测攻击、从攻击中恢复
具体各个方向的方法:
- 用户的证实(密码,验证码)
- 用户的授权(微信登录小程序的授权)
- 维持数据的保密性
- 减少暴露,限制访问
- 入侵检测系统
- 攻击者识别
可测试性
方向:黑盒测试、白盒测试
提升可测试性的策略:
- 黑盒测试:记录/回放、接口与实现分离、提供专用测试路径
- 白盒测试:内部监控
常用测试工具:JMeter(接口测试、性能测试)、selenium(web UI测试器)
易用性
衡量指标:用户满意度,用户操作成功率。