软件工程

7 - 设计架构与方法论

2019-12-19 07:00 CST
2019-12-18 23:02 CST
CC BY-NC 4.0

7.1 设计简洁

  • 架构设计阶段
    • 对一个系统的高层概述,一个宏观的视图
    • 列出系统的主要组件,以及组件的外部属性和组件间的关系
    • 功能性和非功能性需求以及技术上的考量提供了该架构的主要驱动力
  • 详细设计阶段
    • 组件被分解为更加精细的细节
    • 由架构以及功能需求所驱动
    • 所有的功能性需求都必须由详细设计中的最少一个模块(微观视图)来解决

面向对象设计:一种通过类、它们的关系和它们之间的交互来建模设计的技术。

软件架构:系统的高层结构,包括软件元素、元素属性和他们之间的关系。

7.2 架构设计

系统的软件架构规定了其基本结构。

  • 每个系统都有一个架构
  • 可能有不止一个架构
  • 架构处理每个模块的外部属性

视图与视角:

  • 逻辑视图
  • 进程视图
  • 子系统分解图
  • 物理架构视图
  • 模块视图
    • 模块分解视图
    • 使用视图
    • 类泛化视图
  • 运行时视图
  • 分配视图

元架构知识:

  • 架构风格或模式
  • 架构策略
  • 参考架构

常见的架构风格:

  • 管道和过滤器:UNIX脚本、信号处理
  • 事件驱动
  • 客户端-服务器
  • 模型-视图-控制器(MVC)
  • 分层
  • 数据库为中心

表属性状态转移(REST)架构:

  • 客户端-服务器设计风格
  • 组件之间的通信必须是无状态性的
  • 信息缓存
  • 组件之间的统一接口
  • 分层设计风格
  • 按需代码

REST的主要架构元素包括以下内容:

  • 数据
    • 资源(信息抽象)
    • 资源表征(捕获或描述资源的状态)
  • 组件:具有特定角色的信息服务的提供者
  • 连接件:用于进行无状态通信或组件间交互

7.3 详细设计

数据库设计:

  • 数据建模:构建ER模型
  • 逻辑数据库设计:生成规范化的关系模式
  • 物理数据库设计
  • 部署和维护

大数据设计:NoSQL等

面向对象设计

  • 用例和用例图
  • 类设计和类图
  • 状态建模:状态转换图
  • 类间交互:UML序列图/通信图

用户界面设计:

  • 交互流
  • 认知模型
  • 其他主体