高级软件工程 软件设计PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件设计的过程和目标:根据用信息域表示的软件 需求,以及功能和性能需求,进行数据设计、系统 结构设计、过程设计。
在每个设计活动中,软件开发者产生软件的数据设 计模型、体系结构设计模型、接口设计模型和过程 设计模型。
软件设计过程最终目标是产生一个设计规约,该规 约包括描述数据、体系结构、接口和构件的设计模 型。
接口设计
描述软件内部模块之间以及软件与人之间 是如何通信的(包括数据流和控制流)。
一个接口意味着特定信息流(如数据流和/ 或控制流)以及行为类型,因此,数据和 控制流图提供了接口设计所需的信息。
构件级设计
将软件体系结构的结构性元素转变成对软 件构件的过程性描述,即描述软件构件的 详细内部设计细节。
(1)接口,模块的输入输出;
(2)功能,指模块实现什么功能,有什么 作用;
(3)逻辑,描述模块内部如何实现需求及 所需数据;
(4)状态,该模块的运行环境,模块间调 用与被调用关系。
2.构件化
构件化就是将程序划分成若干个独立的模块,每 个模块完成一个特定子功能,每个模块既是相对 独立的,又是相互联系的,它们共同完成系统指 定的各项功能。
体系结构设计
定义软件主要结构性元素之间的关系。 体系结构设计表示(即基于计算机的系统
的框架)可以从系统规约、分析模型以及 分析模型中所定义子系统的交互导出。
数据设计
将分析阶段创建的信息模型转变成实现软 件所需的数据结构。
部分数据设计可能和软件体系结构的设计 同时发生,但更详细的数据设计活动则会 发生在每个具体软件构件(或模块)设计 的时候。
面向对象开发方法中,概要设计的部分内容,例如类及对 象的设计将提前到OOA阶段开始,而在OOD阶段,概要设计 将更多地关心对象之间的协作与交互。
4.2软件设计基本概念
在过去四十年中发展起来一套基本的软件 设计概念,每一种概念都为设计者提供了 应用更加复杂设计方法的基础 。
4.2.1 构件与构件化
高级软件工程
软件设计
4.1软件设计的目标和任务
软件设计的基本目的就是回答“系统应该 如何实现?”。
软件设计的任务,就是把分析阶段产生的 软件需求说明转换为用适当手段表示的软 件设计文档。
1.软件设计的目标
不管采用何种软件设计方法,软件设计一般都包括 数据设计、体系结构设计、接口设计和过程设计 (或称构件级设计)等设计活动。
4.2.3 信息隐藏
信息隐蔽是在设计和确定模块时,使得一个模块内包 含的信息(过程和数据)对于不需要这些信息的模块 来说是不能访问的。它通过定义一组独立的模块来实 现有效的模块化。
信息隐蔽作为一种设计准则用于模块化系统,在测试 与维护期间对软件修改会带来极大的好处。
信息隐蔽的目的,是为了提高模块的独立性,当修改 或维护模块时减少把一个模块的错误扩散到其他模块 中去的机会。
多层次抽象。在抽象的最高层次使用问题环境的 语言,以概括的方式叙述问题的解法,在较低层 次上使用更过程化的方法,把面向问题的术语和 面向实现的术语结合起来描述问题的解法。 软件工程中的每个步骤都是对软件解决方案抽 象化程度的一次细化(即求精)。
2.逐步求精
逐步求精是一种先总体、后局部的思维原则, 也就是一种逐层分解、分而治之的方法。
第一个阶段是概要设计(总体设计或初步设计), 将软件需求转化为数据结构和软件的系统结构,包 括结构设计和接口设计,并编写概要设计文档。
第二阶段是详细设计阶段(过程设计),其任务 是通过对结构表示进行细化,确定各个软件构件 的详细数据结构和算法,产生描述各软件构件的 详细设计文档。
概要设计主要确定实现目标系统的总体思想和设计框架。
1.构件 在软件系统设计中,构件是指这样一组程序语句,
它包括输入、输出和逻辑处理功能、内部信息及 其运行计划。 构件指可单独命名且可通过名字访问的过程函数、 子程序或宏调用。 模块就是构件的一种具体形式。 模块是一个拥有明确定义的输入、输出和特性的 程序实体。
一般构件/模块具有以下几种特征:
4.2.4 构件独立性
构件独立性(Module Independence)概括了把软 件划分为构件时要遵守的准则,也是判断构件构造 是不是合理的标准。
模块独立性是构件独立性的一种具体表现形式。
独立的模块指具有独立功能而且和其他模块之间没 有过多的相互作用的模块。模块独立性是通过判定 系统中划分的模块是否是独立的模块来实现的,即 使每个模块只完成系统要求的一个相对独立的特定 子功能,而且与软件结构的其他部分的接口是简单 的。
在面对一个复杂的大问题时,它采用自顶向 下、逐步细化的方法,将一个大问题逐层分 解成许多小问题,然后每个小系统再分解成 若干个更小的问题,经过多次逐层分解,每 个最低层问题都足够简单,最后再逐个解决。
逐步求精是与抽象相反但又互补的一个概念。 抽象使得设计者能够刻画过程和数据的同时, 忽略低层细节,求精有助于设计者在数据过 程中揭示低层的细节,两者均能帮助设计者 在设计演化中,构造出完整的设计模型。
软件设计非常重要,它将最终影响软件构造 是否成功、最终软件的质量以及软件维护的 难易程度。
软件设计为我们提供了可以用于质量评估的 软件表示,设计是我们能将用户需求准确地 转化为完整的软件产品或系统的唯一方法。
软件设计是所有软件维护步骤的计任务通 常分两个阶段完成:
构件化的目的:降低软件的复杂性。 对软件进行适当的分解,不但可以降低复杂性,
而且可减少开发工作量,从而降低软件开发成本。 我们常说的模块化就是构件化的一种具体形式。
4.2.2 抽象与逐步求精
1.抽象 抽象是指从一些事物中抽取其本质的共同的
特性,而忽略其非本质细节的差异。 当我们考虑对求解问题的模块化时,可以进行
系统分析员使用系统流程图或其他工具,描述每种可能的系统, 推荐一个较好的系统方案(最佳方案),并且制定实现所推荐系统的 详细计划。在用户确认后,系统分析员就要设计软件的整体结构和框 架,确定程序有哪些某块组成,以及模块与模块之间的关系,最后提 出总体设计说明书;
详细设计阶段的根本目标是确定应该怎样具体地实现所要 求的系统。
在每个设计活动中,软件开发者产生软件的数据设 计模型、体系结构设计模型、接口设计模型和过程 设计模型。
软件设计过程最终目标是产生一个设计规约,该规 约包括描述数据、体系结构、接口和构件的设计模 型。
接口设计
描述软件内部模块之间以及软件与人之间 是如何通信的(包括数据流和控制流)。
一个接口意味着特定信息流(如数据流和/ 或控制流)以及行为类型,因此,数据和 控制流图提供了接口设计所需的信息。
构件级设计
将软件体系结构的结构性元素转变成对软 件构件的过程性描述,即描述软件构件的 详细内部设计细节。
(1)接口,模块的输入输出;
(2)功能,指模块实现什么功能,有什么 作用;
(3)逻辑,描述模块内部如何实现需求及 所需数据;
(4)状态,该模块的运行环境,模块间调 用与被调用关系。
2.构件化
构件化就是将程序划分成若干个独立的模块,每 个模块完成一个特定子功能,每个模块既是相对 独立的,又是相互联系的,它们共同完成系统指 定的各项功能。
体系结构设计
定义软件主要结构性元素之间的关系。 体系结构设计表示(即基于计算机的系统
的框架)可以从系统规约、分析模型以及 分析模型中所定义子系统的交互导出。
数据设计
将分析阶段创建的信息模型转变成实现软 件所需的数据结构。
部分数据设计可能和软件体系结构的设计 同时发生,但更详细的数据设计活动则会 发生在每个具体软件构件(或模块)设计 的时候。
面向对象开发方法中,概要设计的部分内容,例如类及对 象的设计将提前到OOA阶段开始,而在OOD阶段,概要设计 将更多地关心对象之间的协作与交互。
4.2软件设计基本概念
在过去四十年中发展起来一套基本的软件 设计概念,每一种概念都为设计者提供了 应用更加复杂设计方法的基础 。
4.2.1 构件与构件化
高级软件工程
软件设计
4.1软件设计的目标和任务
软件设计的基本目的就是回答“系统应该 如何实现?”。
软件设计的任务,就是把分析阶段产生的 软件需求说明转换为用适当手段表示的软 件设计文档。
1.软件设计的目标
不管采用何种软件设计方法,软件设计一般都包括 数据设计、体系结构设计、接口设计和过程设计 (或称构件级设计)等设计活动。
4.2.3 信息隐藏
信息隐蔽是在设计和确定模块时,使得一个模块内包 含的信息(过程和数据)对于不需要这些信息的模块 来说是不能访问的。它通过定义一组独立的模块来实 现有效的模块化。
信息隐蔽作为一种设计准则用于模块化系统,在测试 与维护期间对软件修改会带来极大的好处。
信息隐蔽的目的,是为了提高模块的独立性,当修改 或维护模块时减少把一个模块的错误扩散到其他模块 中去的机会。
多层次抽象。在抽象的最高层次使用问题环境的 语言,以概括的方式叙述问题的解法,在较低层 次上使用更过程化的方法,把面向问题的术语和 面向实现的术语结合起来描述问题的解法。 软件工程中的每个步骤都是对软件解决方案抽 象化程度的一次细化(即求精)。
2.逐步求精
逐步求精是一种先总体、后局部的思维原则, 也就是一种逐层分解、分而治之的方法。
第一个阶段是概要设计(总体设计或初步设计), 将软件需求转化为数据结构和软件的系统结构,包 括结构设计和接口设计,并编写概要设计文档。
第二阶段是详细设计阶段(过程设计),其任务 是通过对结构表示进行细化,确定各个软件构件 的详细数据结构和算法,产生描述各软件构件的 详细设计文档。
概要设计主要确定实现目标系统的总体思想和设计框架。
1.构件 在软件系统设计中,构件是指这样一组程序语句,
它包括输入、输出和逻辑处理功能、内部信息及 其运行计划。 构件指可单独命名且可通过名字访问的过程函数、 子程序或宏调用。 模块就是构件的一种具体形式。 模块是一个拥有明确定义的输入、输出和特性的 程序实体。
一般构件/模块具有以下几种特征:
4.2.4 构件独立性
构件独立性(Module Independence)概括了把软 件划分为构件时要遵守的准则,也是判断构件构造 是不是合理的标准。
模块独立性是构件独立性的一种具体表现形式。
独立的模块指具有独立功能而且和其他模块之间没 有过多的相互作用的模块。模块独立性是通过判定 系统中划分的模块是否是独立的模块来实现的,即 使每个模块只完成系统要求的一个相对独立的特定 子功能,而且与软件结构的其他部分的接口是简单 的。
在面对一个复杂的大问题时,它采用自顶向 下、逐步细化的方法,将一个大问题逐层分 解成许多小问题,然后每个小系统再分解成 若干个更小的问题,经过多次逐层分解,每 个最低层问题都足够简单,最后再逐个解决。
逐步求精是与抽象相反但又互补的一个概念。 抽象使得设计者能够刻画过程和数据的同时, 忽略低层细节,求精有助于设计者在数据过 程中揭示低层的细节,两者均能帮助设计者 在设计演化中,构造出完整的设计模型。
软件设计非常重要,它将最终影响软件构造 是否成功、最终软件的质量以及软件维护的 难易程度。
软件设计为我们提供了可以用于质量评估的 软件表示,设计是我们能将用户需求准确地 转化为完整的软件产品或系统的唯一方法。
软件设计是所有软件维护步骤的计任务通 常分两个阶段完成:
构件化的目的:降低软件的复杂性。 对软件进行适当的分解,不但可以降低复杂性,
而且可减少开发工作量,从而降低软件开发成本。 我们常说的模块化就是构件化的一种具体形式。
4.2.2 抽象与逐步求精
1.抽象 抽象是指从一些事物中抽取其本质的共同的
特性,而忽略其非本质细节的差异。 当我们考虑对求解问题的模块化时,可以进行
系统分析员使用系统流程图或其他工具,描述每种可能的系统, 推荐一个较好的系统方案(最佳方案),并且制定实现所推荐系统的 详细计划。在用户确认后,系统分析员就要设计软件的整体结构和框 架,确定程序有哪些某块组成,以及模块与模块之间的关系,最后提 出总体设计说明书;
详细设计阶段的根本目标是确定应该怎样具体地实现所要 求的系统。