软件工程导论考试复习_第1页
软件工程导论考试复习_第2页
软件工程导论考试复习_第3页
软件工程导论考试复习_第4页
软件工程导论考试复习_第5页
已阅读5页,还剩227页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程复习软件工程复习 Teacher: Teacher: xieyxieyi i12334 43512334 4345第一章1软软件危机的概概念 “ “软件危机软件危机”(Software crisisSoftware crisis)是指在计算机软件的是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。有软件都不同程度地存在这些问题。软件危机包含下述两方面的问题:软件危机包含下述两方面的问题:(

2、1)(1)如何开发软件,以满足对软件日益增长的需求;如何开发软件,以满足对软件日益增长的需求;(2)(2)如何维护数量不断膨胀的已有软件。如何维护数量不断膨胀的已有软件。 为了克服软件危机,人们从其他产业的工业化为了克服软件危机,人们从其他产业的工业化生产得到启示,于是在生产得到启示,于是在68年北大西洋公约的软件可年北大西洋公约的软件可靠性会议(靠性会议(NATO)上,首次提出了上,首次提出了“软件工程软件工程”的概念的概念。提出了在软件生产中采用工程化的方法,。提出了在软件生产中采用工程化的方法,采用一系列科学的、现代化的方法技术来开发软件。采用一系列科学的、现代化的方法技术来开发软件。这

3、种工程化的思想贯穿到软件开发和维护的全过程。这种工程化的思想贯穿到软件开发和维护的全过程。“软件工程软件工程”的概念的概念1.3软件开发方法软件开发的目标是要在规定的投资和时间内,软件开发的目标是要在规定的投资和时间内,开发出符合用户的需求,高质量的软件,为此需开发出符合用户的需求,高质量的软件,为此需要有成功的开发方法。要有成功的开发方法。 面向过程的开发方法面向过程的开发方法 面向对象的开发方法面向对象的开发方法是现有的软件开发方法中最成熟,应用最广泛的是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。方法,主要特点是快速,自然和方便。结构化方法总的指导思想自顶向

4、下、逐步求精。结构化方法总的指导思想自顶向下、逐步求精。它的基本原则是功能的分解与抽象。它的基本原则是功能的分解与抽象。 它采用结构化分析、结构化设计和结构化实现来它采用结构化分析、结构化设计和结构化实现来完成软件开发的各项任务,并使用适当的软件工具或完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。软件工程环境来支持结构化技术的运用。这种方法学这种方法学把软件生命周期的全过程依次划分为若干个阶段,然把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。后顺序地完成每个阶段的任务。采用这种方法学开发采用这种方法学开发软件的时候,一个阶段一个阶

5、段地进行开发。软件的时候,一个阶段一个阶段地进行开发。 结构化程序设计方法结构化程序设计方法 SP法(法(Structured Program) 结构化设计方法结构化设计方法 SD法(法(Structured Design) 结构化分析方法结构化分析方法 SA法(法(Structured Analysis) SA,SD,SP 法相互衔接,形成了法相互衔接,形成了一整套开发方法。一整套开发方法。 代表有瀑布模型代表有瀑布模型, ,螺旋模型和原型法螺旋模型和原型法结构结构化方法及瀑布模型 结构化分析(结构化分析(SA):在可行性分析的基础上,进一步了解:在可行性分析的基础上,进一步了解确定用户需求

6、,准确地回答确定用户需求,准确地回答 “系统必须做什么?系统必须做什么?”的问题,的问题,获得需求规格说明书。描述方法为获得需求规格说明书。描述方法为DFD 图、数据词典及加图、数据词典及加工说明。工说明。 结构化设计(结构化设计(SD):将分析阶段获得的需求说明转换为计:将分析阶段获得的需求说明转换为计算机中可实现的系统,完成系统的结构设计,包括数据结算机中可实现的系统,完成系统的结构设计,包括数据结构和程序结构,最后得到软件设计说明书。描述方式:模构和程序结构,最后得到软件设计说明书。描述方式:模块图、流程图及块图、流程图及PAD 图等。图等。 结构化程序设计(结构化程序设计(SP):根据

7、软件设计,选择程序设计语:根据软件设计,选择程序设计语言,编码实现具有良好风格的软件系统。言,编码实现具有良好风格的软件系统。OOSD(Object-Oriented Software Development)是)是80年代推出的一种年代推出的一种全新的软件开发方法。非常实用而强有力,被誉全新的软件开发方法。非常实用而强有力,被誉为为90年代软件的核心技术之一。年代软件的核心技术之一。面向对对象方法及其工作模型 其基本思想是:对问题领域进行自然的分割,其基本思想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息

8、实体进行结构和行为的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解拟,从而使设计的软件更直接地表现问题的求解过程。过程。面向对象的开发方法以对象作为最基本的面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。元素,是分析和解决问题的核心。面向对象开发方法的组成 OOSD由三部分组成:由三部分组成: OOA(Object-Oriented Analysis)面向对象的分析面向对象的分析 OOD(Object-Oriented Design)面向对象的设计面向对象的设计 OOP (Object-Oriented Program)面向对象的程序设

9、计面向对象的程序设计OOAOOA强调的是对一个系统中的对象特征和行强调的是对一个系统中的对象特征和行为的定义。建立系统的三类模型。为的定义。建立系统的三类模型。OODOODOOD与与OOAOOA密切配合顺序实现对现实世界的进密切配合顺序实现对现实世界的进一步建模。一步建模。OOPOOPOOP是面向对象的技术中发展最快的,使用是面向对象的技术中发展最快的,使用面向对象的程序设计语言,进行编码。面向对象的程序设计语言,进行编码。面向对象方法的模型代表是喷泉模型面向对象方法的模型代表是喷泉模型1.4 软件过程软件开发模型是描述软件开发过程中各种活动如软件开发模型是描述软件开发过程中各种活动如何执行的

10、模型。因此又称为何执行的模型。因此又称为软件过程模型软件过程模型。软件过程模型是对软件开发实际过程的抽象和软件过程模型是对软件开发实际过程的抽象和简化。简化。 目前典型的软件开发模型有:目前典型的软件开发模型有:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、模型、rationalrational统一过程、敏捷过程与极限编程、微软过程统一过程、敏捷过程与极限编程、微软过程等。等。 不同的开发方法有不同的软件过程模型。不同的开发方法有不同的软件过程模型。开发开发时期时期运行运行时期时期计划计划时期时期( (目标与范围说明书目标与范围说明书)

11、)( (可行性论证论告可行性论证论告) )( (维护报告维护报告) )( (测试报告测试报告) )( (程序程序) )( (设计文档设计文档) )( (需求说明书需求说明书) )软软件生命周期(SDLD)瀑布模型瀑布模型瀑布模型的优点瀑布模型的优点v可以强迫开发人员采用规范的方法;可以强迫开发人员采用规范的方法;v严格规定了每个阶段必须提交的文档;严格规定了每个阶段必须提交的文档;v要求每个阶段交出的所有产品都必须经过质量保证小组的要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。仔细验证。瀑布模型的缺点瀑布模型的缺点v在软件开发的初期阶段就要求做出正确、全面、完整的需在软件开发的初

12、期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。求分析对许多应用软件来说是极其困难的。v在需求分析阶段,当需求确定后,无法及时验证需求是否在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。正确、完整。v作为整体开发的瀑布模型,由于不支持产品的演化,缺乏作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很难发现的错误,只有在最终产品灵活性,对开发过程中很难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。运行时才能暴露出来,从而使软件产品难以维护。快速原型快速原型验证验证编码编码验证验证规格说明规格说明验证验证设计设计

13、验证验证综合测试综合测试维护维护变化的需求变化的需求验证验证快速原型模型快速原型模型快速原型模型适用的场合快速原型模型适用的场合v原型模型比瀑布模型更符合人们认识事物的过程和规律,原型模型比瀑布模型更符合人们认识事物的过程和规律,是一种较实用的开发框架。是一种较实用的开发框架。v它适合于那些不能预先确切定义需求的软件系统的开发,它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。和用户)不能很好交流或通信有困难的情况。需求分析需求分析验证验证规格说明规格说明

14、验证验证设计设计验证验证维护维护针对每个构件,完成针对每个构件,完成详细设计、编码和集详细设计、编码和集成,经测试后交付给成,经测试后交付给用户用户增量模型增量模型增量模型的优点增量模型的优点v能在较短时间内向用户提交可完成部分工作的产品。能在较短时间内向用户提交可完成部分工作的产品。v逐步增加产品功能可以使用户有较充裕的时间学习和适应逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的新产品,从而减少一个全新的软件可能给客户组织带来的冲击。冲击。增量模型的缺点增量模型的缺点v在把每个新的增量构件集成到现有软件体系结构中时,必在把每个新的增量构件

15、集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计的便于按照这种方式进行扩充,向现有产品中系结构设计的便于按照这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,加入新构件的过程必须简单、方便,这就意味着需要更精这就意味着需要更精心的设计心的设计。 对大型软件对大型软件,需要多个原型描述系统的生存期,需要多个原型描述系统的生存期,螺旋模型将瀑布模型与原型化模型结合起来螺旋模型将瀑布模型与原型化模型结合起来, ,并加入了风险分析并加入了风险分析。螺旋模型螺旋模型 螺旋模型将开发过程螺旋模型将开发过

16、程分为几个螺旋周期,每分为几个螺旋周期,每个螺旋周期可分为个螺旋周期可分为4 4个工个工作步骤:作步骤: 第一,确定目标、方案第一,确定目标、方案和限制条件;和限制条件; 第二,评估方案、标识第二,评估方案、标识风险和解决风险;风险和解决风险; 第三,开发确认产品;第三,开发确认产品; 第四,计划下一周期工第四,计划下一周期工作。作。螺旋模型的优点螺旋模型的优点v对可选方案和约束条件的强调有利于已有软件的重用,也对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。有助于把软件质量作为软件开发的一个重要目标。v减少了过多测试或测试不足所带来的风险。减少了

17、过多测试或测试不足所带来的风险。v在螺旋模型中维护只是模型的另一个周期,在维护和开发在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。之间并没有本质区别。螺旋模型的缺点螺旋模型的缺点v如果每次迭代的效率不高,致使迭代次数过多,将会增加如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间。成本并推迟提交时间。v使用该模型需要有相当丰富的风险评估经验和专门知识,使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。要求开发队伍水平较高。螺旋模型适用的场合螺旋模型适用的场合 支持需求不明确、特别是大型软件系统的开发,并支持支持需求不明确、特别是大

18、型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。是一种具有广阔前景的模型。1.4.5喷喷泉模型1.4.6 Rational统一过程图图1.10 RUP1.10 RUP软件开发生命周期软件开发生命周期1.4.7敏捷过程与极限编程 图图1.11 XP1.11 XP项目的整体开发过程项目的整体开发过程1.4.8微软过程 图图1.131.13微软软件生命周期阶段划分和主要里程碑微软软件生命周期阶段划分和主要里程碑 图图1.141.14微软过程的生命周期模型微软过程的生命周期模型 掌握各大模型的概概

19、念及适应场应场合等. 2第二 章v可行性研究的目的:可行性研究的目的:用最小的代价,在尽可能短的时间内用最小的代价,在尽可能短的时间内确定问题是否能够解决。确定问题是否能够解决。v可行性研究的实质:可行性研究的实质:进行一次大大压缩简化了的系统分析进行一次大大压缩简化了的系统分析和设计的过程。和设计的过程。可行性研研究的任务务 技术术可行性 使用现现有的技术术能实现这个实现这个系统吗统吗? 经济经济可行性 这个这个系统统的经济经济效益能超过它过它的开发开发成本吗吗? 操作可行性 系统统的操作方式在这个这个用户组织内户组织内行得通吗吗?系统流程图系统流程图:一种种物理模型,描绘绘物理数数据流图图

20、.数据流图(数据流图(Data Flow Diagram,DFD)是描述系统中数据流程的图形工具,它描是描述系统中数据流程的图形工具,它描述了将系统的逻辑输入转换为逻辑输出所需述了将系统的逻辑输入转换为逻辑输出所需的加工处理过程。的加工处理过程。2.4.1 符号号 基本符号基本符号 附加符号附加符号* 与与 + 或或互斥+数据流图的画法(一) 由外向里:由外向里:不分层,一次性画出完整的数据流图不分层,一次性画出完整的数据流图)先确定系统边界,再确定总的输入和输出)先确定系统边界,再确定总的输入和输出)画系统内部,即画加工用若干个加工把输)画系统内部,即画加工用若干个加工把输入和输出联系起来在

21、数据流每次发生改变入和输出联系起来在数据流每次发生改变的地方画上一个加工,在数据要存储的地方的地方画上一个加工,在数据要存储的地方画上一个文件画上一个文件)加工如果还有新的数据流产生,则加工还需)加工如果还有新的数据流产生,则加工还需要进一步分解成更细的加工,叫基本加工要进一步分解成更细的加工,叫基本加工数数据流图图的画画法(二) 分层数据流图:分层数据流图:自顶向下画,对系统进行逐层分解,可以自顶向下画,对系统进行逐层分解,可以控制每一层的复杂度控制每一层的复杂度 顶层:顶层:实体输入一个加工输出实体输入一个加工输出 中间层:中间层:加工子加工子加工加工子加工子加工 底层:底层:由基本加工组

