第四章 软件概要设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章软件概要设计

在软件需求分析阶段,已经搞清楚了软件“做什么”的问题,并把这些需求通过规格说明书描述了出来,这也是目标系统的逻辑模型。进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程,而概要设计(又称结构设计)就是软件设计最初形成的一个表示(这里的表示是一个名词),它描述了软件的总的体系结构。简单地说软件概要设计就是设计出软件的总体结构框架。而后对结构的进一步细化的设计就是软件的详细设计或过程设计。本章所学内容主要就是软件的概要设计内容。

4.1 软件概要设计的基本任务

4.1.1 基本任务

1. 设计软件系统结构(简称软件结构)

为了实现目标系统,最终必须设计出组成这个系统的所有程序和数据库(文件),对于程序,则首先进行结构设计,具体为:

(1)采用某种设计方法,将一个复杂的系统按功能划分成模块。

(2)确定每个模块的功能。

(3)确定模块之间的调用关系。

(4)确定模块之间的接口,即模块之间传递的信息。

(5)评价模块结构的质量。

根据以上内容,软件结构的设计是以模块为基础的,在需求分析阶段,已经把系统分成层次结构。设计阶段,以需求分析的结果为依据,从实现的角度进一步划分为模块,并组成模块的层次结构。软件结构的设计是概要设计关键的一步,直接影响到下一阶段详细设计与编码的工作软件系统的质量及一些整体特性都在软件结构的设计中决定。

2.数据结构及数据库设计

对于大型数据处理的软件系统,除了控制结构的模块设计外,数据结构与数据库设计也是很重要的。

(1)数据结构的设计

逐步细化的方法也适用于数据结构的设计。在需求分析阶段,已通过数据字典对数据的组成、操作约束、数据之间的关系等方面进行了描述,确定了数据的结构特性,在概要设计阶段要加以细化,详细设计阶段则规定具体的实现细节。在概要设计阶段,宜使用抽象的数据类型。

(2)数据库的设计

数据库的设计指数据存储文件的设计,主要进行以下几方面设计:

①概念设计。在数据分析的基础上,采用自底向上的方法从用户角度进行视图设计,一般用ER模型来表示数据模型,

这是一个概念模型。

②逻辑设计。ER模型或IDEFlx模型是独立于数据库管理系统(DBMS)的,要结合具体的DBMS特征来建立数据库的逻辑结构,对于关系型的DBMS来说将概念结构转换为数据模式、子模式并进行规范,要给出数据结构的定义,即定义所含的数据项、类型、长度及它们之间的层次或相互关系的表格等等。

③物理设计。对于不同的DBMS,物理环境不同,提供的存储结构与存取方法各不相同。物理设计就是设计数据模式的一些物理细节,如数据项存储要求、存取方式、索引的建立。

3.编写概要设计文档

在概要设计阶段,还要编写概要设计文档,我们初学者有一个不是很好的做法,就是在编程序时,往往不注意文档的编写,导致以后软件修改和升级很不方便,用户使用时也得不到帮助。所以应该在软件设计的每个阶段编写相应文档,在概要设计阶段,主要有以下文档需要编写:

(1)概要设计说明书。

(2)数据库设计说明书,主要给出所使用的DBMS简介、数据库的概念模型、逻辑设计、结果。

(3)用户手册,对需求分析阶段编写的用户手册进行补充。

(4)修订测试计划,对测试策略、方法、步骤提出明确要求。

4.评审

对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性,各部分之间的一致性等等都一一进行评审。

以上就是软件概要设计的四个基本任务,总结一下用八个字表示:两类结构文档评审。(两类结构就是指软件结构和数据结构及数据库设计)

4.1.2 软件概要设计说明书的主要内容

概要设计说明书是概要设计阶段结束时提交的技术文档,按国标GB8576-88的“计算机软件产品开发文件编制指南”规定,软件设计文档可分为“概要设计说明书”、“详细设计说明书”、“数据库设计说明书”。

4.2 软件设计的基本原理

软件设计中最重要的一个问题就是软件质量问题,用什么标准对软件设计的技术进行衡量呢?本节介绍几种基本原理。

4.2.1 模块化

何为模块?模块就是指在程序中的数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素。如高级语言中的过程、函数、子程序等等。模块是可组合、分解和更新的单元。模块有以下基本属性:

接口:指模块的输入与输出。

功能:指模块实现什么功能。

逻辑:描述内部如何实现要求的功能及所需的数据。

状态:该模块的运行环境,即模块的调用与被调用关系。功能、状态与接口反映模块的外在特性,逻辑反映它的内在特性。

模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。

设问题x,表示它的复杂性函数为C(x),解决它所需的工作量函数为E(x)。对于问题P1和P2,如果C(P1)>C(P2)即Pl比P2复杂,那么E(P1)>E(P2)即问题越复杂,所需要的工作量越大。

根据解决一般问题的经验,规律是:

C(P1十P2)>C(P1)十C(P2)

即一个问题由两个问题组合而成的复杂度大于分别考虑每个问题的复杂度之和。这样可以推出:

E(Pl十P2)>E(P1)十E(P2)

由此可知,开发一个大而复杂的软件系统,将它进行适当的分解,不但可降低其复杂性,还可减少开发工作量,从而降低开发成本,提高软件生产率,但是模块划分越多,块内的工作量减少,模块之间接口的工作量增加了,如图4—l 所示。因此在划分模块时,应减少接口的代价,提高模块的

相关文档
最新文档