# 第十二章 软件系统分析与设计

软件系统主要技术领域

  1. 结构化分析与设计
  2. 数据库分析与设计
  3. 面向对象分析与设计
  4. 算法设计与 C 程序实现
  5. 面向对象的程序设计与实现

# 12.1 结构化分析与设计

结构化分析将数据和处理作为分析对象,数据的分析结果表示了现实世界中实体和属性及其之间的相互关系,而处理的分析结果则展现了系统对数据的加工和转换。

# 12.1.1 需求说明

以图书管理系统为例,图书管理系统的主要功能包括图书购入、借阅、归还以及注销。

  1. 购入新书时,需要为该书编制图书卡片,包括分类目录号、流水号(每本书唯一)、书名、作者、内容摘要、价格和购书日期等信息。
  2. 读者借书时,需要填写借书单,包括读者号、图书分类目录号,系统首先检查该读者号是否有效,进一步检查该读者所借图书是否超过最大限制。若未达到限制,则可以借出,登记图书分类目录号、书的流水号、读者号和借阅日期等。
  3. 读者还书时,根据图书分类目录号,查询到借阅记录,表明换书日期。
  4. 在某些情况下,还需要对图书进行清理,对一些过时或无继续保留价值的图书,需要注销,这时从图书文件里删除相关记录。

# 12.1.2 结构化分析

结构化分析的最终结果需要得到系统的数据流图、数据字典和加工说明。

系统主要分为管理任务和查询任务,因此可以将其细分两个大的处理

同样对于管理处理可以进一步细化

# 12.1.3 总体设计

总体设计给出了数据流图中的各个处理转换为模块和模块之间的调用关系,后续需要根据总体设计给出模块详细设计。

# 12.1.4 详细设计

以借书为例,该模块的详细流程如图所示

完成对每一个模块的详细设计,即可将详细设计转换为程序代码,从而实现整个管理系统

# 12.2 数据库分析与设计

数据库设计属于系统设计的范畴。通常把使用数据库的系统称为数据库应用系统,把对数据库应用系统的设计简称为数据库设计。

# 12.2.1 数据库设计的策略与步骤

  1. 数据库设计的策略

    数据库设计的一般策略有两种:自顶向下和自底向上。 自顶向下是从一般到特殊的开发策略。它是从一个企业的高层管理着手,分析企业的目标、对象和策略,构造抽象的高层数据模型。然后逐步构造越来越详细的描述和模型。 自底向上的开发采用与抽象相反的顺序进行。它从各种基本业务和数据处理着手,即从一个企业的各个基层业务子系统的业务处理开始,进行分析和设计。

  2. 数据库设计的步骤

    多年来,人们提出了多种数据库设计方法、多种设计准则和规范。 1978 年 10 月召开的新奥尔良会议提出的关于数据库设计的步骤是目前得到公认的,较完整、较权威的数据库设计方法,它把数据库设计分为以下 4 个主要阶段。

    1. 用户需求分析。
    2. 概念设计。
    3. 逻辑设计。
    4. 物理设计。

# 12.2.2 需求分析

需求分析是在项目确定之后,用户和设计人员对数据库应用系统所要涉及的内容和功能的整理和描述,是以用户的角度来认识系统。

  1. 需求分析的任务、目标及方法
  2. 需求分析阶段的文档

# 12.2.3 概念结构设计

数据库概念结构设计阶段是在需求分析的基础上,依照需求分析中的信息要求对用户信息加以分类、聚集和概括,建立信息模型,并依照选定的数据库管理系统软件转换成为数据的逻辑结构,再依照软硬件,最终实现数据的合理存储,这一过程也称为数据建模。

  1. 概念结构设计策略与方法
  2. 用 E-R 方法建立概念模型

# 12.2.4 逻辑结构设计

逻辑结构即是在概念结构设计的基础上进行数据模型设计,可以是层次模型、网状模型和关系模型。

  1. E-R 图关系模式的转换
  2. 关系模式的规范化
  3. 确定完整性约束
  4. 用户视图的确定

# 12.2.5 数据库的物理设计

数据库系统实现是离不开具体的计算机的,在实现数据库逻辑结构设计,就要确定数据库在计算机中的具体存储。数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于给定的计算机系统。为一个给定的逻辑数据模型设计一个最适合应用要求的物理结构的过程,就是数据库的物理设计。

  1. 确定数据分布
  2. 确定数据的存储结构
  3. 确定数据的访问方式

# 12.2.6 数据库的实施与维护

  1. 数据库的实施
  2. 数据库的维护

# 12.2.7 案例分析

  1. 图书管理需求分析
  2. 图书管理概念结构设计
  3. 图书管理逻辑结构设计

# 12.3 面向对象分析与设计

# 12.3.1 面向对象分析与设计的步骤

# 12.3.2 需求说明

# 12.3.3 建模用例

# 12.3.4 建模活动

# 12.3.5 设计类图

# 12.3.6 建模对象状态

# 12.3.7 建模交互

# 12.4 算法分析与设计

# 12.4.1 C 程序设计语言与实现

# 12.4.2 算法设计与实现

# 12.5 面向对象的程序设计与实现

# 12.5.1 设计与实现方法

# 12.5.2 设计模式的应用