1.5 总体设计
软件总体设计(也称概要设计),是指对整个软件系统进行结构设计,确定软件系统的结构。在软件总体设计时,通过软件系统结构分解,按功能需求把软件分解成独立运行的软部件,确定各个软部件所处的结构层次;处于高层的软部件主要执行控制任务,较少执行具体处理事务,处于底层的软部件则主要执行具体处理事务,而较少执行控制任务。
总体设计基本过程包括三个方面的设计。
1.系统构架的设计
系统构架的设计用来定义组成系统的子系统及对子系统的控制、子系统之间的通信和数据环境等。
2.软件结构的设计
软件结构的设计是在系统构架确定后,对组成系统的各个子系统的结构设计,如将子系统进一步分解为诸多功能模块(通常要画出功能模块图),并考虑如何通过这些模块来构造软件。
例如,设计一个电子投票软件,它具有功能选择、身份验证、投票人管理、候选人管理、投票区和投票结果管理6个模块,画出其系统模块结构如图1-3所示。
图1-3 系统模块结构图
其中,每个模块又可以根据功能分解再画出功能模块图,如身份验证模块。该模块需要从输入设备获取用户输入的用户名和密码,判断是否符合登录条件,其次要判断用户权限是管理员还是普通用户,从而决定使用的系统功能。该模块对应的功能模块结构如图1-4所示。
图1-4 身份验证功能模块结构图
其他模块也可以用同样的原理画出功能模块图,作为下一阶段详细设计的依据。
注意
模块结构图只显示函数逻辑流程,不包含代码,每个函数究竟怎么做,这个工作是在算法设计中给出的(流程图或者伪代码)。如果包含子函数调用,那么完整的结构只需要描绘一次。
3.数据结构和数据库结构的设计
数据结构设计即采用逐步细化的方法设计有效的数据结构,将大大简化软件模块处理过程的设计。数据库的设计是另一个重要的步骤,因为数据库结构设计是否合理,直接影响到系统的各个处理过程的性能和质量。数据库的设计包括结构特性的设计和行为特性的设计。结构特性的设计就是数据库框架和数据库结构设计;行为特性的设计是指应用程序设计,如查询、报表处理等。
数据库的设计有概念结构设计、逻辑结构设计和物理结构设计三个方面的内容。
概念结构设计是将用户需求抽象为概念模型的过程。实体-联系模型(E-R模型,Entity Relationship Model)为该阶段的设计提供了强有力的工具。实体-联系方法就是将现实世界的事物及其联系抽象成信息世界的实体及实体之间的联系。具体操作时,可以根据需求分析阶段得到的各局部应用的数据字典及数据流程图,画出局部E-R图,然后将各局部E-R图集成,形成全局的E-R图。
在E-R图中,实体用矩形表示,属性用椭圆表示,联系用菱形表示,各图形内分别写上实体名、属性名与联系名。联系与实体通过无向边连接,由于两个实体间的联系有一对一、一对多和多对多三种,对应的E-R图中无向边旁边标注联系的类型为1:1、1:n和m:n。例如,学生和教师、课程三者之间的联系可以用如图1-5所示的E-R图描述。
图1-5 教师、学生和课程的E-R图
在逻辑结构设计方面,一般首先将概念结构转换为关系模型,然后变成合适的数据库模式,接着对模式进行调整和优化。
数据库最终是要存储在物理设备上的,需要为给定的逻辑数据模型选取一个适合应用的物理结构。物理结构是指数据库在物理设备上的存储结构与存取方法。在物理结构设计中需要考虑存储结构、是否建立数据的索引、建立数据完整性规则(包括实体完整性和参照完整性)等问题。
在总体设计阶段所能获得的还只是有关软件系统的抽象表达式,需要专心考虑的是软件系统的基本结构,至于软件系统的内部实现细节如何,则被放到以后详细设计中去解决。