软件工程理论知识.docx

上传人:小飞机 文档编号:1676118 上传时间:2022-12-13 格式:DOCX 页数:42 大小:1.38MB
返回 下载 相关 举报
软件工程理论知识.docx_第1页
第1页 / 共42页
软件工程理论知识.docx_第2页
第2页 / 共42页
软件工程理论知识.docx_第3页
第3页 / 共42页
软件工程理论知识.docx_第4页
第4页 / 共42页
软件工程理论知识.docx_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《软件工程理论知识.docx》由会员分享,可在线阅读,更多相关《软件工程理论知识.docx(42页珍藏版)》请在三一办公上搜索。

1、2010年软件设计师考试复习资料 (42页完美打印版) 软件工程理论知识软件工程基础知识精解一什么是软件?4二软件危机以及产生软件危机的原因?4三有哪些流行的软件工程方法学及其要素?4四什么是软件生存周期?有哪些活动?44.1软件生存周期44.2 开发活动44.3 各活动阶段主要文档54.3.1可行性分析和项目开发计划54.3.2需求分析中的文档54.3.3 概要设计阶段文档54.4.4 详细设计阶段54.4.5 编码54.4.5 测试54.4.6 系统测试阶段5五有哪些主要生存期模型?55.1 瀑布模型(传统的软件周期模型)55.2 原型模型65.2.1 快速原型模型65.2.2 演化模型6

2、5.2.3增量模型(渐增式)65.2.4 原型模型小结65.3 螺旋模型75.4 喷泉模型75.5 迭代软件开发技术75.6极限编程(XP)8六软件过程基础知识96.1 软件过程96.2 评估工具9七软件工程项目管理基本知识97.1时间管理97.1.1 Gantt图97.1.2 PERT网图与关键路径107.2成本管理117.3风险管理117.3.1 风险的定义117.3.2 风险的类型117.3.3 风险管理活动127.3.3 风险曝光度12八模块化基本知识128.1模块特性128.1.1 可分解性128.1.2 可组装性138.1.3 可理解性138.1.4 连续性138.1.5 保护性1

3、38.2 模块与模块的耦合性(7种)138.2.1 内容耦合138.2.2 公共耦合138.2.3 外部耦合138.2.4 控制耦合138.2.5 标记耦合138.2.6 数据耦合138.2.7 非直接耦合(无耦合)138.3 模块的内聚性138.4 模块的深度、宽度、扇出与扇入148.5 模块作用域和控制域148.6 模块化基础知识小结14九什么是软件开发方法?有哪些主要方法?149.1 结构化方法学149.1.1数据流图(DFD图)149.1.2 数据字典169.1.3 结构化语言169.1.4 实体-关系图(E-R图)169.2 结构化设计179.2.1 概要设计179.2.2 详细设计

4、199.3 Jackson方法199.4 面向对象分析方法(00A)19十软件工具20十一. 软件开发环境20十二. 软件质量管理基础知识2012.1 软件质量2012.2 软件质量保证2012.3 代码评审技术21十三.成本效益分析可用哪些指标进行度量?21十四.第四代语言(4GL)的主要特征?21十五.软件测试2115.1 软件测试经过的步骤2115.2 测试与软件开发各阶段的关系2215.3 白盒测试2215.4 黑盒测试2315.4灰盒测试2315.5 回归测试2315.6 单元测试2315.7集成测试2315.8 确认测试2415.9 系统测试24十六软件工程标准和软件文档2417.

5、1 软件维护类型2517.2 软件的可维护性25十八.软件的可靠性25一什么是软件?1.满足用户功能需求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;以上三部分的组合构成了软件二软件危机以及产生软件危机的原因?1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。软件产品“供不应求”。2.软件成本在计算机系统总成本中所占的比例逐年上升。“开发成本高”3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。4.软件产品的质量不容易保证。5.软件产品常常是不可维护的。6.软件产品的重用性

