软件结构化设计之概要设计
什么是概要设计?
又叫总体设计。即对全局问题的设计,也就是设计系统总的处理方案。软件工程总体设计包括:计算机配置设计、系统模块结构设计、数据库和文件设计、代码设计以及系统可靠性与内部控制设计等内容。软件功能分解属于下列软件开发中的总体设计阶段。
完成大型工程体系的总体方案和总体技术途径的设计过程。在一般工程设计中总体设计则指按计划任务书的内容进行概略计算,附以必要的文字说明和图纸设计,又称初步设计。对于工程系统工程总体设计是指前一种含义。总体设计是工程项目开发过程中的一个重要阶段。
研制大型工程体系的基本问题是,怎样把比较笼统的初始研制要求逐步地变为成千上万个研制参加者的具体工作,以及怎样把这些工作最终综合成一个技术上先进、经济上合算、研制周期短、能协调运转的实际系统,并使这个系统成为它所从属的更大系统的有效组成部分。1954年美国最早出现为导弹研制计划提供这种服务的系统工程公司──拉莫·沃尔德里奇公司。50年代末中国开始研制人造卫星和运载火箭时,也建立了这样的机构,并称之为总体设计部。总体设计部设计的是系统的总体,系统的总体方案和实现它的技术途径,并通过可行性研究和技术经济论证,确保项目在规划、设计、制造和运行各个阶段,总体性能最优。这样可以避免因规划、研制和运用的缺陷造成人力、物力和财力的浪费。
软件工程的概要设计就是把系统的功能需求分配到一个特定的软件系统结构中。基本目的就是回答“概括地说,系统应该如何实现”这个问题。总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。
概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。
概要设计基本原理
概要设计过程和任务
设计过程
概要设计基本过程如下图 所示,它主要包括三个方面的设计。首先是系统构架设计,用 于定义组成系统的子系统,以及对子系统的控制、子系统之间的通信和数据环境等;然后是软 件结构和数据结构的设计,用于定义构造子系统的功能模块、模块接口、模块之间的调用与返 回关系,以及数据结构、数据库结构等。
概要设计要求建立在需求分析基础之上,软件需求文档是软件概要设计的前提条件。只有这样,才能使得开发出来的软件系统最大限度地满足用户的应用需要。 实际上,概要设计的过程也就是将需求分析之中产生的功能模型、数据模型和行为模型等 分析结论进行转换,由此产生设计结论的过程。在从分析向设计的转换过程中,概要设计能够 产生出有关软件的系统构架、软件结构和数据结构等设计模型来。这些结论将被写进概要设计 文档中,作为后期详细设计的基本依据,能够为后面的详细设计、程序编码提供技术定位。 需要注意的是,概要设计所能够获得的还只是有关软件系统的抽象表达式,需要专心考虑 的是软件系统的基本结构,至于软件系统的内部实现细节如何,则被放到以后详细设计中去解 决。例如模块,概要设计中的模块只是一个外壳,虽然它有确定的功能边界,并提供了通信的 接口定义,但模块内部还基本上是空的,诸多具体的功能加工细节则必须等到详细设计完成以 后才能确定下来。因此,在有关软件设计的全部工作中,概要设计所提供的并不是最终设计蓝 图,而只是一份具有设计价值的具体实施方案与策略,用于把握系统的整体布局。尽管概要设 计并不涉及系统内部实现细节,但它所产生的实施方案与策略将会最终影响软件实现的成功与 否,并影响到今后软件系统维护的难易程度。
设计任务
概要设计阶段的任务既包括技术方面的,也包括管理方面的,具体说来,主要有以下几个方面:
(1)制定规范
具有一定规模的软件项目总是需要通过团队形式实施开发,例如,组成一个或几个开发小组 来承担对软件系统的开发任务。为了适应团队式开发的需要,在进入软件开发阶段之后,首先应 该为软件开发团队制定在设计时应该共同遵守的规范,以便协调与规范团队内各成员的工作。
概要设计时需要制定的规范或标准包括:
a.需要采用的管理规则,例如操作流程、交流方式、工作纪律等。
b.设计文档的编制标准,包括文档体系、文档格式、图表样式等。
c.信息编码形式,硬件、操作系统的接口规约,命名规则等。
d.设计目标、设计原则。
(2)系统构架设计
系统构架设计就是根据系统的需求框架,确定系统的基本结构,以获得有关系统创建的总 体方案。其主要设计内容包括:
a.根据系统业务需求,将系统分解成诸多具有独立任务的子系统。
b.分析子系统之间的通信,确定子系统的外部接口。
c.分析系统的应用特点、技术特点以及项目资金情况,确定系统的硬件环境、软件环境、 网络环境和数据环境等。
d.根据系统整体逻辑构造与应用需要,对系统进行整体物理部署与优化。 很显然,当系统构架被设计完成之后,软件项目就可按每个具有独立工作特征的子系统为 单位进行任务分解了,由此可以将一个大的软件项目分解成许多小的软件子项目。
(3)软件结构设计
软件结构设计是在系统构架确定以后,对组成系统的各个子系统的结构设计。例如,将系统进一步分解为诸多功能模块,并考虑如何通过这些模块来构造软件。
软件结构设计主要内容包括:
a.确定构造子系统的模块元素。
b.根据软件需求定义每个模块的功能。
c.定义模块接口与设计模块接口数据结构。
d.确定模块之间的调用与返回关系。
e.评估软件结构质量,进行结构优化
(4)公共数据结构设计
概要设计中还需要确定那些将被许多模块共同使用的公共数据的构造。例如,公共变量、 数据文件以及数据库中数据等,可以将这些数据看作为系统的公共数据环境。 对公共数据的设计包括:
a.公共数据变量的数据结构与作用范围。
b.输入、输出文件的结构。
c.数据库中的表结构、视图结构以及数据完整性等。
(5)安全性设计
系统安全性设计包括:操作权限管理设计、操作日志管理设计、文件与数据加密设计以及 特定功能的操作校验设计等。概要设计需要对以上方面的问题作出专门的说明,并制定出相应 的处理规则。 例如操作权限,假如应用系统需要具有权限分级管理的功能,则概要设计就必须对权限分级管理中所涉及的分级层数、权限范围、授权步骤以及用户账号存储方式等,从技术角度作出专门的安排。
(6)故障处理设计
软件系统工作过程中难免出现故障,概要设计时需要对各种可能出现的来自于软件、硬件 以及网络通信方面的故障作出专门考虑。例如,提供备用设备、设置出错处理模块、设置数据备份模块等。
(7)可维护性设计
软件系统在投入使用以后必将面临维护,如改正软件错误、扩充软件功能等。对此,概要设计需要作出专门安排,以方便日后的维护。例如,在软件中设置用于系统检测维护的专用模 块;预计今后需要进行功能扩充的模块,并对这些接口进行专门定义。
(8)编写文档
概要设计阶段需要编写的文档包括:概要设计说明书、数据库设计说明书、用户操作手册。 此外,还应该制定出有关测试的初步计划。 上述文档中,概要设计说明书是概要设计阶段必须产生的基本文档,涉及系统目标、系统 构架、软件结构、数据结构、运行控制、出错处理、安全机制等诸多方面的设计说明。
(9)概要设计评审
在诸多概要设计任务完成之后,应当组织对概要设计的评审。 概要设计评审内容主要包括:
a.需求确认:确认所设计的软件是否已覆盖了所有已确定的软件需求。
b.接口确认:确认该软件的内部接口与外部接口是否已经明确定义。
c.模块确认:确认所设计的模块是否满足高内聚、低耦合的要求,模块的作用范围是否在其控制范围之内。
d.风险性:该设计在现有技术条件下和预算范围内是否能按时实现。
e.实用性:该设计对于需求的解决是否实用。
f.可维护性:该设计是否考虑了今后的维护。
g.质量:该设计是否表现出了良好的质量特征
概要设计的步骤
将DFD图(流程图)转换成“高内聚,低耦合”的模块结构图。
怎么转换了,两种映射方法
1.变换设计:一个线性的顺序结构,由输入,输出和变换中心三部分组成,变换中心让数据发生一个本质的变换。输入把物理输入变成逻辑输入,输出臂把逻辑输出变成了物理输出。
2.事务设计:有一个事务的处理中心,它将输入分为许多相互平行的加工路径,然后根据输入的属性,选择某一加工路径。
概要设计图形工具
- 层次图:描述层次结构。
- HIPO图:在层次图的基础上,把图中除了顶层的方框外都加上编号****基本形式:输入,处理,输出。
- 模块结构图(SC):表达程序结构图形的表示方法,反映程序模块间的层次关系和联系。