软件架构设计

200 阅读5分钟
  • 软件架构概述
    • 架构定义:架构是对系统的抽象、架构由多个结构组成、任何软件都存在架构、元素及其行为的集合构成架构的内容、架构具有"基础性"、架构隐含有"决策"
    • 软件架构的重要性:项目关系人之间的交流平台、早期设计决策中架构明确了系统实现的约束条件、架构影响这系统的质量属性、架构为维护的决策提供根据、在较高层面上实现了软件复用、架构对开发的指导与规范意义不容忽略
    • 架构的模型:结构模型、动态模型、框架模型、过程模型、功能模型
    • 4+1视图模型:最终用户->逻辑视图、编程人员->开发视图、系统集成人员->进程视图、系统工程人员->物理视图 、 场景视图
  • 架构需求和质量属性
    • 软件的质量属性:运行期质量属性、开发期质量属性
    • 一般质量属性:可用性、可修改性、性能、安全性、可测试性、易用性
    • 质量属性场景:刺激源、刺激、环境、制品、响应、响应度量
    • 可用性:错误检测、错误恢复、错误预防
    • 可修改性:局部化修改、防止连锁反应、推迟绑定时间
    • 性能:资源需求、资源管理、资源仲裁
    • 安全性:抵抗攻击、检测攻击、从攻击中恢复
    • 可测试性:输入/输出、内部监控
    • 易用性:运行时战术、设计时战术、用户主动操作
  • 软件架构风格
    • 一个架构定义了一个词汇表和一组约束
    • 词汇表:一些构件和连接件类型,约束:将构件和连接件组合起来
    • 软件架构风格分类:数据流风格、调用/返回风格、独立构件风格、虚拟机风格、仓库风格
      • 数据流风格:批处理序列、管道-过滤器
      • 调用返回风格:主程序/子程序、面向对象风格、层次结构风格
      • 独立构件风格:进程通信架构风格、事件系统风格
      • 虚拟机风格:解释器、规则为中心
      • 仓库风格:数据库系统、超文本系统、黑板系统
  • 层次系统架构风格
    • 二层三层C/S架构风格
    • B/S架构风格
    • MVC架构风格
    • MVP架构风格
  • 面向服务的架构
    • SOA技术:UDDI、WSDL、SOAP、REST
    • SOA实现方法:WebService、服务注册表SR、企业服务总线ESB
    • 微服务:技术异构性、弹性、扩展、简化部署、与组织结构匹配、可组合性、对可替代性的优化
  • 架构设计
    • 演变交互生命周期
    • 属性驱动设计法
    • 按架构组织开发团队
    • 开发骨架系统
    • 利用商用构件进行开发
  • 软件架构文档化
    • 架构文档使用者:系统开发人员、测试和集成人员、项目经理
    • 编写文档的规则:从读者角度进行编写、避免出现不必要的重复、避免歧义、使用标准结构、记录基本原理、使文档保持更新(但更新频率不能太高)、针对目标进行评审
    • 视图编档:视图目录、上下文图、可变性指南、架构背景、术语表、其他信息
    • 跨视图文档
    • 使用UML
    • 软件架构重构:系统已经存在但不知其架构
  • 软件架构评估
    • 软件架构评估方法:基于调查问卷或检查表的方式、基于场景的方式、基于度量的方式
    • 架构的权衡分析法ATAM(风险点和敏感点进行权衡):方法表述、商业动机、架构表述、对架构方法进行分类、生成质量效用树、分析架构方法、集体讨论场景优先级、分析架构方法、结果表述
    • 成本效益分析法(从投资报酬进行权衡):整理场景、对场景进行求精、确定场景优先级、分配效用、质量属性、响应级别、总收益、ROI投资回报率
  • 构件及其复用:组件重用,可理解文档,方案,计划,测试用例,代码等,构件开发部门,复用资产部门
  • 产品线及系统演化:复用产品核心资产可以提升产品生产效率、降低生产成本和缩短上市时间
    • 复用与产品线:需求、元素、建模与分析、测试、项目规划、过程方法和工具、人员、样本系统、缺陷消除
    • 基于产品线的架构:产品线架构必须考虑一系列明确许可的变化、产品线架构文档化、产品线架构用户指南
    • 产品线的开发模型:前瞻性产品线、反应性模型
    • 特定领域软件架构(DSSA):领域分析、领域设计、领域实现
    • 架构及系统演化:需求变化归类、架构演化计划、构建变动、更新构件的相互作用、构件组装与测试、技术评审、演化后的架构
  • 软件架构视图
    • 软件视图分类:模块视图类型、构件连接件视图类型、分配视图类型
    • 模块视图风格:分解风格、模块互相依赖、分层风格、泛化风格
    • C&C视图风格:管道过滤器风格、共享数据风格、发布订阅风格、客户机-服务器风格、对等连接系统
    • 分配视图风格:部署风格、实现风格、工作任务风格