论软件可靠性设计与应用 目前在企业中,以软件为核心的产品得到了广泛的应用。随着系统中软件部分比例的不断增加,使得系统对软件的依赖性越来越强,对软件的可靠性要求也越来越高。软件可靠性与其他质量属性一样,是衡量软件架构的重要指标 软件工程中已有很多比较成熟的设计技术,如结构化设计、模块化设计、自顶向下设计等,这些技术为保障软件的整体质量发挥了重要作用。在此基础上,为了进一步提高软件的可靠性,通常会采用一些特殊的设计技术,即软件可靠性设计技术。 在软件可靠性工程体系中,包含有可靠性模型与预测、可靠性设计和可靠性测试方法等。实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制。 请围绕"软件可靠性设计与应用"论题,依次从以下3个方面进行论述。 ①概要叙述你参与实施的软件开发项目及你所承担的主要工作。 ②简要叙述影响软件可靠性的因素有哪些。 ③阐述常用的软件可靠性设计技术及你如何应用到实际项目中,效果如何。
第1题:
试题四 论软件可靠性评价
软件可靠性评价是指选用和建立合适的可靠性数学模型,运用统计技术和其他手段,对软件可靠性测试和系统运行期间的软件失效数据(也可能包含软件生命周期内其他可靠性数据)进行处理,并评估和预测软件可靠性的过程。
软件可靠性评价是软件可靠性活动的重要组成部分,既可在软件开发过程实施,也可针对最终软件系统实施。软件可靠性评价的难点在于软件可靠性模型的选择和软件可靠性数据的收集与处理。
请围绕“软件可靠性评价”论题,依次从以下三个方面进行论述。
1. 简要概述你参与实施的软件开发项目以及你承担的主要工作。
2. 说明你在项目实施过程中所选择的软件可靠性模型, 并论述在软件可靠性模型选择时应该考虑的主要因素。
3. 收集软件可靠性数据时经常遇到的问题有哪些?简述你收集软件可靠性数据时所遇到的具体问题及解决的方法。
第2题:
软件可靠性测试过程的正确顺序为______。
A) 定义软件运行剖面、设计测试用例、确定可靠性目标、实施可靠性测试、分析测试结果
B) 确定可靠性目标、定义软件运行剖面、设计测试用例、实施可靠性测试、分析测试结果
C) 设计测试用例、定义软件运行剖面、确定可靠性目标、实施可靠性测试、分析测试结果
D) 确定可靠性目标、设计测试用例、定义软件运行剖面、实施可靠性测试、分析测试结果
A.
B.
C.
D.
第3题:
论软件可靠性评价软件可靠性评价是指选用和建立合适的可靠性数学模型,运用统计技术和其他手段,对软件可靠性测试和系统运行期间的软件失效数据(也可能包含软件生命周期内其他可靠性数据)进行处理,并评估和预测软件可靠性的过程。软件可靠性评价是软件可靠性活动的重要组成部分,既可在软件开发过程实施,也可针对最终软件系统实施。软件可靠性评价的难点在于软件可靠性模型的选择和软件可靠性数据的收集与处理。请围绕"软件可靠性评价"论题,依次从以下3个方面进行论述:①简要概述你参与实施的软件开发项目及你承担的主要工作。②说明你在项目实施过程中所选择的软件可靠性模型,并论述在软件可靠性模型选择时应该考虑的主要因素。③收集软件可靠性数据时经常遇到的问题有哪些?简述你收集软件可靠性数据时所遇到的具体问题及解决的方法。
写作要点
①说明软件开发项目的基本情况及自己承担的主要工作。
②当前的软件可靠性模型众多,但并没有一个最好的或者可以适用所用软件系统的软件可靠性模型,因此对于不同的软件系统,出于不同的可靠性分析目的,需要选择合适的软件可靠性模型。
常见的10类软件可靠性模型有种子法模型、失效率类模型、曲线拟合类模型、可靠性增长模型、程序结构分析模型、输入域分类模型、执行路径分析方法模型、非齐次泊松过程模型、马尔可夫过程模型和贝叶斯分析模型。
软件可靠性模型的选择主要需要考虑以下4个方面:
模型假设的适用性:模型假设是可靠性模型的基础,模型假设需要符合软件系统的现有状况,在软件系统中与假设冲突的因素达到几乎不存在的程度。
往往一个模型的假设有很多,需要在选择模型时对每一条假设进行分析,评估现有软件系统中不符合假设的因素对可靠性评价有多大影响,以确定模型是否符合软件系统的可靠性评价工作。
模型预测的能力与质量:预测的能力和质量是指模型根据现在和历史的可靠性数据,预测将来的可靠性和失效概率的能力,以及预测结果的准确程度。
因此,应尽可能选择比较成熟的、应用较广的模型。
模型输出值能否满足可靠性评价需求:根据可靠性测试目的来确定哪些模型的输出值满足可靠性评价需求。重要的可靠性定量指标包括当前可靠度、平均无失效时间、故障密度、期望达到规定可靠性目标的日期、达到规定可靠性目标的成本要求等。
模型使用的简便性:模型使用的数据在软件系统中易于收集;模型应该简单、易懂;模型应该便于使用,最好有工具支持。
三、软件可靠性数据的收集是一项艰巨而又烦琐的工作,受到许多潜在因素的影响和制约。常见的问题如下:
可靠性数据规范不一致,对软件进行度量的定义混乱。
数据收集过程存在于整个软件生命周期,但由于成本等因素,其连续性往往不能保证。
缺乏有效的技术和工具支持,难以进行自动分析。
数据完整性不能保证,收集到的数据大多数是不完全的。
数据质量和准确性不能保证。
缺乏可靠性数据的交流与共享。
考生应叙述在项目中遇到了上述中的哪些问题。
可供采用的解决方法主要有:
尽早确定可靠性模型,明确需要搜集的可靠性数据,确定涉及的术语、记录方法等。
制订可实施的可靠性数据搜集计划,并指定专人负责。保证数据的收集和验证与软件开发过程同步进行。
重视软件测试特别是可靠性测试产生的测试结果的整理和分析。
尽可能地利用工具进行收集工作,如利用数据库进行存储和分析等。
第4题:
在软件评审中,设计质量是指设计的规格说明书符合用户的要求。设计质量的评审内容不包括(32)。
A.软件可靠性
B.软件的可测试性
C.软件性能实现情况
D.模块层次
第5题:
论高可靠性系统中软件容错技术的应用
容错技术是当前计算机领域研究的热点之一,是提高整个系统可靠性的有效途径,许多重要行业(如航空、航天、电力、银行等)对计算机系统提出了高可靠、高可用、高安全的要求,用于保障系统的连续工作,当硬件或软件发生故障后,计算机系统能快速完成故障的定位与处理,确保系统正常工作。
对于可靠性要求高的系统,在系统设计中应充分考虑系统的容错能力,通常,在硬件配置上,采用了冗余备份的方法,以便在资源上保证系统的可靠性。在软件设计上,主要考虑对错误(故障)的过滤、定位和处理,软件的容错算法是软件系统需要解决的关键技术,也是充分发挥硬件资源效率,提高系统可靠性的关键。
请围绕“高可靠性系统中软件容错技术的应用”论题,依次从以下三个方面进行论述。
简述你参与设计和开发的、与容错相关的软件项目以及你所承担的主要工作。
第6题:
试题四 论软件可靠性设计与应用
目前在企业中,以软件为核心的产品得到了广泛的应用。随着系统中软件部分比例的不断增加,使得系统对软件的依赖性越来越强,对软件的可靠性要求也越来越高。软件可靠性与其它质量属性一样,是衡量软件架构的重要指标。 软件工程中已有很多比较成熟的设计技术,如结构化设计、模块化设计、自顶向下设计等,这些技术为保障软件的整体质量发挥了重要作用。在此基础上,为了进一步提高软件的可靠性,通常会采用一些特殊的设计技术,即软件可靠性设计技术。 在软件可靠性工程体系中,包含有可靠性模型与预测、可靠性设计和可靠性测试方法等。实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制。
请围绕“软件可靠性设计与应用”论题,依次从以下三个方面进行论述。
1.概要叙述你参与实施的软件开发项目以及你所承担的主要工作。
2.简要叙述影响软件可靠性的因素有哪些。
3.阐述常用的软件可靠性设计技术以及你如何应用到实际项目中,效果如何。
试题四 写作要点
一、论文中要具体介绍项目的总体需求(特别是可靠性需求)、采用的技术等内容和承担的实际工作。
二、影响软件可靠性的主要因素有:运行环境(软件可靠性的定义是相对于运行环境的);软件规模;软件内部结构(内部结构越复杂,包含的缺陷数就可能越多);软件的开发方法和开发环境;软件的可靠性投入等。
三、可靠性设计是在常规的软件设计中,应用各种方法和技术使程序设计在兼顾用户功能和性能需求的同时,全面满足软件的可靠性要求。软件可靠性设计技术就是以提高和保障软件的可靠性为目的,在软件设计阶段运用的一种特殊的设计技术。
主要的软件可靠性设计技术包括:
(1)容错设计技术。对于软件失效后果特别严重的场合,例如宇航器控制系统、空中交通控制和核反应堆控制系统等,可采用容错设计方法。常用的软件容错技术主要有恢复块设计、N版本程序设计和冗余设计。恢复块设计就是选择一组操作作为容错设计单元,从而把普通的程序块变为恢复块。一个恢复块中包含有若干功能相同、设计差异的程序块,每一时刻有一个程序块处于运行状态,一旦某程序块出现故障,则用备份程序块予以替换。N版本程序设计的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果进行多数表决(防止因其中某一软件模块/版本的故障而提供了错误的服务,以实现软件容错)。冗余设计的思路来源于硬件系统,但有所不同。软件冗余设计技术是采用多种不同路径、不同算法或不同实现方法的模块或系统作为备份,在出现故障时进行替换,维持系统的正常运行。
(2)检测技术。在无须在线容错或不能采用冗余设计技术的部分,但又有较高的可靠性要求时,一般采用检测性设计,在软件出现故障后能及时发现并报警。但其明显的缺点是不能自动解决故障,如果没有人工干预,最终将导致系统不能正常运行。
(3)降低复杂度设计。软件的复杂性与软件可靠性有密切关系。软件复杂性是产生软件缺陷的重要根源。降低复杂度设计的思想就是在保证实现软件功能基础上,简化软件结抅。
第7题:
论软件可靠性设计技术的应用
随着软件的日益普及,系统中软件成分不断增加,使得系统对软件的依赖越来越强。
软件的可靠性对系统可靠性的影响越来越大。而实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制,为此提出了软件可靠性设计的概念。
软件可靠性设计就是在常规的软件设计中,应用各种方法和技术,使软件设计在兼顾用户功能和性能需求的同时,全面满足软件的可靠性要求。软件可靠性设计应和软件的常规设计紧密结合,贯穿于软件设计过程的始终。
请围绕“论软件可靠性设计技术的应用”论题,依次从以下三个方面进行论述。
1.概要叙述你参与管理和开发的软件项目以及你在其中所承担的主要工作。
2.结合项目实际,论述你在项目开发过程中,进行软件可靠性设计时遵循的基本原则;论述你在该项目中所采用的具体可靠性设计技术。
3.阐述你在具体的可靠性设计工作中,为了分析影响软件可靠性的主要因素,所采用的可靠性分析方法。
的多个相关表,业务逻辑层实体数据可以作为业务过程的部分I/O参数传递,业务逻辑层的实体是可序列化的,以保持它们的当前状态。业务逻辑层是实现系统功能的核心组件,采用容器的形式,便于系统功能的开发、代码重用和管理。
持久层。持久层主要负责数据的持久化存储,主要负责将业务数据存储在文件、数据库等持久化存储介质中。持久层的主要功能是为业务逻辑提供透明的数据访问、持久化、加载等能力。
三、考生需要结合项目实际情况,举例说明在设计表现层、中间层和持久层时需要考虑的主要问题,例如:在持久层设计时需要考虑MVC模型中的模型、视图和控制器分别对应哪些组件:在中间层设计时需要考虑框架与业务组件之间的关系;在持久层设计时需要考虑如何支持对多种类型数据的透明访问。
写作要点
一、概要论述你参与管理和开发的信息系统项目以及你在其中所承担的主要工作。
二、结合项目实际,论述你在进行软件可靠性设计时遵循的基本原则,你所采用的具体可靠性设计技术的基本内容。
可靠性设计需要遵循的原则有:
1、软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则相冲突。
2、软件可靠性设计在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标。
3、软件可靠性设计应确定软件的可靠性目标,不能无限扩大,并且排在功能、用户需求、开发费用之后考虑。
常见的可靠性设计技术有容错设计、检错设计、降低复杂度设计等技术。
容错设计技术:对于软件失效后果特别严重的场合,如飞机的飞行控制系统、空中交通管制系统等,采用容错设计技术。常见的容错设计技术有三种:恢复块设计、N版本程序设计和冗余设计。
恢复块设计:选择一组软件操作作为容错设计单元,把普通的程序块变成恢复块。一个恢复块包含有若千个功能相同、设计差异的程序块文本,一个运行文本,多个备份文本,构成“动态冗余”,一旦运行文本出现故障,则用备份文本替换。软件容错的恢复块方法就是使软件包含有一系列恢复块。
N版本程序设计:N版本程序的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实现多数表决,防止其中某一软件模块/版本的故障提供错误的服务,以实现软件容错。
冗余设计:在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常运行。缺点是费用和资源的消耗会有所增加。
检错技术:在软件系统中,无需在线容错的地方,或不能采用冗余设计技术的部分,如果对可靠性要求较高,故障有可能导致严重的后果时,一般采用检错技术,在软件出现故障后能及时发现并报警,其缺点是不能自动解决故障。
降低复杂度设计:软件复杂性与软件可靠性有着密切的关系,是产生软件缺陷的重要根源。在设计时考虑降低软件的复杂性,是提高软件可靠性的有效方法。降低复杂度设计的思想是在保证实现软件功能的基础上,简化软件结构,缩短程序代码,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。
(结合实际工作,具体解释遵循的原则和采用的一种或多种可靠性设计技术)
三、阐述你在具体的可靠性设计工作中,为了分析影响软件可靠性的主要因素,所采用的可靠性分析方法。
在软件可靠性设计之前和软件可靠性设计过程中,都需要采用软件可靠性分析和预|测方法,来确定当前系统中的主要可靠性因素和目标。常见的软件可靠性分析方法包括故障树分析方法、失效模式与效应分析方法等。
故障树分析方法:一种自顶向下的软件可靠性分析方法,即从软件系统不希望发生的事件(顶事件),特别是对人员和设备的安全及可靠性产生重大影响的事件开始,向下逐步追查导致顶事件发生的原因,直至基本事件(底事件),从而确定软件故障原因的各种可能组合方式和(或)发生概率。基本的步骤是软件故障树的建立、定性分析和定量分析。
失效模式与效应分析方法:在软件开发阶段的早期,通过识别软件失效模式,分析造成的后果,研究分析各种失效模式产生的原因,寻找消除和减少其有害后果的方法,以便尽早发现潜在的问题,并采取相应的措施,从而提髙软件的可靠性和安全性。SFMEA的分析对象可以是开发早期阶段的高层次的子系统、部件,也可以是详细设计阶段的单元、模块。对于不同的分析对象,其软件失效模式是不同的,采用的SFMEA分析方法也不同,前者采用系统级分析方法(systemFMEA),后者为详细级分析方法(detailedFMEA)。其基本的步骤是系统定义、软件失效模式分析、软件失效原因分析、软件失效影响分析、改进措施分析。
(结合实际工作,具体阐述自己所采用的一种或多种可靠性分析方法)
第8题:
论软件可靠性设计与应用目前在企业中,以软件为核心的产品得到了广泛的应用。随着系统中软件部分比例的不断增加,使得系统对软件的依赖性越来越强,对软件的可靠性要求也越来越高。软件可靠性与其他质量属性一样,是衡量软件架构的重要指标软件工程中已有很多比较成熟的设计技术,如结构化设计、模块化设计、自顶向下设计等,这些技术为保障软件的整体质量发挥了重要作用。在此基础上,为了进一步提高软件的可靠性,通常会采用一些特殊的设计技术,即软件可靠性设计技术。在软件可靠性工程体系中,包含有可靠性模型与预测、可靠性设计和可靠性测试方法等。实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制。请围绕"软件可靠性设计与应用"论题,依次从以下3个方面进行论述。①概要叙述你参与实施的软件开发项目及你所承担的主要工作。②简要叙述影响软件可靠性的因素有哪些。③阐述常用的软件可靠性设计技术及你如何应用到实际项目中,效果如何。
这是一道关于软件可靠性设计的试题,主要考查影响软件可靠性的因素及软件可靠性设计技术和应用。本题需要特别注意的一点是:文章不能以"系统可靠性设计与应用"为主线组织内容。"系统可靠性设计"与"软件可靠性设计"的区别在于:系统可靠性包括了系统硬件的可靠性和系统软件的可靠性。
软件的可靠性设计技术主要有:恢复块方法、N版本程序设计、防卫式程序设计。
第9题:
●在软件评审中,设计质量是指设计的规格说明书符合用户的要求。设计质量的评审内容不包括(32)。
(32)
A.软件可靠性
B.软件的可测试性
C.软件性能实现情况
D.模块层次
第10题:
阅读以下关于嵌入式系统可靠性设计方面的描述,回答问题1至问题3。 【说明】 某宇航公司长期从事宇航装备的研制工作,嵌入式系统的可靠性分析与设计已成为该公司产品研制中的核心工作,随着宇航装备的综合化技术发展,嵌入式软件规模发生了巨大变化,代码规模已从原来的几十万扩展到上百万,从而带来了由于软件失效而引起系统可靠性降低的隐患。公司领导非常重视软件可靠性工作,决定抽调王工程师等5人组建可靠性研究团队,专门研究提高本公司宇航装备的系统可靠性和软件可靠性问题,并要求在三个月内,给出本公司在系统和软件设计方面如何考虑可靠性设计的方法和规范。可靠性研究团队很快拿出了系统及硬件的可靠性提高方案,但对于软件可靠性问题始终没有研究出一种普遍认同的方法。
【问题1】(共9分) 请用200字以内文字说明系统可靠性的定义及包含的4个子特性,并简要指出提高系统可靠性一般采用哪些技术? 【问题2】(共8分) 王工带领的可靠性研究团队之所以没能快速取得软件可靠性问题的技术突破,其核心原因是他们没有搞懂高可靠性软件应具备的特点。软件可靠性一般致力于系统性地减少和消除对软件程序性能有不利影响的系统故障。除非祓修改,否则软件系统不会随着时间的推移而发生退化。请根据你对软件可靠性的理解,给出表3-1所列出的硬件可靠性特征对应的软件可靠性特征之间的差异或相似之处,将答案写在答题纸上。【问题3】(共8分) 王工带领的可靠性研究团队在分析了大量相关资料基础上,提出软件的质量和可靠性必须在开发过程构建到软件中,也就是说,为了提高软件的可靠性,必须在需求分析、设计阶段开展软件可靠性筹划和设计。研究团队针对本公司承担的飞行控制系统制定出了一套飞控软件的可靠性设计要求。飞行控制系统是一种双余度同构型系统,输入采用了独立的两路数据通道,在系统内完成输入数据的交叉对比、表决‘制导率计算,输出数据的交叉对比、表决、一输出等功能,系统的监控模块实现对系统失效或失步的检测与宠位。其软件的可靠性设计包括恢复块方法和N版本程序设计方法。请根据恢复块方法工作原理完成图3-1,在(1)~(4)中填入恰当的内容。并比较恢复块方法与N版本程序设计方法,将比较结果(5)~(8)填入表3-2中。图3-1 恢复块方法 表3-2 恢复块方法与N版本程序设计的比较