软件工程课件5.pptx

上传人:知****量 文档编号:18243080 上传时间:2022-05-30 格式:PPTX 页数:186 大小:4.06MB
返回 下载 相关 举报
软件工程课件5.pptx_第1页
第1页 / 共186页
软件工程课件5.pptx_第2页
第2页 / 共186页
点击查看更多>>
资源描述

《软件工程课件5.pptx》由会员分享,可在线阅读,更多相关《软件工程课件5.pptx(186页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1第5章 软件设计内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2 2 页页本章学习目标本章学习目标 熟练掌握概要设计原理,图形工具熟练掌握概要设计原理,图形工具 熟练掌握面向数据流设计方法熟练掌握面向数据流设计方法 熟练掌握详细设计图形工具熟练掌握详细设计图形工具 掌握面向数据结构设计方法掌握面向数据结构设计方法 了解界面设计的原则了解界面设计的原则 了解程序复杂程度定量度量方法了解程序复杂程度定量度量方法内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftwar

2、e Engineering)第第 3 3 页页3 35.1 5.1 概要设计概要设计 软件设计可以分为软件设计可以分为概要设计(也称总体、结构设计)概要设计(也称总体、结构设计)和和详细设计(也称过程设计)详细设计(也称过程设计)两个子阶段。两个子阶段。 概要设计的主要目的概要设计的主要目的是从总体角度,确定系统设计方案,是从总体角度,确定系统设计方案,组成系统的各个模块以及模块之间的关系,同时要进行数据组成系统的各个模块以及模块之间的关系,同时要进行数据设计、软件接口设计、制定用户手册、设计、软件接口设计、制定用户手册、测试计划测试计划和实现计划。和实现计划。 详细设计的主要目的详细设计的主

3、要目的是确定应该怎样具体地实现各个软是确定应该怎样具体地实现各个软件元素,包括软件过程设计、系统接口设计等得到对目标系件元素,包括软件过程设计、系统接口设计等得到对目标系统的精确描述,以便在编码阶段完成软件程序代码的实现。统的精确描述,以便在编码阶段完成软件程序代码的实现。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4 4 页页45.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务(1 1)设计供选择的方案)设计供选择的方案1 1确定设计方案确定设计方案 需求分析阶段得出的数据流图是总体设计的

4、出发点需求分析阶段得出的数据流图是总体设计的出发点。把。把数据流图中的处理逻辑进行组合,不同的组合可能就是不数据流图中的处理逻辑进行组合,不同的组合可能就是不同的实现方案。同的实现方案。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 5 5 页页5.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务【案例案例5.15.1】设计供选择的方案设计供选择的方案内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 6 6 页页6

5、 65.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务(2 2)推荐最佳实现方案)推荐最佳实现方案1 1确定设计方案确定设计方案 系统分析员比较各个合理方案的优劣,选择一个最佳方案系统分析员比较各个合理方案的优劣,选择一个最佳方案向用户推荐,并为所推荐的方案制定详细的实现计划。向用户推荐,并为所推荐的方案制定详细的实现计划。 用户和有关专家应认真审查分析员所提供的备选方案,如用户和有关专家应认真审查分析员所提供的备选方案,如果确认某种方案是最佳的,且在现有条件下完全能实现,则应果确认某种方案是最佳的,且在现有条件下完全能实现,则应提请用户进一步审核,才可进入软件结构设计阶段。提请

6、用户进一步审核,才可进入软件结构设计阶段。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 7 7 页页7 75.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务(1 1)功能分解)功能分解2 2软件结构设计软件结构设计 设计人员结合在需求分析阶段得到描述算法的设计人员结合在需求分析阶段得到描述算法的IPOIPO图图 ; 如果一个处理的功能过分复杂,必须把它的功能适当地分如果一个处理的功能过分复杂,必须把它的功能适当地分解成一些比较简单的功能;解成一些比较简单的功能; 功能分解导致数据流图的处理和每

