1软件危机与软件工程

合集下载

第一讲.软件危机与软件工程

第一讲.软件危机与软件工程

第一讲.软件危机与软件工程第一讲软件危机与软件工程在当今数字化的时代,软件已经成为我们生活和工作中不可或缺的一部分。

从智能手机上的各种应用程序,到企业的管理系统,再到国家的关键基础设施,软件的身影无处不在。

然而,在软件的发展历程中,并非一帆风顺,而是经历了诸多挑战和困难,其中最为突出的就是软件危机。

那么,什么是软件危机呢?简单来说,软件危机指的是在软件开发和维护过程中所遇到的一系列严重问题。

这些问题包括但不限于软件开发成本和进度的失控、软件质量的低下、软件的维护困难等等。

在过去,软件开发常常被视为一种个体化的艺术创作,缺乏规范的方法和流程。

开发人员往往凭借个人的经验和直觉来进行开发,这导致了软件开发的效率低下和质量不稳定。

而且,由于对软件需求的理解不够准确和全面,很多软件在开发完成后并不能满足用户的实际需求,需要进行大量的修改和返工,这不仅浪费了时间和资源,还严重影响了软件的交付进度。

此外,软件的规模和复杂度也在不断增加。

过去,一个简单的程序可能只有几百行代码,而现在,一些大型的软件系统可能拥有数百万甚至数千万行代码。

这种规模的增长使得软件开发和维护变得异常困难。

代码的复杂性导致了理解和修改的难度加大,容易引入新的错误,而且软件的测试和调试也变得更加耗时和费力。

软件危机给软件开发带来了巨大的困扰,严重制约了软件行业的发展。

为了解决这些问题,软件工程应运而生。

软件工程是一门致力于研究软件开发和维护的方法、技术和管理的学科。

它的目标是提高软件开发的效率和质量,降低开发成本,增强软件的可维护性和可扩展性。

软件工程强调采用规范化、系统化的方法来进行软件开发。

在软件开发的早期阶段,就需要对软件的需求进行详细的分析和定义,确保开发出来的软件能够真正满足用户的需求。

同时,软件工程还引入了一系列的开发模型,如瀑布模型、迭代模型、敏捷开发模型等,以适应不同类型和规模的软件项目。

在软件设计阶段,软件工程注重软件的架构设计和模块划分,通过合理的设计来提高软件的可维护性和可扩展性。

软件危机与软件工程

软件危机与软件工程

途 基本原则。

2023/11/3
16
软件工程基本原理

决1.用分阶段的生命周期计划严格管理

有人统计,在不成功的软件项目中有50%左
件 右是由于计划不周造成的。应该把软件生命周期
危 机 的
划分为若干阶段,并制定出相应的切实可行的计 划,严格按照计划对开发和维护进行管理。
B.W.Boehm认为,应制定和严格执行6类计划: 项目概要计划、里程碑计划、项目控制计划、产
软 ▪ 计算机软件的数量以惊人的速度急剧
件 膨胀。
开 ▪ 计算机硬件的性能/价格比,每10年提高
发 过 程

2个数量级,且质量稳步提高。 软件生产跟不上计算机应用的要求,开 发成本增加,质量没有保证,已成制约
计算机发展的关键因素。
2023/11/3
6
软件危机
软 件
▪ 软件危机(crisis):是指在计算机软
2023/11/3
8
产生软件危机的原因
软 件 危

▪ 客观原因:软件需求大,规模大
▪ 主观原因:软件本身的特点
软件是一种逻辑部件不是物理部件,其进展情 况和质量难以控制。
的 软件的规模非常庞大,多人共同开发,必须有
产 严格和科学的管理。
生 软件开发过分依赖于个人的智力劳动和经验。
在对用户需求没有完整、准确的认识,匆忙开
2023/11/3
32
软件工程开发模式


第一,不要急于求成,对于规模较大、较复杂的系
软 件
统,过早地急于编程实现,往往导致大量返工,甚至 开发失败。应该把前面几个阶段的工作做得比较扎实, 再进行后续的工作。

