软件工程简答

更新时间:2023-11-26 21:20:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.什么是软件危机?软件危机的表现是什么?软件危机产生的原因是什么? 软件危机是指软件在开发和维护过程 遇到的一系统严重问题,主要包含二方面的问题,一是如何开发软件,二是如何维护软件. 软件危机表现:

对软件开发成本和进度的估计常常很不准确。 用户对已完成的软件不满意的现象时有发生。 软件产品的质量往往是靠不住的。 软件常常是不可维护的。

软件通常没有适当的文档资料。

软件成本在计算机系统总成本中所占比例逐年上升。

软件开发生产率提高的速度远跟不上日益增长的软件需求。 造成软件危机的原因:

软件的规模越来越大,结构越来越复杂。(2)软件开发管理困难而复杂。(3)软件开发费用不断增加。(4)软件开发技术落后。(5)生产方式落后。6)开发工具落后,生产率提高缓慢。

2.什么是软件的生存周期?包括哪几个部分?

答:个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。它包括制定计划、需求分析、软件设计、程序编写、软件测试、运行维护等。 3.什么是软件生命周期模型?有哪些主要模型? 生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。

4.软件生命周期如何划分?

答:可将软件生存周期划分为3个过程共9个阶段。

软件定义过程:由可行性研究和需求分析2个阶段组成;

软件开发过程:由概要设计、详细设计、实现、组装测试、验收测试5个阶段组成;

软件使用与维护过程:由使用与维护和退役2个阶段组成。 5.软件生命期各阶段的任务是什么? 答:软件生命期分为7个阶段: 1、问题定义:要解决的问题是什么

2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性 3、需求分析:系统必须做什么

4、总体设计:系统如何实现,包括系统设计和结构设计 5、详细设计:具体实现设计的系统 6、实现:编码和测试

7、运行维护:保证软件正常运行。

6.什么软件?软件按功能进行划分,可以划分成哪几类?按工作方式进行分类,可以划分成哪几类?

答:软件是由计算机程序、程序使用的数据以及说明的各种文档组成。按功能进

行划分可以分为:系统软件、支撑软件、应用软件;按软件工作方式进行分类可以分为:实时处理软件、分时处理软件、交互式软件和批处理软件。 7.软件生产有几个阶段?各有何特征?

⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。

⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。 ⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。 8.什么是软件工程?它目标和内容是什么?

软件工程:就是用科学的知识工程和技术原理来定义,开发,维护软件的一门学科。

软件工程的目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。 软件工程的内容:研究内容包括开发技术和开发管理两个方面。开发技术主要研究:软件开发方法,开发过程,开发工具和环境。开发管理主要研究:软件管理学,软件经济学,软件心理学。

9.软件工程的7条基本原理 ? 7条原则是什么?

答:1)用分阶段的生存周期计划严格管理2)坚持进行阶段评审3)实行严格的产品控制4)采用现代程序设计技术5)结果应能清楚地审查6)开发小组的人员应少而精7)承认不断改进软件工程实践的必要性

1.抽象。2.信息隐藏。3.模块化。4.局部化。5.一致性。6.完全性。7.可验证性。

10.瀑布模型的特点、优点及缺点? 特点:各个阶段的顺序性和依赖性; 推迟程序的物理实现; 质量保证。

优点:可强迫开发人员采用规范的方法(例如,结构化技术); 严格地规定了每个阶段必须提交的文档;

要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。 缺点:无法解决软件需求不明确或不准确的问题;可能导致最终开发的产品不能真正满足用户需要。

瀑布模型比较适合开发需求明确的软件。 12.螺旋模型的优点及缺点?

优点:强调可选方案和约束条件,有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;

减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险; 维护是一个周期,与开发并没有本质区别

缺点:需要开发人员具有相当丰富的风险评估经验和专门知识; 进行风险分析的费用可能较大。 适合大型软件开发

13.可行性研究报告过程的步骤有哪些?

复查系统规模和目标2)研究目前正在使用的系统3)导出新系统的高层逻辑模

型4)进一步定义问题5)导出和评价供选择的解法6)推荐行动方针7)草拟开发计划8)书写文档提交审查

14.可行性研究报告的主要内容有哪些?

引言2)可行性研究前提3)对现有系统的分析4)所建议系统的技术可行性分析5)所建议系统的经济可行性分析6)社会因素可行性分析7)其他可供选择方案8)结论意见

15.什么是数据流图?其作用是什么? 数据流图(DFD):以图形的方式描述数据在系统中流动和处理的逻辑过程。只反映系统必须完成的逻辑功能,是一种功能模型。

16.什么是数据字典 简述数据字典与数据流图的关系

