软件工程概论ch04-1课件.ppt

上传人(卖家):晟晟文业 文档编号:4909880 上传时间:2023-01-24 格式:PPT 页数:113 大小:1.04MB
下载 相关 举报
软件工程概论ch04-1课件.ppt_第1页
第1页 / 共113页
软件工程概论ch04-1课件.ppt_第2页
第2页 / 共113页
软件工程概论ch04-1课件.ppt_第3页
第3页 / 共113页
软件工程概论ch04-1课件.ppt_第4页
第4页 / 共113页
软件工程概论ch04-1课件.ppt_第5页
第5页 / 共113页
点击查看更多>>
资源描述

1、第第4 4章章 软件设计软件设计2前言前言n 需求分析明确了需求分析明确了“做什么做什么”的问题。通过需的问题。通过需求调查与分析,得到了由逻辑模型和相关需求调查与分析,得到了由逻辑模型和相关需求规约组成的需求分析说明书。求规约组成的需求分析说明书。n 需求分析说明书是需求分析阶段的里程碑性需求分析说明书是需求分析阶段的里程碑性的阶段性成果,也是设计阶段的依据。的阶段性成果,也是设计阶段的依据。n 进入设计阶段以后,要回答的问题焦点是进入设计阶段以后,要回答的问题焦点是“怎么做怎么做”,要参照逻辑模型映射出软件系,要参照逻辑模型映射出软件系统的功能结构,着手进行软件设计。统的功能结构,着手进行

2、软件设计。3本章重点本章重点n 正确理解概要设计与详细设计的任务和目标正确理解概要设计与详细设计的任务和目标;n 掌握灵活运用相关的工具和方法。掌握灵活运用相关的工具和方法。n 软件设计又进一步分为:概要设计和详细设计。软件设计又进一步分为:概要设计和详细设计。概要设计关心的是软件功能结构,详细设计则概要设计关心的是软件功能结构,详细设计则更多的是编程实现的细节。要深刻理解软件结更多的是编程实现的细节。要深刻理解软件结构设计的原则及详细设计的规范。构设计的原则及详细设计的规范。4第第4 4章章 软件设计软件设计n 4.1 4.1 软件设计概述软件设计概述n 4.2 4.2 软件设计的概念与原理

3、软件设计的概念与原理n 4.3 4.3 软件设计的原则软件设计的原则n 4.4 4.4 结构化设计方法结构化设计方法n 4.5 4.5 系统包装系统包装n 4.6 4.6 软件详细设计概述软件详细设计概述n 4.7 4.7 详细设计工具详细设计工具54.1 4.1 软件设计概述软件设计概述 软件软件 定义定义 系统分析系统分析 软件软件 开发开发 软件软件 维护维护 问题定义问题定义 可行性分析可行性分析 需求分析需求分析 需求验证需求验证 回答回答“做什么做什么”的问题的问题 系统设计系统设计 系统实施系统实施 概要设计概要设计 详细设计详细设计 回答回答“怎么做怎么做”的问题。的问题。概要

4、描述系统如何实现。概要描述系统如何实现。功能目标图功能目标图 功能结构图功能结构图 结构优化结构优化 代码设计代码设计 数据库设计数据库设计 输入输出设计输入输出设计 系统交互设计系统交互设计 系统测试计划系统测试计划 编程编程 测试测试 单元测试单元测试 综合测试综合测试 修正错误修正错误 修改软件修改软件 补充功能补充功能 图 4-1 系统开发任务规划系统开发任务规划 系统系统调查调查 回答回答“如何实现如何实现”的问题。的问题。64.1 4.1 软件设计概述软件设计概述n 软件开发包括设计和实施两个环节软件开发包括设计和实施两个环节;n 其中软件设计分为:其中软件设计分为:v“概要设计概

5、要设计”仍然是面向逻辑的活动,仍然是面向逻辑的活动,实现由逻辑模型到软件框架结构的转变或实现由逻辑模型到软件框架结构的转变或映射;映射;v“详细设计详细设计”是面向物理实现的活动,是面向物理实现的活动,使得新系统能够借助于计算机系统实现设使得新系统能够借助于计算机系统实现设计目标。计目标。74.1 4.1 软件设计概述软件设计概述n 4.1.1 概要设计的基本任务与过程概要设计的基本任务与过程n 4.1.2 概要设计文档概要设计文档84.1.1 4.1.1 概要设计的基本任务与过程概要设计的基本任务与过程n 1.软件结构设计软件结构设计 n 2.数据结构及数据库设计数据结构及数据库设计 n 3

