当前位置:文档之家› 软件工程(简答题)

软件工程(简答题)

1、简述结构化范型和面向对象范型的要点,并分析它们的优缺点。

答:结构化范型要点:结构化范型也称生命周期方法学,属于传统方法学。

传统的软件开发方法大部分采用瀑布模型。

这种模型要求每一阶段都以前一阶段形成的文档为基础完成工作。

每一阶段将要完成时,都要求开发人员进行验证或确认。

瀑布模型要求在软件产品生成之前对用户需求进行尽可能精确的、完全的刻画。

但要完成这种任务相当困难。

优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度.
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化时,开发出的软件往往不成功;而且维护起来仍然很困难。

面向对象范型四个要点:(1)面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由简单的软件对象组合而成。

(2)所有对象划分成各种对象类,每个对象都定义了一组数据和一组方法。

(3)按照子类(派生类)和父类(基类)的关系,把若干个对象类组成一个层次结构的系统(类等级)。

在派生类中对某些特性又做了重新描述,则在派生类中的这些特性将以新描述为准,也就是说,低层的特性将屏蔽高层的同名特性。

(4)对象彼此之间仅能通过传递消息互相联系。

面向对象范型主要优点(1)按照人类习惯的思维方法,对软件开发过程所有阶段进行综合考虑;(2)软件生存期各阶段所使用的方法、技术具有高度的连续性;(3)软件开发各个阶段有机集成,有利于系统的稳定性】
6、非渐增式测试与渐增式测试有什么区别?
答:【区别:1、非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。

而渐增式测试往往把单元测试与集成测试和在一起,同时完成。

2、非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。

渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。

渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。

渐增式比较彻底,已测试的模块和新的模块再测试。

渐增式占用的时间较多,但非渐增式须更多的驱动模块、桩模块也占用一些时间。

非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。


7、为什么软件测试不应该由程序的编写人员来做?
【答:软件测试的目的是为了发现程序中的错误而执行程序的过程。

正确认识测试的目标是十分重要的,测试目标决定了测试力案的设计。

如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。

由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。


10.什么是软件危机?
答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

这些问题不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度的存在这些问题。

软件危机包含下属两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

具体地说,软件危机主要有以下一些典型表现:1.对软件开发成本和进度的估计常常很不准确。

2.用户对“已完成的”软件系统不满意的现象经常发生。

3.软件产品的质量往往靠不住。

4.软件常常是不可维护的。

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

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

7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

23、面向对象设计应遵循那些准则?
【答:1)模块化;2)抽象;3)信息隐藏;4)弱耦合;5)强内聚;6)可重用。


11. 分别解释对象模型、动态模型及功能模型的概念.
【(1)对象模型:它表示了静态的、结构化的系统数据性质,描述了系统的静态结构它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。

该模型主要关系的是系统中对象的结构、属性和操作,使用了对象图的工具来刻画,它是分析阶段三个模型的核心,也是其他两个模型的框架。

涉及及的概念有,对象和类、关联和链。

(2)动态模型:是与时间和变化有关的系统性质。

该模型描述了系统的控制结构,它表示了瞬时的、行为化的系统控制性质,它关系的是系统的控制,操作的执行顺序,它从对象的事件和状态的角度出发,表现了对象的相互行为。

该模型描述的系统属性是触发事件,事件序列、状态、事件与状态的组织。

使用状态图作为描述工具。

涉及的重要概念是事件、状态、操作等。

(3)功能模型:描述了系统的所有计算。

功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。

功能模型表明一个计算如何从输入值得到输出值,它不考虑所计算的次序。

功能模型由多张数据流图组成。

数据流图说明数据流是如何从外部输入、经过操作和内部存储输出到外部的。

功能模型也包括对象模型中值的约束条件。

功能模型说明对象模型中操作的含义、动态模型中动作的意义以及对象模型中约束的意义。

相关的概念有:数据流图中的处理、数据流、动作对象、数据存储对象等。


12、非渐增式测试和渐增式测试有什么区别?
【区别:1、非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。

而渐增式测试往往把单元测试与集成测试和在一起,同时完成。

2、非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。

渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。

渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。

渐增式比较彻底,已测试的模块和新的模块再测试。

渐增式占用的时间较多,但非渐增式须更多的驱动模块、桩模块也占用一些时间。

非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。


15、模块独立性与信息隐蔽有何关系?
答:【答“模块独立性”是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的。

所谓的“信息隐蔽”是指每个模块的实现细节对于其它模块来说是隐蔽的。

也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用
衡量模块独立性的一个准则就是模块内聚,达到信息隐蔽的模块是信息内聚模块,它是高内聚的情形,因此模块独立性当然就很强了】
16面向对象的集成测试主要有哪几种不同的测试策略?
【答:传统的集成测试策略没有意义。

面向对象软件的集成测试主要有下述两种
不同的测试策略:基于线程的测试基于的测试使用】
18、在面向对象的系统开发过程中,每个阶段需要建造的模型各有什么作用?
19、答:(1)在面向对象的系统开发过程中,每个阶段要建造不同的模型。

(2)需求分析阶段建造的模型用来捕获系统需求分析
(3)设计阶段的模型是分析模型的扩充,为实现阶段作指导性和技术性的解决方案
(4)实现阶段的模型是真正的源代码及编译后的组件。

(5)发布阶段是描述系统物理上的架构
22、什么是模型?为什么要建模?
答:它是以立体的形态表达特定的创意,以实体的形体线条、体量关系等元素不同程度地表现设计思想。

建模是为了能够更好地理解正在开发的系统。

通过建模,要达到4个目的:
(1)模型有助于按照实际情况或按照所需要的样式对系统进行可视化。

(2)模型能够规约系统的结构或行为。

(3)模型给出了指导构造系统的模板。

(4)模型对做出的决策进行文档化。

24、简述可行性研究的必要性,并回答应该从哪些方面研究目标系统的可行性?
25.瀑布模型的缺点?
【1)在项目各个阶段之间极少有反馈。

2)只有在项目生命周期的后期才能看到结果。

3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。


26 模块的独立性?
【模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单. 模块独立性是指模块内部各部分及模块间的关系的一种衡量标准,由内聚和耦合来度量。

】。

相关主题