软件架构培训总结

RUP4+1架构方法:在软件生命周期的各个阶段对软件进行建模,从不同视角对系统进行解读,从而形成统一软件过程架构描述.

1. 软件架构视图
四种设计视图:不同角度分析观察项目
逻辑视图:
    参与者:客户、开发组织管理者
    关注  :系统子系统
    功能  :开发组织化分/成本进度评估;

开发视图:
    参与者:开发测试人员
    关注  :分层/框架/系统及业务通用服务/接口/基础框架
    功能  :指导开发设计、实现

物理视图:
    参与者:系统集成商/运维人员
    关注  :物理节点,硬件成本
    功能  :确定硬件、分布式、集群等功能
    
进程视图:
    参与者:性能优化、开发人员
    关注  :运行时线程、进程情况
    功能  :了解底层server配置属性

最佳实践:
    建模方式:标准UML、非标准、文档描述
    不一定需要所有:结合项目选择合适的视图,可选的还有如下
        数据视图:开发人员:数据建模
        场景视图:设计开发人员:架构最重要、典型的场景
        实现视图:开发测试/交付物及实现规范
    多视图组合
    多视图并行设计
    
2. 软件架构驱动因素
软件功能:
    识别关键需求,变化点(有变动)、进化点(需求没提)
系统质量属性
    运行时:性能 可扩展 安全 易用 持续可用 可靠
    开发时:可重用 可测试 可维护 可移植
    
    HA:平局故障时间(MTBF) 修复时间
        原则:一切皆可错/一切自动化
        方法:错误检测、错误恢复、错误预防
    性能:响应时间 吞吐率 响应抖动(等待时间变化) 丢失率
        原则:资源需求(提高效率 减少开销) 资源管理(并发 增加资源 限制执行时间) 资源仲裁(调度 优先级 动态调度)
        方法:分区、异步、半成品、重要优先、缓存、批处理、弹性时间、并行、分散负载
    可维护:平台、质量属性、功能、界面
        原则:开闭(对扩展开 修改闭) 多态
        
商业质量
    政治、时间、成本、市场、老系统继承

约束
    行业/政策/遗留:使用习惯:开发组织分布及资

3. 软件架构设计演化
    架构需要演化
    含有垃圾代码的项目,更容易注入更多的垃圾代码
    短期效应选择容易方案,长期来讲不利,最好通过重构解决
    
4. 质量驱动案例分析-高质量网站架构
    前端页面缓存、页面片段缓存、数据缓存、增加web server,数据库分库、分布式文件系统、异步、系统缓存、分布式缓存

5. 软件架构设计过程
架构设计经典难题:
    驱动因素:不清楚
    架构设计:思维混乱
    架构结果:不能提供清晰文档
    架构应用:设计开发人员不知道如何使用

架构设计过程
    一、宏观决策 逻辑部署视图、风险分析
    二、开发实现 开发进程视图
    三、业务结合 数据、用例和实现视图
    


商业架构分析
    逻辑视图:系统子系统功能的分布和接口
    可行性分析:每个子系统的质量属性和架构策略
    部署视图:子系统如何部署:物理节点和物理通信

6. 软件架构模式
逻辑架构设计
    复用
    架构模式
    软件立方图
    服务设计
    每层架构指南

OCP、单一职责

组件和包的设计原则
    内聚性:REP CRP CCP
    耦合性:ADP SDP SAP
    
软件架构模式:
    管道过滤器
    责任链
    command
    元数据架构    

架构立方图:三个维度考虑架构
    分层:MVC....
    服务层:业务通用/系统通用/基础平台(j2ee .net)/第三方硬件
    功能:安全/管理/可靠/可用/扩展
   
服务层的基础设施:Cache/Configuration/MQ/eventNotice/验证授权/事务/exception/cryptography/workflow/transaction
    
7. 数据架构设计
    模型、分布、复制、集群、存取(缓存)、备份恢复、安全

架构师要简化开发 维护成本,保证项目顺利实施


推荐书籍:
面向模式的软件体系结构
代码大全
微软应用架构指南
SEI:软件架构实践
分析模式-数据模型资源手册:各种行业(电信 金融)数据建模
架构实战(IBM)

你可能感兴趣的:(软件架构设计)