6、差,同样的软件多次重复开发。7.软件通常没有适当的文档资料。产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。三有哪些流行的软件工程方法学及其要素?1.使用最广泛的软件工程方法学是面向结构化方法学和面向对象的方法学(上世纪70-90年代,流行面向结构化方法学,上世纪90年代到现在,流行面向对象方法学)。2.要素:方法、工具和过程。四什么是软件生存周期?有哪些活动?4.1软件生存周期一个软件从提出开发要求开始到软件废弃不用的整个过程。4.2 开发活动可行性分析和项目开发计划、需求分析和定义、软件设计(先后细分为:概要设计和详细设计)、编码、测试和运行

7、维护可行性分析和项目开发计划:用户、项目负责人和系统分析师搞清楚系统要解决的问题是什么?以及从技术、经济、时间等方面论证项目开发可行性。需求分析和定义:用户、项目负责人和系统分析师确定系统必须做什么?但不关心具体怎么做?要确定系统的功能、性能、数据、界面等要求,从而确定系统的逻辑模型,同时制定后期测试计划。软件设计-概要设计:系统分析师和软件设计师在需求定义的基础上,把各功能需求转换成需要的体系结构,即划分模块、模块的层次、模块之间的调用关系以及各模块的功能,同时设计应用系统的总体数据结构和数据库结构。软件设计-详细设计:软件设计师和程序员对概要设计阶段得出的各功能模块进行详细描述成精确的、结

8、构化的过程描述,即各个功能模块具体怎么实现,用相应的工具把模块的控制结构表示出来,但还未进行编码。编码:由程序员详细设计阶段得出的各模块控制结构(图形)转变成计算机能识别的指令代码。测试:由另一部门(单位)的软件设计师或系统分析师花费最少的人力物力找出程序最多、最大的错误(bug)。维护:由用户和维护人员进行的软件生存周期中时间最长的阶段。4.3 各活动阶段主要文档4.3.1可行性分析和项目开发计划l 可性行研究报告l 项目开发计划4.3.2需求分析中的文档l 需求规格说明书l 初步用户使用手册l 确认测试的测试计划l 修改完善的软件开发计划l 系统测试计划文档4.3.3 概要设计阶段文档l

9、概要设计说明书l 数据库说明书l 用户手册l 修订的测试计划(测试的策略、方法、步骤)4.4.4 详细设计阶段l 详细设计说明书4.4.5 编码l 程序清单4.4.5 测试l 完善的测试计划书l 软件测试报告4.4.6 系统测试阶段l 系统测试报告2005年下半年l 应该在(7) 阶段制定系统测试计划。(7)A. 需求分析 B. 概要设计 C. 详细设计 D. 系统测试(29)详细描述软件的功能、性能和用户界面,以使用户了解如何使用软件。(29)A.概要设计说明书 B.详细设计说明书 C.用户手册 D.用户需求说明书五有哪些主要生存期模型?瀑布模型、原型开发模型(快速原型模型、演化模型、增量模

10、型)、螺旋模型、喷泉模型、基于知识的模型和变化模型。5.1 瀑布模型(传统的软件周期模型)瀑布模型严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布,如下图所示。优点:以文档作为驱动,强迫开发人员采用规范的方法,严格规定了各阶段必须提交的文档;要求每一阶段结束后,都要进行严格的评审。与它最相适应的开发方法是结构化方法。缺点:不适应用户需求的改动。2004年下半年: 软件开发中的瀑布模型典型的刻画了软件生存周期的阶段划分,与其最相适应的软件开发方法是 (9) 。(9)A.构件化方法 B.结构化方法 C.面向对

11、象方法 D.快速原型法5.2 原型模型5.2.1 快速原型模型快速原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。主要用于需求分析阶段。不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法,所以不能定义完善的文档。特征:简化项目管理、尽快建立初步需求、加强用户参与和决策。具有广泛技能水平的原型化人员是原型实施的重要保证。原型化人员应该是具有经验与才干、训练有素的专业人员。衡量原型化人员能力的重要标准是他是否能够从用户的模糊描述中快速获取需求。5.2.2 演化模型在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。而演化模型应用于整个软件开发