6、.编写概要设计文档编写概要设计文档n 4.评审评审9 拟拟定定方方案案 选选择择合合理理方方案案 推推荐荐最最佳佳方方案案 系系统统包包装装 方方案案设设计计 需需求求分分析析说说明明书书 最最佳佳方方案案 功功能能结结构构图图 数数据据库库方方案案 编编写写概概要要设设计计文文档档 拟拟定定测测试试计计划划 审审查查、复复审审 概概要要设设计计 说说明明书书 测测试试计计划划 图图 4 4-2 2 概概要要设设计计流流程程示示意意图图 库库结结构构设设计计 存存取取要要求求分分析析 存存储储结结构构规规范范化化 优优化化 功功能能分分析析 模模块块设设计计 数数据据库库设设计计 软软件件结结

7、构构设设计计 101.软件(功能)结构设计软件(功能)结构设计 n(1)采用某种设计方法,将软件按功能划分成)采用某种设计方法,将软件按功能划分成模块。模块。(2)确定每个模块的功能。)确定每个模块的功能。n(3)确定模块之间的层次(调用)关系。)确定模块之间的层次(调用)关系。n(4)考查模块的独立性,分解优化。)考查模块的独立性,分解优化。112.数据结构及数据库设计数据结构及数据库设计 n(1)数据结构的设计)数据结构的设计 n(2)数据库的设计)数据库的设计 123.编写概要设计文档编写概要设计文档n(1)概要设计说明书)概要设计说明书n(2)数据库设计说明)数据库设计说明n(3)用户

8、手册)用户手册n(4)修订测试计划)修订测试计划134.评审评审n 概要设计是否完整地实现了需求规约(功能、概要设计是否完整地实现了需求规约(功能、性能等要求);性能等要求);n 设计方案的可行性、关键的处理及内外部接设计方案的可行性、关键的处理及内外部接口定义的正确性、有效性以及各部分之间的口定义的正确性、有效性以及各部分之间的一致性等,都要一一进行评审。一致性等,都要一一进行评审。144.1 4.1 软件设计概述软件设计概述n 4.1.1 概要设计的基本任务与过程概要设计的基本任务与过程n 4.1.2 概要设计文档概要设计文档154.1.2 概要设计文档概要设计文档n 概要设计说明书是概要

9、设计阶段结束时提交概要设计说明书是概要设计阶段结束时提交的技术文档。的技术文档。n 按国标按国标GB8576-88计算机软件产品开发文计算机软件产品开发文件编制指南件编制指南规定,软件设计文档可分为规定,软件设计文档可分为v“概要设计说明书概要设计说明书”;v“详细设计说明书详细设计说明书”;v“数据库设计说明书数据库设计说明书”16概要设计说明书的主要内容如下概要设计说明书的主要内容如下 n(1 1)引言:编写目的、背景、定义、参考资料。)引言:编写目的、背景、定义、参考资料。n(2 2)总体设计:需求规定,运行环境,基本设计概念和处)总体设计:需求规定,运行环境,基本设计概念和处理流程,结

10、构。理流程,结构。n(3 3)接口设计:用户接口,外部接口,内部接口。)接口设计:用户接口,外部接口,内部接口。n(4 4)运行设计:运行模块组合,运行控制,运行时间。)运行设计:运行模块组合,运行控制,运行时间。n(5 5)系统数据结构设计:软件结构设计,物理结构设计,)系统数据结构设计:软件结构设计,物理结构设计,数据结构与程序的关系。数据结构与程序的关系。n(6 6)系统出错处理设计:出错信息,补救措施,系统恢复)系统出错处理设计:出错信息,补救措施,系统恢复设计。设计。17第第4 4章章 软件设计软件设计n 4.1 4.1 软件设计概述软件设计概述n 4.2 4.2 软件设计的概念与原

11、理软件设计的概念与原理n 4.3 4.3 软件设计的原则软件设计的原则n 4.4 4.4 结构化设计方法结构化设计方法n 4.5 4.5 系统包装系统包装n 4.6 4.6 软件详细设计概述软件详细设计概述n 4.7 4.7 详细设计工具详细设计工具184.2 4.2 软件设计的概念和原理软件设计的概念和原理n 4.2.1 模块化模块化n 4.2.2 抽象抽象n 4.2.3 信息隐蔽和局部化的指导思想信息隐蔽和局部化的指导思想n 4.2.4 模块独立性的判定准则模块独立性的判定准则194.2.1 4.2.1 模块化模块化n 1.模块的概念模块的概念n 2.模块化的思想模块化的思想 201.1.