22、成由基本加工组成X1321.11.21.41.32.12.21.1.11.1.22.1.32.1.22.1.12.2.22.2.32.2.1顶顶层层中中 间间 层层底底 层层先全局后局部先全局后局部, ,先整体后细节先整体后细节, ,先抽象后具体先抽象后具体. .0图1图2图1.1图2.1图2.2图分层层DFD 图图分层数层数据流图图的作图图步骤骤:先画画出顶层顶层的DFD图图,即确定实实体和输输入输输出逐层层分解顶层顶层DFD图图,获获得若干中间层间层DFD图图画画出底层层的DFD图图合理使用文件合理使用文件 当文件作为某些加工之间的交界面时,文件必当文件作为某些加工之间的交界面时,文件必须

23、画出来,一旦文件作为数据流图中的一个独立成须画出来,一旦文件作为数据流图中的一个独立成份画出来了,那么他同其他成份之间的联系也应同份画出来了,那么他同其他成份之间的联系也应同时表达出来。时表达出来。加工分解的原则加工分解的原则 自然性:概念上合理、清晰;自然性:概念上合理、清晰; 均匀性:均匀性:理想的分解是将一个问题分解成大小理想的分解是将一个问题分解成大小均匀的几个部分;均匀的几个部分; 分解度:一般每一个加工每次分解最多不要超分解度:一般每一个加工每次分解最多不要超过个子加工过个子加工,分解应分解到基本加工为止。分解应分解到基本加工为止。五、 分层DFD图的改进 DFD图须经过图须经过反