12、过程,是从初始模型逐步演化为最终软件产品的渐进过程。也就是说,快速原型模型是一种“抛弃式”的原型化方法,而演化模型则是一种“渐进式”的原型化方法。5.2.3增量模型(渐增式)增量模型主要用于设计阶段,把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。新的增量构件不得破坏已经开发出来的产品。其示意图如图4-2所示。5.2.4 原型模型小结从下面的有关原型化方法的叙述中,选择出正确的叙述:(1)快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。(2)在用户的数据资源没有得到很好地组织和管理的时候,应该使用原型化方法。(3)在用户没有明确地肯定其需求的时候,应该使用原型化方法

13、。(4)在用户不希望把自己的时间花在软件开发过程中的时候,应该使用原型化方法。(5)使用原型化方法时应该使用第三代编程语言。(6)原型化加强了开发过程中用户的参与和决策。(7)原型化方法大致可分为三类:抛弃式、演化式和递增式。(8)原型化方法大致可分为演化式和递增式。(9)采用原型化方法时,软件的开发成本较高。(10)采用原型化方法时,关键的因素是建立原形的速度,而不是原形运行的效率。5.3 螺旋模型螺旋模型综合了瀑布模型和原型模型中的演化模型的优点,还增加了风险分析。螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直转到

14、软件生命期结束。5.4 喷泉模型喷泉模型主要用于描述面向对象的开发过程。喷泉一词体现了面向对象开发过程的迭代和无间隙特征。迭代指的是开发活动常常需要重复多次,在不断的迭代中逐渐完善软件系统,无间歇性指在开发活动之间不存在明显的边界,允许各开发活动交叉、迭代地进行。5.5 迭代软件开发技术Rational 统一开发流程RUP(Rational Unified Process)是一个通用的软件流程框架,它是一个以架构为中心、用例驱动的迭代化软件开发流程。RUP 是从几千个软件项目的实践经验中总结出来的,对于实际的项目具有很强的指导意义,是软件开发行业事实上的行业标准。在RUP 中,我们把软件开发生

15、命周期划分为四个阶段,每个阶段的结束标志就是一个主要的里程碑(如下图所示)。这四个阶段主要是为了达到以下阶段性的目标里程碑:先启(Inception):确定项目开发的目标和范围精化(Elaboration):确定系统架构和明确需求构建(Construction):实现剩余的系统功能产品化(Transition):完成软件的产品化工作,将系统移交给客户2005年下半年:l 在开发一个系统时,如果用户对系统的目标是不很清楚,难以定义需求,这时最好使用 (6) 。(6)A. 原型法 B. 瀑布模型 C. V-模型 D. 螺旋模型2006年上半年:渐增式开发方法有利于 (4) 。(4)A. 获取软件需

16、求B.快速开发软件C. 大型团队开发D.商业软件开2006年下半年:常见的软件开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。其中(5)模型适用于需求明确或很少变更的项目,(6)主要用来描述面向对象的软件开发过程。(5) A瀑布模型 B.演化模型 C. 螺旋模型 D.喷泉模型(6) A瀑布模型 B.演化模型 C. 螺旋模型 D.喷泉模型统一过程(UP)的基本特征是“用例驱动,以架构为中心的和受控的迭代式增量开发”。UP将一个周期的开发过程化分为4个阶段,其中 (26)提交结果包含了系统架构。(26)A.先启阶段 B.精化阶段 C.构建阶段 D.提交阶段5.6极限编程(XP) 一种轻量(敏捷

17、)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方法。与其他方法对比,最大的不同在于:1.在更短的周期内,更早地提供具体、持续的反馈信息2.迭代地进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程中不断地发展3.依赖于自动测试程序来监控开发进度,并及早地捕获缺陷4.依赖于口头交流,测试和源程序进行沟通5.倡导持续的演化式的设计6.依赖于开发团队内部的紧密协作7.尽可能达到程序员短期利益和项目长期利益的平衡如上图所示,xp由价值观、原则、实践和行为四个部分组成,它们彼此相互依赖、关联,并通过行为贯穿于整个生命周期。xp的核心是其总结的四大价值观:沟通、简单、反馈和勇

