Software architecture thinking

Software architecture thinking

Created: March 29, 2021 3:06 PM
Last Edited Time: August 10, 2022 9:56 AM
Status: Done
Type: Architecture

软件架构是什么?

  • 软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计
  • 与建筑师设计建筑架构起到相同的作用:
    • 将软件的所有层次组合在一起
    • 便于开发人员和客户理解
  • 软件架构的内容:
    • 软件系统的组成
    • 子系统及其接口元素的选择,以及元素间的协作行为
    • 元素如何不断増长成为更大的子系统
    • 架构风格
  • 架构元素不仅与结构和行为有关,也和
    • 功能性 Functionality
    • 兼容性 Compatibility
    • 可用性 Usability
    • 系统弹性 Resilience
    • 性能 Performance
    • 适应性 Adaptability
    • 重用性 Reuse
    • 经济和技术的限制和折中 Economic and technology constraints and tradeoffs
    • 美学的考虑 Aesthetic concerns

架构具体定义了什么公共元素?

  • 关键组件
  • 组件之间的关系(结构)和交互
  • 忽略了组件中与组件之间交互无关的信息
  • 从另一个组件可以观察到的组件行为
  • 组件和结构背后的基本原理

组件是什么?

  • 可以分布,集成,交付,替换的单元
  • 实现关键的功能
  • 由组件提供的功能和要求的服务定义

架构约束设计和实施

架构会对设计和实现规定一系列的约束和策略.所以架构的变动会对设计和实现造成巨大影响,所以架构的时候要慎重

软件架构的作用

优点

  • 关注点分离(降低了系统的复杂度,便于维护,专人专项)
  • 系统完整性和质量(在变更和新增的需求等情况下保持了系统的质量)
  • 架构风格(统一的架构风格使得开发成本变小,门槛变低)
  • 可预见性(系统把握度高,变更影响范围易于控制)
  • 可测试性(降低了测试的接入成本,范围可控)
  • 可重用性(减少了冗余代码量,提高开发效率,降低维护成本)
  • 组织和项目管理(并行开发,支持分包等)
  • 可进化性(系统的拓展性良好,可以随着变化而升级)

如何进行软件架构

架构是在系统搭建的前期进行的

  • 架构的成本投资是在系统开发的早期
  • 架构的好处是发生在实施和维护阶段

用例驱动开发

  • 传统需求记录方式不利于开发维护
    • 主要需求和次要需求混杂,界定不够明确
    • 缺乏跟踪能力
  • 用例可以方便开发了解整体和局部需求
    • 用例记录了所有的需求
    • 每一个用例都需要组织到用例模型中
    • 用例可以使用 UML 和文本描述相结合
    • 用例可以提高开发的效率以及后期方便的进行测试

用例的组成

  • 基本事件流
    • 正常的场景
  • 备选事件流
    • 边界情况
    • 错误情况

请添加图片描述

架构步骤

  • 项目早期开发架构
    • 启动阶段着手初期架构雏形
    • 精化阶段稳定架构
  • 架构由用例驱动
    • 最核心的用例有以下两个
      • 帮助降低最重要风险的用例
      • 对用户来说最重要的用例
  • 形成架构基线
  • 业务分析
  • 需求分析
  • 对业务进行整理,取舍出架构的侧重点
  • 架构的抽象化模型
  • 架构的具象化选型(语言,框架,实现方式)
  • 架构的丰满与验证

示例架构图

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值