7、个处理对应的功能分解导致数据流图的处理和每个处理对应的IPOIPO图的图的进一步细化。进一步细化。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 8 8 页页8 85.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务(2 2)设计软件结构)设计软件结构2 2软件结构设计软件结构设计 设计人员依据细化的数据流图,把模块组织成层次结构,设计人员依据细化的数据流图,把模块组织成层次结构,顶层模块调用第二层模块,如此依次向下调用,最低层的模块顶层模块调用第二层模块,如此依次向下调用,最低层的模块完成某项具

8、体的功能。完成某项具体的功能。 例如,完成数据库的连接,对数据库中数据增加、删除、例如,完成数据库的连接,对数据库中数据增加、删除、修改和查找等操作。修改和查找等操作。 然后确定模块间的接口,即模块之间传递的信息。这样自然后确定模块间的接口,即模块之间传递的信息。这样自顶向下实现一个完整的功能。顶向下实现一个完整的功能。软件结构可以用层次图或结构图软件结构可以用层次图或结构图来描绘来描绘。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 9 9 页页9 95.1.1 5.1.1 概要设计步骤以及任务概要设计步骤

9、以及任务3 3数据设计数据设计 软件系统中数据设计包括:数据结构设计、文件设计和数软件系统中数据设计包括:数据结构设计、文件设计和数据库逻辑、物理结构设计。据库逻辑、物理结构设计。 对于数据结构设计,在需求分析阶段,已通过数据字典对对于数据结构设计,在需求分析阶段,已通过数据字典对数据组成以及数据之间的关系进行了描述,确定了数据的结构数据组成以及数据之间的关系进行了描述,确定了数据的结构特性。特性。 在概要设计阶段还要加以细化,使用抽象的数据类型进行在概要设计阶段还要加以细化,使用抽象的数据类型进行说明,如说明,如“栈栈”是数据结构的概念模型,在详细设计中可用顺是数据结构的概念模型,在详细设计

10、中可用顺序存储或链式存储来实现序存储或链式存储来实现。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 10 10 页页10105.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务4 4软件接口设计软件接口设计 软件接口设计软件接口设计主要包括:模块间的接口设计;模块与其主要包括:模块间的接口设计;模块与其他外部实体的接口设计;用户界面设计。这部分内容将在本他外部实体的接口设计;用户界面设计。这部分内容将在本章的第章的第2 2节详细介绍。节详细介绍。内蒙古工业大学内蒙古工业大学软件工程软件工程(So

11、ftware EngineeringSoftware Engineering)第第 11 11 页页11115.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务5 5制定测试计划制定测试计划 在软件开发的设计阶段要提前考虑软件测试方案,有在软件开发的设计阶段要提前考虑软件测试方案,有利于提高软件的可测试性。利于提高软件的可测试性。 测试计划即测试方案测试计划即测试方案,包括:,包括:测试范围、测试策略、测试范围、测试策略、测试进度计划测试进度计划等。本书第等。本书第6 6章将详细介绍软件测试的目标、章将详细介绍软件测试的目标、步骤及测试方案的设计等。步骤及测试方案的设计等。内蒙古工

12、业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 12 12 页页12125.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务6 6书写概要设计文档书写概要设计文档 概要设计阶段主要生成:概要设计阶段主要生成:概要设计说明书、用户手册、概要设计说明书、用户手册、软件测试计划和实现计划软件测试计划和实现计划。 概要设计规格说明书,包括系统实现方案,软件结构概要设计规格说明书,包括系统实现方案,软件结构设计,简要的模块说明,模块间的接口关系说明,运行设设计,简要的模块说明,模块间的接口关系说明,运行设计,出错处

13、理设计;数据和数据结构说明、文件设计说明计,出错处理设计;数据和数据结构说明、文件设计说明和数据库设计说明;需求、功能和模块三者之间的关系表和数据库设计说明;需求、功能和模块三者之间的关系表等。等。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 13 13 页页13135.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务(1 1)可追溯性)可追溯性 7 7评审概要设计评审概要设计 分析该软件的系统结构、子系统结构,确认软件设计覆分析该软件的系统结构、子系统结构,确认软件设计覆盖了用户的所有需求,对