12、模块的概念模块的概念n 模块,在程序中是数据说明、可执行语句等程模块,在程序中是数据说明、可执行语句等程序内容的集合。该集合一般是由于某种原因包序内容的集合。该集合一般是由于某种原因包装在一起的,最主要的是为了完成一个功能。装在一起的,最主要的是为了完成一个功能。n 在形式上,它可以是高级语言中的一个过程、在形式上,它可以是高级语言中的一个过程、函数和子程序等。函数和子程序等。211.1.模块的概念模块的概念n 在软件的构架中,模块是可以组合、分解和更换的单元。在软件的构架中,模块是可以组合、分解和更换的单元。模块具有以下几种基本特点:模块具有以下几种基本特点:v(1 1)接口:指模块输入与输

13、出。)接口:指模块输入与输出。v(2 2)功能:是模块存在的必要条件,模块必然是为实)功能:是模块存在的必要条件,模块必然是为实现某个功能而延生的。现某个功能而延生的。v(3 3)逻辑:指该模块的运行环境,即模块的调用与被)逻辑:指该模块的运行环境,即模块的调用与被调用关系。调用关系。n 功能、状态与接口反映模块的外部特性,逻辑反映它的内功能、状态与接口反映模块的外部特性,逻辑反映它的内部特性。部特性。222.2.模块化的思想模块化的思想 n 软件工程解决复杂问题的手法包括:软件工程解决复杂问题的手法包括:“分解分解”、”抽象抽象”的应用。的应用。n 模块化是指解决一个复杂问题时自顶向下逐层把

14、模块化是指解决一个复杂问题时自顶向下逐层把软件系统分解成若干模块的过程。软件系统分解成若干模块的过程。n 每个模块完成一个特定的子功能,所有的模块按每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系某种方法组装起来,成为一个整体,完成整个系统所要求的功能。统所要求的功能。232.2.模块化的思想模块化的思想n 模块化是软件工程中解决复杂问题的一种有效模块化是软件工程中解决复杂问题的一种有效手段,它不仅可以使问题简化,而且也可以降手段,它不仅可以使问题简化,而且也可以降低工作量。低工作量。n 为了说明这一点,可将问题的复杂性和工作量为了说明这一点,可将问题的复杂

15、性和工作量的关系进行推理。的关系进行推理。242.2.模块化的思想模块化的思想252.2.模块化的思想模块化的思想n 设某个问题设某个问题X,它的复杂性函数为,它的复杂性函数为C(X),解决它所需的),解决它所需的工作量为工作量为E(X)n 对于问题对于问题P1和和P2,如果,如果 C(P1)C(P2),即,即P1比比P2复杂,复杂,那么那么n E(P1)E(P2),即问题越复杂,所需要的工作量越大。,即问题越复杂,所需要的工作量越大。n根据解决一般问题的经验,规律是:根据解决一般问题的经验,规律是:C(P1+P2)C(P1)+C(P2)n 即一个问题由两个问题组合而成的复杂度大于分别考虑每即

16、一个问题由两个问题组合而成的复杂度大于分别考虑每个问题的复杂度之和。这样可以推出:个问题的复杂度之和。这样可以推出:E(P1+P2)E(P1)+E(P2)262.2.模块化的思想模块化的思想 成本(工作量)最小 成本区 软件成本 接口成本 模块开发成本 模块数 M 图 4-3 模块设计与软件成本 273.软件结构中的模块软件结构中的模块n模块是对一个或一部分相对独立的系统功能的定义,用矩形框表模块是对一个或一部分相对独立的系统功能的定义,用矩形框表示,并用模块的名字标记它。示,并用模块的名字标记它。n模块的名称一般使用一个动宾结构的短语描述其功能,如模块的名称一般使用一个动宾结构的短语描述其功

17、能,如“计算计算每月利息每月利息”、“计算月销售额计算月销售额”等。等。n对于一些现有的或语言环境自身内嵌不需要编程实现功能,用两对于一些现有的或语言环境自身内嵌不需要编程实现功能,用两边带双线的特殊方框符号表示,这样的功能模块被称为边带双线的特殊方框符号表示,这样的功能模块被称为“已定义已定义的模快的模快”。284.模块化的优点模块化的优点n 模块化的优点可以归纳为:模块化的优点可以归纳为:v可以使软件结构清晰,易于阅读和理解;可以使软件结构清晰,易于阅读和理解;v使用模块化结构建造的软件便于修改、维使用模块化结构建造的软件便于修改、维护和调试;护和调试;v模块化可获得较高的软件可靠性;模块

