第1题:
试题四 论软件可靠性评价
软件可靠性评价是指选用和建立合适的可靠性数学模型,运用统计技术和其他手段,对软件可靠性测试和系统运行期间的软件失效数据(也可能包含软件生命周期内其他可靠性数据)进行处理,并评估和预测软件可靠性的过程。
软件可靠性评价是软件可靠性活动的重要组成部分,既可在软件开发过程实施,也可针对最终软件系统实施。软件可靠性评价的难点在于软件可靠性模型的选择和软件可靠性数据的收集与处理。
请围绕“软件可靠性评价”论题,依次从以下三个方面进行论述。
1. 简要概述你参与实施的软件开发项目以及你承担的主要工作。
2. 说明你在项目实施过程中所选择的软件可靠性模型, 并论述在软件可靠性模型选择时应该考虑的主要因素。
3. 收集软件可靠性数据时经常遇到的问题有哪些?简述你收集软件可靠性数据时所遇到的具体问题及解决的方法。
第2题:
软件可移植性是用来衡量软件的(54)的重要尺度之一。为了提高软件的可移植性,应注意提高软件的(55)。采用(56)有助于提高(55)。为了提高可移植性,还应(57)。使用(58)语言开发的系统软件具有较好的可移植性。
A.通用性
B.效率
C.质量
D.人机界面
第3题:
论软件可靠性评价软件可靠性评价是指选用和建立合适的可靠性数学模型,运用统计技术和其他手段,对软件可靠性测试和系统运行期间的软件失效数据(也可能包含软件生命周期内其他可靠性数据)进行处理,并评估和预测软件可靠性的过程。软件可靠性评价是软件可靠性活动的重要组成部分,既可在软件开发过程实施,也可针对最终软件系统实施。软件可靠性评价的难点在于软件可靠性模型的选择和软件可靠性数据的收集与处理。请围绕"软件可靠性评价"论题,依次从以下3个方面进行论述:①简要概述你参与实施的软件开发项目及你承担的主要工作。②说明你在项目实施过程中所选择的软件可靠性模型,并论述在软件可靠性模型选择时应该考虑的主要因素。③收集软件可靠性数据时经常遇到的问题有哪些?简述你收集软件可靠性数据时所遇到的具体问题及解决的方法。
写作要点
①说明软件开发项目的基本情况及自己承担的主要工作。
②当前的软件可靠性模型众多,但并没有一个最好的或者可以适用所用软件系统的软件可靠性模型,因此对于不同的软件系统,出于不同的可靠性分析目的,需要选择合适的软件可靠性模型。
常见的10类软件可靠性模型有种子法模型、失效率类模型、曲线拟合类模型、可靠性增长模型、程序结构分析模型、输入域分类模型、执行路径分析方法模型、非齐次泊松过程模型、马尔可夫过程模型和贝叶斯分析模型。
软件可靠性模型的选择主要需要考虑以下4个方面:
模型假设的适用性:模型假设是可靠性模型的基础,模型假设需要符合软件系统的现有状况,在软件系统中与假设冲突的因素达到几乎不存在的程度。
往往一个模型的假设有很多,需要在选择模型时对每一条假设进行分析,评估现有软件系统中不符合假设的因素对可靠性评价有多大影响,以确定模型是否符合软件系统的可靠性评价工作。
模型预测的能力与质量:预测的能力和质量是指模型根据现在和历史的可靠性数据,预测将来的可靠性和失效概率的能力,以及预测结果的准确程度。
因此,应尽可能选择比较成熟的、应用较广的模型。
模型输出值能否满足可靠性评价需求:根据可靠性测试目的来确定哪些模型的输出值满足可靠性评价需求。重要的可靠性定量指标包括当前可靠度、平均无失效时间、故障密度、期望达到规定可靠性目标的日期、达到规定可靠性目标的成本要求等。
模型使用的简便性:模型使用的数据在软件系统中易于收集;模型应该简单、易懂;模型应该便于使用,最好有工具支持。
三、软件可靠性数据的收集是一项艰巨而又烦琐的工作,受到许多潜在因素的影响和制约。常见的问题如下:
可靠性数据规范不一致,对软件进行度量的定义混乱。
数据收集过程存在于整个软件生命周期,但由于成本等因素,其连续性往往不能保证。
缺乏有效的技术和工具支持,难以进行自动分析。
数据完整性不能保证,收集到的数据大多数是不完全的。
数据质量和准确性不能保证。
缺乏可靠性数据的交流与共享。
考生应叙述在项目中遇到了上述中的哪些问题。
可供采用的解决方法主要有:
尽早确定可靠性模型,明确需要搜集的可靠性数据,确定涉及的术语、记录方法等。
制订可实施的可靠性数据搜集计划,并指定专人负责。保证数据的收集和验证与软件开发过程同步进行。
重视软件测试特别是可靠性测试产生的测试结果的整理和分析。
尽可能地利用工具进行收集工作,如利用数据库进行存储和分析等。
第4题:
信息隐蔽的概念与下述______概念直接相关。
A.软件结构定义
B.模块类型划分
C.模块独立性
D.模块耦合性
第5题:
你认为有效激励的要求有哪些?请举例说明。
第6题:
软件维护是保证软件正常、有效运行的重要手段,而软件的下述特性:
Ⅰ.可测试性
Ⅱ.可理解性
Ⅲ.可修改性
Ⅳ.可移植性
有利于软件的维护的有
A.只有Ⅰ
B.Ⅱ和Ⅲ
C.Ⅰ、Ⅱ和Ⅲ
D.都有利
第7题:
试题一 论软件维护及软件可维护性
软件维护指软件交付使用后,为了改正错误或满是新的需要而修改软件的过程。软件维护活动花费了整个软件生命期成本的50~90%,要降低维护成本,需要提高软件的可维护性。软件可维护性(Software Maintainability)是指软件能够被理解、校正、增强功能及适应变化的容易程度。提高软件的可维护性是软件开发阶段的关键目标之一。
请围绕“软件维护及软件可维护性”论题,依次从以下三个方面进行论述。
1.概要叙述你参与管理和开发的软件项目以及你在其中所担任的主要工作。
2.请给出常见的三种软件维护的类型并分别对其特点进行论述。说明影响软件可维护性的主要因素并详细论述提高软件可维护性的主要方法。
3.具体阐述你参与管理和开发的项目中所进行的软件维护活动和所采取的提高软件可维护性的方法,说明具体实施的过程以及实际应用的效果。
试题一写作要点
一、简要叙述所参与管理和开发的软件项目,并明确指出在其中承担的主要任务和开展的主要工作。
二、常见软件维护类型及特点
1.软件维护的类型
软件维护分为正确性维护、适应性维护、完善性维护和预防性维护等。
(1)正确性维护(改正性维护):在软件投入运行后,可能会暴露一部分在测试阶段没有发现的错误,为改正这些错误而对软件进行的修改就是正确性(改正性)维护。
(2)适应性维护:由于软件运行的外部环境(软件,硬件)和数据环境等的变化而修改软件使之适应这些变化,就是适应性维护。
(3)完善性维护:用户的需求是经常变化的,在软件使用过程中,用户会对软件提出新的功能和性能要求,为了满足这些新的要求而对软件进行修改,使之功能和性能得到完善。
(4)预防性维护:就是采用先进的软件工程方法对需要维护的软件或某部分软件重新进行设计、编码和测试,以提高软件的可维护性和可靠性等,为以后进一步改进软件打下基础。
2.影响软件可维护性的因素及提高软件可维护性的主要方法软件的可维护性是软件开发阶段的关键目标。影响软件可维护性的因素较多,设计、编码及测试中的疏忽和低劣的软件配置,缺少文档等都将对软件的可维护性产生不良影响。软件可维护性可用一卜.面七个质量特性来衡量,即可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。对于不同类型的维护,这七种特性的侧重点也不相同。
可从下面几个方面来阐述如何提高软件的可维护性。
(1)建立明确的软件质量目标。
(2)使用先进的软件开发技术和工具。利用先进的软件开发技术能大大提高软件质量和减少软件费用。
(3)建立明确的质量保证。质量保证是指为提高软件质量所做的各种检查工作。质量保证检查是非常有效的方法,.不仅在软件开发的各阶段中得到了广泛应用,而且在软件维护中也是一个非常主要的工具。为了保证可维护性,以下四类检查是非常有用的:在检查点进行检查、验收检查、周期性的维护检查和对软件包的检查。
(4)选择可维护的语言。程序设计语言的选择对维护影响很大。低级语言很难掌握,很难理解,因而很难维护。一般来说,高级语言比低级语言更容易理解,第四代语言更容易理解,容易编程,程序容易修改,改进了可维护性。
(5)改进软件的文档。软件文档是对软件功能、软件各组成部分之间的关系、程序设计策略、程序实现过程的历史数据等的说明和补充。软件文档对提高程序的可阅读性有重要作用,从而会提高软件的可维护性。
三、需结合自身参与项目的实际状况,指出其参与管理和开发的项目中所进行的软件维护活动和所采取的提高软件可维护性的方法。要给出实施软件维护活动和提高软件可维护性的具体过程、方法以及对实际应用效果的分析。
第8题:
论软件的静态演化和动态演化及其应用软件演化(Software Evolution)是指软件在其生命周期内的更新行为和过程。演化是一系列贯穿软件生命周期始终的活动,系统需求改变、功能实现增强、新功能加入、软件架构改变、软件缺陷修复、运行环境改变均要求软件系统能够快速适应变化,具有较强的演化能力。软件静态演化(Static Evolution)和动态演化(Dynamic Evolution)是目前软件演化的两种重要类型。请围绕"软件的静态演化和动态演化及其应用"论题,依次从以下3个方面进行论述:①概要叙述你参与管理和开发的软件项目及你在其中所担任的主要工作②请分别对软件静态演化和动态演化的特点进行论述,说明两种软件演化类型各自的优缺点及其应用场合,并举例说明各自的常见演化技术手段③具体阐述你参与管理和开发的项目中所进行的软件演化活动的特点、演化的类型,以及所采取的对应演化技术手段,说明具体实施过程及实际应用的效果。
写作要点
本题考查的知识点是软件演化。一个软件系统开发完毕正式投入使用之后,如果需求发生变化,或者要将该系统移植到另一个环境运行,且新环境的需求也有相应的变化时,就要对软件进行修改,这就是软件演化。软件演化是一个程序不断调节以满足新的软件需求的过程,也就是对一个已有软件不断进行修改、补充、完善以适用新需求和环境变化的过程。由于软件演化一词并不多见,所以难倒了很多考生。其实换一种讲法,可能大家就倍感亲切了--"软件升级",其实演化的本质就是在升级。既然是升级,静态演化与动态演化是怎么回事也就好理解了,即升级时是否停止系统的运行。所以如果有了上面的基础概念理解,写该论文的方向也就明晰了。
文章共分3个部分组织内容。
第一部分,简要叙述作者所参与管理和开发的软件项目,并明确指出在其中承担的主要任务和开展的主要工作。
第二部分,偏理论,需要介绍静态演化和动态演化的基本情况,写作时可参考以下材料。
静态演化(Static Evolution),静态演化是指软件在停机状态下的演化。其优点是不用考虑运行状态的迁移,同时也没有活动的进程需要处理。然而停止一个应用程序就意味着中断它提供的服务,造成软件暂时失效。
软件静态演化是指发生在应用程序停止时的软件修改和更新,即一般意义上的软件维护和升级。静态演化的优点是没有状态迁移或活动线程的问题要解决,缺陷是停止应用程序意味着停止它所提供的服务,也就是使软件系统暂时失效。在软件交付之后,静态演化(类似于一般意义上的软件维护)就成为软件变更的一个常规过程。变更可以是一种更正代码错误的简单变更,也可以是更正设计错误的较大范围的变更,还可以是对描述错误进行修正或提供新需求这样的重大改进。有3种不同的软件维护:改正性维护、适应性维护和完善性维护。维护过程一般包括变更分析、版本规划、系统实现和向客户交付系统等活动。
在面向对象技术中,使用子类型方法来扩展程序,它适合于软件静态演化和代码重用。子类型化一个类意味着保留父类中的参数和方法,并尽可能地增加新的参数和方法。另外,使用重载和多态性作为主要的演化机制。实际上,建立类的新版本,最简单的机制是创建它的子类,然后重载需要变更的方法,最后,使用多态性调用新创建的方法。在基于构件的软件技术中,构件采取接口和实现相分离技术,构件之间只能通过接口进行通信,这使得具有兼容接口的不同构件实现可以相互取代,从而成为软件静态演化的一条途径。
动态演化(Dynamic Evolution),动态演化是指软件在执行期间的软件演化。其优点是软件不会存在暂时的失效,有持续可用性的明显优点。但由于涉及状态迁移等问题,比静态演化从技术上更难处理。
动态演化是最复杂也是最有实际意义的演化形式。动态演化使得软件在运行过程中,可以根据应用需求和环境变化,动态地进行软件的配置、维护和更新,其表现形式包括系统元素数目的可变性、结构关系的可调节性和结构形态的动态可配置性。软件的动态演化特性对于适应未来软件发展的开放性、动态性具有重要意义。
动态演化是指软件在运行期间的演化。在许多重要的应用领域中,如金融、电力、电信及空中交通管制等,系统的持续可用性是一个关键性的要求,运行时刻的系统演化可减少因关机和重新启动而带来的损失和风险。此外,越来越多的其他类型的应用软件也提出了运行时刻演化的要求,在不必对应用软件进行重新编译和加载的前提下,为最终用户提供系统定制和扩展的能力。
动态演化可分为两种类型:预设的和非预设的。在Web环境中,软件应用常常需要处理多种类型的信息,因此它们常被设计为可以动态下载并安装插件以处理当前所面临的新类型的信息;而分布式Web应用也常常需要增减内部处理节点的数目以适应多变的负载。这些动态改变都是软件设计者能够预先设想到的,可实现为系统的固有功能。另有一些必须对系统配置进行修改和调整的情况是直到系统投入运行以后才发现的,这就要求系统能够处理在原始设计中没有完全预料到的新需求。这种情况下一般需要关闭整个系统,重新开发、重新装入并重新启动系统。然而,为了进行局部的修改而关闭整个系统在某些情况下是不允许的(如关键运行系统)或者代价太高。精心设计的动态演化技术可以在不关闭整个系统的前提下修改系统的结构配置,并尽量使未受影响的部分继续工作以提高系统的可用度。
为支持软件的动态演化性,已在语言、机制和环境等方面做了大量工作。在程序语言的层次上,引进各种机制以支持软件动态演化,例如,动态装载技术允许增加代码到已运行的程序中,延迟绑定是在运行时而不是编译时决定类和对象的绑定。Javahotswap允许在运行时改变方法:当一个方法终止时这个方法的新版本可以有效地替换旧版本,在类层次上代码的二进制兼容被支持。Gilgul语言也允许更换运行时对象。但程序语言层次上的动态演化机制仅局限于函数、类方法和对象等小粒度的替换,只支持预设的有限变更,变更由事件触发。
通过标准化运行级构件的规约,依靠构件运行平台(中间件平台)提供的基础设施,使软件在构件层次上的动态演化成为可能。中间件中具有的如命名服务、反射技术和动态适配等机制,为运行态构件的动态替换和升级提供支撑,从而推动了软件动态演化的发展。命名服务就是给构件实例提供一个名称,以便客户通过这些名称来获取构件实例。对工业标准构件EJB和CORBA构件的引用都可以通过中间件平台的命名服务进行。同一构件标识可以被映射到多个构件实例,从而根据具体情境对某一名字的构件引用导向到不同的构件实例。反射技术是系统的一种自描述(Self-Representation)和自推理的技术,它提供了关于自身行为的表示,这种表示可以被检查和调整,且与它所描述的系统行为是因果相联(Causally Connected)的。因果相联,意味着对自身表示的改动将立即反映在系统的实际状态和行为中,反之亦然。将反射性引入中间件能够以可控的方式开放平台内部的实现,从而提高中间件的定制能力和运行时的适应能力。动态适配机制中比较著名的是CORBA提供的动态接口服务:动态调用接口DII和动态骨架接口DSI。前者支持动态客户请求调用,而后者支持将请求动态指派(Dispatch)给构件。因此,软件构件化技术使得软件具有良好的构造性,软件演化的粒度更大。中间件技术则为基于构件的软件动态演化提供了坚实的基础设施和方便的操作界面。
第三部分需要结合作者自身的项目情况进行描述,这部分应是详细描述的部分。
第9题:
软件维护指软件交付使用后,为了改正错误或满足新的需要而修改软件的过程。软件维护活动花费了整个软件生命期成本的50%~90%,要降低维护成本,需要提高软件的可维护性。软件可维护性(Software Maintainability)是指软件能够被理解、校正、增强功能及适应变化的容易程度。提高软件的可维护性是软件开发阶段的关键目标之一。
请围绕“软件维护及软件可维护性”论题,依次从以下三个方面进行论述。
1.概要叙述你参与管理和开发的软件项目以及你在其中所担任的主要工作。
2.请给出常见的三种软件维护的类型并分别对其特点进行论述。说明影响软件可维护性的主要因素并详细论述提高软件可维护性的主要方法。
3.具体阐述你参与管理和开发的项目中所进行的软件维护活动和所采取的提高软件可维护性的方法,说明具体实施的过程以及实际应用的效果。
第10题:
论软件的可靠性设计
现代军事和商用系统中,随着系统中软件成分的不断增加,系统对软件的依赖性越来越强。软件可靠性已成为软件设计过程中不可或缺的重要组成部分。实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制,由此提出了可靠性设计的概念。可靠性设计就是在常规的软件设计中,应用各种方法和技术,使程序设计在兼顾用户的功能和性能需求的同时,全面满足软件的可靠性要求。
请以“软件的可靠性设计”为题,依次从以下三个方面进行论述。 1.概要叙述你参与管理和开发的软件项目以及你在其中所担任的主要工作。 2.简要说明目前比较主流的软件可靠性设计技术,结合项目实际情况,阐述所选择的可靠性设计技术及其原因。 3.结合你具体参与管理和开发的实际项目,举例说明所选取的软件可靠性技术的具体实施过程,并详细分析实施效果。