【课前思考】
��1. 软件设计从技术上和管理上分为哪几种?
2. 从技术上看,几种设计分别从分析模型哪些成分转换来的?
3. 软件设计的目标是什么? 基本原则是什么?
4. 软件设计的过程有哪几步?第1步和最后1步的作用是什么?
5. 抽象化和逐步细化的思想在设计中起什么作用?
6. 为什么要模块化?模块是什么?
7. 什么是信息隐蔽?信息隐蔽的原则为什么很重要?
8. 模块独立性的量度有哪两个?如何选取好的方式以增强模块独立性?
9. 软件体系结构设计的三条性质是什么?
10. 软件构件分为哪几种?构件的连接方式有哪几种?
11. 软件体系结构有哪些?其特点是什么?
12. 用结构化设计方法建立的系统结构有哪两种?分别加以说明?
13. 变换映射的步骤有哪些?用例子说明。
14. 面向数据结构的JSD方法的主要步骤有哪几步?
15. 面向数据结构的JSP方法的主要步骤有哪几步?用例子说明。
16. 数据设计的基本原则是什么?
17. 文件设计分两个阶段,每个阶段各完成什么工作?
18. 文件组织的选择要依据文件特性,那么,文件特性有哪几种?
19. 软件过程设计介绍了三种图形工具,它们的基本控制结构或图形构件有哪几种?试加以说明。
20. 判定表也可以描述设计,它的局限性在什么地方?主要用途是什么?
21. PDL语言是一种什么语言?它的语法分为两层,各起什么作用?
22. HIPO是一种设计工具,主要包含哪些成分?用例子说明。
23. 为什么要做设计评审?主要评审那些问题?
【学习目标】
��1. 了解软件概要设计的原则和过程。
2. 掌握模块划分的评价准则�D模块独立性的判别。
3. 掌握结构化设计方法。
4. 了解Jackson系统开发方法和Jackson程序设计方法。
5. 了解数据设计和文件设计的原则。
6. 掌握常用的详细设计的表达方法。
7. 了解软件设计规格说明和设计评审的主要内容。
【学习指南】
��软件设计是软件工程的一个重要阶段。软件设计过程是对程序结构、数据结构、过程细节和接口细节逐步细化、评审和编写文档的过程。
过去软件设计曾被狭隘地认为是"编程序"或"写代码",致使软件设计没有发挥它重要的作用,导致软件系统结构稳定性极差。本章系统地讨论了软件设计的目标、原则、过程、应遵循的基本要求。特别是抽象化、逐步细化、模块化、信息隐蔽等,都是现代软件设计技术的精华,应注意学习和实践。关于软件体系结构,这是近年来比较新的话题,需要有一定的了解。另外,传统的结构化设计方法和JSD、JSP方法,在课文中做了简要的介绍,它们在软件设计中是非常重要的方法,几乎所有传统的优秀软件都是依据它们的思想开发出来的,不可不知,而且在软件实践中必须能够学会使用它们。数据设计和文件设计与数据结构设计紧密相关,对设计原则需要有所了解。最后,过程设计是描述程序逻辑的工具,比较常用的工具都在本章出现了,几种工具各有其优缺点,可以结合起来使用。
总之,软件设计是软件开发过程中承前启后的工作,它依据软件需求规格说明书建立软件设计方案,作为下一步程序编码的依据。要求必须作到理解(需求)正确、设计正确、表达(设计)正确,确一不可。
【难重点】
��◇ 软件设计从技术上分成体系结构设计、数据设计、接口设计、过程设计4方面的工作,从管理角度分为概要设计、详细设计两个阶段。
��◇ 从技术角度来看,软件体系结构设计根据数据流图得到,数据设计根据实体�D关系图、数据对象描述和数据词典得到,接口设计源自于数据流图,而过程设计则根据状态�D转换图、控制规格说明和加工规格说明得来。
��◇ 软件设计的目标有三:(1) 设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。(2)
设计必须是可读、可理解的,使得将来易于编程、易于测试、易于维护。(3) 设计应从实现角度出发,给出与数据、功能、行为相关的软件全貌。
��◇ 软件设计的基本原则有:抽象化和逐层细化、系统模块化、程序结构化、信息隐蔽等。
��◇ 软件概要设计的过程包括制定规范、模块划分、处理方式设计、数据结构设计、可靠性设计、编写文档、评审。
��◇ 模块独立性的量度有两个:模块间的耦合和模块的内聚。为使系统模块独立性强必须作到高内聚低耦合。
��◇ 软件体系结构设计的三要素是程序构件(模块)的层次结构、构件之间交互的方式,以及数据的结构。
��◇ 软件体系结构设计的三个性质是:结构、附属功能和质量、可复用。
��◇ 软件构件分为纯计算、存储、管理、控制、链接等5种。
��◇ 软件构件的连接方式有过程调用、数据流、间接激活、消息传递和共享数据等5种。
��◇ 软件体系结构主要分为数据流系统、调用�D返回系统、独立构件系统、虚拟机、数据为中心的系统、分布式处理系统、特定领域的软件体系结构等。
◇ 用结构化设计方法建立的系统结构有变换型和事务型等两种。
◇ 面向数据结构的JSD方法的主要步骤有实体动作分析、实体结构分析、定义初始模型、功能描述、决定系统时间特性、实现等6步。
◇ 面向数据结构的JSP方法的主要步骤有建立输入/输出数据结构、找出输入/输出数据结构中有对应关系的单元、导出程序结构、列出并分配操作和条件、用伪码写出程序的过程性描述。
◇ 数据设计的基本原则:软件系统化方法可用于数据设计、确定所有数据结构的抽象数据类型、建立数据词典、低层数据设计应推迟到设计过程后期进行、数据结构表示应实现信息隐蔽、数据结构应成为可复用的、软件设计和程序设计语言应支持抽象数据类型的定义和实现。
◇ 软件过程的三种图形工具的五种基本控制结构是顺序结构、IF两分支选择结构、CASE多分支选择结构、先判断重复结构(WHILE)、后判断重复结构(REPEAT)。
◇ 判定表描述程序的静态逻辑,因此不能独立用于描述程序逻辑。主要用于检查程序的逻辑。
◇ PDL语言是一种伪码,用于描述程序的逻辑。它的语法分为内外两层。外语法用高级语言中的关键字对程序进行分割,以描述程序结构和数据结构;内语法用自然语言描述各种操作和条件。
◇ HIPO是一种设计工具,主要包含可视目录表和IPO图。可视目录表给出程序的层次关系,IPO图则为程序各部分提供具体的工作细节。
◇ 在整个设计过程中,对各个时期的设计结果都需要经过一系列的设计质量评审,以便及时发现和及时解决在软件设计中出现的问题,防止把问题遗留到开发的后期阶段,造成后患。设计评审的内容包括:可追溯性、接口、设计风险、实用性、技术清晰度、可维护性、质量、各种选择方案、设计限制、其他具体问题的评估。
��
|