24、复修改反复修改,才能获得最终的目标系统,才能获得最终的目标系统的的DFD图。从以下方面改进图。从以下方面改进DFD图:图: 1 1、检查数据流的正确性检查数据流的正确性 数据数据守恒守恒 子图、父图的平衡子图、父图的平衡 文件使用是否合理。特别注意输入文件使用是否合理。特别注意输入/ /出文件的数出文件的数据流。据流。2、改进、改进DFD图的易理解性图的易理解性 简化加工之间的联系(联系越少,独立性越强,简化加工之间的联系(联系越少,独立性越强,易理解性越好)。易理解性越好)。 改进分解的均匀性。改进分解的均匀性。 适当命名(各成分名称无二义性,准确、具体)适当命名(各成分名称无二义性,准确、

25、具体)成本成本/效益分析效益分析的目的是要从经济角度分析开发一个特定的的目的是要从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。是否投资于这项开发工程的决定。2.6.1 成本估计成本估计2.6.2 成本成本/效益分析的方法效益分析的方法2.6 成本/效益分析2.6.2 成本/效益分析的方法v成本成本/ /效益分析的第一步是估计开发成本、运行费用和效益分析的第一步是估计开发成本、运行费用和新系统将带来的经济效益:新系统将带来的经济效益:v应该比较新系统的开发成本和经济效益,以便从经济应该

