1. 软件架构为谁设计
    1. 为管理人员设计
      1. 一方面,软件架构从大局着手,就技术方面的重大问题做出决策,构造一个由粗粒度模块
      2. 组成的解决方案,从而可以把不同模块分配给不同小组分头开发
      3. 另一方面,软件架构设计规定了各模块之间如何交互的机制和接口,在开发小组之间起到沟通桥梁和合作契约的作用
    2. 为开发人员设计
    3. 为客户设计
    4. 为用户设计
  2. 子系统,框架与架构
    1. 展现层,业务层,数据层
    2. 子系统,模块,类
    3. 技术通用领域,领域通用部分,特定应用部分
    4. 企业应用架构模式(Martin Flowler)
    5. 细节是相对而言的
    6. 子系统也有架构
    7. 框架是软件,架构不是软件
  3. 软件架构5视图法
    1. 逻辑架构
    2. 开发架构
    3. 数据架构
    4. 物理架构
    5. 运行架构
  4. 软件架构设计过程
    1. 一般软件过程
      1. 概念化阶段
      2. 分析阶段
      3. 架构设计阶段
      4. 并行开发与测试阶段
      5. 验收与交付阶段
  5. 需求分析
    1. 容易变更和不容易变更
    2. 这个软件到底为用户做什么
    3. 软件需求规格说明书
    4. 愿景与范围文档
    5. 用例图,用例简述,用例规约
      1. 用例图+用例简述,本书推荐这种做法
      2. 用例简述
        1. 用例名称
        2. 用例简述
        3. 优先级
      3. 用例规约
        1. 用例名称
        2. 简要说明
        3. 事件流
          1. 基本事件流
          2. 扩展事件流
        4. 非功能需求
        5. 前置条件
        6. 后置条件
        7. 扩展点
        8. 优先级
    6. 原型等方法启发需求
  6. 领域建模
    1. 书籍
      1. 面向对象项目的解决方案
      2. 分析模式
      3. 高效能人士的七个习惯
      4. 领域驱动设计
      5. 人月神话
    2. 敏捷软件开发生态环境
  7. 概念性架构设计
    1. 鲁棒性分析
    2. 引入架构模式
    3. 质量属性分析
    4. 书籍
      1. UML用例驱动对象建模
      2. 软件复用:结构,过程和组织
    5. 活动图
      1. 更多的关注如何将这些设计转化成if else这样的逻辑判断,就像流程图一样
    6. 鲁棒图
      1. 用例转换为对象以及GUI
      2. 边界对象,控制对象,实体对象