笔记 | 软件工程06-1:软件设计-软件设计基础

1 软件设计概述

1.1 为什么要软件设计

image.png

1.2 何为软件设计

image.png

何为软件系统的解决方案?

image.png

  • 软件设计关注与软件需求的实现问题
  • 软件设计是需求分析和软件实现间的桥梁

1.3 软件设计的质量要求

image.png
image.png

1.4 软件设计的过程

image.png

1.4.1 软件体系结构设计

image.png

1.4.2 用户界面设计

image.png

1.4.3 软件详细设计

image.png

1.4.4 其他工作

image.png

1.5 软件设计元素

image.png

2 软件设计原则

2.1 软件设计要考虑的因素

image.png

2.2 软件设计的基本原则

image.png

2.2.1 抽象原则

image.png

数据抽象和过程抽象

image.png

image.png

2.2.2 模块化、高内聚度和低耦合度原则

image.png

高内聚度原则

image.png

2.2.2.1 偶然内聚(Coincidental cohesion)

image.png

2.2.2.2 逻辑内聚(Logical Cohesion)

image.png

2.2.2.3 时间内聚(Temporal cohesion)

image.png

2.2.2.4 过程内聚(Procedural cohesion)

image.png|500

2.2.2.5 通信内聚(Communicational cohesion)

image.png

2.2.2.6 顺序内聚(Sequential cohesion)

image.png

2.2.2.7 功能内聚(Functional cohesion)

image.png

2.2.2.8 内聚度与软件结构好坏的关系

image.png

低耦合度原则

image.png

2.2.2.9 零耦合

image.png

2.2.2.10 数据耦合

image.png

2.2.2.11 特征耦合

image.png

2.2.2.12 控制耦合

image.png

2.2.2.13 公共环境耦合

image.png

2.2.2.14 内容耦合

image.png

示例:

image.png

2.2.2.15 耦合度与软件结构

image.png

2.2.3 信息隐藏原则

image.png

面向对象软件设计与实现中的信息隐藏

image.png

2.2.4 关注点分离原则

image.png

2.2.5 面向切面的编程(AOP)

image.png

2.2.6 软件重用原则

image.png

image.png

2.2.7 软件设计的其他原则

image.png

3 面向对象软件设计方法学

3.1.1 软件设计方法的发展

image.png

3.1.2 软件设计方法—结构化方法

image.png

系统结构图:

image.png

3.1.2.1 面向数据流的结构化设计

image.png

  1. 变换流(Transform Flow):所有信息流都可归结为变换流
    image.png
  2. 变换型的软件结构图:相应于取得数据、变换数据、给出数据,变换流型系统结构图由输入、变换中心和输出等三部分组成
    image.png
  3. 事务流(Transaction Flow)
    image.png
  4. 事务型的软件结构图
    image.png
3.1.3 面向对象软件设计方法学

image.png
image.png

3.1.3.1 面向对象软件设计过程

image.png

  • 用包图表示的软件体系结构设计
  • 用交互图来表示用户界面设计
3.1.3.2 面向对象的软件设计原则
  1. 单职责原则(Single Responsibility Principle)
    image.png
  2. 开-闭原则 (Open Closed Principle)
    image.png
  3. 里氏替换原则 (Liskov Substitution Principle)
    image.png
    1. Liskov替换原则的实现:
      image.png
  4. 接口分离原则 (Interface Segregation Principle, ISP)
    image.png

示例:

image.png

  1. 依赖倒置原则 (Dependency Inversion Principle, DIP):依赖关系应该是尽量依赖接口(或抽象类),而不是依赖于具体类。
    image.png
    image.png
  2. 最少知识原则
    image.png
3.1.3.3 面向对象软件设计的优势

image.png
image.png

3.1.4 软件设计的CASE工具

image.png

4 软件设计输出及评审

4.1.1 软件设计的输出

image.png

4.1.2 软件设计文档的规范

image.png

4.1.3 软件设计中的缺陷

image.png

4.1.4 软件设计的评审

image.png

4.1.5 软件设计的管理

image.png

相关推荐

  1. 软件工程,系统设计

    2024-06-15 18:54:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-15 18:54:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-15 18:54:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-15 18:54:02       82 阅读
  4. Python语言-面向对象

    2024-06-15 18:54:02       91 阅读

热门阅读

  1. Vue小记——如何理解 $nextTick( ) ?

    2024-06-15 18:54:02       31 阅读
  2. IDM(Internet Download Manager)简介

    2024-06-15 18:54:02       34 阅读
  3. 深度神经网络是什么?

    2024-06-15 18:54:02       30 阅读
  4. 设计模式-组合模式Composite(结构型)

    2024-06-15 18:54:02       29 阅读
  5. 使用 Python进行自动备份文件

    2024-06-15 18:54:02       34 阅读
  6. React <> </>的用法

    2024-06-15 18:54:02       32 阅读
  7. 《Vue3 基础知识》Pinia 02 之 项目中从 Vuex 转 Pinia

    2024-06-15 18:54:02       32 阅读
  8. 前端面试题——React篇

    2024-06-15 18:54:02       33 阅读
  9. 【Windchill高级查询感悟笔记】

    2024-06-15 18:54:02       23 阅读
  10. 【算法与数据结构】【数组篇】【题1-题5】

    2024-06-15 18:54:02       52 阅读