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

作者 : admin 本文共1245个字,预计阅读时间需要4分钟 发布时间: 2024-06-16 共1人阅读

1 软件设计概述

1.1 为什么要软件设计

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

1.2 何为软件设计

笔记 | 软件工程06-1:软件设计-软件设计基础插图(1)

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

笔记 | 软件工程06-1:软件设计-软件设计基础插图(2)

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

1.3 软件设计的质量要求

笔记 | 软件工程06-1:软件设计-软件设计基础插图(3)
笔记 | 软件工程06-1:软件设计-软件设计基础插图(4)

1.4 软件设计的过程

笔记 | 软件工程06-1:软件设计-软件设计基础插图(5)

1.4.1 软件体系结构设计

笔记 | 软件工程06-1:软件设计-软件设计基础插图(6)

1.4.2 用户界面设计

笔记 | 软件工程06-1:软件设计-软件设计基础插图(7)

1.4.3 软件详细设计

笔记 | 软件工程06-1:软件设计-软件设计基础插图(8)

1.4.4 其他工作

笔记 | 软件工程06-1:软件设计-软件设计基础插图(9)

1.5 软件设计元素

笔记 | 软件工程06-1:软件设计-软件设计基础插图(10)

2 软件设计原则

2.1 软件设计要考虑的因素

笔记 | 软件工程06-1:软件设计-软件设计基础插图(11)

2.2 软件设计的基本原则

笔记 | 软件工程06-1:软件设计-软件设计基础插图(12)

2.2.1 抽象原则

笔记 | 软件工程06-1:软件设计-软件设计基础插图(13)

数据抽象和过程抽象

笔记 | 软件工程06-1:软件设计-软件设计基础插图(14)

笔记 | 软件工程06-1:软件设计-软件设计基础插图(15)

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

笔记 | 软件工程06-1:软件设计-软件设计基础插图(16)

高内聚度原则

笔记 | 软件工程06-1:软件设计-软件设计基础插图(17)

2.2.2.1 偶然内聚(Coincidental cohesion)

笔记 | 软件工程06-1:软件设计-软件设计基础插图(18)

2.2.2.2 逻辑内聚(Logical Cohesion)

笔记 | 软件工程06-1:软件设计-软件设计基础插图(19)

2.2.2.3 时间内聚(Temporal cohesion)

笔记 | 软件工程06-1:软件设计-软件设计基础插图(20)

2.2.2.4 过程内聚(Procedural cohesion)

笔记 | 软件工程06-1:软件设计-软件设计基础插图(21)

2.2.2.5 通信内聚(Communicational cohesion)

笔记 | 软件工程06-1:软件设计-软件设计基础插图(22)

2.2.2.6 顺序内聚(Sequential cohesion)

笔记 | 软件工程06-1:软件设计-软件设计基础插图(23)

2.2.2.7 功能内聚(Functional cohesion)

笔记 | 软件工程06-1:软件设计-软件设计基础插图(24)

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

笔记 | 软件工程06-1:软件设计-软件设计基础插图(25)

低耦合度原则

笔记 | 软件工程06-1:软件设计-软件设计基础插图(26)

2.2.2.9 零耦合

笔记 | 软件工程06-1:软件设计-软件设计基础插图(27)

2.2.2.10 数据耦合

笔记 | 软件工程06-1:软件设计-软件设计基础插图(28)

2.2.2.11 特征耦合

笔记 | 软件工程06-1:软件设计-软件设计基础插图(29)

2.2.2.12 控制耦合

笔记 | 软件工程06-1:软件设计-软件设计基础插图(30)

2.2.2.13 公共环境耦合

笔记 | 软件工程06-1:软件设计-软件设计基础插图(31)

2.2.2.14 内容耦合

笔记 | 软件工程06-1:软件设计-软件设计基础插图(32)

示例:

笔记 | 软件工程06-1:软件设计-软件设计基础插图(33)

2.2.2.15 耦合度与软件结构