软件工程名词解释

软件工程名词解释

1. 软件软件是计算机系统中与硬件相互依存的部分,它是包括程序、数据及相关文档的完整集合。

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

3. 软件工程软件工程是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。

4. 软件生存周期软件生存周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程,一般包括计划、分析、设计、实现、测试、集成、交付、维护等阶段。

5. 软件复用软件复用就是利用某些已开发的、对建立新系统有用的软件元素来生成新的软件系统。

6. 质量质量是产品或服务满足明确或隐含需求能力的特性和特征的集合。

在合同环境下,需求是明确的;在其他环境下,隐含的需求需要识别和定义。

7. 质量策划质量策划包括产品策划、管理和作业策划,以及质量计划的编制和质量改进的准备工作。

8. 质量改进质量改进是以最求最高的效益和效率为目标的持续性活动。

9. 质量控制质量控制是对流程和产品的符合性的评估,独立分析不足并予以更正使得产品与需求相符。

10. 质量保证质量保证是有计划的和系统性的活动,它对部件或产品满足确定的技术需求提供足够的信心。

11. 软件质量软件质量是指明确声明的功能和性能需求、明确文档化的开发标准、以及专业人员开发的软件所具有的所有隐含特征都得到满足。

12. 正式技术复审正式技术复审是一种由软件开发人员进行的软件质量保证活动,其目的是在软件的任何一种表示形式中发现功能、逻辑或实现的错误,验证经过复审的软件确实满足需求,保证软件符合预定义的标准,使软件按照一致的方式开发,使项目更易于管理。

13. ISOISO是一个组织的英语简称,代表International Organization for Standardization,即"国际标准化组织"。

14. ISO9000ISO9000是由ISO/TC176制定的关于质量管理和质量保证的国际标准。

软件工程习题

软件工程习题

第1章软件危机与软件工程一、填空题1、软件工程是在1960 年代_末期提出的,这一概念的提出,其目的是倡导以工程和数学的原理、原则和方法进行软件开发,以期解决当时出现的软件危机。

2、软件包括了使计算机运行所需要的各种程序和数据及其有关的资料。

3、计算机程序及其说明程序的各种文档称为文件。

计算机任务的处理对象和处理规则的描述称为程序,有关计算机程序功能、设计、编制、使用的文字或图形资料称为文档。

4、20世纪60年代末至20世纪70年代初年代,“软件危机”一词在计算机界广为流传,其主要是针对当时存在的软件代价高和软件错误多的现象而提出的。

5、为了解决软件危机,要从技术、管理两方面入手。

引入“软件工程”的概念,就是为了解决软件开发过程中的技术和管理问题。

6、在软件开发、编码和测试过程中,必须将测试放在首要位置。

7、软件工程框架告诉我们,软件工程的目标是软件定义可靠性、软件开发可靠性、软件使用和维护可靠性。

8、软件工程的四条基本原则是:要选取适宜的开发模型,要采用合适的设计方法,要提供高质量的工程支持,要实行开发过程的管理。

9、软件工程活动主要包括需求、设计、实现、确认和支持等活动。

10、软件工程是指把系统的、规范化的、可以度量的方法运用于软件的开发、运行和维护的过程二、选择题1、软件是一种( B )产品。

A.有形B.逻辑C.物质D.消耗2、软件工程学的目的应该是最终解决软件生产的( B )问题。

A.提高软件的开发效率B.使软件生产工程化C.消除软件的生产危机D.加强软件的质量保证3、与计算机科学的理论研究不同,软件工程是一门( B )学科。

A.理论性B.工程性C.原理性D.心理性4、在计算机软件开发和维护中所产生的一系列严重的问题通常称为软件危机,这些问题中相对次要的因素是( D )。

A.文档质量B.软件效率C.软件功能D.软件性能5、软件工程与计算机科学性质不同,软件工程着重于( C )。

