1. 软件需求

软件需求是软件工程的基础,包括:

  • 功能需求:系统必须完成的功能
  • 非功能需求:性能、安全性、可靠性等
  • 用户需求:用户视角的描述
  • 系统需求:技术视角的详细描述

2. 结构化开发方法

数据流图(DFD)

数据流图(Data Flow Diagram)是结构化分析的核心工具,用于描述系统的数据流动和处理过程。

基本图形元素

元素 符号 说明
数据流(Data Flow) 箭头 数据的流动方向
加工(Process) 圆角矩形/圆形 对数据的处理
数据存储(Data Store) 开口矩形/两条横线 存储数据、提供数据
外部实体(External Agent) 矩形 系统外的人员或组织

外部实体分类

  • 外部系统:当前系统之外的系统(支付系统、库存管理系统等)
  • :学生、老师、员工、主管、客户、供应商等
  • :传感器、控制器、单车、车辆等

数据流图做题技巧

  1. 父图子图平衡:子图的输入输出数据流应与父图对应加工的输入输出一致
  2. 加工既有输入数据流,也有输出数据流
  3. 数据守恒

加工的三种错误情况

错误类型 描述
黑洞 加工只有输入没有输出
白洞 加工只有输出没有输入
灰洞 加工的输入数据不足以产生输出数据

数据字典

数据字典是对数据流图中所有元素的详细定义和描述,包括数据项、数据结构、数据流、数据存储、加工逻辑等。

系统结构设计原则

划分模块原则:“高内聚、低耦合”,提高模块的独立性。

耦合方式(7种)

耦合是模块之间的相对独立性的度量。耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及接口的信息类型等。

耦合类型 说明 耦合程度
非直接耦合 模块之间没有直接关系 最低
数据耦合 通过参数传递基本数据类型
标记耦合 通过参数传递数据结构 较低
控制耦合 一个模块控制另一个模块的内部逻辑 中等
外部耦合 模块与外部硬件环境交互 较高
公共耦合 多个模块共享全局数据区
内容耦合 一个模块直接访问另一个模块的内部 最高

内聚性(7种)

内聚是对一个模块内部各个元素彼此结合的紧密程度的度量。一个内聚程度高的模块应当只做一件事。

内聚类型 说明 内聚程度
偶然内聚 模块内各元素无关联 最低
逻辑内聚 模块内执行逻辑上相似的功能
时间内聚 模块内功能在同一时间执行 较低
过程内聚 模块内功能按特定次序执行 中等
通信内聚 模块内功能使用相同数据 较高
顺序内聚 模块内一个功能的输出是另一个的输入
功能内聚 模块内所有元素共同完成一个功能 最高

重要原则

  • 模块的作用范围要在其控制范围之内
  • 高内聚、低耦合

3. 系统设计

设计阶段划分

阶段 主要工作
概要设计 系统架构设计、模块划分、接口设计
详细设计 算法设计、数据结构详细设计

设计原则

  1. 模块化:将系统分解为独立的模块
  2. 抽象:隐藏细节,关注本质
  3. 信息隐藏:模块内部实现细节对外不可见
  4. 高内聚低耦合

4. 系统文档

规范的文档意味着系统是按照工程化开发的,意味着信息系统的质量有了形式上的保障。

  • 文档也是软件产品的一部分,没有文档的软件就不能称之为软件
  • 编写高质量文档可以提高软件开发的质量
  • 软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量
  • 总的来说,软件文档只好不坏,选项中说软件文档不好的大概率就是不正确的