软件设计过程
总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案构设计阶段确定软件结构。典型的总体设计过程包括以下几个步骤:
(1)设想供选择的方案。
在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求从中选出最佳方案。需求分析阶段得出的数据流图是总体设计的极好的出发点。
设想供选择的方案的一种常 用的方法是,设想把数据流图中的处理逻辑地进行组合,不同的组合可能就是不同的实现方案。分析各种方案,抛弃在技术上行不通的分组方法(例如,组内不同处理的执行时间不相容),余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统。
(2)选取合理的方案。
应该从前一步得到的一 系列供选择的方 案中选取若干个合理的方案,通常至少选取低成本、中等成本和高成本的3种方案。在判断哪些方案合理时应该考虑在问题定义和可行性研究阶段确定的工程规模和目标,有时可能还需要进步征求用户的意 见。
对每个合理的方案分析员都应该准备以下4份资料:
1)数据流程图、IPO图等。
2)组成系统的物理元素清单、数据字典。
3)成本/效益分析。
4)实现这个系统的进度计划。
(3)推荐最佳方案。
分析员应该综合分析对比各种合理方案的利弊,推荐一个最佳的方案,并为推荐的方案制定详细的实现计划。
用户和有关的技术专家应该认真审查分析员所推荐的最佳系统,如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请用户进一步审核。在使用部门的负责人也接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶段一结构设计。
(4)功能分解。
为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件(或数据库)。对程序(特别是复杂的大型程序)的设计通常分两个阶段完成:首先进行结构设计,然后进行过程设计。结构设计确定程序由哪些模块组成,以及这些模块之间的关系;过程设计确定每个模块的处理过程。结构设计是总体设计阶段的任务,过程设计是详细设计阶段的任务。
为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。一般说来,经过分解之后应该使每个功能对大多数程序员而言都是明显易懂的。功能分解导致数据流图的进一步细化,同时还应该用IPO图或其他适当的工具简要描述细化后每个处理的算法。
(5)设计软件结构。
通常程序中的一个模块完成个适当的子功能。应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。软件结构(即由模块组成的层次系统)可以用层次图或结构图来描绘。
如果数据流图已经细化到适当的层次,则可以直接从数据流图映射出软件结构。
(6)设计数据库。
对于需要使用数据库的那些应用系统,软件工程师应该在需求分析阶段所确定的E-R图和数据字典的基础上,进一步设计数据库。
数据库设计首先要确定数据库结构,还要考忠数据库的完整性、安全性、一致性以及优化等问题。