A.原理探讨B.理论研究C.建造软件系统D.原理的理论6、软件工程学出现的主要原因是( C )。

软件工程导论第5版

软件工程导论第5版

1.1 软件危机
(2)应该推广使用在实践中总结出来的开发软件的成 功的技术和方法。研究探索更好更有效的技术和方法 ,尽快消除在计算机系统早期发展阶段形成的一些错 误概念和做法。 (3)应该开发和使用更好的软件工具。在适当的软 件工具辅助下,开发人员可以把这类工作做得既快又 好。如果把各个阶段使用的软件工具有机地集合成一 个整体,支持软件开发的全过程,则称为软件工程支 撑环境。
1.1 软件危机
一系列软件相关的问题在计算机系统的整个发展过程 中一直存在着,而且这些问题还会继续恶化: 硬件的发展超过软件,建造的软件难以发挥硬件的潜能; 现有软件与用户的要求矛盾; 软件失败导致“灾难性后果”; 需要高质量、高可靠性的软件; 设计的问题使得升级和维护十分困难;
1.1 软件危机
1.2 软件工程
2. 坚持进行阶段评审:错误有放大效应
当时已经认识到,软件的质量保证工作不能等 到编码阶段结束之后再进行。因为:第一,大部分错 误是在编码之前造成的,据统计,设计错误占软件错 误的63%,编码错误仅占37%;第二,错误发现与改正 得越晚,所需付出的代价也越高。因此,在每个阶段 都进行严格的评审,以便尽早发现在软件开发过程中 所犯的错误是一条必须遵循的重要原则。
1.2 软件工程
4. 采用现代程序设计技术
从提出软件工程的概念开始,人们一直把主要精力用于研究 各种新的程序设计技术,并进一步研究各种先进的软件开发与 维护技术。实践表明,采用先进的技术不仅可以提高软件开发 和维护的效率,而且可以提高软件产品的质量。
5. 结果可以清楚地审查
软件产品不同于一般的物理产品,它是看不见摸不着的逻 辑产品。软件开发人员(或开发小组)的工作进展情况可见性差 ,难以准确度量,从而使得软件产品的开发过程比一般产品的 开发过程更难于评价和管理。为了提高软件开发过程的可见性 ,应该根据软件开发项目的总目标及完成期限,规定开发组织 的责任和产品标准,从而使得所得到的结果能够清楚地审查。

软件危机与软件工程

软件危机与软件工程

软件危机与软件工程软件危机与软件工程概述软件危机是指软件开发过程中出现的一连串问题和挑战,导致项目延期、超出预算或质量不佳的情况。

而软件工程则致力于解决软件开发过程中的各种挑战和问题,并提供一种可靠且高效的方法来开发高质量的软件。

软件危机的原因软件危机的原因有多方面的因素,主要包括以下几点:1. 需求不明确:在软件开发初期,客户对软件的需求往往模糊不清或者发生变化,导致软件开发团队无法准确理解客户的需求,从而难以开发出满足客户期望的软件。

2. 技术挑战:软件开发涉及多种技术和复杂的编程环境,开发人员需要不断学习和适应新的技术,但往往时间紧迫,导致技术跟不上进展,造成软件质量不佳。

3. 人员管理:软件开发涉及多个团队成员的合作,如果人员之间无法有效沟通和协作,就会影响软件的开发进度和质量。

4. 项目管理:项目管理对软件开发至关重要,如果项目管理不善,容易导致进度延误、资源浪费等问题。

软件工程的解决方案软件工程是一种以工程化的方式来开发软件的方法,并提供了解决软件开发挑战的一系列技术和方法。

以下是软件工程在解决软件危机中的一些解决方案:1. 需求工程:通过系统化的需求搜集和分析方法,帮助开发团队更全面地理解客户需求,避免需求不明确的问题。

2. 软件架构设计:通过良好的软件架构设计,可以确保软件的可扩展性和可维护性,降低软件开发过程中的技术难题。

