### 知识点概述:
#### 软件设计流程及方法
1. **结构化方法**:该案例分析采用结构化方法进行软件系统的设计。结构化方法强调通过分析问题域和定义清晰的输入、输出、存储和处理过程,来构建系统结构。其核心在于通过逐层细化的方式来解决软件开发中的复杂问题,从而降低开发难度并提高系统的可维护性。
2. **上下文数据流图和0层数据流图**:案例中提到了上下文数据流图和0层数据流图。这些图展示了数据在系统中的流向,包括数据的输入、处理过程和输出。上下文图通常展示系统的边界和与外部实体的交互,而0层(也称为顶层)数据流图则进一步细化系统内部的主要功能模块。
#### 系统功能设计
1. **库存水平检查**:采购系统需要能够每天检查库存,当库存降至订货点时,识别出哪些部件需要补货。这涉及到库存管理的基本概念,如安全库存和订货点。
2. **采购订单管理**:采购部门需要能够根据库存情况向供应商下达采购订单,并将这些订单存储在采购订单文件中。这一部分要求系统能够处理供应商数据和订单信息,并执行相关业务逻辑。
3. **交运部件处理**:当供应商交运部件时,需要经过验证装运部件、检验部件质量和更新部件库存等步骤。这些步骤确保了物料的准确性和质量符合标准,同时也要求系统能够处理与外部供应商的交互。
#### 数据流图(DFD)的设计
1. **实体定义**:案例分析中提到的实体E1到E5可能包括系统用户、供应商、采购部门、运输和接收部门、库存管理等。准确地识别和定义实体对于数据流图的设计至关重要。
2. **数据存储**:数据存储D1到D4可能代表了系统中的数据库或文件,例如供应商数据文件、采购订单文件、库存文件等。这些数据存储是系统中数据持久化的基础,需要明确它们的名称和作用。
3. **数据流补充**:在数据流图中补充缺失的数据流及其起点和终点,确保图中所有的功能模块都有明确的数据输入和输出路径。
4. **保持数据流图平衡**:平衡数据流图是指在数据流图中输入和输出数据量需要保持一致。对于系统中每一个数据流都应该有一个来源和去向,系统内部的处理过程不会产生或丢失数据。
#### 数据库设计
1. **实体-关系模型**:案例中提到了数据库设计中的实体-关系模型,这是数据库设计的基本方法,通过定义实体、实体属性和实体之间的关系来组织数据。
2. **候选设计类分类**:提及了三种类型的设计类:接口类、控制类和实体类。接口类负责用户交互,控制类处理业务逻辑,而实体类则涉及到数据的持久化存储。
#### 订单处理逻辑
1. **订单状态管理**:系统需要管理不同状态的订单,如常规订单、挂起订单和备货状态订单。系统应能够根据订单支付状态和时间来变更订单状态。
2. **异常处理**:系统能够处理支付失败的订单,并在挂起超时后自动取消订单。这种处理能力是现代业务系统中常见的需求,要求系统能够处理各种业务场景。
### 具体知识点解析:
#### 实体的识别与定义
- 实体E1~E5识别:在案例中,需要根据上下文数据流图的具体内容来识别这些实体。它们可能包括供应商、客户、采购部门、运输部门、库存管理人员等,每个实体都是与系统交互的关键角色。
#### 数据存储的命名和作用
- 数据存储D1~D4命名:数据存储的名称应当体现出存储的内容,例如供应商数据、采购订单、库存信息、质量标准数据等。
#### 数据流图的补充与平衡
- 数据流补充:案例中提到需要补充图1-2中缺失的数据流。在数据流图中,每个功能模块都应有明确的输入输出,即数据流必须有起点和终点。例如,在采购系统中,采购订单需要从采购部门发出,最终存储于采购订单文件中。
- 数据流图的平衡:在设计数据流图时,需要确保每个加工过程的输入数据量与输出数据量相等。如果某个功能模块的输入和输出不匹配,则需要检查是否有数据未被处理或未被正确地输出。
#### 系统功能的具体实现
- 库存检查:系统需要有一个库存检查机制,当库存降至预定的订货点时,系统能够识别出需要补充库存的部件。
- 采购订单处理:采购部门应能够访问供应商信息,并能够根据库存情况生成采购订单,随后存储在系统中。
- 验证装运部件:在收到供应商提交的提单后,系统需要比对采购订单和提单,确保装运的部件与订单一致。
- 部件质量检验:系统应能够根据定义的质量标准检验部件,合格的部件更新库存,不合格的部件退回供应商。
- 库存更新:库管员根据接受的部件列表更新库存信息,以反映新的库存状态。
#### 数据库设计的实践
- 实体-关系模型的具体实现:在案例中,需要根据房屋租赁公司管理系统的需求来设计数据库。实体可能包括房屋、租客、员工等,它们各自拥有相应的属性,例如房屋楼编号、地址、租客信息等。
- 数据库设计类的分类:在系统中将设计类划分为接口类、控制类和实体类,确保系统架构的清晰与功能的分离。接口类处理用户交互,控制类处理业务逻辑,而实体类负责数据持久化。
- 订单处理逻辑的实现:系统中的订单处理逻辑需要能够处理不同类型的订单状态变化。包括订单生成、支付、挂起、备货等状态,并需要在特定条件下自动变更订单状态。
从2017年上半年软件设计师下午案例分析真题中我们可以提取出软件设计中的多个关键知识点,涵盖了系统设计的结构化方法、功能实现、数据流图设计、数据库设计原则以及订单处理的业务逻辑。这些知识对于软件开发人员来说至关重要,是构建高效、可维护和用户体验良好的软件系统的基石。