18、化可获得较高的软件可靠性;v模块化便于工程化协作。模块化便于工程化协作。294.2 4.2 软件设计的概念和原理软件设计的概念和原理n 4.2.1 模块化模块化n 4.2.2 抽象抽象n 4.2.3 信息隐蔽和局部化的指导思想信息隐蔽和局部化的指导思想n 4.2.4 模块独立性的判定准则模块独立性的判定准则304.2.2 抽象抽象n 所谓抽象,就是高度概括事物的主要的或本所谓抽象,就是高度概括事物的主要的或本质的特性,暂时忽略或不考虑它们的细节。质的特性,暂时忽略或不考虑它们的细节。n 抽象,应把握级别或层次。在对软件系统进抽象,应把握级别或层次。在对软件系统进行模块设计的时候,可以有不同的抽

19、象级别行模块设计的时候,可以有不同的抽象级别或层次。或层次。31模块化和抽象层次模块化和抽象层次n 模块化和抽象层次思想相结合,使我们可以模块化和抽象层次思想相结合,使我们可以从不同角度来看系统。从不同角度来看系统。n 最高层次的模块反映了整体的解决方案,它最高层次的模块反映了整体的解决方案,它隐藏了那些可能扰乱视线的细节,使我们能隐藏了那些可能扰乱视线的细节,使我们能够看到一个系统所要完成的主要功能。够看到一个系统所要完成的主要功能。n 当需要了解某部分更多的细节时,转向更低当需要了解某部分更多的细节时,转向更低的抽象层次即可。的抽象层次即可。32模块化和抽象的思想模块化和抽象的思想n 综合

20、模块化和抽象的思想,我们可以这样理解这综合模块化和抽象的思想,我们可以这样理解这两个软件工程的概念:两个软件工程的概念:n 抽象是一种处理复杂问题的软件工程思想,而模抽象是一种处理复杂问题的软件工程思想,而模块化是抽象思想运用的具体化或是工具;块化是抽象思想运用的具体化或是工具;n 抽象的思想方法具体体现在软件设计过程中模块抽象的思想方法具体体现在软件设计过程中模块化的方法上。化的方法上。33n 在软件工程实践中,人们将抽象化思想和模块化方在软件工程实践中,人们将抽象化思想和模块化方法运用于软件设计的不同方面得到了成功的经验。法运用于软件设计的不同方面得到了成功的经验。n(1)功能分解法)功能

21、分解法n(2)面向数据的分解法)面向数据的分解法n(3)面向事件的分解法)面向事件的分解法n(4)由外向内的设计)由外向内的设计n(5)面向对象的设计)面向对象的设计34(1)功能分解法)功能分解法n 它的核心是将功能分配到各个软件模块上。它的核心是将功能分配到各个软件模块上。n 分解活动是从顶层开始的,顶层是控制层,反映分解活动是从顶层开始的,顶层是控制层,反映整个系统的全貌,具体功能实现在较低的层次上整个系统的全貌,具体功能实现在较低的层次上展开。展开。n 一个系统的功能越多,软件结构的横向宽度就越一个系统的功能越多,软件结构的横向宽度就越宽;宽;n 功能越复杂,软件结构图的纵向层次就会越

22、多。功能越复杂,软件结构图的纵向层次就会越多。35(2)面向数据的分解法()面向数据的分解法(Jekson方法)方法)n 这种设计方法是基于数据结构的。顶层描述这种设计方法是基于数据结构的。顶层描述总体的数据结构,而底层描述具体的数据元总体的数据结构,而底层描述具体的数据元素及元素之间的关系。素及元素之间的关系。36(3)面向事件的分解法)面向事件的分解法n 这种设计是基于系统必须处理的事件的。讨这种设计是基于系统必须处理的事件的。讨论触发事件的条件、事件发生后引起的系统论触发事件的条件、事件发生后引起的系统状态变化、新的状态触发的事件状态变化、新的状态触发的事件循环往循环往复,使系统实现全部

23、任务。复,使系统实现全部任务。37(4)由外向内的设计)由外向内的设计n 这种黑盒法是基于用户对系统的输入、输出这种黑盒法是基于用户对系统的输入、输出信息的。也就是说,顶层列出所有可能的用信息的。也就是说,顶层列出所有可能的用户输入和输出,而较低层次描述的是对于这户输入和输出,而较低层次描述的是对于这些输入及可能产生的输出。些输入及可能产生的输出。38(5)面向对象的设计)面向对象的设计n 将现实系统的一个实体或事物,抽象为一个将现实系统的一个实体或事物,抽象为一个对象或类,将现实世界中的复杂关系,映射对象或类,将现实世界中的复杂关系,映射为对象及它们之间的相互关联关系。为对象及它们之间的相互