14、软件设计的每一成分都能够追溯盖了用户的所有需求,对软件设计的每一成分都能够追溯到用户某个需求上。到用户某个需求上。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 14 14 页页14145.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务(2 2)接口定义是否清晰)接口定义是否清晰 分析软件各部分之间的联系,确认软件的分析软件各部分之间的联系,确认软件的内部接口与内部接口与外部接口外部接口是否已经明确定义。是否已经明确定义。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software Engin

15、eeringSoftware Engineering)第第 15 15 页页15155.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务(3 3)检查模块的独立性)检查模块的独立性 模块是否满足高内聚、低耦合的要求;模块作用域是模块是否满足高内聚、低耦合的要求;模块作用域是否在其控制域之内。否在其控制域之内。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 16 16 页页165.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务(4 4)风险性)风险性 检查风险优先级,评审风险控制措施的

16、有效性。确认检查风险优先级,评审风险控制措施的有效性。确认软件设计在现有技术条件和预算范围内能够如期完成。软件设计在现有技术条件和预算范围内能够如期完成。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 17 17 页页17175.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务(5 5)实用性)实用性 确认软件设计的解决方案对于实现需求是实用的。确认软件设计的解决方案对于实现需求是实用的。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Eng

17、ineering)第第 18 18 页页18185.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务(6 6)质量属性)质量属性 评价软件设计是否表现出良好的质量特征,满足综合评价软件设计是否表现出良好的质量特征,满足综合的质量指标。特别是从的质量指标。特别是从软件维护的角度软件维护的角度出发,确认软件设出发,确认软件设计是否考虑了易维护性。计是否考虑了易维护性。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 19 19 页页19195.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务

18、(7 7)各种选择方案)各种选择方案 当软件比较复杂时,一般需要设计多种设计方案。为了当软件比较复杂时,一般需要设计多种设计方案。为了给方案评审提供依据,有时需要搭建实验环境,测试各种给方案评审提供依据,有时需要搭建实验环境,测试各种方案的效果。方案的效果。 (8 8)限制性)限制性 评价对软件限制的合理性和现实性。评价对软件限制的合理性和现实性。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2020 页页20205.1.1 5.1.1 概要设计步骤以及任务概要设计步骤以及任务(9 9)其他问题)其他问题

19、对文档、设计过程等进行评估。对文档、设计过程等进行评估。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 21 21 页页2121内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2121页页5.1.2 5.1.2 概要设计原理概要设计原理 各种工程和客观事物都是由一些较小的单元组成的。各种工程和客观事物都是由一些较小的单元组成的。例如:计算机中的例如:计算机中的CPUCPU、内存和硬盘等。、内存和硬盘等。 这样做的优点是易于加

20、工制造与维修;而且部件(组这样做的优点是易于加工制造与维修;而且部件(组件)可以标准化,为多个系统所共用。件)可以标准化,为多个系统所共用。 同样,一个软件系统也可以根据其功能分解成许多较同样,一个软件系统也可以根据其功能分解成许多较小的程序单元,即模块。小的程序单元,即模块。 1 1模块模块内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2222 页页2222 模块是由边界元素限定的相邻程序元素(例如,数据模块是由边界元素限定的相邻程序元素(例如,数据定义,可执行语句)的序列,而且有一个总体标识符代表定义,

21、可执行语句)的序列,而且有一个总体标识符代表它。它。 类似于高级语言中的函数、语句块等软件元素。模块类似于高级语言中的函数、语句块等软件元素。模块具有具有3 3个基本属性。个基本属性。5.1.25.1.2 概要设计原理概要设计原理内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2323 页页23235.1.2 5.1.2 概要设计原理概要设计原理(1 1)功能:该模块要完成的任务。)功能:该模块要完成的任务。(2 2)逻辑:模块为了完成任务,模块内部如何实现。)逻辑:模块为了完成任务,模块内部如何实现。(3

22、3)状态:使用该模块时的环境和条件。)状态:使用该模块时的环境和条件。 内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2424 页页24 在描述一个模块时,需要按模块的外部特性与内部特性分别进行描述。在描述一个模块时,需要按模块的外部特性与内部特性分别进行描述。 模块的外部特性是指模块的模块名、输入模块的外部特性是指模块的模块名、输入/ /输出参数,输出参数, 对于其他模块来说,只需了解被调用模块的外部特性就足够了,不必了对于其他模块来说,只需了解被调用模块的外部特性就足够了,不必了解它的内部特性。解它的内