笔记 | 软件工程06-1:软件设计-软件设计基础插图(34)

2.2.3 信息隐藏原则

笔记 | 软件工程06-1:软件设计-软件设计基础插图(35)

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

笔记 | 软件工程06-1:软件设计-软件设计基础插图(36)

2.2.4 关注点分离原则

笔记 | 软件工程06-1:软件设计-软件设计基础插图(37)

2.2.5 面向切面的编程(AOP)

笔记 | 软件工程06-1:软件设计-软件设计基础插图(38)

2.2.6 软件重用原则

笔记 | 软件工程06-1:软件设计-软件设计基础插图(39)

笔记 | 软件工程06-1:软件设计-软件设计基础插图(40)

2.2.7 软件设计的其他原则

笔记 | 软件工程06-1:软件设计-软件设计基础插图(41)

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

3.1.1 软件设计方法的发展

笔记 | 软件工程06-1:软件设计-软件设计基础插图(42)

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

笔记 | 软件工程06-1:软件设计-软件设计基础插图(43)

系统结构图:

笔记 | 软件工程06-1:软件设计-软件设计基础插图(44)

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

笔记 | 软件工程06-1:软件设计-软件设计基础插图(45)

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

笔记 | 软件工程06-1:软件设计-软件设计基础插图(50)
笔记 | 软件工程06-1:软件设计-软件设计基础插图(51)

3.1.3.1 面向对象软件设计过程

笔记 | 软件工程06-1:软件设计-软件设计基础插图(52)

  • 用包图表示的软件体系结构设计
  • 用交互图来表示用户界面设计
3.1.3.2 面向对象的软件设计原则
  1. 单职责原则(Single Responsibility Principle)
    笔记 | 软件工程06-1:软件设计-软件设计基础插图(53)
  2. 开-闭原则 (Open Closed Principle)
    笔记 | 软件工程06-1:软件设计-软件设计基础插图(54)
  3. 里氏替换原则 (Liskov Substitution Principle)
    笔记 | 软件工程06-1:软件设计-软件设计基础插图(55)
    1. Liskov替换原则的实现:
      笔记 | 软件工程06-1:软件设计-软件设计基础插图(56)
  4. 接口分离原则 (Interface Segregation Principle, ISP)
    笔记 | 软件工程06-1:软件设计-软件设计基础插图(57)

示例:

笔记 | 软件工程06-1:软件设计-软件设计基础插图(58)

  1. 依赖倒置原则 (Dependency Inversion Principle, DIP):依赖关系应该是尽量依赖接口(或抽象类),而不是依赖于具体类。
    笔记 | 软件工程06-1:软件设计-软件设计基础插图(59)
    笔记 | 软件工程06-1:软件设计-软件设计基础插图(60)
  2. 最少知识原则
    笔记 | 软件工程06-1:软件设计-软件设计基础插图(61)
3.1.3.3 面向对象软件设计的优势

笔记 | 软件工程06-1:软件设计-软件设计基础插图(62)
笔记 | 软件工程06-1:软件设计-软件设计基础插图(63)

3.1.4 软件设计的CASE工具

笔记 | 软件工程06-1:软件设计-软件设计基础插图(64)

4 软件设计输出及评审

4.1.1 软件设计的输出

笔记 | 软件工程06-1:软件设计-软件设计基础插图(65)

4.1.2 软件设计文档的规范

笔记 | 软件工程06-1:软件设计-软件设计基础插图(66)

4.1.3 软件设计中的缺陷

笔记 | 软件工程06-1:软件设计-软件设计基础插图(67)

4.1.4 软件设计的评审

笔记 | 软件工程06-1:软件设计-软件设计基础插图(68)

4.1.5 软件设计的管理

笔记 | 软件工程06-1:软件设计-软件设计基础插图(69)

本站无任何商业行为
个人在线分享 » 笔记 | 软件工程06-1:软件设计-软件设计基础
E-->