24、关联关系。39n 不论什么方法,其目的都是相同的,即由抽不论什么方法,其目的都是相同的,即由抽象到具体,逐步求精,通过分析与设计构造象到具体,逐步求精,通过分析与设计构造出软件的结构,提高软件的可理解性和易实出软件的结构,提高软件的可理解性和易实现性,降低软件设计和实现的难度。现性,降低软件设计和实现的难度。n 总之,综合理解抽象的概念和思想,可以从总之,综合理解抽象的概念和思想,可以从以下几方面理解:以下几方面理解:40n 1)对于复杂的问题,经过抽象、概括,可以把握主)对于复杂的问题,经过抽象、概括,可以把握主要问题,暂时忽略事务的细微差别。主要精力集中要问题,暂时忽略事务的细微差别。主要

25、精力集中在把主要的、关键的问题理解、设计的更加合理。在把主要的、关键的问题理解、设计的更加合理。n 2)不同的抽象层次,对问题的概括程度不同,使用)不同的抽象层次,对问题的概括程度不同,使用的语言的专业程度也不一样。高抽象层用高级语言,的语言的专业程度也不一样。高抽象层用高级语言,低抽象层则用软件具体的专业语言。低抽象层则用软件具体的专业语言。n 3)软件工程中阶段性的工作成果及方法,正是抽象)软件工程中阶段性的工作成果及方法,正是抽象的思想的具体运用,是逐步趋于具体化,逐步求精的思想的具体运用,是逐步趋于具体化,逐步求精的过程。的过程。414.2 4.2 软件设计的概念和原理软件设计的概念和

26、原理n 4.2.1 模块化模块化n 4.2.2 抽象抽象n 4.2.3 信息隐蔽和局部化的指导思想信息隐蔽和局部化的指导思想n 4.2.4 模块独立性的判定准则模块独立性的判定准则424.2.3 信息隐蔽和局部化的指导思想信息隐蔽和局部化的指导思想n 在设计和确定模块时,使一个模块内包含的信息,在设计和确定模块时,使一个模块内包含的信息,对于其他模块来说,是不能访问的对于其他模块来说,是不能访问的,这即是信息这即是信息隐蔽隐蔽n“隐蔽隐蔽”的意思是,通过定义一组相互独立的模的意思是,通过定义一组相互独立的模块,这些独立的模块彼此之间仅仅交换那些必需块,这些独立的模块彼此之间仅仅交换那些必需的信

27、息,而将那些自身的实现细节与数据的信息,而将那些自身的实现细节与数据“隐藏隐藏”起来。起来。434.2.3 信息隐蔽和局部化的指导思想信息隐蔽和局部化的指导思想n 通过信息隐蔽和局部化,可以定义和实施对模块的过程通过信息隐蔽和局部化,可以定义和实施对模块的过程细节和局部数据结构的存取的限制。细节和局部数据结构的存取的限制。n 一个软件系统在整个生存期内要经过多次修改,信息隐一个软件系统在整个生存期内要经过多次修改,信息隐蔽保证了软件系统在修改时,错误的衍射面最小,为软蔽保证了软件系统在修改时,错误的衍射面最小,为软件的测试、修改和维护带来好处。件的测试、修改和维护带来好处。n 因此,在划分模块

28、时,要尽量采取措施,如采用局部数因此,在划分模块时,要尽量采取措施,如采用局部数据结构,使得大多数过程(即实现细节)和数据对软件据结构,使得大多数过程(即实现细节)和数据对软件的其他部分是隐藏的,这样,修改软件时偶尔引入的错的其他部分是隐藏的,这样,修改软件时偶尔引入的错误所造成的影响只局限在一个或小量几个模块内部,不误所造成的影响只局限在一个或小量几个模块内部,不波及其它部分。波及其它部分。444.2.3 信息隐蔽和局部化的指导思想信息隐蔽和局部化的指导思想n 通过定义模块的接口来实现通过定义模块的接口来实现n 在编程实现时,具体体现为内容数据的可见性;在编程实现时,具体体现为内容数据的可见

29、性;n 公共、私有、受保护公共、私有、受保护454.2 4.2 软件设计的概念和原理软件设计的概念和原理n 4.2.1 模块化模块化n 4.2.2 抽象抽象n 4.2.3 信息隐蔽和局部化的指导思想信息隐蔽和局部化的指导思想n 4.2.4 模块独立性模块独立性464.2.4 模块独立性模块独立性n 模块的独立性模块的独立性n 模块的独立性判定准则模块的独立性判定准则47模块的独立性模块的独立性n 模块独立性,是指每个模块只完成独立的功模块独立性,是指每个模块只完成独立的功能,与其他模块的联系尽量少且接口简单。能,与其他模块的联系尽量少且接口简单。n 由于模块独立性强,信息陷蔽性好,并完成由于模