23、部特性。 模块的内部特性则是指完成其功能的程序代码和模块内部模块的内部特性则是指完成其功能的程序代码和模块内部定义的数据。定义的数据。 在软件设计时,通常是先确定模块的外部特性,然后再确定它的内部特在软件设计时,通常是先确定模块的外部特性,然后再确定它的内部特性。前者是软件总体设计的任务,后者是详细设计的任务。性。前者是软件总体设计的任务,后者是详细设计的任务。5.1.2 5.1.2 概要设计原理概要设计原理内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2525 页页255.1.2 5.1.2 概要设计原理

24、概要设计原理 2 2模块化模块化 模块化就是把程序划分成若干个模块,每个模块完成一模块化就是把程序划分成若干个模块,每个模块完成一个子功能,将多个模块组织起来实现整个软件系统的功能。个子功能,将多个模块组织起来实现整个软件系统的功能。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2626 页页26265.1.2 5.1.2 概要设计原理概要设计原理 模块化是为了使一个复杂的大型程序能被人的智力所管模块化是为了使一个复杂的大型程序能被人的智力所管理。下面根据人类解决问题的一般规律,论证上面的结论。理。下面根据

25、人类解决问题的一般规律,论证上面的结论。 设函数设函数C C(X X)定义问题)定义问题X X的复杂度,函数的复杂度,函数E E(X X)确定了)确定了解决问题解决问题X X需要的工作量。对于两个问题,如果问题需要的工作量。对于两个问题,如果问题P1P1的复杂的复杂性大于问题性大于问题P2P2,即:,即: C C(P1P1) C C(P2P2) 显然,解决问题的工作量函数满足下式:显然,解决问题的工作量函数满足下式: E E(P1P1)E E(P2P2)内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2727

26、 页页27275.1.2 5.1.2 概要设计原理概要设计原理 人们在解决问题的实践经验中发现,如果把两个问题放人们在解决问题的实践经验中发现,如果把两个问题放在一起处理,其复杂度通常会增加,即:在一起处理,其复杂度通常会增加,即: C C(P1 + P2P1 + P2) C C(P1P1)+ C+ C(P2P2) 根据问题复杂性与工作量的关系,可以得到下面结论:根据问题复杂性与工作量的关系,可以得到下面结论: E E(P1 + P2P1 + P2) E E(P1P1)+ E+ E(P2P2) 由此可知,把复杂问题分解成容易解决的小问题,使原由此可知,把复杂问题分解成容易解决的小问题,使原来复

27、杂的问题得到简化,解决起来更加简单。这就是模块化来复杂的问题得到简化,解决起来更加简单。这就是模块化思想的依据。思想的依据。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2828 页页285.1.2 5.1.2 概要设计原理概要设计原理 如果模块是相互独立的,当模块变得越小,每个模块的如果模块是相互独立的,当模块变得越小,每个模块的内部结构就变得越简单,花费的工作量也越低。内部结构就变得越简单,花费的工作量也越低。 实际上,当模块数目增加时,设计模块间接口所需要的实际上,当模块数目增加时,设计模块间接口所需

