系统分析与设计
字数: 0
Systems Analysis and Design,主要针对面向对象分析(Object-Oriented Analysis,OOA),之前的系统建模可以理解为是分析和设计过程的一种重要手段
首先介绍一个相关术语

责任

Responsibilities,一个对象或类所承担的任务,它定义了对象应该具备的功能和行为,以及对象与其他对象之间的交互方式。
notion image
  • 对象或类与其他对象进行交互所承共同的任务或行为,则形成了协作关系 (collaborations)

分析方法

Identifying the classes & Creating object models

文本分析

Perform textual analysis by reviewing the case diagrams and analyze use case to identify potential objects, attributes, operations, and relationships.
  • The primary purpose of textual / UseCase analysis is to create an initial set of classes.

名词 ➡️ 对象类别

notion image
notion image

形容词 ➡️ 对象属性

notion image

及物 / doing 动词 ➡️ 对象操作

notion image
notion image

不及物动词 ➡️ exception

notion image

hava 动词 ➡️ 关联 / 聚合关系

notion image

be 动词 ➡️ 分类关系

notion image

某组常见特定动词 ➡️ 依赖关系

notion image

经典分析

  • 着重于问题领域中的有形事物
  • 主要从经典分类原理推导出类和对象
notion image

行为分析

Behavior Analysis
  • 将具有相似行为的对象组成类。
  • 将具有共同责任的事物进行分组。

CRC 卡片分析

Class-Responsibility-Collaboration (CRC) card,一种用于记录类的责任和协作的卡片
notion image
 
一个标准索引卡集合,包括三个部分:
类名、类的职责、类的协作关系,
每一张卡片表示一个类。
 
 

结构化分析

Structured Analysis,通过使用不同图表对系统需求进行建模

数据流图

DFDs - Data Flow Diagrams

实体关系图

ERDs - Entity-Relationship Diagrams,实体建模
notion image

设计原则

Designing Objects

GRASP 原则

General Responsibility Assignment Software Principle

创建者

Creator
一个对象在创建另一个对象时,它负责初始化或拥有对新对象的引用。
notion image
notion image

信息专家

Information Expert
具有最相关信息的对象应该负责执行相关操作
notion image
 
notion image

低耦

Low Coupling
对象之间的依赖应该尽可能地减少,以降低系统的耦合度。
对象之间的通信应该基于抽象而不是具体的实现。
notion image

控制器

Controller
使用控制器对象来协调和控制用户界面和系统之间的交互,它充当用户输入的处理中心。
notion image

高内聚

High Cohesion
即对象内部的各个元素应该紧密相关,围绕实现一项特定的功能。
notion image

多态

Polymorphism
将操作应用于多个对象类型,而无需依赖于特定的对象类型。
notion image

纯粹信息 / 间接 / 受保护变化

  • Pure Fabrication - 创建辅助类来减轻对象的责任
  • Indirection - 引入间接层来降低对象之间的直接依赖
  • Protected Variations - 通过稳定的接口保护系统内部的变化

SOLID 原则

GRASPSOLID 原则在很大程度上是重叠的,但它们强调的焦点和方法略有不同。

单一职责

Single Responsibility Principle,SRP
一个类应该只有一个职责或功能。这样可以提高类的内聚性,使得类更加可理解、可维护和可测试。

开放封闭

Open-Closed Principle,OCP
软件实体(类、模块、函数等)应该对扩展是开放的,但对修改是封闭的。
即在添加新功能时,不应修改现有的代码,而是通过扩展 (extension) 现有代码来实现。
notion image

里氏替换

Liskov Substitution Principle,LSP
子类对象可以在不破坏程序正常运行的前提下替换其父类对象。
notion image

接口隔离

Interface Segregation Principle,ISP
应该为客户端提供它们需要的特定接口,不强迫客户端依赖于它们不需要的接口。
即接口应该精确地定义客户端所需的行为,避免定义臃肿庞大的接口。
 
notion image
notion image

依赖倒置

Dependency Inversion Principle,DIP
高层模块不应该依赖于低层模块,两者都应该依赖于抽象。
抽象不应该依赖于具体实现细节,而具体实现细节应该依赖于抽象。
这样可以减少模块之间的耦合性,提高代码的可维护性和可测试性。
notion image
 
2023 - 2026