软件设计师 上午题 结构化开发
软件设计师 上午题 结构化开发
结构化开发是一种系统化的软件开发方法,强调通过清晰的步骤、模块化设计和标准化工具来提升软件的可维护性、可靠性和开发效率。其核心思想是将复杂问题分解为更小、更易管理的部分,通常与结构化编程和结构化设计密切相关。
一、系统分析与设计概述
Ⅰ 系统设计的基本原理
1. 抽象
抽象,即将一个复杂的现象简化到可以分析、实验或者可以理解的程度。例如在设计用户登录模块时,在较高层次的抽象中只需定义输入(账号/密码)、输出(成功/失败),无需关心密码加密的具体算法。具体的算法可以在较低的抽象层次中细化。
2. 模块化
模块化即将系统分解为功能独立的模块,每个模块完成单一职责。这是一种对复杂问题分而治之的原则。
3. 信息隐蔽
信息隐蔽意味着将每个程序的成分封装在一个单一的设计模块中,在定义每一个模块时尽可能少地显露其内部的处理。
4. 模块独立
模块独立是指每个模块完成一个相对独立的特定子功能,并且要求模块之间的联系要尽可能简单。我们可以使用两个指标来衡量模块独立的程度:
1)耦合
耦合定义的是模块间依赖关系的紧密程度。耦合越低,独立性越强。一般来说,模块之间的耦合会有以下几种类型:

- 无直接耦合:两个模块间没有直接的关系。
- 数据耦合:两个模块之间存在值传递。
- 标记耦合:两个模块之间存在数据结构的传递。
- 控制耦合:一个模块调用另一个模块中的某一功能。
- 外部耦合:模块间通过软件之外的环境连接,比如I/O将模块耦合到特定的设备上。
- 公共耦合:多个模块共享全局数据。
- 内容耦合:一个模块直接使用另一个模块的内部数据,或者一个模块通过非正常入口转入另一个模块内部。
2)内聚
内聚着眼于一个模块内部,即一个模块中的各个元素彼此结合的紧密程度。一个高内聚的模块应当只做一件事。模块的内聚一般有以下几种类型:

- 偶然内聚:一个模块内的各个元素之间没有任何联系。
- 逻辑内聚:一个模块能够执行若干个逻辑上相似的功能。
- 时间内聚:把需要同时执行的动作组合在一起的模块称作时间内聚模块。
- 过程内聚:一个模块完成多个任务,且这些任务必须按指定的过程执行。
- 通信内聚:模块内的所有元素都在同一个数据结构上操作,这样一来大体的效果就是各处理在使用相同的输入时会产生相同的输出。
- 顺序内聚:一个模块内的各个处理元素都密切相关于完成一个功能且必须顺序执行。
- 功能内聚:一个模块内的所有元素都密切相关于完成一个功能,缺一不可。
Ⅱ 系统总体结构设计
1. 系统结构设计原则
- 分解-协调原则:解决复杂问题的一个重要原则为将其分解成多个小问题分别处理,在处理过程中根据系统的总体要求协调各部门之间的关系。
- 自顶向下的原则:首先抓住系统总的功能,再逐层分解实现。
- 信息隐蔽、抽象的原则:上层模块只规定下层模块要干什么,而不干涉怎么实现,以保证模块间的独立性和层次性。
- 一致性原则:整个软件设计过程中需要有统一的规范。
- 明确性原则:每个模块必须功能明确、接口明确,消除冗余的功能和接口。
- 模块的扇入系数和扇出系数要合理:一个模块直接调用其它模块的个数称之为扇出系数,反之则称之为扇入系数。扇出系数和扇入系数必须适当。
- 模块之间的耦合尽可能小,模块的内聚度尽可能高。
- 模块的规模适当。
- 模块的作用范围应该在其控制范围之内。
二、结构化分析方法
Ⅰ 数据流图(DFD)
数据流图的详细内容请参见:软件设计师 下午题 试题一 数据流图设计
- 2012年上半年:

B,在分层数据流图中有顶层数据流图、0层数据流图和底层数据流图三种。它们的功能依次是1)以最简形式描述系统的边界、主要输入/输出流;2)将系统分解为关键的处理过程,如“订单处理”、“支付验证”等;3)进一步细化每个处理过程的内部逻辑。
Ⅱ 数据字典(DD)
数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。其中,对加工的描述称为“小说明”,也可以称为“加工逻辑说明”。
1. 数据字典的内容
数据字典中有以下4类条目:
- 数据流条目:通常列出数据流的来源、去向和组成。
- 数据存储条目:定义系统中持久化数据的存储结构(如数据库表、文件)。
- 数据项条目:细化数据流或数据存储中的最小数据单元,包括类型、长度、约束等。
- 基本加工条目:用来说明DFD中基本加工的处理逻辑。

2. 结构化语言
结构化语言是一种常见的用来描述加工逻辑的方法,这是一种介于自然语言和形式化语言之间的半形式化语言。结构化语言的结构通常可分为内层和外层:
- 外层:用来描述控制结构,有以下几种基本结构:
- 顺序结构:一组祈使语句、选择语句、重复语句的顺序排列。
- 选择结构:一般采用IF-ELSE等关键词。
- 重复结构:一般采用DO-WHILE-ENDDO等关键词。
- 内层:了解即可,语法比较灵活,一般是采用祈使语句的自然语言短语。