软件工程-第三章结构化设计

结构化设计属于软件工程的系统设计阶段,通常划分成两个步骤:结构化总体设计和结构化详细设计。

总体设计阶段的主要任务是设计软件的结构,即确定程序的组成模块及模块间的关系。

详细设计阶段的主要任务是设计出程序的详细规格说明。

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,过程设计的工具

①图形工具。②语言工具。③表格工具。

相关推荐
上山的月20 分钟前
MySQL -函数和约束
数据库·mysql
忒可君23 分钟前
C# winform 报错:类型“System.Int32”的对象无法转换为类型“System.Int16”。
java·开发语言
zhcf23 分钟前
【MySQL】十三,关于MySQL的全文索引
数据库·mysql
极限实验室24 分钟前
Easysearch Chart Admin 密码自定义
数据库
丁总学Java32 分钟前
要查询 `user` 表中 `we_chat_open_id` 列不为空的用户数量
数据库·mysql
抓哇能手32 分钟前
数据库系统概论
数据库·人工智能·sql·mysql·计算机
littlegirll33 分钟前
一个从oracle使用spool导出数据到kadb的脚本
数据库·oracle
GuYue.bing34 分钟前
网络下载ts流媒体
开发语言·python
geovindu35 分钟前
CSharp: Oracle Stored Procedure query table
数据库·oracle·c#·.net
StringerChen41 分钟前
Qt ui提升窗口的头文件找不到
开发语言·qt