26、比较新系统的开发成本和经济效益,以便从经济角度判断这个系统是否值得投资。角度判断这个系统是否值得投资。1. 货币的时间价值货币的时间价值 假设年利率为假设年利率为i,如果现在存入,如果现在存入P元,则元,则n年后可以得到年后可以得到的钱数为:的钱数为:F=P(1+i)n;反之,如果;反之,如果n年后能收入年后能收入F元钱,元钱,那么这些钱的现在价值是:那么这些钱的现在价值是:P=F/(1+i)n。2. 投资回收期投资回收期 投资回收期就是使累计的经济效益等于最初投资所需投资回收期就是使累计的经济效益等于最初投资所需要的时间。显然,投资回收期越短就能越快获得利润,因要的时间。显然,投资回收期越短

27、就能越快获得利润,因此这项工程也就越值得投资。此这项工程也就越值得投资。3. 纯收入纯收入 纯收入指在整个生命周期之内系统的累计经济效益纯收入指在整个生命周期之内系统的累计经济效益(折折合成现在值合成现在值)与投资之差。与投资之差。4. 投资回收率投资回收率 把资金存入银行或贷给其他企业能够获得利息,把资金存入银行或贷给其他企业能够获得利息,通常用通常用年利率衡量利息年利率衡量利息多少,类似地也可以计算多少,类似地也可以计算投资投资回收率回收率,用它衡量投资效益的大小,并且,用它衡量投资效益的大小,并且可以把它和可以把它和年利率相比较年利率相比较,在衡量工程的经济效益时,它是最重,在衡量工程的

28、经济效益时,它是最重要的参考数据。要的参考数据。 设设P是现在的投资额,是现在的投资额,Fi是第是第i年年底的效益,年年底的效益,n是是系统使用寿命,系统使用寿命,j是投资回收率,则是投资回收率,则 P = F1/(1+j) + F2/(1+j)2 + + Fn/(1+j)n 掌握计计算一个项个项目各大经济经济指标标的方法. 需求分析是软件定义时期的最后一个阶段,它的基本需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答任务是准确地回答“系统必须做什么系统必须做什么?”?”这个问题,也就这个问题,也就是对目标系统提出完整、准确、清晰、具体的要求。是对目标系统提出完整、准确、清晰、具

29、体的要求。 在需求分析阶段结束之前,系统分析员应该写出在需求分析阶段结束之前,系统分析员应该写出软件软件需求规格说明书需求规格说明书,以书面形式准确地描述软件需求。,以书面形式准确地描述软件需求。第第3 3章章 需求分析需求分析软软 件需件需 求求用用 户需户需 求求系系 统需统需 求求功能功能需求需求非功能非功能需求需求领域领域需求需求由客户管理员、由客户管理员、用户等提出用户等提出软件需求的内容软件需求的内容一、软件需求内容一、软件需求内容需求分析与建模需求分析与建模 需求分析和建模又包含三个层次的工作。需求分析和建模又包含三个层次的工作。1 1、需求分析、需求分析 2 2、需求建模(分为

30、企业、需求建模(分为企业建模建模、功能需求、功能需求建模建模和非和非功能需求功能需求建模建模等)等)3 3、需求规格说明需求规格说明不同的描述方式。不同的描述方式。 主要对收集到的需求进行提炼、分析和认真审主要对收集到的需求进行提炼、分析和认真审查,确保所有参加人员取得一致共识。找出错误、查,确保所有参加人员取得一致共识。找出错误、遗漏和不足,建立完整的分析模型。遗漏和不足,建立完整的分析模型。 需求规规格说说明书书的作用 -项项目开发开发合同 -设计编设计编程基础础 -系统测试统测试指南 -竣工验验收依据 将系统看作若干功能模块的集合,每个功能又可将系统看作若干功能模块的集合,每个功能又可以

31、分解为子功能以分解为子功能, ,子功能还可继续分解子功能还可继续分解, ,分解的结果即分解的结果即是系统的雏形。是系统的雏形。存在问题存在问题1. 1. 需要人工完成需要人工完成2. 2. 无法对描述的准确度进行验证。无法对描述的准确度进行验证。3. 3. 难以适应需求的变化。难以适应需求的变化。问题空间问题空间功能功能子功能子功能映射映射 是一种以数据、数据的封闭性为基础,从问题是一种以数据、数据的封闭性为基础,从问题空空间到某种表示的映射方法间到某种表示的映射方法, ,由数据流图由数据流图( (DFDDFD图图) )表示表示。 面向对象的分析方法面向对象的分析方法 面向对象分析方法面向对象

32、分析方法( (OOA) )的关键是识别问题域内的关键是识别问题域内的对象的对象, ,分析它们之间的关系分析它们之间的关系, ,并建立起三类模型。并建立起三类模型。结构化分析方法是最成熟和应用最广泛的方法结构化分析方法是最成熟和应用最广泛的方法分解:分解:对于一个复杂的系统,对于一个复杂的系统,为了将复杂性降低到可以掌为了将复杂性降低到可以掌握的程度,可以把大问题分握的程度,可以把大问题分解成若干小问题,然后分别解成若干小问题,然后分别解决(如右图)。解决(如右图)。“分解分解”和和“抽象抽象”。抽象:抽象:分解可以分层进行,即先考虑问题最本质的分解可以分层进行,即先考虑问题最本质的属性,暂把细