18、气、它们是xp的基础,也是xp的灵魂。5个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。在xp方法中,贯彻的是“小步快走”的开发原则,因此工作质量绝不可打折扣,通常采用测试先行的编码方式来提供支持。在xp中,继承了12个最佳实践:计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续继承、每周工作40小时,现场客户,编码标准。六软件过程基础知识6.1 软件过程软件过程是指人们用于开发和维护软件及相关产品的一系列活动,包括软件工程过程和软件管理过程。 6.2 评估工具软件过程的评估,通常采用软件能力成熟度模型(Capability Maturity Mod

19、el,CMM)。CMM1.1的5个等级(由低级到高级):l 初始级 软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力,管理是反应式(消防式)的。l 可重复级建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。l 已定义级 已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准化软件过程。所有项目均使用经标准、裁减的标准软件过程来开发和维护软件。l 已管理级收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。l 优化级加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使

20、过程能持续不断地改进。巧记:初级程序员,可重复写程序,现已定义了管理策略来优化程序设计!2006年下半年:软件能力成熟度模型(CMM)是目前国际上最流行、最实用的软件生产过程标准和软件企业成熟度的等级认证标准。该模型将软件能力成熟度自低到高依次划分为初始级、可重复级、已定义级、已管理级、优化级。从(17)开始,要求企业建立基本的项目管理过程的政策和管理规程,使项目管理过程有章可循。(17)A初始级 B. 可重复级 C. 已定义级 D. 已管理级七软件工程项目管理基本知识软件项目管理开始于任何技术活动之前,并且贯穿于整个的软件生命周期。软件工程项目管理一般分为时间管理、成本管理、人力资源管理、风

21、险管理。7.1时间管理7.1.1 Gantt图是一种简单的水平条形图,它以水平线段表示子任务的工作阶段,线段的起点和终点分别对应着子任务的起始时间,线段长度指示完成该任务所需要的时间。 甘特图的优点:直观简明、易学易绘、可从图上清楚地标出子任务间的时间对比,但它也有 缺点: (a)不能显示地描绘各项彼此间的依赖关系;(b)进度计划的关键部分不明显,难以判断哪些部分应当是主攻和主控的对象;(c)计划中有潜力的部分以及潜力的大小不明确,往往造成潜力的浪费。2006年5月: 在软件项目管理中可以使用各种图形工具来辅助决策,下面对Gantt 图的描述中,不正确的是 (5) 。 A. Gantt 图表现

22、了各个活动的持续时间 B. Gantt 图表现了各个活动的起始时间C. Gantt 图反映了各个活动之间的依赖关系D. Gantt 图表现了完成各个活动的进度7.1.2 PERT网图与关键路径 PERT网图是一个由箭头(标识任务)和结点(标识事件)组成的有向图。将网络方法用于工作计划安排的评审和检查。开发模块A、B、C模块的任务网络图 PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的依赖关系,即哪些任务完成后才能开始另一些任务,以及如期完成整个工程的“关键路径”。 关键路径(Critical Path)是由一连串的任务所组成的链,距离最大的一条路径。

