软件工程复习资料325分析_软件工程复习资料整理
软件工程复习资料325分析由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“软件工程复习资料整理”。
第一章 软件工程概述
1﹑软件产品的特性是什么? 产品特性:
⑴是一种逻辑产品,与物质产品有很大的区别。
⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。
⑶软件产品不会用坏,不存在磨损,消耗。
⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是“定做”的 ⑸开发软件的费用不断增加,致使生产成本相当昂贵。2﹑软件生产有几个阶段?各有何特征?
⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。
⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。
⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。3﹑什么是软件危机?主要表现在哪些方面? 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。表现方面:
(1)用户对开发出的软件很难满意。(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。4﹑什么是软件工程?它目标和内容是什么?
软件工程:就是用科学的知识工程和技术原理来定义,开发,维护软件的一门学科。
软件工程的目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程的内容:研究内容包括开发技术和开发管理两个方面。开发技术主要研究:软件开发方法,开发过程,开发工具和环境。开发管理主要研究:软件管理学,软件经济学,软件心理学。
5﹑软件工程面临的问题是什么?
软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。6﹑什么是软件生存周期?它有哪几个活动?
软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。
包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。7﹑什么是软件生存周期模型?有哪些主要模型?
生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。
主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。8﹑什么是软件开发方法?有哪些主要方法?
使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。通过使用成功的软件开发方法,在规定的投资和时间内,开发出符合用户需求的高质量的软件。软件开发方法是克服软件危机的重要方面之一,对软件工程及软件包产业的发展起了不可估量的作用。主要有:结构化方法,JACKSON方法,维也纳开发方法﹙VDM﹚,面向对象开发方法。
9、软件工程方法学包含3个要素分别是什么? 分别是:方法、工具和过程。
方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题; 工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;
过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
10、什么是软件过程?
为了获得高质量软件所需要完成的一系列任务的框架,规定了完成各项任务的工作步骤。在完成开发任务时必须进行一些开发活动,并且使用适当的资源,在过程结束时将把输入转化为输出。
11、瀑布模型的特点及优点? 特点:
(1)各个阶段的顺序性和依赖性;
(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;
(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。
优点:
可强迫开发人员采用规范的方法(例如,结构化技术);
严格地规定了每个阶段必须提交的文档;
要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
12、螺旋模型的优点?
对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;
减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险;
在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
螺旋模型主要适用于内部开发的大规模软件项目。项目越大,风险也越大,因此,进行风险分析的必要性也越大。此外,只有内部开发的项目,才能在风险过大时方便地中止项目。
13、快速原型的分类、特点及使用策略? 分类:探索型、实验型、进化型
特点:尽快向用户提供一个可在计算机上运行的目标系统的模型,以便使用户和开发者在目标系统应该“做什么”这个问题上尽可能快地达成共识。 快速原型应该具备的第一个特点是“快速”;
快速原型应该具备的第二个特点是“容易修改”。原型的“修改—试用—反馈”过程可能重复多遍。
使用策略:废弃策略和追加策略。
14、软件工程的目标?
付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
15、软件开发技术主要研究内容?
软件开发方法,开发过程,开发工具和环境。
16、软件开发管理主要研究内容?
软件管理学,软件经济学,软件心理学。
17、快速原型开发的步骤?
快速开发、需求、构造原形、原形、运行原形、评价原形、修改意见。
18、某计算机系统投入使用后、5年内每年可节省人民币 2O0O元,假设系统的投资额为5000元,年利率为 12%。试计算投资回收期和纯收入。
第二章 可行性研究
1、可行性研究的任务是什么? 可行研究的任务:首先需要进行概要的分析研究,初步确定项目的规模,目标,约束和限制。分析员再进行简要的需求分析,抽象出项目的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的解决方法,对每种解决方法都要研究它的可行性。主要从四个方面考虑:
⑴.技术可行性:一般要考虑的情况包括 开发的风险即设计出的系统能否达到要求的功能和性能;资源的有效性;相关技术的发展是否支持;⑵.经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资。
⑶.法律可行性:要开发的项目是否存在任何侵权问题。
(4).管理可行性:运行方式在用户组织内是否可行,现有管理制度﹑人员素质﹑操作方式是否可行。
2、可行性研究有哪些步骤? ⑴.确定项目规模和目标;
⑵.研究正在运行的系统;收集﹑研究﹑分析现有系统的文档资料,实地考察系统访问有关人员,然后描绘现有系统的高层系统流程图。
⑶.建立新系统的高层逻辑模型;使用数据流图和数据字典描述数据在系统中的流动和处理情况。
⑷.导出和评价各种方案;导出若干较高层次的物理解决方法,根据技术可行性﹑经济可行性﹑社会可行性进行评估,得到可行的解决方法。
⑸.推荐可行方案;进行成本~效益分析,决定该项目是否值得开发,若值得开发那么解决方案是什么,并且说明该方案可行的原因和理由。
⑹.编写可行性研究报告;将上述可行性过程的结果写成相应文档,即可行性研究报告。
3、可行性研究过程包括哪些?
1.复查系统规模和目标 2.研究目前正在使用的系统
45678示楼号,CNO表示课程号,G表示成绩。函数依赖有:(SNO,CNO)→G;SDEPT→SLOC;SNO→SDEPT,对关系进行规范化,达到三范式要求。
(1)SC(SNO,CNO,G)和
(2)S-D(SNO,SDEPT,)(3)S-L(SDEPT ,SLOC)
11、状态转换图
状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。提供了行为建模机制。
12、层次方框图
层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)。
13、IPO图
IPO图是输入、处理、输出图的简称,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。
14、从哪些方面验证软件需求的正确性
(1)一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
(2)完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
(3)现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。
(4)有效性必须证明需求是正确有效的,确实能解决用户面对的问题。
第四章 总体设计
1、什么是总体设计?总体设计的任务是什么?
总体设计又称为概要设计或初步设计。确定系统功能是实现。基本任务是:建立软件系统结构(划分模块、定义模块功能、模块间的调用关系、定义模块的接口、评价模块的质量)、数据结构和数据库的设计(数据结构设计、概念设计、逻辑设计、物理设计)、编写概要设计文档(概要设计说明书、用户手册、数据库设计说明书、修订测试计划)。
2、总体设计分为哪两个阶段?
系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。
3、总体设计过程包括几个步骤?
1.设想供选择的方案 2.选取合理的方案 3.推荐最佳方案 4.功能分解 5.设计软件结构 6.设计数据库 7.制定测试计划 8.书写文档 9.审查和复审
4、模块化
是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
5、模块化的优点
(1)模块化使软件容易测试和调试,因而有助于提高软件的可靠性。
011控制范围:是模块本身和它的下属模块的集合。作用范围:模块中的一个判定影响的所有模块的集合。作用范围应该在控制范围内。
33、什么是变换流?什么是事物流? 变换流由输入、变换(或处理)、输出三部分组成。
事物流某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入选择其中一个路径来执行。
34、试述“变换分析”﹑“事物分析”设计步骤。变换分析设计步骤:
⑴确定变换中心,逻辑输入和输出。
⑵设计软件结构的顶层和第一层--变换结构:顶层的功能是完成所有模块的控制(名称应是系统名,以体现完成整个系统功能)
第一层至少有三种功能模块:输入﹑输出和变换模块
⑶设计中﹑下层模块,对第一层的模块自顶向下分解。
输入模块由两部分组成:接收数据﹑转换成调用模块所需信息。
输出模块由两部分组成:将数据转换成下属模块所需的形式﹑ 发送数据 变换模块:对每个基本加工建立一功能模块
⑷设计的优化 :输入部分求精,每个物理输入设置专门模块,以体现系统的外部接口。其它输入模块与转换数据模块都很简单时,可将它们合并。
输出部分求精:每个物理输出设置专门模块,其它也可适当合并。变换部分求精:根据设计准则,对模块适当合并。
事务分析的设计步骤:
⑴确定事务中心和加工路径
⑵设计顶层(事务机构)和第一层 顶层模块有两个功能:接收数据和根据事务类型调动相应处理模块。
⑶中下层模块的设计﹑优化工作与变换结构相同。
事务型软件结构包括两部分: 接收分支 发送分支出 通常包括一调度模块,当事务类型不多时,可与主模块合并。
35、请将下图的DFD转换为软件结构图。
解:
第五章 详细设计
1、详细设计的基本任务是什么?有那几种描述方法?
设计模块的数据结构、设计数据库的物理结构、设计模块的详细算法、其它(代码设计、输入/输出格式设计、人机对话设计)、编写详细设计说明书、评审。
程序流程图、PAD图、PDL。
2、请使用流程图、PAD图和PDL语言描述下列程序的算法。(1)在数据A(1)~A(10)中求最大数和次大数。
PDL语言描述:
GET(a[1],a[2],...a[10])
max=a[1];
max2=a[2];
FOR i=2 TO 10
IF a[i]>max
max2=max;
max=a[i];
ELSE
IF a[i]>max2
max2=a[i];
ENDIF
ENDIF
ENDFOR
PUT(max,max2)
END3、输入三个正整数作为边长,判断该三条边构成的三角形是等边、等腰还是一般三角形。使用流程图、PAD图和PDL语言描述。解:如图:
PDL语言描述如下:
GET(a,b,c)
IF(a+b>c and b+c>a and c+a>b)
IF(a=b)
IF(a=c)
PUT(“等边三角形”)
ELSE
PUT(“等腰三角形”)
ENDIF
ELSE
IF(a=c)
PUT(“等腰三角形”)
ELSE
IF(b=c)
6(6)对发现错误较多的程序段,应进行更深入的测试。
(7)程序员应避免测试自己的程序。测试是一种“挑剔性”的行为,心理状态是测试自己程序的障碍。
2、什么是白盒测试法?有哪些覆盖标准?试对他们的检错能力进行比较? 答:白盒法测试法把测试对象看作一个打开的盒子,测试人员须了解程序内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。白盒法有下列几种覆盖标准:
语句覆盖:设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。 判定覆盖:设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。
条件覆盖:设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。
判定/条件覆盖:设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断中的每个条件的可能取值至少执行一次。
条件组合覆盖:设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。
路径覆盖:设计足够的测试用例,覆盖程序中所有可能的路径。从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准。在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准。
3、什么是黑盒测试法?采用黑盒技术测试用例有哪几种方法?这些方法各有什么特点? 答:黑盒测试法把被测试对象看成是一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。采用黑盒技术测试用例的方法有:
等价类的划分、边界值分析、错误推测和因果图。
等价类的划分:是将输入数据按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试。这样就把漫无边迹的随机测试改为有针对性的等价类测试,用少量有代表性的例子代替大量测试目的相同的例子,能有效地提高测试效率。但这个方法的缺点是没有注意选择某些高效的、能够发现更多错误的测试用例。
边界值分析法:是将测试边界情况作为重点目标,选取正好等于、刚刚大于和刚刚小于边界值的测试数据。(边界情况是指输入等价类和输入等价类边界上的情况。)这种方法可以查出更多的错误,因为在程序中往往在处理边界情况时易发生错误。
错误推测法:是在测试程序时,人们根据经验或直觉推测程序中可能存在的错误,从而有针对性地编写检查这些错误的测试用例。 因果图:能够有效地检测输入条件的各种组合可能会引起的错误。它的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。
这几种方法都不能提供一组完整的测试用例,在实际测试中应把各种方法结合起来使用。综合策略:就是联合使用上述几种测试方法,尽可能多地发现程序中的错误。
4、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?
-***3-