第3章 软件设计基础优秀PPT.ppt
《第3章 软件设计基础优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第3章 软件设计基础优秀PPT.ppt(94页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章章 软件设计基础软件设计基础现在学习的是第1页,共94页内容内容3.13.1软件设计的基本概念软件设计的基本概念软件设计的基本概念软件设计的基本概念3.23.2软件设计过程软件设计过程软件设计过程软件设计过程3.33.3软件设计的质量软件设计的质量软件设计的质量软件设计的质量3.43.4软件体系结构设计软件体系结构设计软件体系结构设计软件体系结构设计3.53.5高可信软件设计高可信软件设计高可信软件设计高可信软件设计3.63.6软件设计规格说明软件设计规格说明软件设计规格说明软件设计规格说明3.73.7软件设计评审软件设计评审软件设计评审软件设计评审现在学习的是第2页,共94页3.
2、1 3.1 软件设计的基本概念软件设计的基本概念n软件设计主要针对软件设计主要针对需求分析需求分析过程得到的软件需求过程得到的软件需求规格说明,综合考虑各种制约因素,探求切实可规格说明,综合考虑各种制约因素,探求切实可行的软件解决方案并最终给出方案的逻辑表示,行的软件解决方案并最终给出方案的逻辑表示,包括文档、模型等。包括文档、模型等。n软件设计受到资源和技术两方面的制约。软件设计受到资源和技术两方面的制约。n软件设计基本概念是过去数十年里陆续提出的,软件设计基本概念是过去数十年里陆续提出的,软件设计者根据这组概念进行设计决策。软件设计者根据这组概念进行设计决策。n软件设计的最终目标是获得满足
3、软件需求的、明软件设计的最终目标是获得满足软件需求的、明确的、可行的、高质量的软件解决方案。确的、可行的、高质量的软件解决方案。现在学习的是第3页,共94页(1 1)抽象与逐步求精)抽象与逐步求精n“抽象抽象”是一个心理学概念,它要求人们将注意力是一个心理学概念,它要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次集中在某一层次上考虑问题,而忽略那些低层次的细节。是管理、控制复杂性的基本策略。的细节。是管理、控制复杂性的基本策略。n软件设计过程是在不同抽象级别考虑、处理问题软件设计过程是在不同抽象级别考虑、处理问题的过程。最初应该在最高抽象级别上,用面向问的过程。最初应该在最高抽象级别
4、上,用面向问题域的语言概述问题,包括问题解的形式,然后题域的语言概述问题,包括问题解的形式,然后不断具体化,不断用接近计算机域的语言描述问不断具体化,不断用接近计算机域的语言描述问题,最后,在最低的抽象级别上给出可直接实现题,最后,在最低的抽象级别上给出可直接实现的问题解,即程序。的问题解,即程序。现在学习的是第4页,共94页(1 1)抽象与逐步求精)抽象与逐步求精n软件设过程的每一步都是对较高以及抽象的解软件设过程的每一步都是对较高以及抽象的解作一次更具体化的描述。作一次更具体化的描述。过程抽象:把完成特定功能的动作序列抽象过程抽象:把完成特定功能的动作序列抽象为一个过程名和参数表,以后通过
5、指定过程为一个过程名和参数表,以后通过指定过程名和实际参数调用此过程。名和实际参数调用此过程。数据抽象:把一个数据对象的定义(或描述)数据抽象:把一个数据对象的定义(或描述)抽象为一个数据类型名,用此类型名可定义抽象为一个数据类型名,用此类型名可定义多个具有相同性质的数据对象。多个具有相同性质的数据对象。现在学习的是第5页,共94页(1 1)抽象与逐步求精)抽象与逐步求精n“逐逐步步求求精精”可可视视为为一一种种早早期期的的自自顶顶向向下下设设计计策策略略,其其主主要要思思想想是是,针针对对某某个个功功能能的的宏宏观观描描述述用用逐逐步步求求精精的的方方法法不不断断地地分分解解,逐逐步步确确立
6、立过过程程细细节节,直至该功能用程序语言描述的算法实现为止。直至该功能用程序语言描述的算法实现为止。n在在软软件件设设计计过过程程中中,抽抽象象与与逐逐步步求求精精是是一一般般都都是是结合起来进行应用。结合起来进行应用。n系系统统的的层层次次结结构构的的上上一一层层是是下下一一层层的的抽抽象象,下下一一层是上一层的求精。层是上一层的求精。现在学习的是第6页,共94页抽象与逐步求精抽象与逐步求精现在学习的是第7页,共94页(2 2)模块化与信息隐藏)模块化与信息隐藏n软件体系结就体现了模块化思想,即把软件划分为软件体系结就体现了模块化思想,即把软件划分为可独立命名和访问的部件,每个部件称为一个模
7、块,可独立命名和访问的部件,每个部件称为一个模块,当把所有模块组装到一起时则获得满足问题需要的当把所有模块组装到一起时则获得满足问题需要的一个解。一个解。n模块化使得开发活动更加简单的一个重要因素是模模块化使得开发活动更加简单的一个重要因素是模块的信息隐藏,即一个模块的开发者不必看到其它块的信息隐藏,即一个模块的开发者不必看到其它模块的内部,只需知道其接口即可,这使得每个模模块的内部,只需知道其接口即可,这使得每个模块的开发人员所要处理的复杂性显著降低。块的开发人员所要处理的复杂性显著降低。n信息隐藏指导的模块化设计不仅支持模块的并行开信息隐藏指导的模块化设计不仅支持模块的并行开发,而且还可以
8、减少测试和维护的工作量。发,而且还可以减少测试和维护的工作量。现在学习的是第8页,共94页(2 2)模块化与信息隐藏)模块化与信息隐藏n问题求解的研究表明,把两个问题组合起来进行问题求解的研究表明,把两个问题组合起来进行求解的复杂性,一般要比分别对两个问题进行求求解的复杂性,一般要比分别对两个问题进行求解的复杂度之和更大,这个结论导致解的复杂度之和更大,这个结论导致“分治法分治法”的出现,即把一个复杂问题分割成若干个可管理的出现,即把一个复杂问题分割成若干个可管理的、更易于求解的小问题。的、更易于求解的小问题。n但这种分割并不意味着但这种分割并不意味着“无限无限”分割,当模块数分割,当模块数量
9、增加时,模块接口所需要的代价也随之增加。量增加时,模块接口所需要的代价也随之增加。现在学习的是第9页,共94页模块数量与成本模块数量与成本现在学习的是第10页,共94页(2 2)模块化与信息隐藏)模块化与信息隐藏n恰当的定义模块范围和大小非常重要,这与采恰当的定义模块范围和大小非常重要,这与采用的设计方法密切相关,评价所采用设计方法用的设计方法密切相关,评价所采用设计方法的标准:的标准:模块可分解性模块可分解性模块的组装性模块的组装性模块的可理解性模块的可理解性模块连续性模块连续性模块保护模块保护现在学习的是第11页,共94页内聚与耦合内聚与耦合n每个模块应相对独立,其功能相对单一,而模每个模
10、块应相对独立,其功能相对单一,而模块之间的接口应尽可能简单。块之间的接口应尽可能简单。内聚是前述信息隐藏和局部化概念的自然扩内聚是前述信息隐藏和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的展,它标志一个模块内部各成分彼此结合的紧密程度。紧密程度。耦合是对软件结构中模块间关联程度的一种耦合是对软件结构中模块间关联程度的一种度量。耦合的强弱取决于模块间接口的复杂度量。耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过接口传性、进入或调用模块的位置以及通过接口传送数据的多少等。送数据的多少等。追求高内聚、低耦合。追求高内聚、低耦合。(1)抽象与逐步求精)抽象与逐步求精现在学
11、习的是第12页,共94页内聚内聚n内聚按其高低程度可划分为不同等级,内聚度内聚按其高低程度可划分为不同等级,内聚度越高越好,从而获得较高的模块独立性。越高越好,从而获得较高的模块独立性。低等级内聚:低等级内聚:偶然性内聚偶然性内聚 逻辑性内聚逻辑性内聚 时序内聚时序内聚中等级内聚:中等级内聚:过程性内聚过程性内聚 通信性内聚通信性内聚高级内聚:高级内聚:顺序性内聚顺序性内聚 功能性内聚:最高程度的内聚功能性内聚:最高程度的内聚现在学习的是第13页,共94页耦合耦合n耦合的强弱取决于模块间接口的复杂性、进入耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置、通过接口传输数据量等。或调用模块
12、的位置、通过接口传输数据量等。n模块间的耦合程度直接影响着系统的可理解性、模块间的耦合程度直接影响着系统的可理解性、可测试性、可靠性和可维护性,软件设计应追可测试性、可靠性和可维护性,软件设计应追求尽可能松散的耦合,模块间的联系越少,错求尽可能松散的耦合,模块间的联系越少,错误在模块间传递的可能性就越小。误在模块间传递的可能性就越小。现在学习的是第14页,共94页耦合耦合n耦合等级的划分耦合等级的划分低等级耦合:低等级耦合:非直接耦合非直接耦合中等级耦合中等级耦合 数据耦合数据耦合 特征耦合特征耦合 控制耦合控制耦合 外部耦合外部耦合 公共耦合公共耦合高等级耦合:高等级耦合:内容耦合内容耦合n
13、尽量使用数据耦合,减少控制耦合,限制外部尽量使用数据耦合,减少控制耦合,限制外部耦合和公共耦合,杜绝内容耦合。耦合和公共耦合,杜绝内容耦合。传递的信息含有控制信息现在学习的是第15页,共94页内聚和耦合的量化指标内聚和耦合的量化指标n类耦合度类耦合度类类的的耦耦合合度度为为与与它它耦耦合合的的其其它它类类的的数数目目,包包括括调调用用其其他他类类的的方方法法、使使用用其其它它类类的的实实例例变变量量。一一个个类类越越独独立立,它它在在应应用用中中就就越越容容易易被被重重用用,类类之之间间的耦合度应尽可能的小。的耦合度应尽可能的小。n方法内聚缺乏程度方法内聚缺乏程度“不不访访问问相相同同成成员员
14、变变量量的的方方法法对对数数目目”减减去去“访访问问相同成员变量的方法对数目相同成员变量的方法对数目”如如果果一一个个类类中中没没有有任任何何两两个个方方法法对对同同一一变变量量进进行行访访问问,则则它它们们没没有有相相似似性性,该该类类的的内内聚聚程程度度将将会会很很低低,缺缺乏乏内内聚聚度度意意味味着着该该类类可可以以分分为为两两个个或或更更多的类。多的类。现在学习的是第16页,共94页内容内容3.13.1软件设计的基本概念软件设计的基本概念软件设计的基本概念软件设计的基本概念3.23.2软件设计过程软件设计过程软件设计过程软件设计过程3.33.3软件设计的质量软件设计的质量软件设计的质量
15、软件设计的质量3.43.4软件体系结构设计软件体系结构设计软件体系结构设计软件体系结构设计3.53.5高可信软件设计高可信软件设计高可信软件设计高可信软件设计3.63.6软件设计规格说明软件设计规格说明软件设计规格说明软件设计规格说明3.73.7软件设计评审软件设计评审软件设计评审软件设计评审现在学习的是第17页,共94页(1 1)软件设计的一般过程)软件设计的一般过程n软件设计可能是一个多次反复的过程,所以,软软件设计可能是一个多次反复的过程,所以,软件设计一般都可以被看作是迭代的过程。件设计一般都可以被看作是迭代的过程。n迭代有两层含义:迭代有两层含义:第一层含义是,针对给定的需求模型,通
16、过多第一层含义是,针对给定的需求模型,通过多次从抽象到具体的设计过程,得出足够精细的次从抽象到具体的设计过程,得出足够精细的设计模型以供软件实现之用。设计模型以供软件实现之用。第二层含义是,在需求模型发生变化并更新完第二层含义是,在需求模型发生变化并更新完成后,第一层含义的设计过程再随之展开,直成后,第一层含义的设计过程再随之展开,直至获得最终的目标软件产品至获得最终的目标软件产品 。现在学习的是第18页,共94页软件设计的迭代软件设计的迭代现在学习的是第19页,共94页软件设计的一般过程软件设计的一般过程n软软件件设设计计过过程程包包括括在在不不同同抽抽象象层层次次上上开开发发系系统统的的多
17、多个模型。个模型。n软软件件设设计计可可以以看看作作是是将将需需求求规规格格说说明明转转换换为为可可直直接接提供软件代码实现使用的提供软件代码实现使用的设计规格说明。设计规格说明。n工程管理的角度:工程管理的角度:概要设计:根据需求确定软件和数据总体框架。概要设计:根据需求确定软件和数据总体框架。详详细细设设计计:进进一一步步精精化化成成软软件件的的算算法法表表示示和和数数据据结构。结构。技技术术上上,概概要要设设计计和和详详细细设设计计由由若若干干活活动动组组成成,包包括括软软件件体体系系结结构构设设计计、界界面面设设计计、模模块块/子子系系统统设计、数据模型设计、过程设计、数据模型设计、过
18、程/算法设计。算法设计。现在学习的是第20页,共94页软件设计的一般过程软件设计的一般过程现在学习的是第21页,共94页1 1)软件设计计划)软件设计计划n在设计过程中,对设计活动进行计划应该最早进行,在设计过程中,对设计活动进行计划应该最早进行,然后按照计划实施体系结构设计、界面设计、模块然后按照计划实施体系结构设计、界面设计、模块/子系统设计、数据模型设计、过程子系统设计、数据模型设计、过程/算法设计等活动。算法设计等活动。n软件设计计划的任务是:明确设计过程的输入制品软件设计计划的任务是:明确设计过程的输入制品并使其处于就绪状态,定义设计过程的目标、输出并使其处于就绪状态,定义设计过程的
19、目标、输出制品及其验收准则,确定覆盖设计过程中各个阶段制品及其验收准则,确定覆盖设计过程中各个阶段的全局性设计策略,分配设计过程相关人员的职责,的全局性设计策略,分配设计过程相关人员的职责,针对设计过程中的活动制订工作计划。针对设计过程中的活动制订工作计划。现在学习的是第22页,共94页1 1)软件设计计划)软件设计计划n软件设计计划的步骤:软件设计计划的步骤:确定设计的目标和验收标准确定设计的目标和验收标准明确目标软件系统应遵循的技术标准或规范明确目标软件系统应遵循的技术标准或规范重新审视项目风险管理计划重新审视项目风险管理计划制定本次设计过程的工作计划制定本次设计过程的工作计划对设计过程的
20、工作计划进行评审对设计过程的工作计划进行评审现在学习的是第23页,共94页2 2)体系结构设计)体系结构设计n软件体系结构设计的目标是建立软件系统的体系软件体系结构设计的目标是建立软件系统的体系结构,有时也称结构,有时也称“顶层架构顶层架构”。n这种架构既要明确定义软件各子系统、关键构件、这种架构既要明确定义软件各子系统、关键构件、关键类的职责划分及协作关系,同时也要描绘它关键类的职责划分及协作关系,同时也要描绘它们在物理运行环境下的部署模型。们在物理运行环境下的部署模型。n顶层架构还必须针对软件系统全局性、基础性的顶层架构还必须针对软件系统全局性、基础性的技术问题给出技术解决方案,这种方案往
21、往构成技术问题给出技术解决方案,这种方案往往构成目标软件系统的体系结构的技术基础设施。目标软件系统的体系结构的技术基础设施。现在学习的是第24页,共94页2 2)体系结构设计)体系结构设计n评价软件体系结构评价软件体系结构宽度和深度:软件控制的层数和跨度宽度和深度:软件控制的层数和跨度扇出率和扇入率:扇出率和扇入率:扇出率:一个模块的扇出率指该模块直接控制的扇出率:一个模块的扇出率指该模块直接控制的 其他模块数。其他模块数。扇入率:一个模块的扇入率指直接控制该模块的扇入率:一个模块的扇入率指直接控制该模块的 模块数模块数。可见性和联通性可见性和联通性 模块的可见性:该模块可直接或间接引用的一组
22、模块。模块的可见性:该模块可直接或间接引用的一组模块。模块的联通性:模块可直接引用的一组模块。模块的联通性:模块可直接引用的一组模块。现在学习的是第25页,共94页软件结构有关概念软件结构有关概念现在学习的是第26页,共94页3 3)界面设计)界面设计n用户界面设计的目标是,为用户使用目标软件系统以用户界面设计的目标是,为用户使用目标软件系统以实现其所有业务需求而提供友好的人机交互界面。实现其所有业务需求而提供友好的人机交互界面。n软件界面设计需要考虑以下因素软件界面设计需要考虑以下因素 :l适用于软件功能适用于软件功能 l易理解性易理解性 l一致性一致性 l灵敏性灵敏性 l容错性容错性 l人
23、性化人性化 l国际化国际化 l个性化个性化 l合理的布局合理的布局 l和谐的色彩和谐的色彩 界面的易用性界面的美观性现在学习的是第27页,共94页4 4)模块)模块/子系统设计子系统设计n子系统和模块的区别:子系统和模块的区别:一个子系统独立构成系统,不依赖其它子系统提一个子系统独立构成系统,不依赖其它子系统提供的服务。供的服务。一个模块通常是一个能提供一个或多个服务的系一个模块通常是一个能提供一个或多个服务的系统部件。它能利用其它模块提供的服务,一般不统部件。它能利用其它模块提供的服务,一般不被看成一个独立的系统。被看成一个独立的系统。n由于模块和子系统都是软件组成部分,它们一般都由于模块和
24、子系统都是软件组成部分,它们一般都有层次结构,相互之间存在接口,其设计方法有很有层次结构,相互之间存在接口,其设计方法有很多类似的方面,因此我们统一称为模块设计。多类似的方面,因此我们统一称为模块设计。现在学习的是第28页,共94页模块设计的目标模块设计的目标n模块设计的目标是,确定模块的具体接口定义,模块设计的目标是,确定模块的具体接口定义,并设计模块的内部结构,即,设置包含于其中的并设计模块的内部结构,即,设置包含于其中的(更小粒度的)模块、构件和设计类,(更小粒度的)模块、构件和设计类,n明确它们之间的协作关系,确保它们能够协同实明确它们之间的协作关系,确保它们能够协同实现高层模块接口规
25、定的所有功能和行为。现高层模块接口规定的所有功能和行为。n在进行模块设计时,要尽量保持模块的功能独立在进行模块设计时,要尽量保持模块的功能独立性,遵循性,遵循“高内聚、低耦合高内聚、低耦合”的设计思想。的设计思想。n此外,还要力求将模块的影响限制在模块的控制此外,还要力求将模块的影响限制在模块的控制范围内,使得软件日后的修改和维护工作更加简范围内,使得软件日后的修改和维护工作更加简单。单。现在学习的是第29页,共94页5 5)过程)过程/算法设计算法设计n过程过程/算法设计的任务就是对模块内部的工作和执算法设计的任务就是对模块内部的工作和执行过程进行描述,给出有关处理的精确说明,例行过程进行描
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 软件设计基础优秀PPT 软件设计 基础 优秀 PPT
限制150内