23、软件项目的管理人员应该密切注视关键任务的进展情况。如果希望缩短工期,只有往关键任务中增加资源才会有效果。7.2成本管理 一种常用的成本估算方法是先估计完成软件项目所需的工作量(人月数),然后根据每个人月的代价(金额)计算机软件的开发费用:开发费用 人月数每个人月的代价 另一种方法是估计软件的规模(通常指源代码行数),然后根据每行源代码的平均开发费用(包括分析、设计、编码、测试所花的费用),计算机软件的开发费用:开发费用源代码行数每行平均费用估算源代码行数时,可以请n为有经验的专家,每位专家对软件给出3个估计值:l ai-最少源代码行数(该软件可能的最小规模)l bi-最大源代码行数(该软件可能

24、的最大规模)l mi-最可能的代码行数(该软件最可能的规模)然后计算出每位专家的估算期,n位专家的估算期望值的平均值就是代码行数的估算值。Putnam模型和COCOMO模型:Putnam模型和COCOMO模型是常用的成本估算模型。l Putnam模型:是一种动态多变量模型,它是假设在软件开发的整个生存期中工作量的分布。l COCOMO模型:是结构性成本模型,是最精确、最易于使用的成本估算模型之一。该模型可以分为:(1)基本COCOMO模型,是一个静态单变量模型,它是对整个软件系统进行估算。(2)中级COCOMO模型,是一个静态多变量模型。它将软件系统模型分为系统和部件两个层次,系统由部件构成,

25、它把软件开发所需人力(成本)看作是程序大小和一系列“成本驱动属性”的函数。(3)详细COCOMO模型,它将软件系统模型分为系统、子系统和模块3个层次,它除包括中级模型所考虑的因素外,还考虑了在需求分析、软件设计等每一步的成本驱动属性的影响。2006年上半年: 使用LOC (lines of code)度量软件规模的优点是 (9) 。(9)A.容易计算B.与使用的编程语言相关 C.与使用的开发模型有关 D.在设计之前就可以计算出LOC软件项目开发成本的估算依据,通常是开发成本估算模型,常用的模型有:IBM模型Putnam模型基本COCOMO模型中级COCOMO模型高级OCOMO模型其中(18)都

26、是静态单变量模型。(18)A B. C. D. 7.3风险管理7.3.1 风险的定义1.关心未来:风险是否会导致软件项目失败?2.关心变化:在用户需求、开发技术、目标机器,以及所有其他与项目及时工作和全面完成有关的实体中会发生什么样的变化?3.关心选择:应采用什么方法和工具,应配置多少人力,在质量上强调到什么程度才能满足要求?7.3.2 风险的类型1.项目风险:指潜在的预算、进度、人力(工作人员及组织)、资源、客户和需求等方面的问题以及它们对软件项目的影响。例如:项目复杂性、规模和结构不确定性等都是项目风险、项目风险威胁到项目计划,即如果项目风险变成现实,有可能会拖延项目的进度,增加项目的成本

27、。2.技术风险:指潜在的设计、实现、接口、验证和维护等方面的问题。此外,规约的二义性、技术的不正确性,陈旧的技术和“先进的”技术也是技术风险因素。技术风险威胁到开发软件的质量及软件交付时间,如果技术风险比恩成现实,则开发工作可能变得很困难或根本不可能。3.商业风险:在信息系统项目中,商业风险威胁到要开发系统的生存能力。一般主要有5类商业风险:l 市场风险:开发了一个没有人真正需要的优秀产品或系统l 策略风险:开发的产品不再符合公司的整体商业策略l 销售风险:开发了一个销售部门不知道如何去卖的产品l 管理风险:由于重点的转移或人员的变动而失去了高级管理层的支持l 预算风险:没有得到预算或人力上的

28、保证7.3.3 风险管理活动1.风险识别:找的哦啊潜风险并将其文档化,它包括项目风险、技术风险和商业风险三种2.风险评估:可分为定量评估和定性评估。通过对各种风险发生的可能性和破坏性这两个方面进行评估,并将它们按优先级别进行排列。在进行软件工程分析时,项目管理人员要进行四种风险评估活动,包括建立表示风险概率的尺度,面熟风险引起的后果,估计风险影响的大小,确定风险估计的正确性3.风险驾驭:利用某种技术,如原型化、软件自动化、软件心理学、可靠性工程学等方法设法避开风险。 统称可以把风险应对策略分为两种类型:防范策略和相应策略(1)风险防范策略l 规避策略:想方设法阻止风险的发生或消除风险发生的危害

