[toc]
软件设计师笔记12_软件系统分析与设计
下面的内容参考自《软件设计师教程(第5版)》 这本书的第12章 软件系统分析与设计。
软件设计师考试结合了当前软件设计开发中的主流技术和工程应用背景,强调了主流设计技术的应用问题,读者除应掌握基本的概念和理论基础知识外,还需要正确地针对实践应用中的问题提出合理的解决方案,将一系列的设计方法与原则应用在实际系统的分析、设计和开发环节中。
编者委员会总结近几年的软件设计师考试所涉及的应用性内容,将其主要技术领域归纳为以下几点。
- (1)结构化分析与设计。
- (2)数据库分析与设计。
- (3)面向对象分析与设计。
- (4)算法设计与C程序实现。
- (5)面向对象的程序设计与实现。
结构化分析与设计
结构化分析是将数据和处理(加工)作为分析对象,数据的分析结果表示了现实世界中实体的属性及其之间的相互关系,而处理的分析结果则展现了系统对数据的加工和转换。
面向数据流建模是目前仍然被广泛使用的方法之一,而DFD则是面向数据流建模中的重要工具。
DFD将系统建模成输入-处理一输出的模型,即流入软件的数据对象,经由处理的转换,最后以结果数据对象的形式流出软件。
对问题进行结构化分析,其实施步骤如下。
- (1)确定系统边界,画出系统环境图。
- (2)自顶向下画出各层数据流图。
- (3)定义数据字典。
- (4)定义加工说明。
- (5)将图、字典以及加工组成分析模型。
在实际使用DFD进行数据流建模时,需要注意以下原则。
- (1)加工和数据流的正确使用。如一个加工必须既有输入又有输出;数据流只能和加工相关,即从加工流向加工、数据源流向加工或加工流向数据源。
- (2)每个数据流和数据存储都要在数据字典中有定义,数据字典包括各层数据流图中数据元素的定义。
- (3)数据流图中最底层的加工必须有加工说明。
- (4)父图和子图必须平衡。即父图中某加工的输入/输出(数据流)和分解这个加工的子图的输入/输出数据流必须完全一致。
- (5)加工处理说明和数据流图中加工涉及的元素保持一致。例如,在加工处理说明中,输入数据流必须说明其如何使用,输出数据流说明如何产生或选取,数据存储说明如何选取、使用或修改。
- (6)一幅图中的图元个数控制在7±2 以内。
总结
- 结构化分析的对象包括数据(实体对象的属性和关系)和处理(对信息的加工和处理)。
- 数据流图(DFD)是面向数据流建模的工具。
- 进行结构化分析的步骤:①确定系统边界,绘制系统环境图;②绘制各层数据流图(自顶向下);③定义数据字典;④定义加工(处理)说明;⑤将图、字典和加工组成分析模型。
- 系统总体设计模型反映模块间的调用关系,可以采用层次图、HIPO 图和机构图进行表达。
- 数据流图分为变换型数据流图和事务型数据流图。事务型数据流图的处理为条件判断式,根据不同输入数据的类型对应不同的处理动作。
- 详细设计可以采用程序流程图、N-S 图、PAS 图和 PDL 语言等工具进行表达。
- 结构化分析的最终结果:数据流图、数据字典和加工处理说明。
数据库分析与设计
数据库设计的策略
数据库设计的一般策略有两种:自顶向下(Top Down)和自底向上(Bottom Up)。
- 自顶向下是从一般到特殊的开发策略。它是从一个企业的高层管理着手,分析企业的目标、对象和策略,构造抽象的高层数据模型。然后逐步构造越来越详细的描述和模型(子系统的模型)。模型不断地扩展细化,直到能识别特定的数据库及其应用为止。
- 自底向上的开发采用与抽象相反的顺序进行。它从各种基本业务和数据处理着手,即从一个企业的各个基层业务子系统的业务处理开始,进行分析和设计。然后将各子系统进行综合和集中,进行上一层系统的分析和设计,将不同的数据进行综合。最后得到整个信息系统的分析和设计。
这两种方法各有优缺点。在实际的数据库设计开发过程中,常常把这两种方法综合起来使用。
数据库设计的步骤
数据库应用系统的生命周期分为六个阶段:数据库规划、需求描述与分析、数据库设计与应用程序设计、实现、测试、运行与维护。
其中:
- 需求描述与分析是以用户的角度进行的。
- 应用程序设计包括事务设计和用户界面设计。
- DDL(数据定义语言)用于建立数据库。
数据库设计的四个主要阶段
数据库设计的四个主要阶段有:用户需求分析、概念结构设计、逻辑结构设计、物理结构设计。
用户需求分析。
在需求调研的过程中,需要获得用户对系统的要求包括信息要求(保存哪些数据)、处理要求(实现什么功能)、系统要求(安全要求等)。
概念结构设计。
概念设计中概念模型的理想工具是 E-R 图,由实体、属性和实体间的联系三要素组成
- 1)概念结构设计的目标是产生反映系统信息需求的数据库概念结构,即概念模型。
- 2)概念结构设计的策略通常有以下四种:自顶向下、自底向上、逐步扩张和混合策略。
概念结构设计的工作步骤如图所示。 
逻辑结构设计。
逻辑结构设计包括模式初始设计、子模式设计、应用程序设计、模式评价、模式求精。逻辑结构设计即是在概念结构设计的基础上进行数据模型设计,可以分为层次模型、网状模型和关系模型。
逻辑结构设计的工作步骤如图所示。 
数据库的物理设计
物理设计包括确定数据分布、存储结构和访问方式。综合考虑提高数据的访问速度,本阶段需要确定数据库文件的索引字段和索引类型。数据库的物理结构主要由存储记录格式、记录在物理设备上的安排及访问路径(存取方法)构成。
数据库物理设计的工作步骤如图所示。 
数据库的实施与维护
数据库实施阶段的工作步骤如图所示。 
面向对象分析与设计
面向对象分析与设计的步骤
- 面向对象分析包括四个活动:建模系统功能、定义领域模型、定义交互行为和状态、定义设计类图。
- 通过用例建模系统功能的步骤:①确定参与者;②确定需求用例;③构造用例模型;④记录需求用例描述。
建模对象状态
建模状态图应遵循的指导原则如下:①状态名称简单但具有描述性;②避免黑洞(有进无出);③避免奇迹(有出无进);④符合状态需对子状态集进行建模;⑤为复杂的实体创建分层的状态图
算法分析与设计
算法设计的主要步骤如图所示。 
算法问题类型如表所示。 
现代优化计算方法如图所示 
面向过程的程序设计与实现
- 变量的本质是程序中用来存放数据的一段存储空间,通常其对应的存储空间为内存区域。
- 变量具有类型、值、地址、作用域和生存期等属性。
- 存储变量地址的变量称为指针变量。
- 当一个指针变量指向仍为指针变量时,称为多级变量,级数越多,数据访问效率越低
面向对象的程序设计与实现
当设计与实现面向对象的程序时,需要注意以下四点:
- 能够根据设计模式的名称画出其对应的类图。
- 理解类图中每一个类的作用与功能。
- 能够将现实问题中所描述的各种职责映射到类图中具体的类。
- 能够使用一种面向对象语言实现设计
