最重要的是一定要多做题!!

软件设计题分析

试题

考察内容

数据流图/DFD

补充外部实体、数据存储、加工、数据流等

数据库设计/ER

E-R图 关系模式 主键/外键 规范化理论 增加实体

UML建模

类图 用例图 活动图等

C语言算法

C语法+数据结构

Java/C++

基础语法+设计模式

1.数据流图

名词

解释

外部实体

系统外部现实世界存在的物体 矩形表示

数据存储

一般都是数据库表名 矩形表示

数据流

数据如何在系统中流动和传输

加工/数据处理

系统的计算或者操作 圆角矩阵表示

数据流图等级

数据流图等级是指所涉及的数据项和处理的复杂程度

DFD等级详细解释

等级

解释

第一层级为上下文层级(Context Level)

它显示了被建模的整个系统,以及与外部实体之间的交互。在这个层级中,只有一个过程被画出,代表整个系统。

第二层级是主要层级(Main Level)

定义了系统中的各个主要过程和如何将他们相连,这也称为“0”层级

第三层级是子功能层级(Functional Decomposition Level)

它展示了主要层级的每个过程的详细内容,并将其进一步分解为更小、更可管理的组件

第四层级是低层级(Lowest Level)

它描述了子功能层级中的最小单元。在这个层级中,可以使用伪代码等技术来描述具体的逻辑过程,以实现不同的功能。

1.补充实体

2.补充数据存储

3.补充数据流

格式: 数据流名称 起点 重点

  • 数据流细节 起点或者终点必须有一个加工 换句话说不能从实体流向实体或者实体流向存储
  • 黑洞 只有输入流到加工
  • 白洞 只有输出流
  • 灰洞 输入流不足以输出

4.结构化语言

IF ELSE THREN ENDIF

5.系统增加一个外部实体修改图中的输入流

例如系统增加一个Email系统 要求发给学生的消息和老师的消息进行合并
我们就可以写在上下文图中增加Email系统 将消息合并 在0层图中 发学生的信息中间增加加工 发送给Email系统 再由系统输出发送给学生....

6.如何保持数据流平衡【模板背】

  • 父图中的加工的输入输出数据流要和子图中的加工的输入输出流保持一致
  • 父图中的一个输入或输出流对应着子图多个输入输出流
  • 子图中组合这些数据流的数据项恰好是父图这一条数据流

7.拆分加工

2.数据库设计

名词

解释

实体(Entity)

每个实体都可以视为系统中的一个对象或概念

属性(Attribute)

实体的特征

关系(Relationship)

关系描述实体之间的互动

域(Domain):

定义属性可以使用的值集合。例如,如果“性别”是属性,则可能的域为{男,女}。

主键(Primary Key)

主键是一组属性,该组属性唯一标识实体,例如学生的学籍号、身份证号等。主键值必须在整个关系表中是唯一的

外键(Foreign Key)

外键是关系中另一个实体的主键

范式(Normalization)

范式是一种技术,用于优化关系数据库模式,并减少数据冗余。使用范式可以确保数据的一致性和完整性

3.UML建模

名词

解释

Use Case Diagram

描述系统的功能和用户之间的关系,是一种比较高层次的视图,侧重于从用户的角度去看待系统。

Class Diagram

描述系统的静态结构,包括类、接口、关联(依赖 聚合 组合)、继承(泛化)等。类图是UML中最常用、最基础的结构图。

Sequence Diagram

描述对象之间按时间顺序发送消息的交互情况,强调时间轴或顺序流程。

Activity Diagram

描述某个业务或操作流程的全过程,涉及到流程、流转、判断等,它是一个很好的记录和传达业务流程的工具

Statechart Diagram

描述状态机模式下一个对象所经历的所有状态以及可能触发状态转换的事件。

Component Diagram

描述组成系统的各种组件以及它们之间的关系,有助于复杂系统的分解和设计。

Deployment Diagram

描述系统的部署结构,即系统中各个节点之间的物理连接关系,通常用于描述网络系统或分布式系统的部署方案。

1.类图

类有时候需求分析中未给出 需要自己拟定一个 类名不能包含动词
关系

  • 泛化
  • 实现
  • 依赖 (A--->B B依赖A)(单向依赖或者双向依赖)
  • 关联(聚合(部分-整体 "has-a"弱关系)
  • 组合(生命周期一致 "is a"强关系)

2.用例图

用例之间的关系

  • 包含 << include >> a功能包含b功能(用例)
  • 扩展 << extend >> 一个用例扩展另一个用例
  • 泛化 << generalization >> 是一种继承关系

4.C语言算法

1.算法策略

  • 动态规划 子问题不独立,依赖其他'位置'的数据
  • 回溯法 递归
  • 贪心法 每一步找最优
  • 分治法 子问题是独立的 归并排序

2.时间复杂度

  • 找到所给代码的最大循环层数

3.代码补全

5.Java

  • OOP思想 封装继承和多态
  • 了解设计模式并通过Java代码实现