09 软件架构设计
1.软件架构概述
定义 1:软件或计算机系统的软件架构是该系统的一个(或多个)结构, 而结构由软件元素、元素的外部可见属性及它们之间的关系组成。
定义 2:软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式及这些模式的约束组成。
定义 3:软件架构是指一个系统的基础组织,它具体体现在:系统的构件,构件之间、构件与环境之间的关系,以及指导其设计和演化的原则上。(IEEE1471- 2000)
“元素—结构—架构” 、软件架构与系统架构
重要性(4):项目关系人之间的交流平台、早期设计决策、较高层面上实现软件复用、指导和规范开发
架构模型(5):结构(侧重细节、核心:架构描述语言)、框架(侧重整体)、动态、过程、功能模型
4+1视图模型


2.软件质量特性(6):功能性、可靠性、易用性、效率、可维护性、可移植性等
可用性战术(3):错误检测(心跳)、错误恢复(主动冗余、被动冗余、备件)、错误预防(从服务中删除、事务、进程监视器)


可修改性战术(3):局部化修改(维持语义的一致性、预期期望的变更、泛化该模块、限制可能的选择)、防止连锁反应(信息隐藏、维持现有的接口、限制通信路径、仲裁者的使用)、推迟绑定时间(运行时注册、配置文件、多态、构件更换)

性能战术(3):资源需求(减少处理事件流所需的资源、减少所处理事件的数量、控制资源的使用)、资源管理(引入并发、维持数据或计算的多个副本、增加可用资源)、资源仲裁(先进/先出、固定优先级调度、动态优先级调度、静态调度)

安全性战术(3):抵抗攻击(身份验证、授权、机密性、)、检测攻击(入侵检测系统)、从攻击中恢复(恢复、识别攻击者)

可测试性战术(2):输入/输出(记录/回放,将接口与实现分离,优化访问线路/接口)、内部监控

易用性战术(3):运行时战术(任务的模型,用户的模型,系统的模型)、设计时战术、支持用户主动操作

3.软件架构风格(5):数据流(批处理序列,管道/过滤器)、调用/返回(主/子程序,层次结构,面向对象)、独立构件(进程通信,事件系统)、虚拟机(解析器,基于规则的系统)、仓库风格(数据库系统,超文本系统,黑板系统)
管道/过滤器风格

优点

缺点:

数据抽象和面向对象风格:SOA

优点:

缺点:

层次结构风格:c/s、b/s、mvc、mvp

优点:

缺点:

仓库风格-黑板系统(组成3):知识源、黑板数据结构、控制
面向服务的架构:SOA


SOA设计原则(5):明确定义的接口、自包含和模块化、粗粒度、松耦合、互操作性及兼容和策略声明。
SOA关键技术(3):UDDI(Universal DescriptionDiscovery and Integration,统一描述、发现和集成)、WSDL(Web ServiceDescription Language,Web 服务描述语言)、SOAP(Simple ObjectAccess Protocol,简单对象访问协议)
SOA的实现方法(3):Web Service、服务注册表、企业服务总线ESB

4.微服务
优势(7):技术异构性、弹性、扩展、简化部署、与结织结构相匹配、可组合性、对可替代性的优化
挑战(6):分布式系统的复杂度、运维成本、部署自动化、DevOps 与组织结构、服务间依赖测试、服务间依赖管理

5.编写文档规则(7):从读者的角度编写文档、避免出现不必要的重复、避免歧义、使用标准结构、记录基本原理、使文档保持更新,但更新频率不要过高、针对目标的适宜性对文档进行评审。
6.软件架构评估方法(分类3):基于调查问卷或检查表的方式、基于场景的方式、基于度量的方式
6.1架构的权衡分析法ATAM
步骤(9)


结果:

6.2成本效益分析法 (the Cost Benefit AnalysisMethod,CBAM)
步骤(8)

7.主流商用构件标准规范(3):CORBA (Common ObjectRequest Broker Architecture,公共对象请求代理架构)、J2EE、DNA 2000
8.产品线架构
产品线架构较之单个产品架构,有如下三点特别之处:
(1)产品线架构必须考虑一系列明确许可的变化;
(2)产品线架构一定要文档化;
(3)产品线架构必须提供“产品创建者指南”(开发指南),描述架构的实例化过程。
开发(确定)产品线的方法有两种模型:
(1)“前瞻性”产品线:利用在应用领域的经验、对市场和技术发展趋势的了解及商业
判断力等进行产品线设计,它反映了企业的战略决策。通常是自上而下地采用产品线方法。
(2)“反应性”模型:企业根据以前的产品构建产品家族,并随着新产品的开发,扩展
架构和设计方案,它的核心资产库是根据“已经证明”为共有、而非“预先计划”为共有的
元素构建的。通常是自下而上地采用产品线方法。
9.架构及系统演化

10. 软件视图(分类3)



















浙公网安备 33010602011771号