笔记 | 软件工程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

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eternal_U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值