33、节略去属性,暂把细节略去, ,以后再逐层添加细节,直至涉以后再逐层添加细节,直至涉及到最详细的内容,这种用最本质的属性表示一个系及到最详细的内容,这种用最本质的属性表示一个系统的方法就是统的方法就是“抽象抽象”。1.11.21.3x2132.12.22.31.11.3 基本思想与与步骤骤1 1、分层的数据流图、分层的数据流图( (DFDDFD图图) )2 2、数据词典数据词典3 3、描述加工逻辑的、描述加工逻辑的结构化语言、判定表及判定树结构化语言、判定表及判定树 SA方法的特点 由顶层顶层向下逐层层分解 图图形方式描述 SA法的局限性 与数与数据库库的衔衔接性差 人机交互方式不易表达达 不适

34、用于实时实时系统统 书书面模型(不能上机验证验证,不容易发现问题发现问题) 软件设计是软件开发的关键步骤,软件设计是软件开发的关键步骤,直接影响软件质量直接影响软件质量。软件设计阶段要解决软件设计阶段要解决“如何做如何做”的问题。的问题。 将需求阶段获得的需求说明(模型)将需求阶段获得的需求说明(模型)转换为计算机中可实现的系统转换为计算机中可实现的系统, ,即进行系统结构设计。即进行系统结构设计。 设计阶段主要任务是设计阶段主要任务是: :系统结构的设计系统结构的设计数据结构的设计数据结构的设计用户界面的设计用户界面的设计算法的设计算法的设计 软件软件涉及多方面,可分为总体设计和涉及多方面,

35、可分为总体设计和详细设计。详细设计。过程设计过程设计系统结构设计系统结构设计数据设计数据设计界面设计界面设计软件设计软件设计任务任务软件设计分为软件设计分为总体设计总体设计和和详细设计详细设计两个阶段两个阶段。 3.1.2 3.1.2 软件设计阶段软件设计阶段总体设计总体设计v总体设计的两个重要任务:总体设计的两个重要任务:v划分出组成系统的物理元素;划分出组成系统的物理元素;v设计软件的结构,也就是确定系统中每个程序是设计软件的结构,也就是确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。由哪些模块组成的,以及这些模块相互间的关系。2. 设计设计软件结构软件结构 u指定了系统的

36、组织结构和拓扑结构指定了系统的组织结构和拓扑结构.确定程序由哪些模确定程序由哪些模块组成,以及这些模块之间的关系块组成,以及这些模块之间的关系. 通常程序中的一个通常程序中的一个模块完成一个适当的子功能。把这些模块自顶向下组模块完成一个适当的子功能。把这些模块自顶向下组成一种良好的层次调用关系,也就完成了软件结构设成一种良好的层次调用关系,也就完成了软件结构设计的任务。计的任务。u如果数据流图已经细化到适当的层次,则可以直接从如果数据流图已经细化到适当的层次,则可以直接从数据流图映射出软件结构。数据流图映射出软件结构。u 设计方法不同,确定软件结构的方法也不同。常用的设计方法不同,确定软件结构

37、的方法也不同。常用的设计方法有:设计方法有: SD法、法、Jackson法、法、OOD法、法、HIPO法、法、 Parnas法、法、 Warnier法等。法等。 软件软件就是构造一个高内聚低耦合就是构造一个高内聚低耦合的软件模型。的软件模型。软件软件高可靠高可靠性性高可维高可维护性护性高可理高可理解性解性高效率高效率软件设计的目标模块分解模块分解模块模块: :构成系统的基本单元构成系统的基本单元设计阶段的基本任务设计阶段的基本任务:决定软件系统的:决定软件系统的模块结构模块结构. .模块化模块化: :就是将系统划分成若干模块,就是将系统划分成若干模块,每个模块完成一个子功能,把这些模块每个模块

38、完成一个子功能,把这些模块集中起来组成一个整体,以满足所要求集中起来组成一个整体,以满足所要求的整个系统的功能的整个系统的功能。我们利用模块化来降低软件复杂度。注我们利用模块化来降低软件复杂度。注意选择分解的最佳模块数。意选择分解的最佳模块数。采用模块化原理带来的好处:采用模块化原理带来的好处:u模块化使软件结构清晰,易于设模块化使软件结构清晰,易于设 计,也易于阅读和理解;计,也易于阅读和理解;u模块化使软件容易测试和调试,模块化使软件容易测试和调试, 有助于提高软件的可靠性;有助于提高软件的可靠性;u模块化能够提高软件的可修改性;模块化能够提高软件的可修改性;u模块化也有助于软件开发工程的

39、组模块化也有助于软件开发工程的组 织管理。织管理。模块分解模块分解模块的基本特征:模块的基本特征: 外部特征(输入输出,功能)外部特征(输入输出,功能) 内部特征(内部数据、代码)内部特征(内部数据、代码)设计过程:由外向里设计过程:由外向里 先确定模块的外部特征(概要设计)先确定模块的外部特征(概要设计) 再确定模块的内部特征(详细设计)再确定模块的内部特征(详细设计) 模块块是否分解得越小越好? 软件结构表示软件的系统结构,它是软件模块间关软件结构表示软件的系统结构,它是软件模块间关系的表示,均表示为层次关系系的表示,均表示为层次关系。直线表示调用关系。直线表示调用关系. .软 件 结 构