30、块独立性强,信息陷蔽性好,并完成独立的功能,所有具有可理解性、可维护性独立的功能,所有具有可理解性、可维护性及可测试性好的特性,这必然导致软件的高及可测试性好的特性,这必然导致软件的高可靠性。可靠性。n 另外,接口简单、功能独立的模块易开发,另外,接口简单、功能独立的模块易开发,可分工协作,提高软件生产率。可分工协作,提高软件生产率。48模块独立性的判定准则模块独立性的判定准则n 独立性好的模块,从内部看,必然是功能紧凑,聚独立性好的模块,从内部看,必然是功能紧凑,聚合度高的模块;从外部看,必然是跟其他模块联系合度高的模块;从外部看,必然是跟其他模块联系简单的模块。简单的模块。n 这其实是一个

31、问题的两个方面,这其实是一个问题的两个方面,“高内聚、低藕合高内聚、低藕合”的是模块独立性的表现的是模块独立性的表现n 因此,判定模块的独立性,可以从以下两方面考查因此,判定模块的独立性,可以从以下两方面考查1.模块之间的藕合度模块之间的藕合度2.模块的功能的内聚性模块的功能的内聚性491.模块之间的藕合模块之间的藕合n 模块之间耦合度的高低,可以通过分析模块之间的联结形模块之间耦合度的高低,可以通过分析模块之间的联结形式来判断式来判断n 模块间常见的联结类型有模块间常见的联结类型有5种:种:5051(1)数据联结)数据联结 开发票 计算金额 单价 数量 金额 图 4-4 数据耦合 52(2)

32、特征联结)特征联结 53避免捆绑避免捆绑54(3)控制联结)控制联结 获得库存记录 检索库存记录 库存编号 打印“无此记录”颁发将牌 确定将牌 名次 金牌 银牌 铜牌 图 4-7 数据耦合 库存记录 55(4)公共联结)公共联结 A C E D B 公共 数据 图 4-8 公共耦合 图 4-9 内容耦合 56(5)内容联结)内容联结 A C E D B 公共 数据 图 4-8 公共耦合 图 4-9 内容耦合 57结论:结论:以数据联结为主,特征联结为辅;以数据联结为主,特征联结为辅;必要时建立控制联结;必要时建立控制联结;坚决消除公共联结和内容联结坚决消除公共联结和内容联结 建立数据联结时,要

33、避免建立数据联结时,要避免“游离数据游离数据”58“游离数据游离数据”592.模块的内聚模块的内聚n 模块内部功能的聚合度的高低,也可以通过分析模块内部模块内部功能的聚合度的高低,也可以通过分析模块内部功能的组合形式来判断功能的组合形式来判断n 常见的模块内功能的组合类型有常见的模块内功能的组合类型有7种:种:聚合度聚合度高高功能组合功能组合 顺序组合顺序组合 通讯组合通讯组合 过程组合过程组合 时间组合时间组合 逻辑组合逻辑组合 偶然组合偶然组合低低60(1)功能组合)功能组合n“计算实发工资计算实发工资”n“读库存记录读库存记录”61(2)顺序组合)顺序组合62(3)通讯组合)通讯组合63

34、64(4)过程组合)过程组合65(5)时间组合)时间组合n 初始化模块66(6)逻辑组合)逻辑组合67(7)偶然组合)偶然组合68第三节第三节69第第4 4章章 软件设计软件设计n 4.1 4.1 软件设计概述软件设计概述n 4.2 4.2 软件设计的概念与原理软件设计的概念与原理n 4.3 4.3 软件设计的原则软件设计的原则n 4.4 4.4 结构化设计方法结构化设计方法n 4.5 4.5 系统包装系统包装n 4.6 4.6 软件详细设计概述软件详细设计概述n 4.7 4.7 详细设计工具详细设计工具704.4 4.4 结构化设计方法结构化设计方法n 4.4.1 结构化设计的概念与原理结构