29、。避免策略如果成功则可以消除风险对项目的影响。例如:针对技术风险可以采取聘请技术专家、针对项目进度风险可以采取延长项目时间或缩减项目范围的办法。l 减轻策略:当风险很难避免或转移时,可以考虑采取减轻策略来降低风险发生的概率或减轻风险带来的损失。风险是一种不确定因素,可以通过前期的一些工作来降低风险发生的可能性;或者也可以通过一些准备来降低风险发生的损失。例如对于需求风险,如果认为需求变化可能很剧烈,那么可以考虑采用柔性设计的方法降低需求变更的代价。尤其对于IT项目而言,越早发现问题越容易解决,例如对于需求风险带来的问题,在设计阶段发现要好过编码阶段发现。针对这些特点,也可以采用尽早暴露风险的方

30、法降低发生风险的损失。(2)制定风险相应策略注意,虽然我们采用了很多方法防范风险的发生,但风险本身就是一种不确定因素,不可能在项目中完全消除。我们还需要制定一些风险发生后的应急措施来解决风险带来的问题。例如:对于系统性能的风险,由于不清楚目前的系统是否能够满足用户的需求,可能在系统发布后出现系统性能不足的问题。对于这个风险,我们可以定义其风险响应策略为增加硬件资源以提高系统性能。 风险响应策略与风险防范策略不同,无论风险是否发生,风险防范策略都需要体现在项目技术中,在项目过程中需求有人来执行对应的方法策略;而风险响应策略是在事件触发的,直到当风险发生后才会被执行,如果始终没有发生风险,则始终不

31、会被安排到项目活动中。7.3.3 风险曝光度风险曝光度(risk exposure)=风险损失*风险概率例如:正在开发的软件项目可能存在一个未将发现的错误,这个错误出现的概率是0.5%,给公司造成的损失将是100万元,那么这个错误的风险曝光度是5000元。八模块化基本知识模块是指执行某一特定任务的数据和可执行语句程序元素的集合,通常是指可通过名字来访问的过程、函数、子程序或宏调用等。模块化就是将一个待开发的软件划分成若干个可完成某一子功能的模块,每个模块可独立地开发、测试,最后组装成完整的程序。 8.1模块特性8.1.1 可分解性如果一种设计方法提供了将问题分解成子问题的系统化机制,它就能降低

32、整个系统的复杂性,从而实现一种有效的模块化解决方案。8.1.2 可组装性如果一种设计方法使现存的(可复用的)设计构件能被组装成新系统,它就能提供一种不需要一切从头开始的模块化解决方案。8.1.3 可理解性如果一个模块可以作为一个独立的单位(不用参考其他模块)被理解,那么它就易于构造和修改。8.1.4 连续性如果对系统需求的微小修改只导致对单个模块,而不是整个系统的修改,则修改引起副作用就会被最小化。8.1.5 保护性如果模块内部出现异常情况,并且它的影响限制在模块内部,不会影响其他模块,则错误引起的副作用就会被最小化。注意“连续性”和“保护性”的区别!8.2 模块与模块的耦合性(7种)耦合是对

33、一个软件结构内不同模块之间互连程度的度量。耦合可以分成下列几种,它们之间的耦合度由高到低排列。8.2.1 内容耦合直接操作或修改另一模块的数据,或不通过正常入口转入另一个模块。软件设计时应坚决禁止内容耦合,应设计成单入口、单出口的模块,避免病态连接。8.2.2 公共耦合多个模块引用同一全局数据区。例如,C语言中的external数据类型、磁盘文件等都是全局数据区。8.2.3 外部耦合模块与软件以外的环境有关联。例如,输入输出把一个模块与特定的设备、格式、通信协议耦合在一起。8.2.4 控制耦合一模块明显把开关量、名字等信息送入另一模块,控制另一模块的功能。8.2.5 标记耦合两个模块之间通过传

