软件工程要期末复习.docx
《软件工程要期末复习.docx》由会员分享,可在线阅读,更多相关《软件工程要期末复习.docx(22页珍藏版)》请在冰豆网上搜索。
软件工程要期末复习
《软件工程》期末复习
第一章 软件工程概述
1.什么是软件危机?
软件危机包含哪些问题?
答:
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含两方面的问题:
如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
2.简述软件危机的典型表现。
答:
1.对软件开发成本和进度的估计常常很不准确;
2.用户对“已完成的”软件系统不满意的现象经常发生;
3.软件产品的质量往往靠不住;4.软件常常是不可维护的;5.软件通常没有适当的文档资料;
6.软件成本在计算机系统总成本所占的比例逐年上升。
3.产生软件危机的原因主要有哪些?
答:
软件不同于硬件,它是计算机系统中的逻辑部件不是物理部件。
软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
4.什么是软件?
答:
软件是程序、数据及相关文档的完整集合。
其中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。
在1993年IEEE为软件下的定义是:
计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。
5.简述如何消除软件危机?
答:
首先应该树立对计算机软件的正确认识。
软件开发应该是组织良好、管理严密、各类人员团结协作共同完成的工程项目。
必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,并研究能更有效地开发软件的技术和方法。
应该积极开发和使用计算机辅助软件工程的工具。
总之,为了消除软件危机,既要有技术措施,又要有必要的组织管理措施。
软件工程正是从技术和管理两方面研究如何更好的开发和维护软件的一门新兴的工程学科。
6.软件工程是一门什么样的学科?
答:
软件工程师指导计算机软件开发和维护的一门工程学科,该学科的目的是生产出能按期交付的,在预算范围内的、满足用户需求的、质量合格的软件产品。
7.简述软件工程的7条基本原理的主要内容。
1)用分阶段的生命周期计划严格管理
2)坚持进行阶段评审
3)实行严格的产品控制
4)采用现代程序设计技术
5)结果应能清楚地审查
6)开发小组的人员应该少而精
7)承认不断改进软件工程实践的必要性
8.软件工程方法学包括哪些要素?
叙述每个要素的含义。
答:
软件工程包括技术和管理两方面的内容,是技术和管理紧密结合所形成的工程学科。
软件工程方法下包含3个要素:
方法、工程和过程。
其中,方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
9.软件工程方法学的分类。
答:
分别是传统方法学和面向对象方法学。
10.什么是软件生命周期(软件生命周期由哪些时期组成?
每个时期的任务是什么?
每个时期由哪些阶段组成?
)
答:
软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分为若干个阶段。
软件定义时期的任务是:
确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
这个时期的工作通常又称为系统分析,由系统分析员负责完成。
软件定义时期通常进一步划分为3个阶段,即问题定义、可行性研究和需求分析。
开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:
总体设计、详细设计、编码和单元测试、综合测试。
维护时期的主要任务是使软件持久的满足用户的需要。
通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。
11.各类生命周期模型的特点与优缺点。
1)瀑布模型
优点:
a)强迫开发人员采用规范的技术方法
b)严格规定了每个阶段必须提交的文档
c)每个阶段结束前必须正式进行严格的技术审查和管理审查
缺点:
在可运行软件产品交付给用户之前,用户只能通过文档来了解未来的产品时什么养的,开发人员和用户之间缺乏有效地沟通,很可能导致最终开发出的软件产品不能真正满足用户的需求。
2)快速还原模型
优点:
a)使用这种软件过程开发出的软件产品通常能满足用户的真实需求
b)软件产品的开发过程基本上是线性顺序过程
3)增量模型
优点:
a)能在较短时间内想用户提交可完成部分工作的产品
b)逐步增加产品功能,从而使用户有较充裕的时间学习和适应新产品,减少一个全新的软件给用户所带来的冲击。
4)瀑布模型
a)有利于已有软件的重用
b)有助于把软件质量作为软件开发的一个重要目标
c)减少了过多测试或测试不足所带来的风险
d)软件维护与软件开发没有本质区别
12.根据历史数据假设计算存储价格等,答案在学习辅导第11页和13页。
答:
(1)在1985年对计算机存储容量的需求,估计是
M=4080e0.28(1985-1690)
=4080e7
=4474263(字)
如果字长为16位,则这个存储器的价格是
P=0.048×0.721985-1974×4474263
=5789(美元)
(2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。
在1985年一名程序员每天可开发出10条指令,如果每月有20个工作日,则每人每月可开发出10×20=200条指令。
为了开发出4474263条指令以装满存储器,需要的工作量是
4474263/200≈22371(人月)
(3)在1995年对存储容量的需求估计为
M=4080e0.28(1995-1906)
=4080e9.8
73577679(字)
如果字长为32位,则这个存储器的价格是
P=0.003×32×0.721995-1974×73577679
=7127(美元)
在1995年一名程序员每天可开发出30条指令,每月可开发出600条指令,为了开发出装满整个存储器的程序,需用的工作量为
73577679/600=122629(人月)
开发上述程序的成本为
122629×6000=735776790(美元)
第二章可行性研究
1.可行性研究的任务(目的)
答:
可行性研究的任务就是,用最小的代价在尽可能短的时间内研究并确定客户提出的问题是否有行得通的解决办法。
2.如何进行可行性研究
1)复查系统规模和目标
2)研究目前正在使用的系统
3)导出新系统的高层逻辑模型
4)进一步定义问题
5)导出和评价供选择的解法
6)推荐行动方针
7)草拟开发计划
8)书写文档提交审查
3.系统流程图及作用
答:
在进行可行性研究时需要了解和分析现有的系统,并以概括的形式表达对现有系统的认识;进入系统设计阶段后应该吧设想的新系统的逻辑模型转变成物理模型,因此需要描绘未来的物理系统的盖帽,系统流程图就是概括地描绘物理系统的传统工具。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。
4.什么是数据流图?
它的作用。
答:
数据流图是一种图形化技术,它描绘信息流好数据从输入移动到输出地过程中所受的变换。
在数据流图里面没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
数据时分析员与用户之间极好的工具。
数据流图的基本要点是描绘“做什么”,而不考虑“怎样做”。
5.数据流图的成分、所用的符号
成分:
源点、终点、处理数据存储和数据流。
符号:
正方形表示数据的源点或终点,圆角矩形表示变换数据的处理,开口矩形代表数据存储,箭头线表示数据流,即特定数据的流动方向。
6.如何画数据流图
答:
画数据流图的基本方法是,从基本系统模型出发,自顶向下从抽象到具体分层次地画。
7.什么是数据字典,它的组成成份
答:
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
它的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。
它的成分有:
数据流;数据流分量;数据存储;处理。
8.如何定义数据(例:
教材P44习题5)
高校电话的问题,用定义数据的方法解决。
答:
电话号码=[校内电话号码|校外电话号码]
校外电话号码=[本市号码|外地号码]
本市号码=数字零+8位数字
外地号码=数字零+3位数字+8为数字
非零数字=[1|2|3|4|5|6|7|8|9]
数字零=0
3位数字=3{数字}3
8位数字=非零数字+7位数字
7位住宅=7{数字}7
数字=[0|1|2|3|4|5|6|7|8|9]
第三章需求分析
1.什么是需求分析,它要解决什么问题?
答:
需求分析是软件定义时期的最后一个阶段,它的基本任务是准确的回答“系统必须做什么”这个问题。
它的任务是1)确定对系统的综合要求;2)分析系统的数据要求。
2.与用户沟通获取需求的方法
1)访谈
2)面向数据流自顶向下求精
3)简易的应用规格说明技术
4)快速建立软件原型
3.什么是快速软件原型,它有什么特点
答:
快速原型就是快速建立起来的旨在演示目标系统主要功能的可运行的程序。
它的特点第一是,“快速”;第二个特点是,容易修改。
4.什么是数据模型,包含的成份
答:
为了把用户数据要求清楚、准确的描述出来,系统分析员通常建立一个概念性的数据模型。
概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立模型。
他描述了用户角度看到的数据,它反映了用户的现实环境,而且与在软件系统中的实现方法无关。
包含3种信息:
数据对象、属性、联系。
5.如何用实体-联系图表示概念模型
答:
数据模型用实体-联系图表示、功能模型用数据流图表示、行为模型用状态转换图表示。
6.结构化分析所用的图形工具有哪些
答:
层次方框图、Warnier图、IPO图
7.应从哪些方面验证软件需求?
答:
一般来说应从4个方面进行验证:
一致性、完整性、现实性、有效性。
终点关注课本第73页4和6练习题
第四章概要设计
1.按形式化的程度,可把软件工程使用的方法划分成哪三类?
答:
非形式化、半形式化和形式化三类。
2.Petri网的权标、禁止线
答:
Petri网包含4个元素:
一组位置P、一组转换T、输入函数I以及输出函数O。
Petri网的标记是在Petri网中权标的分配。
对Petri网的一个重要扩充是加入禁止线。
禁止线是一用一个小圆圈而不是用箭头标记的输入线。
当每个输入线上至少有一个权标,而禁止线上没有权标的时候,相应的转换才是允许的。
第五章详细设计
1.什么是总体设计?
它要解决什么问题,它的步骤是什么?
答:
总体设计的基本目的就是回答“概括的说,系统应该如何实现?
”这个问题。
因此,总体蛇酒又称为概要设计或初步设计。
总体设计阶段的另一个重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及就这些模块相互间的关系。
设计过程分为9个步骤:
1)设想供选择的方案;2)选取合理的方案;3)推荐最佳方案;4)功能分解;5)设计软件结构;6)设计数据库;7)制定测试计划;8)书写文档;9)审查和复查。
2.软件总体设计要遵循哪些基本原理(重点)
1.模块化:
模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。
模块化就是把程序划分为独立明明且客独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。
因为变动往往只涉及少数几个模块,所以模块化能够提高软件的可修改性。
2.抽象化:
抽象就是抽出事物的本质特性而暂时不考虑它们的细节。
3.逐步求精:
为了能集中精力集中解决主要问题而尽量推迟对问题细节的考虑。
之所以如此重要,是因为人类的认知过程遵守Miller法则:
一个人在任何时候都只能发注意力集中在(7±2)个知识块上。
4.信息隐藏和局部化:
信息隐藏原理指出:
应该这样设计和确定模块,使得一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问的。
局部化的理念和信息隐藏概念是密切相关的。
所谓局部化是指把一些关系密切的软件元素物理的放的彼此靠近。
5.模块独立:
3.什么是模块独立,其衡量的标准是什么?
答:
模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。
模块的独立程度可以由两个定性标准度量,这两个标准分别成为内聚和耦合。
耦合衡量不同模块彼此间互相依赖的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。
4.深度、宽度、扇入扇出的含义,作用
答:
深度表示软件结构中控制的层数,它往往能粗略的标志一个系统的大小和复杂程度。
宽度是软件结构内同一个层次上的模块总数的最大值。
一般说来,宽度越大系统越复杂。
对宽度影响最大的是模块的扇出。
扇出是一个模块直接控制的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块;扇出过小也不好。
一个设计的好的典型系统的平均扇出通常是3或4,扇出的上限通常是5~9.一个模块的扇入表明有多少个上级模块直接调用它,扇入越大则共享该模块的上级模块数目越多,这是有好处的,但是,不能违背模块独立原理单纯追求高扇入。
5.什么是软件结构?
好的软件结构应具备什么标准?
答:
层次图用来描绘软件的层次结构。
6.层次图与层次方框图的区别
答:
层次图中的一个矩形框代表一个模块,方框间的连线表示调用关系而不像层次方框图那样表示组成关系。
7.什么是变换流、事务流
答:
信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变成外部形式离开软件。
当数据流图具有这些特征时,这种信息流就叫做变换流。
数据沿输入通路进入系统到达下一个处理,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,这类数据流应该划为一类特殊的数据流,称为事物流。
8.能根据具体情况,绘出相应的数据流图
第六章面向对象的分析和设计方法
1.什么是详细设计,详细设计的目标
答:
详细设计阶段的根本目标是确定怎样具体实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述。
详细设计的结果基本上决定了最终的程序代码的质量。
2.什么是结构程序设计
答:
如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
结构程序化是尽可能少用GOTO语句的程序设计方法。
3.什么是系统响应时间,它的两个重要属性
答:
系统响应时间是指从用户完成某个控制动作,到软件给出预期的响应之间的这段时间。
它的两个重要属性是长度和易变性。
4.用户帮助设施有哪些分类
答:
常见的用户帮助设施分为集成的和附加的两类。
5.什么是PAD图
答:
PAD是问题分析图ProblemAnalysisDiagram的英文缩写。
它用二维树状结构的图来表示程序的控制流,将这种图翻译成程序代码较容易。
6.环形复杂度的计算方法
答:
在教材137页能根据例子计算环形复杂度。
7.程序的三种基本控制结构
答:
顺序结构、选择结构、重复结构。
8.什么是PDL,它有什么特点优点
答:
PDL是过程设计语言。
判定表能够清晰的表示复杂的条件组合与应作的动作之间的对应关系。
判定表虽然能清晰地表示复杂的条件组合与应作的动作之间的对应关系,但其含义不能一眼就看出来。
9. 数据元素之间的逻辑关系有哪些?
10.面向数据结构的设计方法(Jackson方法与Jackson图)
11.掌握Jackson结构程序设计方法(教材P133例题)
答:
Jackson方法的设计步骤如下:
(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图表示这些数据结构。
(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。
(3)按一定的规则由输入、输出的数据结构导出程序结构。
(4)列出基本操作与条件,并把它们分配到程序结构图的适当位置。
(5)用伪码写出程序。
第七章编码
1.什么是测试,它的作用是什么?
答:
测试的目的就是软件投入生产性运行之前,尽可能多的发现软件中的错误。
目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。
2.软件测试的目标、测试的步骤
1)答:
测试是为了发现程序中的错误而执行程序的过程。
2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
3)成功的测试是发现了至今为止尚未发现的错误的测试。
测试的步骤:
1)模块测试;2)子系统测试;3)系统测试;4)验收测试;5)平行运行。
3.什么是黑盒测试与白盒测试,它们各自有哪些常用的测试技术,每种测试的功能是什么?
(重点)
答:
白盒测试着重测试程序的结构。
它常用的测试技术有逻辑覆盖和控制结构测试。
逻辑覆盖的功能是有选择的执行程序中某些最具有代表性的通路对穷尽测试的唯一可行的替代办法。
黑盒测试着重测试软件的功能需求。
它常用的测试技术有等价划分,边界值分析和错误推测。
4.什么是调试,调试在什么时候出现?
答:
调试,也称为纠错,作为成功测试后的后果出现,也就是说,调试是在测试发现错误后排除错误的过程。
调试的途径一般有蛮干发、回朔法和原因排除法。
5.什么是软件可靠性,软件可用性
答:
软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率。
软件可用性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。
第八章维护
1.软件维护的定义
答:
软件维护就是在软件已经交付使用之,为了改正错误或满足新的需要而修改软件的过程。
2.影响软件可维护性的因素有哪些
答:
可维护性的定义为:
维护人员理解、改正、改动或改进这个软件的难易程度。
影响因素有:
1)可理解性;2)可测试性;3)可修改性;4)可移植性;5)可重用性。
3.软件系统的文档有哪些?
答:
文档可分为:
用户文档和系统文档两类。
4.常见的软件维护性活动有哪些?
答:
把诊断和改正错误的过程称为改正性维护为了和变化了的环境适当的配合而进行的修改软件的活动是经常性维护。
在使用软件过程中用户提出增加新功能的或修改已有功能的建议,这种维护称为完善性维护。
为了改进软件未来的可维护性或可靠性而修改软件时这种维护称为预防性维护。
第九章面向对象方法学引论
1.面向对象方法学有什么优点?
1)答:
与人类习惯的思维方法一致
2)稳定性好
3)可重用性好
4)较易开发大型软件产品
5)可维护性好
2.面向对象的概念(对象、类、实例、方法、属性……)
答:
对象:
1)从面向对象程序设计角度来说对象是具有相同状态的一组操作的集合;2)从信息模拟的角度来说对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力;3)从形式化定义来说对象:
:
=,其中ID是对象的标示或名字,MS是对象中的操作集合,DS是对象的数据就恶狗,MI是对象受理的消息名集合。
类:
类就是对具有相同数据和相同操作的一组相似对象的定义,也就是说,类是对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎样创建该类的新对象的说。
实例是由某个特定的类所描述的一个具体的对象。
消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。
方法就是对象所能执行的操作,也就是类中所定义的服务。
属性是类中定义的数据,它是对客观世界实体所具有的性质的抽象。
封装就是吧某个事物包起来,使外界不知道该事物的具体内容。
继承继承是指能够直接获得已有的性质和特征,而不必重复定义它们。
在面向对象的软件技术中,继承是子类自动的共享基类中定义的数据和方法的机制。
多态性在面向对象的软件技术中,多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。
3.用UML描述类的方法,要注意什么问题?
4.用例图所包含的成份。
5.面向对象建模技术一般要涉及到哪三种模型,它们之间的关系是什么?
答:
描述系统数据结构的对象模型,描述系统控制结构动态模型,描述系统功能的功能模型。
关系:
面向对象开发软件建立的3种模型美工模型描述的侧重点不同,功能模型用于指明系统应该怎么做,动态模型明确规定它在什么时候应该怎么做,对象模型定义了做事情的实体。
第十三章软件项目管理
1.估算软件规模的方法有哪些?
答:
代码行技术和功能点技术。
代码行技术的优点是,代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数。
缺点是,源程序仅是软件配置的一个成分,用它的规模代表整个软件的规模似乎不太合理;用不用语音实现同一个软件所需要的代码行数并不相同;这种语言不适用与非过程语言。
代码行技术是比较简单的定量估算软件规模的方法。
这种方法依据以往开发类似产品的经验和历史数据,估计一个实现功能所需要的源程序行数。
功能点击数依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。
这种方法用功能点FP为单位度量软件规模。
2.什么是软件配置?
什么是基线
答:
软件过程的输出信息可分为3类:
1)计算机程序;2)描述计算机程序的文档;3)数据。
上述这些项组成了在软件开发过程中产生的全部信息,人们把它们统称为软件配置,而这些项就是软件配置项。
基线是一个软件配置管理的概念,它有助于人们在不严重妨碍合理变化的前提下来控制变化。
IEEE的定义为:
已经通过了正式复审的规格说明或或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。
3.甘特图的优缺点
答:
优点是直观,缺点是不能描述各个项目作业之间的相互依赖关系,进度计划关键部分不明确,有潜力的地方不明确,造成进度计划的浪费。
4.掌握用工程网络制定进度计划的方法
5.什么是关键路径,什么情况下会延迟整个软件开发项目,为什么?
答:
如果工程中几个事件的最早时刻和最迟时刻相同,这些事件定义了关键路径。
在图中关键路径用粗线箭头表示。
如果关键事件出现的时间比预计的时间晚,则会使最终完成项目的时间拖后。
6.常见的软件项目开发人员组织方式。
答:
民主制程序员组;主程序员组;现代程序员组。
7.什么是软件质量
答:
软件质量就是软件与名明确的和隐含的定义的需求相一致的程度。
一、选择题(每题2分,共40分)
1、Jackson方法根据( )来导出程序结构
A、数据结构B、数据间的控制结构C、数据流图D、IPO图
2、与计算机科学的理论研究不同,软件工程是一门( )学科。
A、理论性 B、工程性 C、原理性 D、心理性
3、下列方式中,不是由数据元素组成数据方式的是( )。
A、顺序 B、层次 C、选择 D、重复
4、在软件可行性研究中,可以从不同的角度对软件进行研究,其中是从软件的功能可行性角度考虑的是(第二章 )。
A、经济可性性
B、技术可行性
C、操作可行性
D、法律可行性
•二、填空题(每空1.5分,共30分