35、化设计的概念与原理n 4.2.2 以变换为中心的设计策略以变换为中心的设计策略n 4.2.3 以事务为中心的设计策略以事务为中心的设计策略714.4.1 结构化设计的概念与原理结构化设计的概念与原理目标目标,是得到软件的模块化结构是得到软件的模块化结构;任务任务,从数据流图出发从数据流图出发,映射出软件的模块化结构映射出软件的模块化结构;原理原理,研究数据流图研究数据流图,找出设计策略找出设计策略.72以数据流图为基础以数据流图为基础,设计软件的模块化结构设计软件的模块化结构737475两个重要的设计策略两个重要的设计策略n 1.变换型数据流变换型数据流n 2.事务型数据流事务型数据流761.

36、变换型数据流图变换型数据流图777879802.事务型数据流事务型数据流818283843.设计过程设计过程 分析数据流图类型分析数据流图类型 映射出第一张结构图映射出第一张结构图 参照数据流图参照数据流图,对结构图分解对结构图分解细化细化 运用模块化设计原则运用模块化设计原则,分解分解优化优化854.4 4.4 结构化设计方法结构化设计方法n 4.4.1 结构化设计的概念与原理结构化设计的概念与原理n 4.2.2 以变换为中心的设计策略以变换为中心的设计策略n 4.2.3 以事务为中心的设计策略以事务为中心的设计策略864.2.2 以变换为中心的设计策略以变换为中心的设计策略n 1.确定变换

37、中心确定变换中心n 2.确定主控模块确定主控模块,产生第产生第1张图张图n 3.分解分解优化优化871.确定变换中心882.确定主控模块,产生第1张图893.分解优化n 对产生的第一张图分析评价,用模块的设计原则进对产生的第一张图分析评价,用模块的设计原则进行分析与优化。这些原则包括:模块间的联结、模行分析与优化。这些原则包括:模块间的联结、模块内的紧凑性、分解、扇入块内的紧凑性、分解、扇入/扇出、控制范围与判断扇出、控制范围与判断作用范围。作用范围。n。903.分解优化n进行分解优化时注意如下几条:进行分解优化时注意如下几条:n(1)分解和重组)分解和重组“传入子系统传入子系统”和和“传出子

38、系统传出子系统”的模块,要保的模块,要保持系统结构的匀称。持系统结构的匀称。n(2)分解变换中心,尤其要使用各层次的数据流,它有助于对模)分解变换中心,尤其要使用各层次的数据流,它有助于对模块的分解。块的分解。n(3)确保每个模块的名称的概括抽象程度符合它所处的层次地位)确保每个模块的名称的概括抽象程度符合它所处的层次地位和作用。和作用。n(4)必要时,适当增加读、写、初始化、终止、出错和例外处理)必要时,适当增加读、写、初始化、终止、出错和例外处理模块。模块。n(5)对于由数据流图直接转过来又不符合模块设计原则的模块,)对于由数据流图直接转过来又不符合模块设计原则的模块,试着进行重新分解,反

39、复修改,综合动用各项结构化设计原则试着进行重新分解,反复修改,综合动用各项结构化设计原则913.分解优化92(1)考察)考察“传入子系统传入子系统 n 考察传入分支的第一个模块考察传入分支的第一个模块“获得合格事务记录和获得合格事务记录和主文件记录主文件记录”,发现它有以下特点:,发现它有以下特点:n 它是它是“顺序组合顺序组合”模块:先获得合格事务记录,模块:先获得合格事务记录,再据事务记录中包含的主文件的再据事务记录中包含的主文件的“关键字关键字”检索主检索主文件。文件。n 此模块与上下级模块存在此模块与上下级模块存在“控制联结控制联结”。当事务。当事务记录读完,或经检索事务记录不存在或不

40、合格,都记录读完,或经检索事务记录不存在或不合格,都会传递会传递“标志标志”。n 优化过程:分离功能,变一个顺序组合模块为两个优化过程:分离功能,变一个顺序组合模块为两个功能组合模块。进一步分解功能,产生下层模块。功能组合模块。进一步分解功能,产生下层模块。结果如图结果如图4-30输入分支所示。输入分支所示。9394(2)考察传出子系统)考察传出子系统n“写主文件记录和打印事务记录写主文件记录和打印事务记录”包含两个互不相包含两个互不相干的功能,仅仅是因为它们都是输出功能,把它们干的功能,仅仅是因为它们都是输出功能,把它们放在一起了,因此,此模块为逻辑组合模块。优化放在一起了,因此,此模块为逻

41、辑组合模块。优化办法同样是分离。结构如图办法同样是分离。结构如图4-30传出分支所示。传出分支所示。954.抽象的例子抽象的例子96(1)步骤)步骤1:跟踪数据流,寻找变换中心:跟踪数据流,寻找变换中心97(2)步骤2:确定主控模块,映射软件结构98(3)步骤3:分解与优化 99100101102EndEnd103第第4 4章章 软件设计软件设计n 4.1 4.1 软件设计概述软件设计概述n 4.2 4.2 软件设计的概念与原理软件设计的概念与原理n 4.3 4.3 软件设计的原则软件设计的原则n 4.4 4.4 结构化设计方法结构化设计方法n 4.5 4.5 系统包装系统包装n 4.6 4.