40、 示 意 图顶层顶层1层层2层层ABCDEFGHIJKLMN深度宽度扇入为扇入为2扇出为扇出为3扇入为扇入为3宽度深度宽度3层层4层层模块结构示意图模块结构示意图 深度深度:表示软件结构中从顶层模块到最底层模块表示软件结构中从顶层模块到最底层模块的层数的层数; 宽度宽度:表示控制的总分布;表示控制的总分布; 扇出数扇出数:指一个模块直接控制下属的模块个数;指一个模块直接控制下属的模块个数; 扇入数扇入数:指一个模块的直接上属模块个数。反映指一个模块的直接上属模块个数。反映了模块的了模块的重用率重用率. . 一个好的软件结构的形态准则是:顶部宽度小,一个好的软件结构的形态准则是:顶部宽度小,中部

41、宽度最大,底部宽度次之;在结构顶部有较高的中部宽度最大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。扇出数,在底部有较高的扇入数。 经验表明,一个设计得好的典型系统的平均扇出经验表明,一个设计得好的典型系统的平均扇出通常是通常是3 3或或4(4(扇出的上限通常是扇出的上限通常是5 59)9)。 有有 关关 指指 标标 模块独块独立性准则则: 模块独块独立性的含义义是指开发开发具有功能专专一,模块块之间间无过过多相互作用的模块块。又称为称为模块独块独立性准则则。这种类这种类型的模块块可以并并行开发开发,开开发发容易,能减减少错误错误的影响响,使模块块容易组组合、修改及测试测试。

42、v模块的独立程度可以由两个定性标准度量,这两模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。个标准分别称为内聚和耦合。v耦合耦合衡量不同模块彼此间互相依赖衡量不同模块彼此间互相依赖(连接连接)的紧密的紧密程度程度(块间联系块间联系);v内聚内聚衡量一个模块内部各个元素彼此结合的紧衡量一个模块内部各个元素彼此结合的紧密程度密程度(块内联系块内联系)。1.耦合耦合v耦合耦合是对一个软件结构内不同模块之间互连是对一个软件结构内不同模块之间互连程度的度量。程度的度量。v耦合强弱取决于模块间接口的复杂程度,进耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数

43、入或访问一个模块的点,以及通过接口的数据。据。v在软件设计中应该追求尽可能松散耦合的系在软件设计中应该追求尽可能松散耦合的系统。统。 耦合性耦合性 用于描述模块之间联系的紧密程度。用于描述模块之间联系的紧密程度。软件独立性的度量标准是两个定性指标:软件独立性的度量标准是两个定性指标:内容耦合内容耦合公共耦合公共耦合控制耦合控制耦合复合耦合复合耦合数据耦合数据耦合应该采取下述设计原则:应该采取下述设计原则: 尽量使用数据耦合,少用控制耦合和特尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不征耦合,限制公共环境耦合的范围,完全不用内容耦合。用内容耦合。2.内聚内聚v内聚内聚

44、标志一个模块内各个元素彼此结合的紧标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然密程度,它是信息隐藏和局部化概念的自然扩展。扩展。v设计时应该力求做到高内聚,通常中等程度设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,不要使用低内聚。的内聚也是可以采用的,不要使用低内聚。v内聚和耦合是密切相关的,模块内的高内聚内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。往往意味着模块间的松耦合。v实践表明内聚更重要,应该把更多注意力集实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。中到提高模块的内聚程度上。内聚性内聚性 用于描述模块内部

45、联系的紧密程度。用于描述模块内部联系的紧密程度。软件独立性的度量标准是两个定性指标:软件独立性的度量标准是两个定性指标: 耦合性耦合性 用于描述模块之间联系的紧密程度。用于描述模块之间联系的紧密程度。内容耦合内容耦合公共耦合公共耦合控制耦合控制耦合复合耦合复合耦合数据耦合数据耦合偶然型偶然型逻辑型逻辑型瞬时型瞬时型通讯型通讯型顺序型顺序型功能型功能型内聚与耦合之间的关系内聚与耦合之间的关系 高内聚、低耦合是我们进行软件设计的一贯原则。高内聚、低耦合是我们进行软件设计的一贯原则。 一般而言,模块的内聚越高,模块间的耦合一般而言,模块的内聚越高,模块间的耦合就越弱,模块的独立性也越好,因此我们要在

46、设就越弱,模块的独立性也越好,因此我们要在设计时力争做到高内聚,能够辨认出低内聚的模块,计时力争做到高内聚,能够辨认出低内聚的模块,并且通过修改设计提高模块的内聚程度降低模块并且通过修改设计提高模块的内聚程度降低模块间的耦合程度,从而获得较高的模块独立性。间的耦合程度,从而获得较高的模块独立性。描绘软绘软件结构结构的图图形工具1. 层次图层次图 2. HIPO图图 3. 结构图结构图1. 层层次图图 层次图用来描绘软件的层次结构,图中的一层次图用来描绘软件的层次结构,图中的一个矩形框代表一个模块,方框间的连线表示调用个矩形框代表一个模块,方框间的连线表示调用关系而不像层次方框图那样表示组成关系