3. 项目管理:采用敏捷的项目管理方法可以更好地应对需求变化和项目进度控制,保证软件开发的高效进行。

4. 质量保证:软件是软件工程中的重要环节,通过各种方法如单元、集成和系统等,可以确保软件质量。

软件危机背后的挑战虽然软件工程提供了一套解决软件危机的方法和技术,但在实践中仍然面临一些挑战:1. 技术进步:软件开发领域的技术在不断进步,开发团队需要不断学习和适应新的技术,才能跟上潮流并提供高质量的软件。

2. 项目规模:随着软件项目规模和复杂度增加,开发团队需要更多的资源和时间来完成项目,项目管理和资源分配成为挑战。

软件危机与软件工程

软件危机与软件工程

软件危机与软件工程第一章引言软件危机是指在软件开发过程中出现的一系列问题,如超出预算、延期交付、功能缺失等。

该问题的根本原因在于软件开发过程缺乏规范和有效管理。

为了解决软件危机问题,软件工程作为一门学科应运而生。

第二章软件工程的定义与范围软件工程是一门将工程原理、方法和工具应用于软件开发的学科。

它涵盖了软件开发的整个生命周期,包括需求分析、设计、编码、测试和维护等阶段。

第三章软件危机的原因1.需求不清晰:需求不明确或不完整导致软件项目后期出现功能缺失和修改需求的情况。

2.规模估算不准确:对软件项目的规模估算不准确会导致资源分配不合理,进而引发预算超支和进度延误。

3.项目管理不善:软件项目缺乏有效的管理方法和工具,导致资源分配不均衡,任务分配不明确,人员合作不协调。

4.技术选型不当:选择不合适或技术过时的开发工具和平台会导致开发效率低下和后期维护困难。

5.缺乏测试与质量保证:软件开发过程中忽视测试环节和质量保证措施,导致系统稳定性和可靠性问题。

第四章软件工程的方法与实践1.需求分析:通过对用户需求进行深入调研和分析,建立准确的需求文档,为后续设计与开发提供准确的参考。

2.结构化设计:采用模块化开发的方式,将系统划分为多个独立可测试的模块,提高开发和维护的效率。

3.敏捷开发:采用敏捷开发方法,将开发过程划分为多个迭代周期,每个周期交付可用的软件产品,持续优化和改进。

4.质量管理:通过严格的测试和质量保证流程,确保软件系统的稳定性、可靠性和安全性。

5.风险管理:通过风险分析和风险控制策略,预测和应对潜在的开发风险,减少项目失败的风险。

第五章软件工程的工具与框架1.需求管理工具:如JIRA、TFS等,用于管理和追踪需求的变更和进度。

2.设计工具:如Axure、Visio等,用于绘制系统架构图和界面设计。

3.编码工具:如IDE、代码管理工具等,用于编写、管理和调试代码。

4.测试工具:如Selenium、Junit等,用于进行自动化测试和质量监控。

软件工程概论

软件工程概论

