软件工程概论第四章软件设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程概论第四章软件设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 概论 第四 软件设计 课件
- 资源描述:
-
1、软件工程概论河南工程学院第四章 软件设计4.1 软件设计的概述4.2 软件设计的概念与原理4.3 软件设计的原则4.4 结构化设计的方法4.5 系统包装4.6 软件详细设计概述4.7 软件详细设计表示法第1页,共107页。软件工程概论河南工程学院学习目标 重点掌握软件设计的工具和方法 正确理解概要设计与详细设计的任务和目标,灵活运用相关的工具和方法 深刻理解软件结构设计的原则及详细设计的规范化第2页,共107页。软件工程概论河南工程学院 可将软件生命周期分为可将软件生命周期分为定义定义、开发开发及及维护维护三个阶段。三个阶段。可行性研究初步项目计划需求分析概要设计详细设计实现测试使用维护退役定
2、义阶段开发阶段维护阶段第3页,共107页。软件工程概论河南工程学院软件设计的重要性1 软件开发阶段的第一步,其基本任务是回答“如何做?”它是在对系统信息、功能、行为和各种要求理解的基础上构建未来的系统。设计的决策影响软件实现的成功与否。第4页,共107页。软件工程概论河南工程学院软件设计的重要性2 是软件开发过程中用以保证质量的关键步骤。是整个软件工程和软件维护的基础。如果没有设计,只能建立一个不稳定的系统。第5页,共107页。软件工程概论河南工程学院软件设计的重要性3 软件需求分析阶段已经完全清楚了软件的 各种需求,较好地解决了要让所开发的软件“做什么”的问题,并已在软件需求规格说明和数据要
3、求规格说明中详尽和充分的阐明了这些需求。下一步就要着手实现软件的需求,即要解决“怎么做”的问题。第6页,共107页。软件工程概论河南工程学院软件设计的重要性4 软件设计是开发阶段中重要的步骤,是软件开发过程中用以保证质量的关键步骤。软件设计提供了软件的表示,使软件的质量评价成为可能。同时,软件设计又是将用户要求准确地转化为最终的软件产品的唯一途径。第7页,共107页。软件工程概论河南工程学院软件设计的重要性 软件设计是后续开发步骤几软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统。如图所示,只要出现一些微小的变动,就会使得软件受创,而且难以测试。第8页,共107页。软件工程概论河南工
4、程学院系统分析与需求分析的区别需求分析是一个项目的开端,也是项目建设的基石。是对用户需求的定义,对软件系统的描述。在以往建设失败的项目中,80是由于需求分析的不明确而造成的。因此一个项目成功的关键因素之一,就是对需求分析的把握程度。而项目的整体风险往往表现在需求分析不明确、业务流程不合理,用户不习惯或不愿意去用承建方的软件。作为第三方的监理公司,必须提醒承建方、客户方重视需求分析的重要性。系统分析的任务:将用户的业务逻辑转化为程序逻辑,计算时间和成本。根据开发人员的理论知识和实际的经验,人们会采用各种满足实际情况的系统分析、开发方法、步骤以及文档等等。一般情况下,在系统分析书中应该有以下内容(
5、视项目而定):1、系统需求说明说明系统是一个什么样的系统,用市场上现有的系统来类比,用客户(或是我们自己)需要一个什么样的系统进行说明,力求完整。第9页,共107页。软件工程概论河南工程学院2、系统资源说明对系统所需要的软件、硬件资源进行说明。描述系统所需要的所有的成本(包括人员、时间、设备、系统、一次性投入资金、持续性投入资金这样的所有资源)。3、系统可行性分析对系统的实施中的资源进行分析,说明投入的合理性和必然性,对其中的所有不可预见性的投入进行合理的量化说明,来说明系统的实施的可行性。系统分析阶段就是要全面了解系统的商业需求和处理要求并制作书面文件,详细地定义信息系统的功能。这一阶段的最
6、根本的目的就是解决系统要做什么的问题-What to do?系统分析准备系统分析准备在进行详细的系统开发前,开发人员必须先理解一些概念,包括方法一些概念,包括方法、模型、工具和技术。、模型、工具和技术。第10页,共107页。软件工程概论河南工程学院1模型:是对问题做出的一种抽象,它由一组图示符号和组织这些符号的规则组成。建模是问题域中定义软件解的一种方法。建模的目的主要是为了减少问题的复杂性。2.工具 系统开发工具是一些帮助生成模型或其它组件的软件。系统开发人员常用的是CASE工具,如Microsoft Visio、Rational Rose等。用了CASE工具,开发软件能更加规范,标准化,从
7、而提高软件开发的效率。3.技术技术就是帮助分析员完成系统开发活动或任务的一组方法。有时一种技术适用于整个生命周期。常在开发过程中使用的技术有:项目管理技术、用户面谈技术、数据建模技术、结构化分析技术、软件测试技术、面向对象分析与设计技术等。4.系统开发方法第11页,共107页。软件工程概论河南工程学院方法是一组完成系统开发生命周期每一阶段活动的技术,它提供了完成每一步的详细指导。常用的方法有结构化方法和面向对象方法。本章主要以结构化方法为例。20世纪70年代出现了结构化的系统分析设计方法。结构化系统分析(Structured Analysis,简称SA),是一种简单实用,使用很广的方法。它往往
8、是将一个复杂的系统分解、抽象成为多个简单的子系统;使用自顶向下逐层分解的方式,将一个复杂系统分解,抽象成为多个简单的子系统,如果某个子系统仍然复杂,将其进一步分解。第12页,共107页。软件工程概论河南工程学院目前作为针对“软件危机”的最佳对策,面向对象(OO)技术已经引起人们的普遍关注。而许多编程语言(C+、VB、VF、PB、Delphi等)也都推出了支持面向对象的新版本。面向对象方法的基本思想是,从现实世界客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。开发一个软件是为了解决某些问题。面向方法强调直接以现实世界中的事物为中心来思考问题、认识问题,并根据这些事物
9、的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。第13页,共107页。软件工程概论河南工程学院系统分析阶段的任务主要解决了系统“做什么”的问题,系统设计阶段要解决的任务则是系统“怎么做”的问题。系统分析员审查可行性研究报告、软件项目开发计划、软件需求规格说明书,提出候选的最佳推荐方案,用系统流程图(注意画法,见前面),组成系统物理元素清单,将成本效益分析、系统的进度计划,供专家审定,审定后即进入软件设计阶段。软件设计阶段的主要任务是要实现逻辑模型(DFD和DD等)向物理模型转换,即要解决“系统如何实现”问
10、题,该阶段又可画分为概要设计和详细设计两个阶段。第14页,共107页。软件工程概论河南工程学院1 软件设计的概述 概要设计:面向逻辑功能的设计 详细设计:面向物理的设计第15页,共107页。软件工程概论河南工程学院 从工程管理的角度来看,软件设计分两步 概要设计,将软件需求转化为数据结构和软件的系统结构,并建立接口。详细设计,即过程设计。通过对结构表示进行细化,得到软件的数据结构和算法。4.1 软件设计的概述第16页,共107页。软件工程概论河南工程学院概要设计概要设计又称为总体设计或初步设计,概要设计又称为总体设计或初步设计,它的基本目的就是回答它的基本目的就是回答“概括地说,系统概括地说,
11、系统应该如何实现应该如何实现?”这个问题。在总体设计阶这个问题。在总体设计阶段,应划分出组成系统的物理元素段,应划分出组成系统的物理元素程程序、文件、数据库、人工过程和文档等,序、文件、数据库、人工过程和文档等,并确定系统中每个程序由哪些模块组成以并确定系统中每个程序由哪些模块组成以及这些模块相互间的关系。及这些模块相互间的关系。第17页,共107页。软件工程概论河南工程学院1.基本任务设计软件系统结构:采用某种设计方法,将一个复杂的系统按功能划分成模块。确定每个模块的功能。确定模块之间的调用关系。确定模块之间的接口,即模块之间传递的信息。评价模块结构的质量.第18页,共107页。软件工程概论
12、河南工程学院第19页,共107页。软件工程概论河南工程学院4.1.1 概要设计的基本任务与过程 1 软件结构设计 2 数据结构的设计 3 编写概要设计文档 4 评审第20页,共107页。软件工程概论河南工程学院1 软件结构设计采用某种设计方法,将一个复杂的系统按功能分成模块确定每个模块的功能确定模块之间的层次(调用)关系确定模块之间的联结形式评价模块结构的质量第21页,共107页。软件工程概论河南工程学院2 数据结构及数据库设计数据结构设计 需求分析:确定数据结构特性 概要设计:加以细化 详细设计:规定具体的实现细节数据库设计 概念设计 逻辑设计 物理设计第22页,共107页。软件工程概论河南
13、工程学院3 编写概要设计文档 概要设计说明书 数据库设计说明 用户手册 修订测试计划第23页,共107页。软件工程概论河南工程学院4 评审 任务 判断是否实现了需求中规定的功能、性能 设计的方案是否可行第24页,共107页。软件工程概论河南工程学院4.1.2 概要设计文档引言总体设计接口设计运行设计系统数据结构设计系统出错设计第25页,共107页。软件工程概论河南工程学院4.2 软件设计的概念与原理第26页,共107页。软件工程概论河南工程学院4.2.1 模块化1.1.定义定义所谓所谓模块模块,是指具有相对独立性的,由数据说明、执行语句是指具有相对独立性的,由数据说明、执行语句等程序对象构成的
14、集合等程序对象构成的集合。程序中的每个模块都需要单独命名。程序中的每个模块都需要单独命名,通过名字可实现对指定模块的访问,通过名字可实现对指定模块的访问。在高级语言中,模块在高级语言中,模块具体表现为具体表现为函数、子程序、过程函数、子程序、过程等。等。一个模块具有输入一个模块具有输入/输输出出(接口接口)、功能、内部数据和程序代码四个特征、功能、内部数据和程序代码四个特征。模块化模块化是指将整个程序划分为若干个模块,每个模块用于实现是指将整个程序划分为若干个模块,每个模块用于实现一个特定的功能一个特定的功能。划分模块对于解决大型复杂的问题是非常。划分模块对于解决大型复杂的问题是非常必要的,可
15、以大大降低解决问题的难度。必要的,可以大大降低解决问题的难度。第27页,共107页。软件工程概论河南工程学院例如,我们设C(x)为问题x所对应的复杂度函数复杂度函数,E(x)为解决问题x所需要的工作量函数工作量函数。对于两个问题问题P1和P2,如果:C(P1)C(P2)即问题P1的复杂度比P2高,则显然有:E(P1)E(P2)即解决问题P1比P2所需的工作量大。在人们解决问题的过程中,发现存在有另一个有趣的规律:C(P1+P2)C(P1)+C(P2)即解决由多个问题复合而成的大问题的复杂度大于单独解决各个问题的复杂度之和。也就是说,对于一个复杂问题,将其分解成多个小问题分别解决比较容易。由此我
16、们可以推出:E(P1+P2)E(P1)+E(P2)第28页,共107页。软件工程概论河南工程学院即将复杂问题分解成若干个小问题,各个击破,所需要的工作量小于直接解决复杂问题所需的工作量。模块化可以降低解决问题的复杂度,从而降低软件开发的工作量。模块化不但可以降低软件开发的难度,而且可以使程序结构清晰,增加易读性和易修改性。此外,模块化还有利于提高代码的可重用性及团队合作开发大型软件的可行性。第29页,共107页。软件工程概论河南工程学院模块化和软件成本的关系模块化和软件成本的关系 M 软件总成本 成本或工作量 最小成本区 接口成本 模块数目 第30页,共107页。软件工程概论河南工程学院4.2
17、.2 抽象抽象是人类在解决复杂问题过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。在较低的抽象层次上,则采用过程化的方法。结构化程序中自顶向下、逐步求精的模块划分思想正是人类思维中运用抽象方法解决复杂问题的体现。此外,在程序设计中运用抽象的方法还能够提高代码的可重用性。第31页,共107页。软件工程概论河南工程学院功能分解法面向数据的分解法面向事件的分解法有外向内的分解法面向对象的分解法第32页,共107页。软件工程概论河南工程学院对于复杂的问题,经过抽象、概括,可
18、以把握主要问题,暂时忽略事务的细微差别不同的抽象层次,对问题的概括成都不同,使用的专业程序也不一样软件工程中阶段性的工作成果及方法,是对抽象的思想的具体应用,是逐步趋于具体化,逐步求精的过程。第33页,共107页。软件工程概论河南工程学院4.2.3信息隐蔽信息隐蔽 信息隐蔽:在设计和确定模块时,使得一个模块包含的信息对于不需要这些信息的其它模块来说是不能访问的 也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。信息隐蔽的目的主要是为了提高模块的独立性,减少将一个模块中的错误扩散到其他模块的机会。第34页,共107页。软件工程概论河南工程学院4.2.4 模块的独立
19、性 模块独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的联系最小且接口是简单的一般采用两个准则度量模块独立性。即模块间耦合和模块内聚第35页,共107页。软件工程概论河南工程学院 耦合是模块之间的互相连接的紧密程度的度量。内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。模块独立性比较强的模块应是高内聚低耦合的模块。第36页,共107页。软件工程概论河南工程学院非直接非直接 数据数据 标记标记 控制控制 外部外部 公共公共 内容内容 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合模块间的耦合模块间的耦合第37页,共1
20、07页。软件工程概论河南工程学院非直接耦合非直接耦合(NondirectCoupling)两个模块之间没有直接关系,它们之两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和间的联系完全是通过主模块的控制和调用来实现的。调用来实现的。非直接耦合的非直接耦合的模块独立性最模块独立性最强。强。第38页,共107页。软件工程概论河南工程学院数据耦合数据耦合(DataCoupling)一个模块访问另一个模块时,彼此之间一个模块访问另一个模块时,彼此之间是通过是通过简单数据参数简单数据参数(不是控制参数、不是控制参数、公共数据结构或外部变量公共数据结构或外部变量)来传递交换来传递交换输入、输
21、出信息的(输入、输出信息的(“传值传值”)。)。main()main()int x,y;int x,y;printf(x+y=%d,sum(x,y);printf(x+y=%d,sum(x,y);/*主函数与主函数与sumsum函数之间即为函数之间即为数据耦合关系数据耦合关系*/sum(int a,int b)sum(int a,int b)int c;int c;c=a+b;c=a+b;return(c);return(c);第39页,共107页。软件工程概论河南工程学院标记耦合标记耦合(StampCoupling)一组模块通过数据结构(标记)传递一组模块通过数据结构(标记)传递记录信记录信
22、息息,就是标记耦合。这个标记是某一数据结,就是标记耦合。这个标记是某一数据结构的子结构,而不是简单变量构的子结构,而不是简单变量(“传地址传地址”)。例如高级语言中的数组名,记录名,文。例如高级语言中的数组名,记录名,文件名等即为标记,其实传递的标记的地址件名等即为标记,其实传递的标记的地址.第40页,共107页。软件工程概论河南工程学院控制耦合控制耦合(ControlCoupling)如果一个模如果一个模块通过传送开块通过传送开关、标志、名关、标志、名字等控制信息,字等控制信息,明显地控制选明显地控制选择另一模块的择另一模块的功能,就是控功能,就是控制耦合。制耦合。标志变量第41页,共107
23、页。软件工程概论河南工程学院外部耦合(外部耦合(ExternalCoupling)一组模块都访问一组模块都访问同一全局简单变量同一全局简单变量而不是而不是同一全局数据结构,而且不是通过参数表同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦传递该全局变量的信息,则称之为外部耦合。合。公共耦合(公共耦合(CommonCoupling)若一组模块都访问若一组模块都访问同一个公共数据环境同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。通
24、信区、内存的公共覆盖区等。第42页,共107页。软件工程概论河南工程学院 公共耦合的复杂程度随耦合模块的个数增公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。共耦合和紧密公共耦合。第43页,共107页。软件工程概论河南工程学院内容耦合(Content Coupling)如果发生下列情形,两个模块之间就发生了内容耦合 (1)一个模块直接访问另一个模块的内部数据;(2)一个模块不通过正常入口转到另一模块内部;(3)两个模块有一部分程序代码重迭(只
25、可能出现在汇编语言中);(4)一个模块有多个入口。第44页,共107页。软件工程概论河南工程学院 c 总结:数据耦合的程度最低,其次是控制耦合,再其次是公共耦合,程度最高的是内容耦合。第45页,共107页。软件工程概论河南工程学院模块内聚模块内聚内聚性内聚性是对一个模块内部各个组成元素之间相互结合的紧密程度的度量指标是对一个模块内部各个组成元素之间相互结合的紧密程度的度量指标。模块中组成元素结合的越紧密,模块的内聚性就越高,模块的独立性也就越高。模块中组成元素结合的越紧密,模块的内聚性就越高,模块的独立性也就越高。理想理想的内聚性要求模块的功能应明确、单一,即一个模块只做一件事情。的内聚性要求
展开阅读全文