28、要的工作量也将增加。根据这两个因素,得到软件开发总成本曲工作量也将增加。根据这两个因素,得到软件开发总成本曲线,如图线,如图5.25.2所示。从图中可知,当系统分解的模块数在所示。从图中可知,当系统分解的模块数在MM范围之内时,系统的成本达到最小。范围之内时,系统的成本达到最小。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 2929 页页29295.1.2 5.1.2 概要设计原理概要设计原理M成本/模块模块数目最小成本区成本 软件工程中对模块的衡量给出了软件工程中对模块的衡量给出了两个定性的标准两个定性的

29、标准:一个是:一个是模块的内聚,另一个是模块的耦合。通常,软件设计师使用这模块的内聚,另一个是模块的耦合。通常,软件设计师使用这两个标准来衡量软件系统模块划分的合理性。两个标准来衡量软件系统模块划分的合理性。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3030 页页305.1.2 5.1.2 概要设计原理概要设计原理 3 3模块独立性模块独立性 在软件设计中应该保持模块的独立性原则,设计具有在软件设计中应该保持模块的独立性原则,设计具有独立功能、与其他模块间相互作用较少的模块,就可以做独立功能、与其他模块

30、间相互作用较少的模块,就可以做到模块独立。到模块独立。 内聚衡量一个模块内部各个元素彼此结合的紧密程度。内聚衡量一个模块内部各个元素彼此结合的紧密程度。耦合衡量模块之间彼此依赖的紧密程度耦合衡量模块之间彼此依赖的紧密程度。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 31 31 页页3131图图5.3 5.3 模块内聚模块内聚巧合内聚逻辑内聚时间内聚过程内聚通信内聚顺序内聚低高模块内聚性弱强模块独立性功能内聚5.1.2 5.1.2 概要设计原理概要设计原理 (1 1)内聚()内聚(CohesionCohes

31、ion) 内聚标志着一个模块内部各个元素彼此结合的紧密程内聚标志着一个模块内部各个元素彼此结合的紧密程度,模块内聚程度由强到弱,如图度,模块内聚程度由强到弱,如图5.35.3所示。所示。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3232 页页32325.1.2 5.1.2 概要设计原理概要设计原理 功能内聚(功能内聚(Functional CohesionFunctional Cohesion) 模块中所有元素属于一个整体完成同一功能,各个部分都是完成模块中所有元素属于一个整体完成同一功能,各个部分都是

32、完成某一具体功能必不可少的组成部分。具有功能内聚的模块是最理想的某一具体功能必不可少的组成部分。具有功能内聚的模块是最理想的模块,这种模块易于理解和维护,并且可重用性好。模块,这种模块易于理解和维护,并且可重用性好。数据库连接模块ConnectionUtil图图5.4 5.4 功能内聚功能内聚内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3333 页页335.1.2 5.1.2 概要设计原理概要设计原理 【案例案例5.25.2】功能内聚功能内聚例如,外部接口中数据库连接模块,如图例如,外部接口中数据库连接模

33、块,如图5.45.4所示。所示。public class ConnectionUtil static Connection con=null;public static Connection getcon( ) throws Exception Class.forName(“驱动器”).newInstance( ); String url = “数据库名”;String user = “用户名”;String password =“密码”;if(con=null)con =DriverManager.getConnection(url, user, password); return con;

34、 内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3434 页页345.1.2 5.1.2 概要设计原理概要设计原理 功能内聚是最强的内聚功能内聚是最强的内聚,概要设计的目标是使每一个,概要设计的目标是使每一个模块尽可能成为功能内聚模块,使得模块的每个部分都是模块尽可能成为功能内聚模块,使得模块的每个部分都是为实现单一功能而服务的。为实现单一功能而服务的。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3535 页页3535

35、5.1.2 5.1.2 概要设计原理概要设计原理 顺序内聚(顺序内聚(Sequential CohesionSequential Cohesion) 所有元素与同一功能密切相关,顺序执行。模块中一个部所有元素与同一功能密切相关,顺序执行。模块中一个部分的输出是另一个部分的输入。分的输出是另一个部分的输入。 例如,在管理员登录模块中,首先根据用户输入的登录号,例如,在管理员登录模块中,首先根据用户输入的登录号,得到记录集;然后根据记录集中的内容,比对登录号与密码是得到记录集;然后根据记录集中的内容,比对登录号与密码是否正确,若都正确,则跳转到管理员主界面否正确,若都正确,则跳转到管理员主界面in

36、dex.jspindex.jsp,否则,否则重新返回到登录界面重新返回到登录界面admins_login.jspadmins_login.jsp,并且显示错误提示,并且显示错误提示信息。信息。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3636 页页365.1.2 5.1.2 概要设计原理概要设计原理根据用户名从数据库中获取数据用户名/密码数据比对操作返回对象集相等跳转到index.jsp管理员登录模块不相等跳转到admins_login.jsp图5.5 顺序内聚内蒙古工业大学内蒙古工业大学软件工程软件工

37、程(Software EngineeringSoftware Engineering)第第 3737 页页375.1.2 5.1.2 概要设计原理概要设计原理 【案例5.3】顺序内聚public class AdminsServlet extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException AdminsImplement ai = new AdminsImplement( );Strin

38、g loginNo = request.getParameter(“loginNo”);String password = request.getParameter(“password”);List list = new ArrayList( );list = (List) ai.find(loginNo);内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 3838 页页385.1.2 5.1.2 概要设计原理概要设计原理 if(!loginNo.equals(list.get(0).getLoginNo( )

39、 | !password.equals(list.get(0).getAdminPass( ) request.getSession( ).setAttribute(“login”, “用户名或密码不正确!”); request.getRequestDispatcher(“/admins_login.jsp”).forward(request,response); return; request.getRequestDispatcher(“index.jsp”).forward(request,response);return; 内蒙古工业大学内蒙古工业大学软件工程软件工程(Software

40、EngineeringSoftware Engineering)第第 3939 页页395.1.2 5.1.2 概要设计原理概要设计原理 通信内聚(Communicational Cohesion) 模块中所有元素(功能)都使用同一个输入数据和(或)产生同一个输出数据。 例如,管理员对学生信息管理模块中,StudentImplement类对学生信息注册、删除、修改和查找的方法,都需要对数据库中students与classes表进行操作。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4040 页页405.1.

41、2 5.1.2 概要设计原理概要设计原理学生信息注册学生信息管理模块学生信息删除学生信息修改学生信息查找students/classes表图5.6 通信内聚内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 41 41 页页415.1.2 5.1.2 概要设计原理概要设计原理 【案例5.4】通信内聚public class StudentImplement implements Interface public boolean save(Object obj);public List find(Object ob

42、j);public boolean delete(Object obj);public boolean update(Object obj);内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4242 页页42425.1.2 5.1.2 概要设计原理概要设计原理 过程内聚(过程内聚(Procedural CohesionProcedural Cohesion) 模块执行的若干功能之间有顺序关系。这种模块的重用性模块执行的若干功能之间有顺序关系。这种模块的重用性较差,它是将多个相关的功能放在一个模块中实现。较差,

43、它是将多个相关的功能放在一个模块中实现。输入数据检查数据的合法性操作数据模块模块图图5.75.7过程内聚过程内聚内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4343 页页43435.1.2 5.1.2 概要设计原理概要设计原理 时间内聚(时间内聚(Temporal CohesionTemporal Cohesion) 一个模块内所有任务必须在同一时间完成。一个模块内所有任务必须在同一时间完成。 最常见的时间内聚模块是初始化模块,在这个模块中的功最常见的时间内聚模块是初始化模块,在这个模块中的功能除了时间上

44、需要在系统初启时完成之外,没有其他的关系。能除了时间上需要在系统初启时完成之外,没有其他的关系。这种模块在这种模块在2020世纪世纪8080年代的应用程序中使用较多,这种模块没年代的应用程序中使用较多,这种模块没有重用价值。现在主张将变量的初始化操作都归入到相关的模有重用价值。现在主张将变量的初始化操作都归入到相关的模块中。例如,类中的静态变量就是这种情况。块中。例如,类中的静态变量就是这种情况。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4444 页页44445.1.2 5.1.2 概要设计原理概要设计

45、原理 逻辑内聚(逻辑内聚(Logical CohesionLogical Cohesion) 把逻辑上相关的功能和数据放在相同的模块中。把逻辑上相关的功能和数据放在相同的模块中。 当一个模块执行一系列相关的功能时,称其有逻辑内聚。逻辑当一个模块执行一系列相关的功能时,称其有逻辑内聚。逻辑内聚的模块含有较多相关功能。内聚的模块含有较多相关功能。 例如,一个模块执行对班级学生某门课成绩求总分、平均分和例如,一个模块执行对班级学生某门课成绩求总分、平均分和统计不及格人数,统计不及格人数,void calculate(float score, float sum, void calculate(flo

46、at score, float sum, float average, int num)float average, int num);模块的入口参数一定比较多且复杂。模块的入口参数一定比较多且复杂。所以逻辑内聚模块带来两个问题:一是接口参数复杂,难于理解;所以逻辑内聚模块带来两个问题:一是接口参数复杂,难于理解;二是多个功能放在一起,使得模块的可维护性降低。二是多个功能放在一起,使得模块的可维护性降低。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4545 页页45455.1.2 5.1.2 概要设计原理

47、概要设计原理 巧合内聚(巧合内聚(Coincidental CohesionCoincidental Cohesion) 一个模块完成一组功能,关系松散。一个模块完成一组功能,关系松散。 巧合内聚(偶然内聚)模块的出现通常是由于对模块大小的限巧合内聚(偶然内聚)模块的出现通常是由于对模块大小的限制造成的,例如,为了节省存储空间,将多个模块中出现的重复语制造成的,例如,为了节省存储空间,将多个模块中出现的重复语句提取出来,组成一个新的模块。这种模块的可维护性很差,并且句提取出来,组成一个新的模块。这种模块的可维护性很差,并且不可能被重用。不可能被重用。 功能内聚模块的独立性最强,巧合内聚模块的独

48、立性最弱。在功能内聚模块的独立性最强,巧合内聚模块的独立性最弱。在设计时应该尽可能保证模块具有功能内聚。设计时应该尽可能保证模块具有功能内聚。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4646 页页46465.1.2 5.1.2 概要设计原理概要设计原理 (2 2)耦合()耦合(CouplingCoupling) 耦合是指对一个软件结构内不同模块间相互关联程度的度量。耦合是指对一个软件结构内不同模块间相互关联程度的度量。在软件设计中应该追求尽可能松耦合系统,这样在开发、测试或维在软件设计中应该追求尽可能

49、松耦合系统,这样在开发、测试或维护任何一个模块时,不必过多对系统其他模块有更多的了解。同时,护任何一个模块时,不必过多对系统其他模块有更多的了解。同时,由于模块间联系简单,在一个模块中出现的错误传播到整个系统中由于模块间联系简单,在一个模块中出现的错误传播到整个系统中的可能性较小。因此,模块间的耦合程度对系统的可理解性、可测的可能性较小。因此,模块间的耦合程度对系统的可理解性、可测试性、可靠性和可维护性影响很大。试性、可靠性和可维护性影响很大。内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4747 页页47

50、475.1.2 5.1.2 概要设计原理概要设计原理模块间的耦合程度由高到低,如图模块间的耦合程度由高到低,如图5.85.8所示:所示: 图图5.8 5.8 模块耦合模块耦合内 容 耦 合公 共 环 境 耦 合控 制 耦 合数 据 耦 合高低模 块 耦 合 性弱强模 块 独 立 性内蒙古工业大学内蒙古工业大学软件工程软件工程(Software EngineeringSoftware Engineering)第第 4848 页页48485.1.2 5.1.2 概要设计原理概要设计原理 内容耦合(内容耦合(Content Content CouplingCoupling) 如果一个模块直接引用另一

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com