42、6 软件详细设计概述软件详细设计概述n 4.7 4.7 详细设计工具详细设计工具1044.5 4.5 系统包装系统包装n 4.5.1 把系统定义成若干个作业把系统定义成若干个作业n 4.5.2 把作业定义成若干个作业步把作业定义成若干个作业步n 4.5.3 定义程序和装配单元定义程序和装配单元1054.5.1 把系统定义成若干个作业n 分析确定数据流图的分界线,把系统定义成若干个分析确定数据流图的分界线,把系统定义成若干个作业,每个作业与共同的应用有关,分界线内的部作业,每个作业与共同的应用有关,分界线内的部分,就是一个作业。分,就是一个作业。106n 在划分单元分界线时,下面三种分界线可以作

43、为参考:在划分单元分界线时,下面三种分界线可以作为参考:n(1)硬件分界线(反映了系统分布性)硬件分界线(反映了系统分布性)v 系统的不同部分由不同的计算机完成,即系统在物理位置上是一系统的不同部分由不同的计算机完成,即系统在物理位置上是一种分布结构。种分布结构。n(2)处理方式分界线(反映了系统的交互特性)处理方式分界线(反映了系统的交互特性)v 处理方式包括:批处理,如修改库存量。联机处理,如在线处理,处理方式包括:批处理,如修改库存量。联机处理,如在线处理,对话方式等。对话方式等。n(3)周期分界线:据数据处理业务的周期性划分。如月)周期分界线:据数据处理业务的周期性划分。如月度、年度等

44、。度、年度等。1074.5.2 把作业定义成若干个作业步n 依据数据流图,就可以把一个作业再定义成若干作依据数据流图,就可以把一个作业再定义成若干作业步业步n 划分作业步要考虑的因素有:划分作业步要考虑的因素有:(1)利用现有的软件包;)利用现有的软件包;(2)由于安全和保密的需要,如财务系统中,从原始)由于安全和保密的需要,如财务系统中,从原始凭证开发,到记帐凭证、科目汇总、记明细帐、记凭证开发,到记帐凭证、科目汇总、记明细帐、记帐等数据处理业务,用计算机完成可以连续进行,帐等数据处理业务,用计算机完成可以连续进行,一步完成,但由于财务制度的原因,必须划分为几一步完成,但由于财务制度的原因,

45、必须划分为几个作业步。个作业步。(3)资源的限制等。)资源的限制等。1084.5.3 定义程序和装配单元n 这一步可得到子系统和程序的划分。据结构图定义这一步可得到子系统和程序的划分。据结构图定义程序。程序。n 一个程序中包含哪些模块,主要考虑模块的如下特一个程序中包含哪些模块,主要考虑模块的如下特性:性:(1)通过阅读模块分解过程)通过阅读模块分解过程,了解若干模块协作完成的了解若干模块协作完成的总体目标。总体目标。(2)模块间的联结情况。)模块间的联结情况。(3)模块的调用形式和调用频度。)模块的调用形式和调用频度。109n 模块的调用形式和调用频度往往是一个问题的两个侧面,举例如下:n

46、在汽车配件销售公司的业务中,每月底都要对销售情况进行统计。n 若每天发生4000张单据,售出200种配件,每单据含10个数据项。110 统计 销售额 获得单项 配件销售合计 打印 销售统计表 获得 合格销售单记录 读 销售单文件 验证 销售单数据 计算总计 打印报表 图 4-36 模块动态调用 D C B A 111n 按如图4-36的结构图进行软件设计,则模块的调用频度为:n A 1n B 200n C 4000n D 40000n 即模块A运行一次,模块D就反复被调用40000次。112n 针对这种软件结构,在定义程序和装配单元时有两种不同的实现方案,一种是“静态调用”另一种是“动态调用”。n 如果在定义程序时把上述循环调用的若干模块定义到一个程序中,那么在运行时,将会一次性装入计算机内存中,这时模块间的调用是一种内存中调用,效率会很高,称为“静态调用”。n 反之若将循环调用的各功能模块装配到不同的子程序中,那么,每循环调用一次,就必须到外存中读入程序代码,再运行。这种调用方式称为“动态调用”,由于要与外存交互,效率会很低。113

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(软件工程概论ch04-1课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|