结构化设计属于软件工程的系统设计阶段,通常划分成两个步骤:结构化总体设计和结构化详细设计。
总体设计阶段的主要任务是设计软件的结构,即确定程序的组成模块及模块间的关系。
详细设计阶段的主要任务是设计出程序的详细规格说明。
3.1结构化设计概述
结构化设计方法是一种面向数据流的传统软件设计方法,以数据流为中心构建软件分析模型和软件设计模型。
总体设计阶段的软件设计模型包括软件体系结构模型,软件接口模型和软件数据模型。
1,结构化设计的任务:软件的体系结构设计,接口设计,数据模型设计。
①体系结构设计:定义软件模块及模块之间的关系。设计依据为结构化需求分析阶段的数据流图。
②接口设计:包括外部接口设计和内部接口设计。外部描述用户界面,软件和硬件设备及其他软件系统的接口,设计依据为结构化需求分析阶段的顶层数据流图。内部为软件各模块之间的接口,设计依据为结构化需求分析阶段的数据流图。
③数据模型设计:主要是根据结构化需求分析阶段所建立的E-R图和数据字典来确定软件涉及的文件系统的结构及数据库的表结构。
过程设计的主要工作是确定软件各模块内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。设计依据为结构化需求分析阶段的数据流图,状态转换图及数据字典。
2,结构化设计的原则
①摸块化。②高内聚,低耦合:耦合是程序结构中各个模块之间相互关联的度量,取决于各个模块间接口的复杂程度,调用模块的方式和通过接口的信息类型。内聚是一个模块内部各个元素彼此结合的紧密程度的度量。③抽象:抽取事物最基本的特性和行为,忽悠非基本的细节。④信息隐藏:封装技术将细节隐藏起来。④一致性:各模块使用一致的术语和符号,模块间接口保持一致,与硬件接口保持一致,系统规格说明和系统应用行为应保持一致。
3,模块独立性
模块独立指每个模块只完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单,和其他模块之间没有过多的相互作用。
易开发,测试,维护。能分割功能,接口可简化。
①耦合:非直接耦合:通过主模块的控制和调用来实现。数据耦合:通过简单数据参数来交换输入,输出信息的。标记耦合:通过参数表传递记录信息。控制耦合:通过控制参数控制另一模块功能。外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,且不通过参数表传递该全局变量的信息。公共耦合:一组模块都访问同一个公共数据环境。内容耦合。
②内聚:功能内聚。信息内聚:完成多功能,同一数据结构上操作。通信内聚:相同输入数据或相同的输出数据。过程内聚。时间内聚。逻辑内聚,巧合内聚
4,结构化设计的步骤
①设计软件的体系结构图。②设计软件的接口。③设计软件的数据模型。④软件的详细设计。⑤编写结构化设计说明书
3.2体系结构设计
1,体系结构的启发式设计原则
①提高模块独立性:软件系统中每个模块只涉及软件要求的具休的子功能,和软件系统中其他的模块的接口是简单的。
审查分析,通过模块分解或合并,力求降低耦合并提高内聚。
②模块规模适中
③结构图的深度和宽度适中
④结构图中扇入和扇出适当
一个模块直接控制的下层模块的个数称为该模块的扇出数。通常3到4,最多5到9。
多个模块可以有同一个下属模块,该下属模块的上级模块的个数称为扇入数。
⑤模块的作用域应在控制域之内。
⑥模块功能的完善化:执行规定的功能的部分。出错处理的部分。结束标志。消除重复功能,改善软件结构。
2,面向数据流的设计方法
①交换型数据流:取得数据,交换数据,给出数据。
交换型数据流向变换型结构的映射过程步骤:整合数据流图,划分边界。进行一级分解,设计系统的上层模块。进行二级分解,设计系统的中,下层模块。
②事务型数据流:接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。
步骤:整合数据流图,划分边界,明确其中的输入及输出。建立上层模块。分解,细化,得到下层模块。
③混合型数据谎:事务型和变换型的混合形式。
步骤:划分边界:将系统数据流图划分出软件系统的输入,变换中心和输出三部分。设计系统的体系结构图。
3.3接口设计
1,软件与人之间的交互界面设计
①用户界面设计原则:简洁,实用。清楚,一致。从用户习惯考虑。用户记忆负担最小化。安全,可靠。灵活性和人性化。
②用户界面设计内容:输入/输出设计,操作设计和用户手册。
多方面考虑:使用难易,学习难易,操作速度,实现的复杂程度,操作的控制对象,开发的难易程度。
③设计详细的交互:一致性,操作步骤尽可能少,不要哑播放,提供Undo功能,提高学习效率。
3.4数据设计
一般包括文件设计和数据模型设计两方面。
1,文件设计:根据软硬件设备条件和操作处理需求设计文件的类型,文件的组织分式等。
文件的组织方式:①顺序文件②随机文件③索引文件:由索引表和主文件两部分构成。
2,数据库设计:①实体的映射:竖切常用于记录较少而属性很多的表。横切用于表中记录与时间相关的情况。②联系的映射:两个实体间一对一联系的映射。一对多。多对多。③设计数据视图,优点:降低数据的复杂性。保证数据的逻辑独立性。提高数据的安全性。
3.5过程设计
1,过程设计的任务和原则
任务:①算法设计。②数据结构细节和数据操作的设计。③输入/输出格式设计。④编写过程设计说明书。
原则:①采用结构化程序设计方法。②经典的结构化程序设计。③每个控制结构的设计只有一个入口和一个出口。④严格控制GOTO语句。⑤自顶向下,逐步细化。
2,过程设计的工具
①图形工具。②语言工具。③表格工具。