软件工程1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题;包含两方面的问题:1如何开发软件,以满足对软件日益增长的需求;2如何维护数量不断膨胀的已有软件;2、软件危机的主要表现:1对软件开发成本和进度的估计经常很不准确;2用户对“已完成的”软件系统不满意的现象经常发生;3软件产品的质量往往靠不住;4软件常常是不可维护的;5软件通常没有适当的文档资料;6软件成本在计算机系统总成本中所占的比例逐年上升;7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;3、产生软件危机的原因1从软件特点上看,软件是逻辑部件,不是物理部件;2软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理;3软件的参与人员多且成分复杂需求人员,开发人员,用户,维护人员等;4在软件实践过程中或多或少的采用的错误的但当时无法知晓的方法和技术这是主要原因4、消除软件危机的途径1首先应该对计算机软件有一个正确的认识;2更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;3应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法;4应该开发和使用更好的软件工具总之,为了解决软件危机,既要有技术措施方法和工具,又要有必要的组织管理措施;5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科;11968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理;21993IEEE定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径;6、软件工程的本质特征1软件工程关注于大型程序的构造;2软件工程的中心课题是控制复杂性;3软件经常变化;4开发软件的效率非常重要;5和谐地合作是开发软件的关键;6软件必须有效地支持它的用户;7在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品;7、软件工程的基本原理1用分阶段的生命周期计划严格管理2坚持进行阶段评审3实行严格的阶段性产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应该少而精7承认不断改进软件工程实践的必要性8、软件生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,所历经的一个漫长的时期;包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护;1软件定义时期:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的相关策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并适当估计完成进度表;2软件开发时期:总体设计;详细设计;编码和单元测试;综合测试; 3软件维护时期:主要任务是使软件更持久地满足用户需要;具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要;9、软件生命周期每个阶段的基本任务1问题定义:“要解决的问题是什么”;2可行性研究:“对于上一个阶段所确定的问题有行得通的解决方案吗”3需求分析:“为了解决这个问题,目标系统必须做什么;”4总体设计:“概括地说,应该怎样实现目标系统”5详细设计:“应该怎样具体地实现这个系统呢”6编码和单元测试:关键任务是写出正确的容易理解、容易维护的程序模块;7综合测试:关键任务是通过各种类型的测试及相应的调试使软件达到预定的要求;8软件维护:通过各种必要的维护活动使系统持久地满足用户的需要;10、什么是软件生命周期模型有哪些主要模型1生存周期模型:描述软件开发过程中各种活动如何执行的模型;对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心;2主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型;11、可行性研究的任务:用最小的代价在尽可能短的时间内确定问题是否能够解决;技术可行性;经济可行性;操作可行性;法律、社会效益、道德、政治等诸多方面的因素;12、可行性研究过程的步骤:1复查系统的规模和目标2研究目前正在使用的系统3导出新系统的高层逻辑模型4进一步定义问题5导出和评价供选择的解法6推荐行动方针7草拟开发计划8书写文档提交审查13、可行性分析报告的主要内容:项目背景;客户需求;商务前景;市场计划;技术方案;实施周期;财务分析;风险管理;14、数据流图DFD:以图形的方式描述数据在系统中流动和处理的过程;只反映系统必须完成的逻辑功能,是一种功能模型;15、画数据流图应注意的事项:1命名:不能使用缺乏具体含义的名字,加工名应能反映出处理的功能;2画数据流而不是控制流,一般不画物质流;3每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果 ;4编号:子图应编号子图上的所有加工也应编号,子图的编号应与父图的编号相对应;5父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致;6局部数据存储;7注意数据流图的易理解性;16、数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合;内容:数据流;数据流分量即数据元素;数据存储;处理;17、需求分析的任务1确定对系统的综合要求2分析系统的数据要求3导出系统的逻辑模型4修正系统开发计划18、软件设计的目标和任务:根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计、系统结构设计、过程设计、界面设计;19、什么是软件概要设计该阶段的基本任务是什么1把一个软件需求转换为软件表示时,首先设计出软件总的体系结构;称为概要设计或结构设计;2基本任务:①设计软件系统结构②进行数据结构及数据库的设计③编写概要设计的文档④评审;20、总体设计概要设计原理:1模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的功能;2抽象:抽出事物的本质特性而暂时不考虑它们的细节;3逐步求精4信息隐蔽和局部化5模块独立:每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单;21、模块独立程度的衡量标准:耦合和内聚1耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标;内容耦合、公共耦合、控制耦合、标记耦合、数据耦合、无耦合;2内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标;偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚;22、概要设计的启发式准则:1改进软件结构,提高模块独立性2模块规模应该适中3深度、宽度、扇出和扇入都应适当4模块的作用域应该在控制域之内5力争降低模块借口的复杂程度6设计单入口单出口的模块7模块功能应该可以预测23、面向数据流的设计方法:把信息流映射成软件结构;有两种类型:1交换流:根据基本系统模型,信息通常以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界”的形式离开系统;由输入、输出、变换或称处理三部分组成,是一顺序结构;2事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,这类数据流称为事务流;处理T称为事务中心;24、详细设计的基本任务:1为每个模块进行详细的算法设计2为模块内的数据结构进行设计3对数据库进行物理设计4其他设计5编写详细设计说明书6评审25、结构程序设计:1如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的;2结构化程序设计的基本要点:①采用自顶向下、逐步求精的程序设计方法②使用三种基本控制结构构造程序③主程序员组的组织形式;26、选择程序设计语言基本原则:1系统用户的要求2可以使用的编译语言3可以得到的软件工具4工程规模5程序员的知识6软件可移植性要求7软件的应用领域27、为了编制出清晰、紧凑、高效的程序,一般应依次考虑下列原则:1编制易于修改和维护的代码2编制易于测试的代码3必须将编程和编文档的工作统一起来4编程中采用统一的标准和约定,降低程序复杂性5限定每一层的副作用,减少耦合度6尽可能地复用28、软件测试的目标:1测试是为了发现程序中的错误而执行程序的过程2好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案3成功的测试是发现了至今为止尚未发现的错误的测试29、软件测试的准则:1所有测试都应该能追溯到用户需求2应该远在测试开始之前就制定出测试计划3把Pareto原理应用到软件测试中4应该从“小规模”测试开始,并逐步进行“大规模”测试5穷举测试是不可能的6为了达到最佳的测试效果,应该由独立的第三方从事测试工作;30、测试的步骤:1模块测试:保证每个模块作为一个单元能够正确运行,又称为单元测试2子系统测试:集成测试、组装测试、联合测试;重点在于测试模块之间的接口;3系统测试:将经过测试的子系统装配成一个完整的系统来测试;发现设计和编码的错误,验证系统是否满足需求说明所定义的功能及其动态特性;也称为集成测试;4验收测试:有用户参加的系统测试;验证是否满足用户的需要5平行运行:同时运行新旧两个系统,并且对处理的结果进行比较,以确定新系统是否满足相关性能指标;31、非渐增式和渐增式测试方法1非渐增式测试方法:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式测试方法;2渐增式测试方法:把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试;这种每次增加一个模块的方法称为渐增式测试;3非渐增式和渐增式测试方法的优缺点比较:①非渐增式方法要对每个模块编写驱动模块和桩模块,工作量较大;而渐增式方法可以利用部分已测试过的模块作为测试软件;②非渐增式方法发现模块间的接口错误较晚,而渐增式方法则要早一些;③非渐增式方法发现错误后较难定位;而渐增式方法则要容易一些;④非渐增式方法可以并行测试所有模块,可充分利用人力,加快工程进度;⑤渐增式方法接近全真运行环境,需要较多的测试运行时间,但对程序模块的测试较为彻底;32、什么是白盒测试法有哪些覆盖标准试对他们的检错能力进行比较1白盒法测试法把测试对象看作一个打开的盒子,测试人员须了解程序内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致;2白盒法的覆盖标准:语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;路径覆盖3从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准;在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准;33、什么是黑盒测试法采用黑盒技术测试用例有哪几种方法这些方法各有什么特点1黑盒测试法:把被测试对象看成是一相黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求;2采用黑盒技术测试用例的方法有:等价类的划分、边界值分析、错误推测和因果图;①等价类的划分,是将输入数据按有效的或无效的也称合理的或不合理的划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试;这样就把漫无边迹的随机测试改为有针对性的等价类测试,用少量有代表性的例子代替大量测试目的相同的例子,能有效地提高测试效率;但这个方法的缺点是没有注意选择某些高效的、能够发现更多错误的测试用例;②边界值分析法一般与等价类划分结合起来;但它不是从一个等价类中任选一个例子做代表,而是将测试边界情况作为重点目标,选取正好等于、刚刚大于和刚刚小于边界值的测试数据;边界情况是指输入等价类和输入等价类边界上的情况;这种方法可以查出更多的错误,因为在程序中往往在处理边界情况时易发生错误;③错误推测法是在测试程序时,人们根据经验或直觉推测程序中可能存在的错误,从而有针对性地编写检查这些错误的测试用例;④因果图能够有效地检测输入条件的各种组合可能会引起的错误;它的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例;34、软件维护:就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程;软件维护工作分为以下四类:1矫正性维护:目标是识别和矫正功能错误、性能错误和实现错误; 2适应性维护:使软件适应于外界环境的改变而对软件所做的修改工作;3完善性维护:为了扩充软件的功能或改善软件的性能对软件所做的改变;4预防性维护:为了以后更便于维护,或者为了改进可靠性,或者提供更好的基础便于将来提高性能而修改软件;35、决定软件可维护性的因素:可理解性;可测试性;可修改性;可移植性;可重用性;36、提高可维护性的方法1建立明确的软件质量目标和优先级2使用提高软件质量的技术和工具3进行明确的质量保证审查4选择可维护的程序设计语言5改进程序的文档37、软件维护的副作用有哪些1编码副作用;在使用程序设计语言修改源代码时可能引入的错误;2数据副作用;在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件错误;数据副作用是修改软件信息结构导致的结果;但它可以通过详细的设计文档加以控制;3文档副作用;如果对可执行软件的修改没有反映在文档中,就会产生文档副作用;以上根据老师课件和软件工程概论整理38、某厂对部分职工重新分配工作的政策是:年龄在20岁以下者,初中文化程度脱产学习,高中文化程度当电工;20岁至40岁之间,中学文化程度,男性当钳工,女性当车工,大学文化程度都当技术员;年龄在40岁以上者,中学文化程度当材料员,大学文化程度当技术员;请用结构化语言﹑判定表或判定树描述上述问题的加工逻辑;1判定树2判定表3结构化语言:CASE 年龄<20CASE 文化程度初中分配工种脱产学习CASE 文化程度高中分配工种电工ENDCASECASE 年龄<=40.AND.>=20 CASE 文化程度初中.OR.高中 CASE 性别男分配工种钳工CASE 性别女分配工种车工ENDCASE ENDCASECASE 文化程度大学分配工种技术员ENDCASEENDCASECASE 年龄>40CASE 文化程度初中.OR.高中分配工种材料员CASE 文化程度大学分配工种技术员ENDCASEENDCASE39、请使用流程图、PAD图和PDL语言描述下列程序的算法; 1在数据A1~A10中求最大数和次大数;解:如图所示:PDL语言描述:GETa1,a2,...a10 max=a1;max2=a2;FOR i=2 TO 10 IF ai>maxmax2=max;max=ai;ELSEIF ai>max2max2=ai;ENDIFENDIFENDFORPUTmax,max2END2输入三个正整数作为边长,判断该三条边构成的三角形是等边、等腰还是一般三角形;解:如图:PDL 语言描述如下:GETa,b,cIF a+b>c and b+c>a and c+a>b IF a=bIF a=cPUT"等边三角形"ELSEPUT"等腰三角形"ENDIFELSEIFa=cPUT"等腰三角形" ELSEIF b=cPUT"等腰三角形"ELSEPUT"一般三角形"ENDIFENDIFENDIFELSEPUT "这不是一个三角形"ENDIF40、用PAD图描述下面问题的控制结构;有一个表A1、A2、...An,按递增顺序排列;给定一个Key值,在表中用折半法查找;若找到,将表位置i送入x,否则将零送到x,同时将key值插入表中;算法:置初值H=1表头,T=N表尾;置i=H+T/2取整;若Key=Ai,则找到,i送到x;若Key>Ai,则Key在表的后半部分,i+1送入H;若Key<Ai,则Key在表的前半部分,i-1送入T,重复第2步查找直到H>T为止;查不到时,将Ai,...AN移到Ai+1...AN+1,Key值送入Ai中;解:如图所示:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档