47、。关系而不像层次方框图那样表示组成关系。图图 正文加工系统的层次图正文加工系统的层次图2. HIPO图图 HIPO图是美国图是美国IBM公司发明的公司发明的“层次图加层次图加输入输入/处理处理/输出图输出图”的英文缩写,由一个的英文缩写,由一个H图(层图(层次图)和若干个次图)和若干个IPO图组成。和图组成。和H图中每个方框相图中每个方框相对应,应该有一张对应,应该有一张IPO图描绘这个方框代表的模块图描绘这个方框代表的模块的处理过程。的处理过程。图图 带编号的层次图带编号的层次图(H图图)3. 结构图结构图 结构图描述了程序的模块结构,表示了一个系统结构图描述了程序的模块结构,表示了一个系统

48、的层次分解关系,反映了块间联系和块内联系等的层次分解关系,反映了块间联系和块内联系等特征及控制信息的传递关系。特征及控制信息的传递关系。图图 结构图的例子结构图的例子产生最佳解的一般结构产生最佳解的一般结构结构化设计方法结构化设计方法 SD(Structured Design)法与与 SA、SP法前后衔衔接,是结构结构化开发开发方法的核心。SDSD方法的基本思想方法的基本思想:整个系统由相对独立、:整个系统由相对独立、功能单一的模块构成。模块之间的相对性由功能单一的模块构成。模块之间的相对性由块间联系或块内联系来衡量。块间联系或块内联系来衡量。SDSD方法是根据一些固定的规则,从分层的方法是根

49、据一些固定的规则,从分层的DFDDFD图导出初始的模块图。再对初始的模块图进图导出初始的模块图。再对初始的模块图进行改进,获得最终的结构图。行改进,获得最终的结构图。结构化设计方法结构化设计方法 1. SD SD 法的两个阶段法的两个阶段 总体设计总体设计 任务:任务: 解决系统的模块结构,即分解模块,解决系统的模块结构,即分解模块,确定确定模块功能模块功能及系统模块的层次结构。及系统模块的层次结构。 文档:文档:模块结构图及其模块功能说明。模块结构图及其模块功能说明。 详细设计详细设计 对模块图中每个模块的过程进行描述,常用的对模块图中每个模块的过程进行描述,常用的描述的方式有:伪代码,流程

50、图,描述的方式有:伪代码,流程图,N-S图,图,PAD图图等。等。SD方法的设计设计步骤骤 1 1)从)从DFDDFD图导出初始的模块结构图图导出初始的模块结构图 2 2)按照)按照SDSD方法的设计总则,改进模块结构方法的设计总则,改进模块结构图图 注意:模块结构图不同于程序流程图。结构注意:模块结构图不同于程序流程图。结构图反映软件整体的性质,框图反映的局部的图反映软件整体的性质,框图反映的局部的内容,过程性的。内容,过程性的。 二、二、SD SD 法的设计步骤法的设计步骤从从DFDDFD图导出初始的模块结构图图导出初始的模块结构图(SC)(SC)。 中心变换型中心变换型(transfor

51、m center) _ 变换分析变换分析 事务处理型事务处理型(transaction) _ 事务分析事务分析按照按照SDSD法设计总则,改进模块结构图。法设计总则,改进模块结构图。注意:注意:模块结构图不同于模块结构图不同于“框图框图”。软件软件层次性:层次性:反映软件整体的性质反映软件整体的性质 ( (结构图结构图) )过程性:反映局部的性质过程性:反映局部的性质 ( (框图框图) )3.3 3.3 结构化设计方法结构化设计方法( (续)续)变换变换分析 变换变换型结构结构的DFD图图特点 这类数这类数据流图图可看成是对输对输入数数据进进行转换转换而得到输输出数数据的处处理。 DFD图图可

52、以明显显分为为“输输入处处理输输出”三部分。逻辑输入逻辑输入逻辑输出逻辑输出主加工主加工变换变换分析 主加工:通常位于系统中几股数据流的汇合处主加工:通常位于系统中几股数据流的汇合处 确定逻辑输入:离物理输入端最远的、仍属于系统输入的确定逻辑输入:离物理输入端最远的、仍属于系统输入的数据流数据流 确定逻辑输出:离物理输出端最远的,仍属于系统输出的确定逻辑输出:离物理输出端最远的,仍属于系统输出的数据流数据流 有些系统没有主加工的成分。有些系统没有主加工的成分。 用变换变换分析法设计设计模块块 顶层:顶层:为主加工设计一个主模块,功能是整个系统的为主加工设计一个主模块,功能是整个系统的功能功能

53、一层:一层:为逻辑输入中的每一个输入数据流设计一个输为逻辑输入中的每一个输入数据流设计一个输入模块,功能是向主模块提供数据;为逻辑输出中的入模块,功能是向主模块提供数据;为逻辑输出中的每一个输出数据流设计一个输出模块,功能是为主模每一个输出数据流设计一个输出模块,功能是为主模块提高输出通道;为主模块设计一个变换模块,功能块提高输出通道;为主模块设计一个变换模块,功能是将逻辑输入转换为逻辑输出。是将逻辑输入转换为逻辑输出。 二层及以下:二层及以下:为上层的每个输入模块设计两个下层模为上层的每个输入模块设计两个下层模块:一个输入模块和一个变换模块;为上层的每个输块:一个输入模块和一个变换模块;为上

