代码改变世界

程序员必读之软件架构 读书笔记

2020-02-25 16:19  方斌  阅读(308)  评论(0编辑  收藏  举报

程序员必读之软件架构

2架构的种类

  • 软件架构定义

​ 理解需要解决的问题,并设定一个愿景或目标,并充分与所有参数产品最终构建的人充分沟通。

3 软件架构是什么

  • 应用程序架构

    • 软件(编程语言、类、组件、模块、函数、设计模式等)
    • 代码组织
  • 系统架构

    • 软件互操作性
    • 环境其他系统的集成
    • 软件
    • 硬件
  • 软件架构

    • 应用程序和系统架构的结合
    • 代码
    • 面向对象原则、类、接口、控制反转、重构、自动化单元测试、代码整洁等
    • 横切面,比如登录和异常处理
    • 安全性,包括认证、授权和敏感数据保密
    • 性能、可伸缩性、可用性和其他质量属性
    • 审计及其他监管需求
    • 客观环境约束
    • 互操作性、与其他软件系统的集成
    • 运营、支持和维护的需求
    • 结构和整个代码库解决问题、实现特性的方法的一致性
    • 评估正在构建的基础有助于交付按计划进行

    架构反映了使一个系统成型的重要设计决策,而重要性则通过改变的成本来衡量。

    第8章 软件架构的角色

    软件架构角色

    • 架构驱动力
      • 理解目标
      • 抓住、提取、挑战需求和限制
    • 设计软件
      • 建立技术战略、愿景和路线图
    • 技术风险
      • 发现、减轻和承担技术风险,保证架构的运转
    • 架构演化
      • 贯穿整个软件交付过程,持续的技术指导和对架构的承担
    • 编写代码
      • 参与到软件交付的实践部分
    • 质量保证
      • 引入并坚持标准、指导、原则等

第13章 软技能

  • 领导力
  • 沟通
  • 影响力
  • 信心
  • 合作
  • 指导
  • 辅导
  • 动力
  • 润滑剂
  • 政治
  • 责任感
  • 授权

第15章 软件架构要引入控制吗

  • 提供指导,追求一致性
    • 控制可以保证代码库有一个清晰一致的结构,以包、命名空间、组件、层等形式合理的组织代码。
  • 控制的程度
    • 适度
      • 独裁
      • 授权

第22章质量属性

  • 性能
  • 可伸缩性
  • 可用性  99.9% 意味着每天停机维护时间只有一分多钟
  • 安全性 从认证到授权到数据传输和存储中的机密性的所有事情。
  • 灾难恢复
  • 可访问性
  • 监测 软件和平台特定的监测功能
  • 管理
  • 审计 软件系统中数据或行为变化的事件的审计日志
  • 灵活性
  • 可扩展性
  • 可维护性
  • 法律法规
  • 国际化
  • 本地化 以最终用户文化习俗的方式展示内容

第25章 原则

  • 开发原则
    • 编码标准和规范
    • 自动化单元测试
    • 静态分析工具
  • 架构原则
    • 分层策略
    • 业务逻辑位置
    • 高内聚、低耦合
    • 无状态组件
    • 存储过程
    • HTTP会话的使用
    • 始终一致和最终一致