《2022年安徽大学软件工程导论期末复习考点试卷汇总 .pdf》由会员分享,可在线阅读,更多相关《2022年安徽大学软件工程导论期末复习考点试卷汇总 .pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 1 章软件工程概述1、什么是软件工程?为什么会出现软件工程?软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;研究中提到的途径。软件工作者在20 世纪 60 年代后期开始认真研究消除软件危机的途径,从而逐渐形成了一门新兴的工程学科计算机软件工程学(通常简称为软件工程)。2、什么是软件工程方法学?软件工程的3 要素(软件工程方法学的3 要素)是什么?分别包含什么内容?软件工程方法学:软件生命周期全过程中使用的一整套技术方法的集合软件工程方法学包含3 个要素:方法、工具和过程。方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为
2、运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。3、什么是软件过程?什么是软件周期?常见软件生命周期模型(课件中的前5 类)的特点有哪些?软件过程:它是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件生命周期:由软件定义、软件开发和运行维护(也称之为软件维护)3 个时期组成瀑布模型定义:传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。瀑布模型的特点:1.阶段间具有顺序性和依赖性;2.推迟实现的
3、观点;3.质量保证的观点。瀑布模型的成功在很大程序上是由于它基本上是一种文档驱动的模型。瀑布模型的主要优点:a.可强迫开发人员采用规范的技术方法;b.严格地规定了每个阶段必须提交的文档;c.每个阶段结束前必须正式进行严格的技术审查和管理复审。瀑布模型的主要缺点:在可运行的软件产品交付给用户之前,用户只能通过文档来了解未来的产品是什么样的。开发人员和用户之间缺乏有效的沟通,很可能导致最终开发出的软件产品不能真正满足用户的需求。快速原型模型定义:所谓“快速原型”,是快速建立起来的、可在计算机上运行的程序,它所能完成的功能往往是最终的软件产品所能完成的功能的子集。原型是软件开发人员与用户沟通的强有力
4、工具,因此有助于所开发出的软件产品满足用户的真实需求。快速原型模型的主要优点是:A使用这种软件过程开发出的软件产品通常能满足用户的真实需求;B软件产品的开发过程基本上是线性顺序过程。增量模型定义:增量模型也称为渐增模型增量模型的主要优点:A能在较短时间内向用户提交可完成部分工作的产品;B逐步增加产品功能,从而使用户有较充裕的时间学习和适应新产品,减少一个全新的软件给客户组织带来的冲击。螺旋模型定义:螺旋模型的基本思想是,使用原型及其他方法尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。螺旋模型所描述的软件过程主要适用于内部开发的大型软件项目
5、。使用螺旋模型开发软件,要求软件开发人员具有丰富的风险评估知识和经验。螺旋模型主要有下述优点:A有利于已有软件的重用;B有助于把软件质量作为软件开发的一个重要目标;C减少了过多测试或测试不足所带来的风险;D软件维护与软件开发没有本质区别。喷泉模型定义:迭代是软件开发过程中普遍存在的一种内在属性。在面向对象范型中,软件开发过程各阶段之间的迭名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 17 页 -代或同一阶段内各个工作步骤之间的迭代,比在结构化范型中更常见。喷泉模型,是典型的面向对象生命周期模型,它充分体现了面向对象软件开发过程迭代和平滑过渡的特性。5、1.软件生命周期概念软件产
6、品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。软件生命周期分为3 个时期共 8 个阶段,软件定义期:包括问题定义、可行性研究和需求分析3 个阶段;软件开发期:包括概要设计、详细设计、实现和测试4 个阶段;运行维护期:即运行维护阶段。表 3-3 软件生命周期各阶段的主要任务任务描述问题定义确定要求解决的问题是什么可行性研究与计划制定决定该问题是否存在一个可行的解决办法,指定完成开发任务的实施计划需求分析对待开发软件提出需求进行分析并给出详细定义。编写软件规格说明书及初步的用户手册,提交评审软件设计通常又分为概要设计和详细设计两个阶段,给出软件的结构、模块的划分、功能的分配以及处理
7、流程。这阶段提交评审的文档有概要设计说明书、详细设计说明书和测试计划初稿软件实现在软件设计的基础上编写程序。这阶段完成的文档有用户手册、操作手册等面向用户的文档,以及为下一步作准备而编写的单元测试计划软件测试在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告运行维护将已交付的软件投入运行,同时不断的维护,进行必要而且可行的扩充和删改第 2 章可行性研究1、可行性研究包括哪几方面(每方面解决什么问题),研究得到的文档和结论是什么?技术可靠性:使用现有的技术能否实现这个系统吗?经济可行性:这个系统的经济效益能否超过它的开发成本?操作可行性:系统的操作方式在这个用户组织内是否行得通?研
8、究的结果:是一份可行性研究的各个步骤的工作结果的文档,它包含了工程是否能继续进行下去和分析员的推荐方案;2、主要描述工具的概念和使用:系统流程图:是什么,成份和基本符号,描述什么模型,画法;数据流图:是什么,成份和基本符号,系统级和功能级、简单细化数据流图的区别,画法;数据字典:是什么,内容、定义数据的方法。(1)系统流程图的定义:是概括地描绘物理系统的传统工具。它用图形符号以黑盒子形式描绘组成系统的每个部件。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,是物理数据流图而不是程序流程图。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 17
9、页 -系统流程图的基本符号:(2)数据流图的定义:它是一种图形化技术,它描述信息和数据从输入移动到输出过程中所经历的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。数据流图的基本符号:正方形(或立方体)表示数据的源点或终点;圆角矩形(或圆形)代表变换数据的处理;开口矩形(或两条平行横线)代表数据存储;箭头线表示数据流,即特定数据的流动方向。(3)数据字典的定义:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。数据字典的内容:数据流、数据流分量、数据存储、处理定义
10、数据的方法:用被定义的事物的成分的某种组合表示这个事物,这些组成成分又由更低的成分组合来定义。3、数据字典和数据流图的关系。数据流图和数据字典共同构成系统的逻辑模型。没有数据字典,数据流图就不严格,然而没有数据流图,数据字典也难于发挥作用。只有数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。第 3 章需求分析需求规格说明书1、需求分析的任务是什么?分析得到的成果(文档)是什么?包含哪些内容?1、需求分析的任务:(1)确定对系统的综合要求:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求(2)分析系统的数据要求:(3
11、)导出系统的逻辑模型(4)修正系统开发计划;2、需求分析得到的结果:是通过需求分析得到的除了分析模型之外,还应该写出软件需求规格说明书,它是需求分析阶段得出的最主要的文档。2、软件需求通常包括哪些方面?各类需求一般包含内容有哪些?(1)功能需求:这方面的需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。(2)性能需求:性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的需求。(3)可靠性和可用性需求:可靠性需求定量地指定系统的可靠性。可用性与可靠性密切相关,它量化了用户可以使用系统的程度。(4)出错处理需
12、求:这类需求说明系统对环境错误应该怎样响应。(5)接口需求:接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 17 页 -(6)约束:设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条件。(7)逆向需求:逆向需求说明软件系统不应该做什么。(8)将来可能提出的要求:应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做的目的是,在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种扩充和修改。3、
13、追加的主要描述工具的概念和使用:E-R 图:是什么,成份和基本符号,描述什么模型;状态转换图:是什么,描述什么模型(1)E-R 图的定义:即实体-联系图,是表示数据对象及其之间关系的图形语言机制,是建立数据模型的图形工具。E-R 图的基本成份和使用的符号:实体(即数据对象)-矩形框,关系-菱形框,属性-椭圆形或圆角矩形。E-R 图描述的模型:用来建立数据模型,ER 模型使用简单的图形符号表达系统分析员对问题域的理解(2)状态转换图的定义:通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。状态转换图的基本成份和使用的符号:基本成分是状态、事件、状态转换。状态转换图描述的模型:用来建立
14、系统的行为模型。4、在结构化分析中,建模的核心是什么?3 种模型分别是什么,分别用什么工具来描述?建模的核心是数据字典,它描述了所有的在目标系统中使用的和生成的数据对象。(1)、数据模型,用实体-联系图描述;(2)、功能模型,用数据流图描述;(3)、行为模型,用状态转换图描述。第 5 章总体设计1、什么是总体设计?将软件需求转化为软件的数据结构和系统结构,确定各组成成分(子系统或模块)之间的相互关系2、模块化设计的原理包括什么?为了提高软件的可维护性,其中,模块独立性最重要的,是评价软件结构质量的首要标准。模块化设计的原理包括:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立。为了提高软件的
15、可维护性,其中,模块独立性最重要的,是评价软件结构质量的首要标准。3、模块独立性度量(描述)的两个指标:内聚、耦合;什么是内聚,什么是耦合;耦合和内聚的具体分类及使用原则;在面向数据流的方法中,内聚、耦合各分为哪几级,每级的具体含义分别是什么?强度从弱到强如何排列?耦合和内聚两者关系?(1)耦合定义:它是对一个软件结构内不同模块之间互连程度的度量;耦合分类:耦合使用原则:尽量使用数据耦合,小用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合,最终降低模块间接口的复杂性。(2)内聚定义:它标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。名师资料总结-精
16、品资料欢迎下载-名师精心整理-第 4 页,共 17 页 -内聚分类:内聚使用原则:设计时力求高内聚,设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。(3)耦合和内聚两者关系:耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。其中内聚更重要。内聚与耦合密切相关。同其它模块强耦合的模块意味着它自己是弱内聚的;强内聚模块意味着与其它模块间松散耦合。所以设计的目标应该是力争高内聚、低耦合。第 6 章详细设计1 结构化程序设计1 结构化程序设计的原则结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用g
17、oto语句。2 结构化程序的基本结构与特点1.顺序结构2.选择结构:选择结构又称为分支结构。3.重复结构:重复结构又称为循环结构。2、什么是过程设计的工具?分类?基本要求?过程设计工具的定义:描述程序处理过程的工具过程设计工具的分类:它们可以分为图形、表格、和语言3 类。过程设计工具的基本要求:不论是哪类工具,对它们的基本要求都是能提供对设计的无歧义的描述。3、软件详细设计描述工具的概念和使用:程序流程图、N-S 图、PAD 图、PDL 语言:是什么,基本符号和表示的意义,画法;各种工具描述结果间的转换。(1)程序流程图的定义:又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法,然
18、而它也是用得最混乱的一种方法。程序流程图的基本符号:(2)盒图(N-S 图)的定义:出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi 和 Shneiderman名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 17 页 -提出了盒图。它有下述特点:(1)功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。(2)没有箭头,不可能任意转移控制。(3)很容易确定局部和全程数据的作用域。(4)很容易表现嵌套关系,也可以表示模块的层次结构。盒图(N-S 图)的基本符号:(a)顺序;(b)IF_THEB_ELSE型分支;(c)CASE型多分支;(d)循环;(
19、e)调用子程序(3)PAD(问题分析图)的定义:1973年由日本日立公司发明。它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。PAD(问题分析图)的基本符号:(a)顺序;(b)选择(IF C THEN P1 ELSE P2);(c)CASE型多分支;(d)WHILE型循环(WHILE C DO P);(e)UNTIL型循环(REPEAT P UNTIL C);(f)语句标号;(g)定义(3)过程设计语言(PDL)的定义:也称为伪码,PDL 是一种“混杂”语言,它使用一种语言的词汇,同时却使用另一种语言(某种结构化的程序设计语言)的语法。名师资料总结-精品资料欢迎下载-名
20、师精心整理-第 6 页,共 17 页 -过程设计语言(PDL)的举例:第 7 章实现1、软件测试的目的是什么?软件测试方法的种类?为了发现程序中的错误而执行程序的过程,测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。2、软件测试与软件开发阶段的关系?软件开发过程是一个自顶向下、逐步细化的过程,而测试则是依相反的顺序安排的,自底向上、逐步集成的过程。低一级为上一级测试准备条件。3、软件测试的步骤,过程。模块测试-单元、子系统测试-局部、系统测试-全局、验收测试-用户参与、平行运行-新旧共存4、软件测试的三大阶段:单元测试、集成测试(组装测试)、确
21、认测试(验收测试)的主要任务(目的)是什么?测试的内容主要有哪些?测试计划分别在什么时候制定?测试计划的内容有哪些?模块测试(单元测试)目的:是保证每个模块作为一个单元能正确运行。在编写出源程序代码并通过了编译程序的语法检查之后,就可以用详细设计描述作指南,对重要的执行通路进行测试,以便发现模块内部的错误。内容:1.模块接口测试-检测数据能否正确无误地进入和流出模块2.路径测试3.出错处理测试-测试程序中包含的出错处理是否有效4.边界条件测试-检测在数据边界处,模块能否正常工作单元测试计划的时间:在详细设计结束时制定,主要使用白盒测试技术集成测试名师资料总结-精品资料欢迎下载-名师精心整理-第
22、 7 页,共 17 页 -任务:在单元测试的基础上,需要将所有模块按照设计要求组装成为系统,发现并排除在模块连接的接口中可能出现的问题,最终构成所要求的软件系统。内容:(1)把各个模块连接起来后,考察穿越模块接口的数据是否会丢失或产生错误(2)各个子功能组合起来,能否达到预期要求的主要功能(3)一个模块的功能是否会对另一个模块的功能产生不利的影响(4)全局数据结构是否有错误(5)单个模块的误差累积起来,是否会被放大,从而达到不能被接受的程度集成测试计划的时间:在总体设计结束时制定,详细设计结束时补充确认测试目的:也称为称验收测试。它的主要目标是验证软件的有效性。证实软件功能与用户需求是否一致,
23、即测试软件能否按照软件需求规格说明书(合同)的要求运行。内容:有效性测试、软件配置复查、验收测试确认测试计划的时间:在需求分析时制定,后续阶段补充,通过黑盒测试技术。5、什么是白盒测试?典型的白盒测试技术有哪几个,含义如何?简单的逻辑覆盖测试用例设计。白盒测试的定义:也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。应用时间:白盒测试在测试过程的早期阶段进行白盒测试技术:1、逻辑覆盖:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖;2、
24、控制结构测试:基本路径测试、条件测试、循环测试。逻辑覆盖测试的5 种标准发现错误的能力标准含义1(弱)语句覆盖每条语句至少执行一次 A=2,B=0,X=4 2 判定覆盖每一判定的每个分支至少执行一次 A=3,B=0,X=3 A=2,B=1,X=1 3 条件覆盖每一判定中的每个条件,分别按“真”、“假”至少各执行一次A=2,B=0,X=4 A=1,B=1,X=1 4 判定/条件覆盖同时满足判定覆盖和条件覆盖的要求A=2,B=0,X=4 A=1,B=1,X=1 5(强)条件组合覆盖求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次条件覆盖不一定包含判定覆盖;判定覆盖也不一定包含条件
25、覆盖。条件组合覆盖是前述几种覆盖标准中最强的。但是,满足条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。例子:名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 17 页 -第 8 章维护1、什么是软件维护、维护分哪四种类型、其含义分别是什么、在维护工作中占得比例如何?软件维护定义:就是在软件已经交付使用之后,为了改正错误或满足新的需要而修正软件的过程。维护分为四种类型:(1)改正性维护:把整断和改正错误的过程称为改正性维护(2)适应性维护:为了和变化的环境适当的配合而进行的修改软件的活动,(3)完善性维护:在使用软件的过程中用户常常提出新增功能或修改已有功能的建议,
26、为了满足这类要求的活动(4)预防性维护:为了改进将来的可维护性或可靠性;所占比例:完善性维护:50%66%改正性维护:17%21%适应性维护:18%25%其他维护:4%2、什么是软件的可维护性?决定软件可维护性的因素有哪些?造成软件难以维护的原因有哪些?软件的可维护性:是指软件维护人员理解、纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩软件的难易程度决定软件可维护性的五个因素:(1)可理解性(2)可测试性(3)可修改性(4)可移植性(5)可重用性难以维护的原因:在于这些软件的文档不全、质量差、开发过程不注意采用好的方法,忽视程序设计风格等。难以维护的根本原因:软件定义和软
27、件开发的方法有缺点,在软件生命周期的头两个时期没有严格而又科学的管理和规划,没有采用软件工程思想开发软件。3、文档和可维护性之间的关系?文档是影响软件可维护性的决定因素,文档往往比代码更加重要;软件系统的文档可以分为用户文档和系统文档两类.软件系统的文档可以分为用户文档和系统文档两类.用户文档主要描述系统功能和使用方法,并不关心这些功能是怎样实现的;系统文档描述系统发设计,实现和测试等各方面的内容 8.4.2 文档分类用户文档:主要描述系统功能和使用方法,并不关心这些功能是怎样实现的系统文档:描述系统设计、实现和测试等各方面的内容文档要求必须描述如何使用这个系统,没有这种描述时即使是最简单的系
28、统也无法使用;必须描述怎样安装和管理这个系统;必须描述系统需求和设计;必须描述系统的实现和测试,以便使系统成为可维护的用户文档功能描述,说明系统能做什么;安装文档,说明怎样安装这个系统以及怎样使系统适应特定的硬件配置;使用手册,简要说明如何着手使用这个系统(应该通过丰富例子说明怎样使用常用的系统功能,还应该说明用户操作错误时怎样恢复和重新启动);参考手册,详尽描述用户可以使用的所有系统设施以及它们的使用方法,还应该解释系统可能产生的各种出错信息的含义(对参考手册最主要的要求是完整,因此通常使用形式化的描述技术);操作员指南(如果需要有系统操作员的话),说明操作员应该如何处理使用中出现的各种情况
29、。8.4.2 文档系统文档问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文档4、衡量软件质量的主要指标?可维护性、可使用性、可靠性是衡量软件质量的主要指标9.面向对象的概念9.2.1 对象名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 17 页 -是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象对象可以是事、物、或抽象概念,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。对象的特点(1)以数据为中心。(2)对象是主动的。(3)实现了数据封装。(4)本质上具有并行性。(5)模块独立性好。9.2.2 类类又称对象类(Object Class),
30、是一组具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance),它们都可以使用类中提供的函数。9.2.3 实例实例就是由某个特定的类所描述的一个具体的对象。类是对具有相同属性和行为的一组相似的对象的抽象,类在现实世界中并不能真正存在。9.2.4 消息消息就是向对象发出的服务请求(互相联系、协同工作等)。一个消息包含3 个部分:接收消息的对象,消息名,消息变元。例如,MyCircle 是 Circle 类的一个实例,发送消息如下:MyCircle.show(GREEN);9.2.5 方法方法就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算
31、法,响应消息的方法。在C+语言中把方法称为成员函数。9.2.6 属性属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。9.2.7 封装对象封装了对象的数据以及对这些数据的操作。9.2.8 继承继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。单重继承:子类仅从一个父类继承属性和方法多重继承:子类可从多个父类继承属性和方法9.2.9 多态性在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。当对象接收到发送给它的消息时,根据该对象所属于的
32、类动态选用在该类中定义的实现算法有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。当然,当参数特征不同或被操作数的类型不同时,实现函数的算法或运算符的语义是不相同的。重载进一步提高了面向对象系统的灵活性和可读性。9.4.2 表示关系的符号类与类之间关系有:关联,聚集,泛化(继承),依赖,细化9.4.2.1 关联关联表示两个类的对象之间存在某种语义上的联系。(1)普通关联普通关联示例名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 17 页 -在表示关联的直线两端可以写上重数(multi
33、plicity),它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有:0,1 表示 0 到 1 个对象0,*或*表示 0 到多个对象1+或 1,*表示 1 到多个对象1,15 表示 1 到 15 个对象3 表示 3 个对象如果图中未明确标出关联的重数,则默认重数是1。(2)关联的角色在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用),在某些情况下显式标明角色名有助于别人理解类图。如果没有显式标出角色名,则意味着用类名作为角色名。(3)限定关联限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。在类图中把限定词放在
34、关联关系末端的一个小方框内。(4)关联类为了说明关联的性质可能需要一些附加信息。可以引入一个关联类来记录这些信息。关联中的每个连接与关联类的一个对象相联系。关联类通过一条虚线与关联连接。9.4.2.2 聚集聚集是一种特殊的关联,它指出类间的“整体-部分”关系。(1)共享聚集如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。(2)组合聚集如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失,则该聚集称为组合聚集。9.4.2.3 泛化?UML中的泛化关系就是通常所说的继承关系。(1)普通泛化2)受限泛化可以给泛化关系附加约束条件,以进一步
35、说明该泛化关系的使用方法或扩充方法,这样的泛化关系称为受限泛化。预定义的约束有4 种:多重、不相交、完全和不完全。下图:多重继承9.4.2.3 泛化(III)完全继承指的是父类的所有子类都已在类图中穷举出来了,图示符号是指定完全 约束。不完全继承与完全继承恰好相反,父类的子类并没有都穷举出来,不完全继承是一般情况下默认的继承关系9.4.2.4 依赖依赖关系表示:其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。9.4.2.5 细化当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。假设两个模型元素A和 B
36、描述同一个事物,它们的区别是抽象层次不同,如果B 是在 A的基础上的更详细的描述,则称B 细化了 A,或称 A细化成了 B。9.3 面向对象开发软件,需要建立3 种形式的模型。对象模型。描述系统数据结构数据结构。动态模型。描述系统控制结构执行操作。功能模型。描述系统功能数值变化。这三种模型从不同侧面描述了对系统的需求。在面向对象的分析(OOA)阶段,这三种模型是必不可少的。名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 17 页 -9.4 对象模型对象模型描述了系统的静态结构。OO方法强调围绕对象而不是功能来构造系统。使用统一建模语言UML(Unified Modeling L
37、anguage)提供的类图来建立对象模型。UML用例图是建立功能模型的有力工具。动态模型描述系统控制结构。通常用状态图表示。功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,通常,功能模型由一组数据流图组成。UML提供的用例图也是进行需求分析和建立功能模型的强有力工具。对象模型动态模型功能模型对象的静态结构及相互关系与时间和顺序有关的系统性质与值的变化有关的系统性质描述系统的数据结构控制结构系统的功能“干事的主体”“什么时候干”“干什么”下降状态在第一层上升状态向第一层下降空闲状态上升到达到达上升超时下降到达第一层名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共
38、17 页 -安徽大学 2008 2009 学年第1 学期软件工程考试试卷(A 卷)(时间 120 分钟)院/系专业姓名学号题号一二三四总分得分一、单选题(每小题 2 分,共 20 分)1()软件工程的三要素是过程、工具。A.文档 B.代码 C.数据 D.方法2.()修改一个已有的库存清单系统,使它能在每天送给采购员一份定货报表。修改已有的库存清单并且编写产生报表的程序,估计共需3000 元;系统修改后,能及时定货将消除零件短缺影响生产的问题,估计因此每年可以节省2500 元,假设年利率为12%,软件的生存周期是2 年,开发该软件的纯收入是多少?A.2232.14 B.1225.12 C.300
39、0 D.2000 3()一个程序向另一个子程序传递姓名、住址、电话号码、生日和身份证号码等五个变量。它们之间的耦合属于A.标记耦合 B.控制耦合C.数据耦合 D.公共耦合4.()可行性研究主要从以下几个方面进行研究:A.技术可行性,经济可行性,操作可行性。B.技术可行性,经济可行性,系统可行性。C.经济可行性,系统可行性,操作可行性。D.经济可行性,系统可行性,时间可行性。5.()CMM 提供了一个框架,将软件过程改进的进化步骤组织成5 个成熟度等级。除第1 级外,每个等级都包含了实现该成熟度等级目标的若干A.关键实践 B.关键过程域 C.软件过程能力 D.软件过程6()“国家中国”之间的关系
40、属于A 继承 B 关联 C 聚合D 类实例7.()面向对象分析是对系统进行的一种方法。A 需求建模B 程序设计 C 设计评审 D 测试验收8.()得分名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 17 页 -结构化分析方法中,数据流程图属于A 对象模型B 功能模型 C 行为模型 D 数据模型9.()Jackson 图属于阶段使用到的图形工具。A 需求分析 B 概要设计 C 详细设计 D 软件实现10()耦合是对软件不同模块之间互连程度的度量。各种耦合按从强到弱排列如下:A.内容耦合,控制耦合,数据耦合,公共环境耦合。B.内容耦合,控制耦合,公共环境耦合,数据耦合。C.内容耦合
41、,公共环境耦合,控制耦合,数据耦合。D.控制耦合,内容耦合,数据耦合,公共环境耦合。二、简答题(每小题 6 分,共 30 分)1.什么是软件危机?软件危机包含哪几方面的问题?指,计算机在开发和维护方面遇到的一系列严峻问题。1.对软件开发成本和进度的估计常常很不准确2.用户对已完成的软件系统不满意3.软件产品质量靠不住4.软件常常不可维护的5.软件通常没有合适的文档资料6.软件成本在计算机系统总成本中比例不断上升7.软件开发速度跟不上计算机应用速度2.面向对象开发方法一般使用哪3 种模型?分别描述系统的那些方面?(6 分)1.功能模型表示了变化的系统的功能 性质,指明了系统一概做什么,因此更直接
42、地反映了用户对目标系统的需求2.对象模型描述了显示世界中的类与对象以及他们之间的关系,表示了目标系统的静态数据结构。3.动态模型动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列3什么是控制耦合?举一个控制耦合的例子。(6 分)两个模块之间传递的数据夹杂着控制信息,则称为控制耦合。public int y;Public A(string x)得分名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 17 页 -if(x=”true”)y=1;Else y=0;Public void B()if(y=1)F();/F()是系统自定义的函数 Else
43、G();/G()是系统自定义的函数 模块 A&B 之间为控制耦合因为两个模块间传递的y 值是用作控制信号的开关量。改善方法就是把B 模块调用的函数直接写入A 模块中,然后删除B 模块。4.白盒测试的路径覆盖法与逻辑覆盖有何不同?(6 分)逻辑覆盖是逐渐进行越来越完整的通路测试路径覆盖是选取足够多的测试数据,使程序每条可能路径都执行一次。5 什么是信息隐蔽?信息隐蔽会带来那些好处?(6 分)应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据),对于不需要这些信息的模块来说是不能访问的。好处:大多数数据和过程对于软件的其他部分而言是隐藏的,在修改期间由于疏忽而引入的错误就很少可能传播到软
44、件的其他部分。三、应用题(共 20 分)1.(8 分)某校制定了教师的讲课课时津贴标准。对于各种性质的讲座,无论教师是什么职称,每课时津贴费一律是50 元;得分名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 17 页 -而对于一般的授课,则根据教师的职称来决定每课时津贴费:教授30 元,副教授25 元,讲师 20 元,助教 15 元。绘制判定表。略2(12 分)求解二次方程Ax2+Bx+C=0(1)输入:A,B,C 三个参数(2)根的信息:相等实根;不等实根;两个大小相等符号相反的实根;仅有一个实根;有两个虚根;(3)根的值用黑盒方法写出程序的测试用例。1.相等的实根:A=1;
45、C=1;B=4 2.不等实根;A=1;C=0;B=4;3.大小相等符号相反的实根:A=-1;B=0;C=1;4.仅有一个实根:A=0;B=1;C=1;5.有两个虚跟:A=4;B=4;C=2;四、设计题(30 分)1.(20 分)某考务处理系统有如下功能:对考生送来的报名单进行检查;对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站;对阅卷站送来的成绩清单进行检查,并根据考试中心制定的合格标准审定合格者;制作考生通知单(内含成绩及合格不合格标志)送给考生;得分名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 17 页 -请绘制数据流程图,给出相应的数据字典,并据此画出系统结构图。略2.(10 分)画出上述系统的对象图,并给出每个对象的属性。略名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 17 页 -