答案:数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完整的定义与说明,是数据流程图的补充工具. 数据字典有以下四类条目:数据流,数据项,数据存储,基本加工。数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用. 数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明.

17.需求分析工作可以分成哪四个方面?软件需求分析的有哪三个基本原则? 答:需求分析阶段分成四个方面:对问题的识别、分析与综合、制定规格说明和评审。三个基本原则:必须能够表达和理解问题的数据域和功能域;必须按自顶向下、逐步分解的方式对问题进行分解和不断细化;要给出系统的逻辑视图和物理视图。

18.需求分析的三个层次包括那些主要内容。 软件需求包括三个不同的层次—业务需求、用户需求和功能需求—也包括非功能需求。

业务需求反映了组织机构或客户对系统、产品高层次的目标要求。 用户需求文档描述了用户使用产品必须要完成的任务。 功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。

19.需求分析方法应遵循的基本原则? 答:1.必须能够表达和理解问题的数据域和功能域。2.可以把一个复杂的问题按功能进行分解并可逐层细化。3.建模

20.需求分析的主要方法是什么?用这种方法进行需求分析的主要步骤有哪些?

答:需求分析的方法有面向数据流的分析方法、面向数据结构的分析方法、面向对象分析方法和动态分析方法等,主要采用面向数据流的分析方法。主要步骤包括:(1)分析数据流图;(2)用户审查;(3)细化数据流图;(4)修订开发计划;(5)复审开发计划。

21.数据流图需要遵循哪些基本原则?

答:在分层细化时必须保持数据的连续性,也就是说细化前后对应功能的输入/输出数据必须相同。把一个功能进一步分解成子功能,这些子功能必须有独立的功能,否则,就不需要再分解了。 22.软件产品的特点是什么

答:①软件开发与硬件研制相比,更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。

②大型软件仍然存在着潜伏的错误。 ③软件产品开发成功后,只需对原版软件进行复制,即可生产出任意多的同样的产品。

④还有,软件在使用过程中的维护工作比硬件要复杂得多。 ⑤由于软件不是物理产品,所以它不会磨损和老化。 23.常用的软件项目的估算方法主要有哪4种?

答:1)自顶向下的估算方法2)自底向上的估算方法3)差别估算法4)根据实验或历史数据给出软件项目工作量或成本的经验估算公式。 24.请举例说明什么是多态,什么是重载

答案:多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象.也就是说,在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为.当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法. 25.为什么数据流图要分层?

答:这了表达数据处理过程的数据加工情况,用一个数据流图是不够的。为表达稍为复杂的实际问题,需要按照问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。

26.耦合性和内聚性有几种类型? 其耦合度、内聚强度的顺序如何?

低:非直接耦合?数据耦合?标记耦合? 控制耦合?外部耦合?公共耦合?内容耦合:高

强:功能内聚 ?信息内聚?通信内聚? 过程内聚? 时间内聚?逻辑内聚? 巧合内聚:弱

27.为什么要设计独立性强的模块以及如何判断模块的独立性?

模块独立性强,则:(1)系统容易开发(2)系统可靠性高(3)系统容易维护 判断模块独立性的基本原则:“耦合小,内聚大”

28.要开发质量“非常好”的软件,请从软件工程的角度分析其利与弊。 利:容易维护,用户比较满意 弊:成本高,周期长

29.采用面向对象方法设计软件系统时,子系统的划分常采用水平划分或垂直划分的方式,请说明这两种划分所得子系统的特点。

水平划分系统的p2p: 每个字系统可以调用任意其他子系统,比c/s复杂,可能死锁。

垂直划分c/s:客户端调用服务器端,服务器提供服务,并返回结果。客户端需要知道服务器的接口,而服务器不必知道客户端接口。

30.说明结构化程序设计的主要思想是什么?

答:(1)自顶向下、逐步求精的程序设计方法(2分)(2)使用3种基本控制结构、单入口、单出口来构造程序。(3分) 31.软件测试的目的(目标或定义)?

答:1)测试是为了发现程序中的错误而执行程序的过程2)好的测试方案是极可能发现迄今为止尚未发现的错误测试方案3)成功的测试是发现了至今为止尚未发现的错误的测试

32.软件测试包括哪些步骤?说明这些步骤的测试对象是什么?