34、递公共指针或地址相互作用的耦合。8.2.6 数据耦合模块间通过传递数据交换信息。8.2.7 非直接耦合(无耦合)模块间无任何关系,独立工作原则上讲,模块化设计总是希望模块之间的耦合表现为非直接耦合方式。在以上耦合中,耦合度从高到低,内容耦合度最高,非直接耦合度最低。总结:内公不好,家外被控了,标志数年心血白非了!(内功不好,家外被控了,标志数年心血白费了!)8.3 模块的内聚性内聚是指一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部的概念的自然扩展。设计时应该力求高内聚,理想内聚的模块应当恰好做一件事情。1)偶然内聚:一个模块的各成分之间毫无关系。比如:一组语句在程序的多处出现,为了节

35、省内存空间,这些语句放在一个模块中,该模块的内聚是偶然内聚的。 2)逻辑内聚:把几种逻辑上相关的功能组放在同一模块中。 3)瞬时内聚(时间内聚):一个模块所包含的任务必须在同一时间间隔内执行,例如初始化模块。 4)过程内聚:一个模块的处理元素是相关的,而且必须按特定的次序执行。 5)通信内聚:一个模块的所有成分都结合在同一个数据结构上。 6)顺序内聚:模块的成分同一个功能密切相关,且输出,作为另外一个成分的输入。 7)功能内聚:模块内的所有成分属于一个整体,完成单一的功能。 在以上的内聚中,内聚度从低到高,偶然内聚度最低,功能内聚度最高。 模块的高内聚、低耦合的原则称为模块独立原则,也称为模块

36、设计的原则。 巧记:偶然逻辑混乱,瞬间遗忘过程,打电话(通信)询问,顺序清楚,功能也搞定!8.4 模块的深度、宽度、扇出与扇入l 深度:表示软件结构中控制的层数。l 宽度是软件结构中同一个层次上的模块总数的最大值l 一个模块的扇入是指直接调用该模块的上级模块的个数。设计原则:低扇出、高扇入。8.5 模块作用域和控制域软件设计时,模块的作用域应在控制域之内。8.6 模块化基础知识小结l 通过模块的合并和分解,降低模块的耦合度。l 模块的扇入应尽量大,扇出应尽量小。一个模块的扇入是指直接调用该模块的上级模块的个数。一个模块的扇出是指该模块直接调用的下级模块的个数。扇入大表示模块的重用性高,利用率高

37、。扇出大表示模块的复杂度高。所以要高扇入,低扇出。l 要将模块的作用范围限制在模块的控制范围之内。l 降低模块之间的复杂性,避免“病态连接”。2006年上半年: 模块的耦合度描述了 (16) 。(16)A模块内各种元素结合的程度B模块内多个功能之间的接口 C模块之间公共数据的数量D模块之间相互关联的程度 内聚是一种指标,表示一个模块 (17) 。(17)A代码优化的程度 B代码功能的集中程度C完成任务时及时程度D为了与其他模块连接所要完成的工作量九什么是软件开发方法?有哪些主要方法?l 软件开发方法:使用已定义好的技术集及符号表示习惯组织软件生产的过程。l 结构化方法、面向对象方法、JACKS

38、ON方法、维也纳开发方法(VDM)等。9.1 结构化方法学结构化方法学也称为生命周期方法学(瀑布模型方法),是一种面向数据流的需求分析方法。它的基本思想是自顶向下逐层分解。 为了在需求改变时对软件的影响较小,结构化分析时应该使程序结构与问题结构相对应。 常用工具:数据流图(DFD)、数据字典(DD)、实例关系图(E-R图)及描述加工处理的结构化语言、判定表、判定树。9.1.1数据流图(DFD图)l DFD的基本成分数据流图主要由4种成分组成,如下表所示:数据流(data flow):由一组固定成分的数据组成,表示数据的流向。它可以从源、文件流向加工,也可以从加工流向文件和宿,还可以从一个加工流

39、向另一个加工。通常每个数据流必须有一个合适的名字,一方面是为了区别,另一方面也给人一个直观的印象,使人容易理解这个数据流的含义。但流向文件或从文件流出的数据流不必命名,因为这种数据流的组成部分就是相应文件的组成部分。加工(process):描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流。每个加工有一个名字和一个编号。编号反映了该加工位于分层DFD的哪个层次和哪张图中以及它是哪个加工分解出来的子加工。文件(file):可以表示数据文件,也可以表示一个数据记录。流向文件的数据流表示写文件,流出文件的数据流表示读文件,双向箭头表示对文件既读又写。每个文件都有一