54、层的每个输出模块设计两个下层模块:一个变换模块和一个输出出模块设计两个下层模块:一个变换模块和一个输出模块。上层的变换模块若比较复杂的话,也要向下继模块。上层的变换模块若比较复杂的话,也要向下继续分变换模块。续分变换模块。 这类数据流图可看成是对输入数据进行转换而得到这类数据流图可看成是对输入数据进行转换而得到输出数据的处理。输出数据的处理。 DFDDFD图可以明显分为图可以明显分为“输入输入处理处理输出输出”三部分三部分。(物理输入)(物理输入)(逻辑输入)(逻辑输入)(逻辑输出)(逻辑输出)输输 入入主加工主加工输输 出出(物理输出)(物理输出)检查检查顺序顺序检查检查合理性合理性扩充扩充

55、代码代码核对核对 记录记录修改修改压缩压缩代码代码格式化格式化修改修改数据数据 旧文件旧文件新文件新文件中心变换型中心变换型 的 DFD DFD 图图简化的简化的DFD图图4号号加工加工1号号加工加工2号号加工加工中心中心加工加工3号号加工加工ABCDEF输输入入流流转换流转换流输输出出流流MMCICTCOCCDD进行一级分解,设计上层模块。进行一级分解,设计上层模块。为每个输入设计一个输入模块,为每个输入设计一个输入模块,为每个输出设计一个输出模块,同时为每个主加工设计一为每个输出设计一个输出模块,同时为每个主加工设计一个处理模块。个处理模块。进行二级分解,设计中下层模块:进行二级分解,设计

56、中下层模块:为上层的每个输入模块设计两个下层模块:一个输入模为上层的每个输入模块设计两个下层模块:一个输入模块和一个变换模块;为上层的每个输出模块设计两个下块和一个变换模块;为上层的每个输出模块设计两个下层模块:一个变换模块和一个输出模块。层模块:一个变换模块和一个输出模块。 4号号加工加工1号号加工加工2号号加工加工中心中心加工加工3号号加工加工ABCDEF输输入入流流转换流转换流输输出出流流EMCICTCOCCDD取取B转换转换B转换转换D送送EBBCDEMCICTCOCCDD取取B转换转换B转换转换D送送EBBCDEE继续向下分解继续向下分解 取取A转换转换A转换转换E送送FAABEFF

57、 这类数据流图有一个数据处理中心,这类数据流图有一个数据处理中心,按加工的结果选择一个输出数据流继续执行的处理。按加工的结果选择一个输出数据流继续执行的处理。 如下图所示:如下图所示:分类分类报名报名付款付款注销注销查询查询复审复审采用采用“事务分析事务分析”(transaction Analysis)技术技术事务处理型事务处理型 的的 DFD 图图用事务务分析方法设计设计模块图块图 顶层:为主加工设计一个主模块,功能是整个系顶层:为主加工设计一个主模块,功能是整个系统的功能;统的功能; 一层:为逻辑输入中的每一个输入数据流设计一一层:为逻辑输入中的每一个输入数据流设计一个输入模块,功能是向主

58、模块提供数据;为逻辑个输入模块,功能是向主模块提供数据;为逻辑输出中的每一个输出数据流设计一个输出模块,输出中的每一个输出数据流设计一个输出模块,功能是为主模块提供输出通道;为每种类型的事功能是为主模块提供输出通道;为每种类型的事务设计一个事务处理模块(变换模块)务设计一个事务处理模块(变换模块) 二层及以下:与变换分析类似。二层及以下:与变换分析类似。 原始的数据流图IP1 1P2 2P3 3输入流输入流事务中心事务中心加工路径加工路径事务控制事务控制接受事务接受事务发送事务发送事务P1P2P3对应模块图 几点补补充: 实际应实际应用中系统统通常是两种类两种类型的混合结构结构,需要以变换变换

59、分析为为主、事务务分析为辅进为辅进行设计设计; 在多任务环务环境下,将将系统统中可以并并行处处理的部分设计设计成许许多子任务务,彼此间间用通讯讯方式进进行联联系;程序结构与问题结构与问题结构结构相对应对应。 简单的转换方法如书上p109和p112所示.SD方法小结结 SDSD方法设计软件系统的特点:方法设计软件系统的特点:由问题的结构(数据流图)导出软件系统的模块结由问题的结构(数据流图)导出软件系统的模块结构图;构图;将系统先分解再组合,有效地控制系统复杂性;提将系统先分解再组合,有效地控制系统复杂性;提出了软件系统质量评价标(块间联系和块内联系);出了软件系统质量评价标(块间联系和块内联系

60、);提出了一组设计技巧;图形描述直观明了;提出了一组设计技巧;图形描述直观明了;SDSD方法设计软件系统的缺点:方法设计软件系统的缺点:对数据结构的设计未做考虑;对数据结构的设计未做考虑;块间联系和块内联系无严格定义;块间联系和块内联系无严格定义; 从需求阶段到设计阶段的图转换复杂从需求阶段到设计阶段的图转换复杂第第6 6章章 详细设计详细设计 总体设计是软件结构的建立过程总体设计是软件结构的建立过程 详细设计是对上述过程细节的完善,给出软件结详细设计是对上述过程细节的完善,给出软件结构中各个模块的内部过程描述,从而在编码阶段构中各个模块的内部过程描述,从而在编码阶段可以把这个描述直接翻译成用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论