答:(1)单元测试:测试对象对单元模块2)集成测试:测试对象为组装后的程序模块3)确认测试:测试对象为可运行的目标软件系统4)系统测试:测试对象为计算机系统的各组成部分 33.白盒测试?黑盒测试? 答:白盒测试又称为结构测试,它的前提条件是可以看成将程序放在一个透明的白盒子中,也就是完全了解了软件系统的结构和整个处理过程。 黑盒测试法又称功能测试或数据驱动测试,该方法把被测试对象看成一个不透明的黑盒子。测试人员完全不考虑程序内部结构和处理过程,只在程序的接口处进行测试,依据需求说明书,检查程序是否满足功能要求,是否能很好的接受数据,并产生正确的输出。侧重软件功能 34.白盒法有下列几种覆盖标准:

语句覆盖:设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

判定覆盖:设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。

条件覆盖:设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。

判定/条件覆盖:设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断中的每个条件的可能取值至少执行一次。

条件组合覆盖:设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。

路径覆盖:设计足够的测试用例,覆盖程序中所有可能的路径。 从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准。在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准。

35.软件重用的效益是什么?

答:1、软件重用可以显著地改善软件的质量和可靠性。 2、软件重用可以极大地提高软件开发的效率。

3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费。 36.自顶而下渐增测试与自底而上渐增测试各有何优、缺点? 答:① 自顶而下渐增测试 优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能够尽早发现上层模块的接口错误。 缺点:需要存根程序,底层错误发现较晚。 ② 自底而上渐增测试

优点与缺点和自顶而下渐增测试相反。 37.提高可维护性的方法有哪些? 答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审。

在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明。在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面。

在软件设计的复审中,因从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。 在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示。在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审。为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件 ,同时也在大力发展软件重用技术。 38.面向对象方法学的优点有哪些?

答:面向对象方法学的优点:多角度模拟客观世界;具有较高的稳定性;重用性好;适合开发大型软件。

39.什么是对象?什么是类?什么是消息? 答:现实世界中客观存在的事物都被称为对象。具有相同或相似性质的对象的抽象被称为类。对象之间进行的通信被称为消息。 40.什么是对象的封装?主要表现在哪些方面?

答:封装就是把对象包起来,使外界只能看到对象的接口,而不能知道对象内部的具体内容。主要表现在:(1)有固定的接口;(2)保护内部实现 。 41.简述过程设计语言(PDL)的特点。 答:PDL的特点是:(1)关键字应有固定语法,提供了结构化控制结构和语句说明;(2)用自然语言叙述系统处理功能,易于理解;(3)可以使用变通的语言编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作;(4)易于让计算机来处理。

42.简述软件质量的定义及在软件开发过程中管理软件质量的办法。 答:软件质量指的是软件产品满足规定的和隐藏的与需求能力有关的全部特征和特性。管理软件质量的办法:(1)每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务;(2)每个阶段结束前都要对所完成的文档、程序进行评审,以便尽早发现问题,改正错误。 43.什么是软件维护?软件维护可以分为哪几类? 答:软件维护是指在软件系统已经交付使用之后,软件使用人员为了适应新的要求、满足新的需要或为了改正软件中存在的错误而对软件系统进行修改的过程。可以分为纠错性维护、完善性维护、适应性维护和预见性维护。 44.简述软件质量三要素及其具体包括的内容。 答:软件质量要素可以分为三类,第一类要素表现软件的运行特征,包括正确性、可靠性、有效性、安全性和可用性;第二类要素表现软件承受修改的能力,包括可维护性、灵活性和可测试性;第三类要素表现软件对新环境的适应程度,包括可移植性、可重用性和可互操作性。 45.简述软件工程方法学所包含的内容。

软件工程方法学包括三个要素, 这就是方法、工具和过程。其中,方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑,过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 46.简述你对模块独立性的理解。

模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系

最少且接口简单,模块内部各部分及模块间的关系的一种衡量标准,由内聚和耦合来度量。

模块独立性的重要性:具有独立的模块的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化;独立的模块比较容易测试和维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够\插入\模块。总之,模块独立是优秀设计的关键,而设计又是决定软件质量的关键环节。

47.简述容错技术的四种主要手段,并解释。

结构冗余:包括静态冗余、动态冗余和混合冗余。

信息冗余:为检测或纠正信息在运算或传输中的错误,须外加一部分信息。 时间冗余:指重复执行指令或程序来消除瞬时错误带来的影响。 冗余附加技术:指为实现上述冗余技术所需的资源和技术。 48.就程序设计语言的工程特性而言,对程序编码有哪些要求? 就程序设计语言的工程特性而言,对程序编码有如下要求:(1)可移植性(2)开发工具的可利用性(3)软件的可重用性(4)可维护性 49.模块的内聚性包括哪些类型?

偶然内聚(2)逻辑内聚(3)时间内聚(4)通信内聚(5)顺序内聚(6)功能内聚

本文来源:https://www.bwwdw.com/article/6blt.html

Top