40、个文件名。源/宿(source/sink):源是指系统所需数据的发源地,宿(也称数据池)是指系统所产生的数据的归宿地。无论源或宿,均对应于外部实体,在框内应加注实体的名字,在一个软件各级软件系统中,有些源和宿可以是一个外部实体,外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地和系统所产生数据的归宿地。l 分层数据流图一套分层的的数据流图由顶层、底层、和中间层组成。画分层数据流图基本原则与注意事项a.自外向内,自顶向下,逐层细化,完善求精。b.保持父图与子图的平衡。也就是说,父图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和意义上相同。c.保持数据守恒。也就

41、是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。c.加工细节隐藏。根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节。d.简化加工间关系。在数据流图中,加工间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目。e.均匀分解。应该使一个数据流中的各个加工分解层次大致相同。f.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字。g.忽略枝节。应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性问题。h.表现的是数据流而不是控制流。i.每个加

42、工必须既有输入数据流,又有输出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读。小结:一个软件系统,其数据流图往往有多层。如果父图有N个加工(Process),则父图允许有0N张子图,但是每张子图只能对应一张父图。在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同。DFD信息流大致可分为两类:交换流和事务流。2006年上半年:在绘制数据流图时,要遵循的一个原则是父图与子图的平衡,所谓平衡是指

43、_(31)_。(31)A父图和子图都不得改变数据流的性质 B子图不改变父图数据流的致性C父图的输入/输出数据流与子图的输入/输出数据流一致D子图的输出数据流完全由父图的输入数据流确定 9.1.2 数据字典 数据字典是关于数据的信息的集合也就是对数据流图中包含的所有元素的定义的集合。 组成部分: a.数据项条目 b.数据流条目 c.文件条目 d.加工条目加工条目是对数据流图中每一个不能再分解的基本加工的精确说明。 对于加工的描述是数据字典的组成内容之一,常用的加工描述方法有结构化语言、判定树和判定表。9.1.3 结构化语言结构化语言实际上是一种半形式化语言,它的结构通常可分为内外两层。外层接近于

44、形式化语言,而内层近似于自然语言的描述。9.1.4 实体-关系图(E-R图)实体-关系图(Entity-Relabionship Diagram),简称E-R图,包含实体、关系和属性等3种基本成分。通常用矩形框代表实体,并用直线把实体(或关系)与其属性连接起来。E-R图通常用于数据库应用系统。9.2 结构化设计 结构化设计通常可分为概要设计和详细设计,但是主要用于概要设计阶段。概要设计的任务是确定软件系统的结构,进行模块划分,确定每个模块的功能、接口以及模块间的调用关系。详细设计的任务是为每个模块设计实现的细节。9.2.1 概要设计 经过需求分析阶段的工作,系统必须“做什么”已经清楚了,概要设

45、计的基本目的就是回答“概括地说,系统应该如实现?”这个问题。概要设计的重要任务: 将一个复杂的系统按功能化分为模块、确定每个模块的功能、确定模块之间的调用关系、确定模块之间的接口(模块之间传递的信息)、评价模块的结构质量。1.软件结构图形工具 结构化设计方法(SD)方法采用结构图(Structure Chart)、层次图和HIPO图描述软件结构。 结构图的主要成分有模块、调用和数据,结构图中的模块用矩形表示,在矩形框内可标上模块的名字。模块间如有箭头或直线相连,表明它们之间有调用关系。层次图用来描绘软件的层次结构.层次图中一个矩形框代表一个模块,方框间的连线表示模块间的调用关系. HIPO图实际上就是层次图加输入/处理/输出图. HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”,是在层次图里出了最顶层的方框之外,每个方框都加了编号。编号规则和数据流图的编号规则一样。 2.

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号