《软件工程导论复习.doc》由会员分享,可在线阅读,更多相关《软件工程导论复习.doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、考试题型一、选择(15*2)二、判断(15*1)三、测试及问答(9+6)四、综合 (2*20第1章 软件工程概述1、什么是软件工程?软件工程是: 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件; 研究中提到的途径。2、软件工程的主要目标是什么?基本目标是什么?软件工程的目标:从管理和技术两个方面开发和维护计算机软件,用低成本,开发出达标、高性能、易于移植、可靠性高的软件。软件工程的基本目标是:优质、高产。3、什么是软件工程方法学?软件工程的3要素(软件工程方法学的3要素)是什么?分别包含什么内容?软件工程方法学:软件生命周期全过程中使用的一整套技术方法的集
2、合软件工程方法学包含3个要素:方法、工具和过程。方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。4、什么是软件过程?什么是软件周期?常见软件生命周期模型(课件中的前5类)的特点有哪些?软件过程:它是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件生命周期:由软件定义、软件开发和运行维护(也称之为软件维护)3个时期组成瀑布模型定义:传统
3、软件工程方法学的软件过程,基本上可以用瀑布模型来描述。瀑布模型的特点:1.阶段间具有顺序性和依赖性;2.推迟实现的观点;3.质量保证的观点。瀑布模型的成功在很大程序上是由于它基本上是一种文档驱动的模型。瀑布模型的主要优点:a.可强迫开发人员采用规范的技术方法 ;b.严格地规定了每个阶段必须提交的文档 ;c.每个阶段结束前必须正式进行严格的技术审查和管理复审 。瀑布模型的主要缺点 :在可运行的软件产品交付给用户之前,用户只能通过文档来了解未来的产品是什么样的。开发人员和用户之间缺乏有效的沟通,很可能导致最终开发出的软件产品不能真正满足用户的需求 。快速原型模型定义:所谓“快速原型”, 是快速建立
4、起来的、可在计算机上运行的程序,它所能完成的功能往往是最终的软件产品所能完成的功能的子集。 原型是软件开发人员与用户沟通的强有力工具,因此有助于所开发出的软件产品满足用户的真实需求。快速原型模型的主要优点是:A使用这种软件过程开发出的软件产品通常能满足用户的真实需求;B软件产品的开发过程基本上是线性顺序过程。增量模型 定义:增量模型也称为渐增模型增量模型的主要优点:A能在较短时间内向用户提交可完成部分工作的产品 ;B逐步增加产品功能,从而使用户有较充裕的时间学习和适应新产品,减少一个全新的软件给客户组织带来的冲击 。螺旋模型定义:螺旋模型的基本思想是, 使用原型及其他方法尽量降低风险。理解这种
5、模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型 。螺旋模型所描述的软件过程主要适用于内部开发的大型软件项目 。使用螺旋模型开发软件,要求软件开发人员具有丰富的风险评估知识和经验 。螺旋模型主要有下述优点 :A有利于已有软件的重用 ;B有助于把软件质量作为软件开发的一个重要目标 ;C减少了过多测试或测试不足所带来的风险 ;D软件维护与软件开发没有本质区别 。喷泉模型定义:迭代是软件开发过程中普遍存在的一种内在属性。在面向对象范型中,软件开发过程各阶段之间的迭代或同一阶段内各个工作步骤之间的迭代,比在结构化范型中更常见。喷泉模型,是典型的面向对象生命周期模型,它充分
6、体现了面向对象软件开发过程迭代和平滑过渡的特性。5、在“快速原型”模型中软件原型的作用主要是什么?在哪类生命周期模型中引入了风险分析?哪类生命周期模型是典型的传统软件工程生命周期模型?哪类生命周期模型是典型的面向对象软件工程生命周期模型?在“快速原型”模型中软件原型的作用主要是:软件开发人员与用户沟通的强有力工具,因此有助于所开发出的软件产品满足用户的真实需求。螺旋模型中引入风险分析瀑布模型是典型的传统软件工程生命周期模型喷泉模型是典型的面向对象软件工程第2章 可行性研究1、可行性研究包括哪几方面(每方面解决什么问题),研究得到的文档和结论是什么?技术可靠性:使用现有的技术能否实现这个系统吗?
7、经济可行性:这个系统的经济效益能否超过它的开发成本?操作可行性:系统的操作方式在这个用户组织内是否行得通?研究的结果:是一份可行性研究的各个步骤的工作结果的文档,它包含了工程是否能继续进行下去和分析员的推荐方案;2、主要描述工具的概念和使用:数据流图:是什么,成份和基本符号,系统级和功能级、简单细化数据流图的区别,画法;数据字典:是什么,内容、定义数据的方法。(1)数据流图的定义:它是一种图形化技术,它描述信息和数据从输入移动到输出过程中所经历的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。数据流图的基本符号:正方形(或立方体) 表示数据的源点或终点;
8、圆角矩形(或圆形) 代表变换数据的处理;开口矩形(或两条平行横线) 代表数据存储;箭头线 表示数据流,即特定数据的流动方向。(2)数据字典的定义:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。数据字典的内容:数据流、数据流分量、数据存储、处理 定义数据的方法:用被定义的事物的成分的某种组合表示这个事物,这些组成成分又由更低的成分组合来定义。 3、 数据字典和数据流图的关系。数据流图和数据字典共同构成系统的逻辑模型。没有数据字典,数据流图就不严格,然而没有数据流图,数据字典也难于发挥作用。只有数据流图
9、和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。第3章 需求分析1、需求分析的任务是什么?分析得到的成果(文档)是什么?包含哪些内容?1、需求分析的任务:(1)确定对系统的综合要求:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求(2)分析系统的数据要求:(3)导出系统的逻辑模型(4)修正系统开发计划;2、需求分析得到的结果:是通过需求分析得到的除了分析模型之外,还应该写出软件需求规格说明书,它是需求分析阶段得出的最主要的文档。2、软件需求通常包括哪些方面?各类需求一般包含内容有哪些?(1)功能需求 :这方面的需求指定系统
10、必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。(2)性能需求:性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的需求。(3)可靠性和可用性需求:可靠性需求定量地指定系统的可靠性。可用性与可靠性密切相关,它量化了用户可以使用系统的程度。(4)出错处理需求:这类需求说明系统对环境错误应该怎样响应。(5)接口需求:接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。(6)约束:设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条件。(7)逆向需求:
11、逆向需求说明软件系统不应该做什么。(8)将来可能提出的要求:应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做的目的是,在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种扩充和修改。3、追加的主要描述工具的概念和使用:E-R图:是什么,成份和基本符号,描述什么模型;状态转换图:是什么,描述什么模型(1)E-R图的定义:即实体-联系图,是表示数据对象及其之间关系的图形语言机制,是建立数据模型的图形工具。E-R图的基本成份和使用的符号 :实体(即数据对象)-矩形框,关系-菱形框,属性-椭圆形或圆角矩形。E-R图描述的模型:用
12、来建立数据模型,ER模型使用简单的图形符号表达系统分析员对问题域的理解(2)状态转换图的定义:通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。状态转换图的基本成份和使用的符号:基本成分是状态、事件、状态转换。状态转换图描述的模型:用来建立系统的行为模型。4、在结构化分析中,建模的核心是什么?3种模型分别是什么,分别用什么工具来描述?建模的核心是数据字典,它描述了所有的在目标系统中使用的和生成的数据对象。(1)、数据模型,用实体-联系图描述;(2)、功能模型,用数据流图描述;(3)、行为模型,用状态转换图描述。第5章 总体设计1、什么是总体设计?将软件需求转化为软件的数据结构和系统
13、结构,确定各组成成分(子系统或模块)之间的相互关系2、模块化设计的原理包括什么?为了提高软件的可维护性,其中,模块独立性最重要的,是评价软件结构质量的首要标准。模块化设计的原理包括:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立。为了提高软件的可维护性,其中,模块独立性最重要的,是评价软件结构质量的首要标准。3、模块独立性度量(描述)的两个指标:内聚、耦合;什么是内聚,什么是耦合;耦合和内聚的具体分类及使用原则;在面向数据流的方法中,内聚、耦合各分为哪几级,每级的具体含义分别是什么?强度从弱到强如何排列?耦合和内聚两者关系?(1)耦合定义:它是对一个软件结构内不同模块之间互连程度的度量;耦
14、合分类:耦合使用原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合,最终降低模块间接口的复杂性。(2)内聚定义:它标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。内聚分类:内聚使用原则:设计时力求高内聚,设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。(3)耦合和内聚两者关系:耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。其中内聚更重要。内聚与耦合密切相关。同其它模块强耦合的模块意味着它自己是弱内聚的;强内聚模块意味着与其它模块间松散耦合。所
15、以设计的目标应该是力争高内聚、低耦合。4、软件总体结构描述工具的概念和使用:软件层次图、软件结构(SC)图、HIPO图:是什么,基本符号和表示的结构,画法。(1)软件层次图的定义:是用来描绘软件层次结构的图形工具。一个矩形框代表一个模块,方框间的连线表示模块间的调用关系。软件层次图的示例:(2)HIPO图的定义:即层次图 + 输入/处理/输出图,由一张H图和一组IPO图组成。通常将HIPO图作为软件结构的描绘,列入设计文档。 H图,是给每个模块加上编号的层次图。IPO图,即为H图中的每个模块画一张IPO图。(3)结构图(SC)的定义:描述了软件的模块结构,表示了一个系统的层次分解关系;反映了模
16、块间的联系以及块内联系;反映了模块间的信息传递。结构图一般不列入设计文档,只用于设计阶段检查模块设计的正确性和模块独立性。结构图(SC)的基本符号: A 方框,内有名称,表示模块; 直线,表示上层模块对下层模块的调用; 尾部带空心圆的箭头,表示按方向传递的数据信息; 尾部带实心圆的箭头,表示按方向传递的控制信息; 判定为真时调用A,为假时调用B 模块M循环调用模块A、B、C5、 结构化分析、结构化设计(SD)的实质是什么?SD是目前使用最广泛的一种软件设计方法,它的基本思想是模块化,它给出了设计软件结构的一个系统化的途径,它提出了“高内聚、低偶合”的评价模块结构质量的具体标准。SD的任务,就是
17、在需求分析的基础上,将表示系统逻辑模型的数据流图映射成软件系统结构的初始设计描述。6、数据流的分类?结构化设计(SD)方法(面向数据流的设计方法)中,如何将分析的结果(数据流图)逐层分解、转换成设计的初步结果(软件层次图)?数据流分类:SD方法把信息流(数据流图)映射成软件结构,信息流的类型决定了映射的方法。DFD中的数据流可分为两类:变换型数据流、事务型数据流;可转换为相应的软件结构:变换型结构、事务型结构。变换分析-从变换流到变换型结构的映射过程:事物分析-从事物流到事物型结构的映射过程:第6章 详细设计1、详细设计的任务(主要工作)有哪些?得到的结果是什么?详细设计的要求是什么?详细设计
18、的任务(工作):确定每个模块内部的算法和数据结构,用一定的工具精确描述目标系统,从而方便在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。包括:(1) 确定每一模块的算法(2) 确定每一模块使用的数据结构(3) 确定本模块的外部接口和用户界面(4) 为每一模块设计一组测试用例设计得到的结果:是确定每个模块内部的算法和数据结构,产生描述各模块处理过程的详细文档。详细设计的要求:不仅要逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程容易阅读和理解。2、什么是过程设计的工具?分类?基本要求?过程设计工具的定义:描述程序处理过程的工具过程设计工具的分类:它们可以分为图形、表格、
19、和语言3类。过程设计工具的基本要求:不论是哪类工具,对它们的基本要求都是能提供对设计的无歧义的描述。3、软件详细设计描述工具的概念和使用:程序流程图、N-S图、PAD图、PDL语言:是什么,基本符号和表示的意义,画法;各种工具描述结果间的转换。(1)程序流程图的定义:又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法,然而它也是用得最混乱的一种方法。程序流程图的基本符号:(2)盒图(N-S图)的定义:出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图。它有下述特点:(1) 功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼
20、就看出来。(2) 没有箭头,不可能任意转移控制。(3) 很容易确定局部和全程数据的作用域。(4) 很容易表现嵌套关系,也可以表示模块的层次结构。盒图(N-S图)的基本符号:(a)顺序;(b)IF_THEN_ELSE型分支;(c)CASE型多分支;(d)循环;(e)调用子程序(3)PAD(问题分析图)的定义: 1973年由日本日立公司发明。它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。PAD(问题分析图)的基本符号:(a)顺序;(b)选择(IF C THEN P1 ELSE P2);(c)CASE型多分支;(d)WHILE型循环(WHILE C DO P);(e)UNT
21、IL型循环(REPEAT P UNTIL C);(f)语句标号;(g)定义(3)过程设计语言(PDL)的定义:也称为伪码,PDL是一种“混杂”语言,它使用一种语言的词汇,同时却使用另一种语言(某种结构化的程序设计语言)的语法。过程设计语言(PDL)的举例:4、什么是模块的环形复杂度,如何计算?环形复杂度的定义:即程序的逻辑复杂度,主要是指模块内程序的复杂性。环形复杂度的计算方法: 方法一:流图中的区域数等于环形复杂度;方法二:流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数;方法三:流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目第7章 实现1、什
22、么是实现?选择程序设计语言主要的实用标准有哪些?通常把编码和测试统称为实现。(1)系统用户的要求(2)可以使用的编译程序(3)可以得到的软件工具(4)工程规模(5)程序员的知识(6)软件可移植性要求(7)软件的应用领域2、软件测试的目的是什么?软件测试方法的种类?为了发现程序中的错误而执行程序的过程,测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。3、软件测试与软件开发阶段的关系?软件开发过程是一个自顶向下、逐步细化的过程,而测试则是依相反的顺序安排的,自底向上、逐步集成的过程。低一级为上一级测试准备条件。4、软件测试的步骤,过程。模块测试-单
23、元、子系统测试-局部、系统测试-全局、验收测试-用户参与、平行运行-新旧共存5、软件测试的三大阶段:单元测试、集成测试(组装测试)、确认测试(验收测试)的主要任务(目的)是什么?测试的内容主要有哪些?测试计划分别在什么时候制定?测试计划的内容有哪些?模块测试(单元测试)集成测试确认测试6、什么是白盒测试?典型的白盒测试技术有哪几个,含义如何?简单的逻辑覆盖测试用例设计。白盒测试的定义:也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。应用时间:白盒测试在测试过程的早期阶段进
24、行白盒测试技术:1、逻辑覆盖:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖;2、控制结构测试:基本路径测试、条件测试、循环测试。逻辑覆盖测试的5种标准 发现错误的能力标准含义1(弱)语句覆盖每条语句至少执行一次 A=2,B=0,X=42判定覆盖每一判定的每个分支至少执行一次 A=3,B=0,X=3 A=2,B=1,X=13条件覆盖每一判定中的每个条件,分别按“真”、“假”至少各执行一次A=2,B=0,X=4 A=1,B=1,X=14判定/条件覆盖同时满足判定覆盖和条件覆盖的要求A=2,B=0,X=4 A=1,B=1,X=15(强)条件组合覆盖求出判定中所
25、有条件的各种可能组合值,每一可能的条件组合至少执行一次条件覆盖不一定包含判定覆盖;判定覆盖也不一定包含条件覆盖。条件组合覆盖是前述几种覆盖标准中最强的。但是,满足条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。例子:7使用基本路径测试方法测试以下程序段: void ss(int p,int q)1 2 int x=0;3 int y=0;4 while(p 1)5 6 if(q= =1)7 break;8 else9 if(q= =2)10 x=x+5;11 else12 y=y+10;13 14 说明:程序段中每行开头的数字(114)是对每条语句的编号。要求:一、 画出程序流
26、图。二、 计算上述程序段的环形复杂度。三、 导出基本路径集,列出程序的独立路径。四、 根据(3)中的独立路径,设计测试用例的输入数据和预期输出。答:(1)程序图如下:2,3469710121314(2)程序段的环形复杂度V(G)=4因为有3个判定结点,故环形复杂度为4(3)程序段的基本路径集中有4条独立路径。路径1: 4 14路径2: 4 6 7 14路径3: 4 6 9 10 13 4 14路径4: 4 6 9 12 13 4 14(4)设计的程序用例如下表所示:测试用例编号输入数据预期输出1p=1,q=1x=0,y=02p=2,q=1x=0,y=03p=2,q=2x=5,y=04p=2,q
27、=3x=0,y=107、什么是黑盒测试?典型的黑盒测试技术有哪几个,含义如何?简单的等价类划分测试用例设计。黑盒测试的定义:着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。应用时间:黑盒测试主要用于测试过程的后期。黑盒测试技术:1、等价划分;2、边界值分析;3、错误推测。例子1:时间报表(需8个测试实例)例子2:学号(需10个测试实例)九、十、十一 面向对象的概念、分析和设计设计 考核的知识点和要求掌握:面向对象的概念和面向对象建模;对象模型、动态模型和功能模型的建立;面向对象的分析和设计过程UML概述用例建模静态建模动态建模用例图:用框图展示各类外部执行者(act
28、or)与系统所提供的用例之间的参与关系,包括:系统边界、用例执行者(参与者):可能使用这些用例的人或外部系统,参与者与用例连接表示参与者使用了该用例模型元素间关系:关联、扩展、包含、泛化等每个用例的细节通常用文字描述,也可以用活动图来描述关系说明记号关联参与者与所参与的一个用例之间的通信路径扩展扩展的用例到基本用例的一种关系:扩展用例可以访问基本用例的所有属性,并在基本用例基础上增加新的行为包含被包含用例是基本用例的一部分,基本用例能看到被包含用例并依赖于它的的执行结果,但二者不能相互访问其它属性一个一般用例与一个更特殊的用例之间的关系,特殊用例可继承一般用例的特征 用例建模步骤:1 定义系统
29、(总体范围)2 确定参与者3 确定用例4 描述用例(文本或活动图)5 定义用例间的关系6 确认模型类图和对象图:类和对象模型的基本模型元素有类、对象以及它们之间的关系对象图是类图的实例,描述某一时刻类图中类的特定实例以及这些实例之间的特定链接对象图使用了与类图相同的符号,只是在对象名下附加下划线,对象名后可接以冒号和类名,即object-name: class-name 系统中的类和对象模型描述了系统的静态结构 对象名 :类名属性名 = 值操作类名属性名 :类型操作共享聚集组合聚集关联泛化依赖细化确定需要建模的类(分析阶段)CRC(类责任协作者)方法:使用一组表示类的索引卡片类名(Class)类的责任(Responsibility)类的协作者(Collaborator)CRC的主要步骤标识潜在的对象类筛选对象类,确定最终对象类标识责任(类的属性和操作)标识协作者复审CRC卡