软件工程与软件测试基础(第一讲).ppt

上传人:牧羊曲112 文档编号:6027893 上传时间:2023-09-16 格式:PPT 页数:42 大小:276.63KB
返回 下载 相关 举报
软件工程与软件测试基础(第一讲).ppt_第1页
第1页 / 共42页
软件工程与软件测试基础(第一讲).ppt_第2页
第2页 / 共42页
软件工程与软件测试基础(第一讲).ppt_第3页
第3页 / 共42页
软件工程与软件测试基础(第一讲).ppt_第4页
第4页 / 共42页
软件工程与软件测试基础(第一讲).ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《软件工程与软件测试基础(第一讲).ppt》由会员分享,可在线阅读,更多相关《软件工程与软件测试基础(第一讲).ppt(42页珍藏版)》请在三一办公上搜索。

1、软件工程与软件测试基础,主讲人:张伟,课程介绍1/2,讲授内容分为两部分:软件工程基础(简)软件测试基础(重)软件测试基础是后续测试系列课程软件测试提高和软件测试综合应用的基础。,课程介绍2/2,本课程的讲授以理论教学为主,大家要了解和熟悉软件工程的学科意义、原理以及过程等,重点掌握软件测试的基本概念、原理和方法。实践教学:软件工程过程中有多个重要的说明和设计文档,熟悉这些文档对大家将来从事软件开发和测试工作非常用用,本课程将利用实训课讲授如何去设计这些文档,重点是软件测试的相关文档,比如测试计划,测试用例,测试问题报告单,测试报告等等。,课程要求,理论方面:每次课对前一次课讲授的重点内容随机

2、抽取同学进行提问,回答情况与平时成绩挂钩。实践方面:本课程会配带几次实训课,实训内容:练习和设计软件测试相关文档。每次要提交实训文档和报告,实训结果与平时成绩挂钩。,课程安排,本门课视大家学习情况安排四次以上的实训内容,实训课上课地点课前通知课代表。其他课程在多媒体教室讲授。,综合成绩算法,按照学校规定旷课超过学期课程的1/3不得参与期末考试,迟到三次算一次旷课。考勤和平时表现20%+实验20%+期末考试60%,第一部分 软件工程,软件工程在很多本科院校是一门单独的学科,是软件开发工程师,尤其是中、高级软件开发工程师(系统分析师)必备的专业知识。本课程只是抽取软件工程中比较简单的知识给大家讲授

3、下,大家对软件工程的定义、解决的问题、方法以及软件过程有个清楚的了解即可。,软件工程与软件测试的关系,软件工程与软件测试的关系:软件工程顾名思义,它是一个工程,既然是一个工程它就有若干个环节去构建这个软件工程。而软件测试就是这个工程的一个环节,也即软件测试是软件工程的一个组成部分。随着社会对软件质量的重视,软件测试的作用越来越大,它是软件工程里最热也是最有前途的一个部分。关于软件测试的课程介绍,就业现状以及职业发展将在软件测试部分详细说明。,软件工程教材,有志在将来从事软件开发工作的同学可以深入的学习下软件工程,尤其是学习下建模工具的使用,例如rational rose等,相关书籍和知识可在图

4、书馆查阅。其他同学掌握我上课讲授的内容即可。参考教材:软件工程导论(第5版)张海藩软件工程案例教程 韩万江软件工程(第3版)Pfleeger等,软件工程部分 提纲,1、软件的概念2、引入软件工程的原因?2.1软件危机介绍2.2软件危机的具体表现2.3软件危机产生的原因2.4消除的途径3、软件工程3.1软件工程的本质特征3.2软件工程的基本原理,4、软件生命周期4.1软件生命周期每阶段的基本任务4.2软件生命周期5、软件过程,1、什么是软件?,问题:软件=程序?说说你所认为的软件是什么?软件的定义 软件(Software)是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完

5、整集合。也就是说一个开发项目中的编码,数据库数据以及相关的说明文档都属于软件的范畴。,2、为什么要引入软件工程?,为什么要引入软件工程?软件工程这个学科有什么意义?现如今软件应用面越来越广,人们对软件的要求越来越高,因此软件开发的复杂性非常大。软件开发的复杂性大了,就会使软件的调试、修改、升级以及复用困难加大,成本骤增,引起一系列的软件危机。如何去应对软件危机,从而设计出健康、持久、可维护性和可重用性强的系统就是软件工程研究的内容。,硬、软件成本比例的变化,2.1软件危机介绍,软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上

6、,几乎所有软件都不同程度地存在这些问题,而且很多问题我们只能去改善不能完全避免。软件危机包含下述两方面的问题:1、如何开发软件,以满足对软件日益增长的需求 2、如何维护数量不断膨胀的已有软件。,2.2 软件危机具体表现1/3,(1)对软件开发成本和进度的估计常常很不准确。实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。这种现象降低了软件开发组织的信誉。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。(2)用户对“已完成的”软件系统不满意的现象经常发生。软件开发人员常常在对用户要求只有模糊的了解,甚

7、至对所要解决的问题还没有确切认识的情况下,就匆忙着手编写程序。软件开发人员和用户之间的信息交流往往很不充分,“闭门造车”必然导致最终的产品不符合用户的实际需要。,软件危机具体表现2/3,(3)软件产品的质量往往靠不住。软件可靠性和质量保证的确切的定量概念刚刚出现不久,软件质量保证技术(审查、复审和测试)还没有坚持不懈地应用到软件开发的全过程中,这些都导致软件产品发生质量问题。(4)软件常常是不可维护的。很多程序中的错误是非常难改正的,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需要在原有程序中增加一些新的功能(5)软件通常没有适当的文档资料。缺乏必要的文档资料或者文档资料不合格,必

8、然给软件开发和维护带来许多严重的困难和问题。,软件危机具体表现3/3,(6)软件成本在计算机系统总成本中所占的比例逐年上升。硬件成本逐年下降,然而软件开发需要大量人力,软件成本随着需求增大以及软件规模和数量的不断扩大而持续上升。美国在1985年软件成本大约已占计算机系统总成本的90%。(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。,产生软件危机的原因,在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关(客观原因),另一方面软件开发与维护的方法不正确也有关(主观原因)。一、客观

9、原因1、软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。软件缺乏“可见性”。开发进展难以衡量,软件质量难以评价。2、软件维护通常意味着改正或修改原来的设计,这就在客观上使得软件较难维护。3、如何保证每个人完成的工作合在一起确实能构成一个高质量的大型软件系统,更是一个极端复杂困难的问题,必须有严格而科学的管理。,2.3产生软件危机的原因1/2,二、主观原因 目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念,这可能是使软件问题发展成软件危机的主要原因。1、忽视需求分析只重视编码与运行。1)编写程序所需的工作量只占软件开发全部工作量的10%20%。2)在后期引入一个变动比在早期引入

10、相同变动所需付出的代价高23个数量级。如图所示。,引入同一变动付出的代价随时间变化的趋势,产生软件危机的原因2/2,2、忽视文档只重视程序 必须认识到一个软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。必须清除只重视程序而忽视软件配置其余成分的错误观念。3、轻视维护是一个最大的错误。统计数据表明,实际上用于软件维护的费用占软件总费用的55%70%。,2.4解决软件危机的途径,1、技术措施:将软件作为一个工程去开发。在这个工程里分成多个过程,包括需求分析和确定,程序设计,编码,测试,使用和维护等过程。每个过程都规定有必须的文档、方法、工具等说明。2、管理组织措施 从技术

11、和管理两方面去研究如何更好地开发和维护计算机软件正是软件工程这么学科要研究的内容。,3、软件工程-软件工程介绍,软件工程=软件开发+工程 工程,想象为:一条流水线 采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。,3.1软件工程具有的本质特征1/4,1.软件工程关注于大型程序的构造 通常把一个人在较短时间内写出的程序称为小型程序,而把多人合作用时半年以上才写出的程序称为大型程序。传统的程序设计技术和工具

12、是支持小型程序设计的,不能简单地把这些技术和工具用于开发大型程序。2.软件工程的中心课题是控制复杂性 通常软件所解决的问题十分复杂,人们把问题分解,使得分解出的每个部分是可理解的,而且各部分之间保持简单的通信关系。,软件工程具有的本质特征2/4,3.软件经常变化绝大多数软件都模拟了现实世界的某一部分。现实世界在不断变化,软件为了不被很快淘汰,必须随着所模拟的现实世界一起变化。因此,在软件系统交付使用后仍然需要耗费成本,而且在开发过程中必须考虑软件将来可能的变化。4.开发软件的效率非常重要 目前,社会对新应用系统的需求超过了人力资源所能提供的限度,软件供不应求的现象日益严重。因此,软件工程的一个

13、重要课题就是,寻求开发与维护软件的更好更有效的方法和工具。,软件工程具有的本质特征3/4,5.和谐地合作是开发软件的关键 软件处理的问题十分庞大,必须多人协同工作才能解决这类问题。为了有效地合作,每个人必须严格地按规定行事。为了迫使大家遵守规定,应该运用标准和规程。6.软件必须有效地支持它的用户 开发软件的目的是支持用户的工作。(1)必须多与用户交流,以确定适当的功能需求、可用性要求及其他质量要求(例如,可靠性、响应时间等)。(2)软件开发不仅应该提交软件产品,而且应该写出用户手册和培训材料。(3)还必须注意建立使用新系统的环境。,软件工程具有的本质特征4/4,7.在软件工程领域中是由具有一种

14、文化背景的人替具有另一种文化背景的人 1)缺乏应用领域的相关知识,是软件开发项目出现问题的常见原因。2)软件工程师不仅缺乏应用领域的实际知识,他们还缺乏该领域的文化知识。,3.2软件工程的基本原理1/4,软件工程有7条基本原理,这7条原理是确保软件产品质量和软件开发效率的最小集合。1.用分阶段的生命周期计划严格管理 将软件生命周期划分为若干个阶段,并相应地制定出切实可行的计划,然后不同层次的人员必须严格按照计划对软件的开发与维护工作进行管理。不能受到客户或上级人员的影响而擅自背离预定计划。,软件工程的基本原理2/4,2.坚持进行阶段评审 每阶段进行严格评审,尽早发现错误和问题。其原因有二,第一

15、,大部分错误是在编码之前造成的,例如,据统计,设计错误占软件错误的63%,编码错误仅占37%;第二,错误发现与改正得越晚,所需付出的代价也越高。3.实行严格的产品控制 软件开发过程中,需求的变更是难免的。当需求变更时,必须保证软件各个配置成分的一致性,必须实践严格的产品变更审查和基线配置管理,确保变更的正确性和有效性。,软件工程的基本原理3/4,4.采用现代程序设计技术 采用先进的软件开发与维护技术,例如新的程序设计语言。实践表明,采用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量。5.明确责任,结果应能清楚的审查 根据软件开发项目的总目标、任务分解结构和完成期限,规定

16、各组织的责任和产品标准,使得工作结果能够得到清楚的审查。,软件工程的基本原理4/4,6.用人少而精 参与人员应当少而精。人员素质高能大大提高软件开发的生产率;人员数量少,可以降低因为交流情况讨论问题而造成的通信开销。7.不断改进开发进程 必须不断地灵活改进软件工程,保证软件开发与维护的过程能赶上时代前进的步伐。,4、软件生命周期1/2,如同其他事物一样,软件也有一个孕育、诞生、成长、成熟和衰亡的生存过程,我们称这个过程为软件生存期,也叫软件生命周期。把整个软件生存周期划分为若干个阶段,使每个阶段有明确的任务,使规模大,结构和管理复杂的软件开发变得容易控制和管理。,软件生命周期2/2,按照“计算

17、机软件开发规范”,把软件生存周期分成7个阶段:1、问题定义与可行性研究 2、需求分析 3、概要设计(总体设计)4、详细设计 5、编码和单元测试 6、系统与确认测试 7、使用与维护 规范中对每个阶段,都明确规定了该阶段的任务、实施方法、实施步骤、实施要求和完成标志。,软件生命周期示意图,概要设计,问题定义与可行性分析,需求分析,详细设计,编码与单元测试,集成与系统测试,验收测试,使用与维护,1.问题定义与可行性研究 这个阶段要回答的关键问题是:“到底要解决什么问题?在成本和时间的限制条件下能否解决问题?是否值得做?”问题定义:通过与客户交流,系统分析员扼要的写出问题的性质、工程目标以及工程规模的

18、书面报告,并得到客户的认同。可行性研究:不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解决,是否有可行的解决办法,并对可利用的资源、成本、利润、开发的进度进行估算。最终写出“可行性研究报告”提交管理部门审查。,4.1软件生命周期每个阶段的基本任务1/6,2.需求分析 这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么?”,主要是确定目标系统必须具备哪些功能。系统分析师需要与用户充分的交流得到经过用户确认的系统逻辑模型。系统逻辑模型通常是用数据流图、数据字典和简单的算法去表示的。此阶段确定的系统逻辑模型是后期程序设计、编码实现、测试等环节的依

19、据,因此必须用正式文档准确地记录对目标系统的需求,这份文档通常称为“需求规格说明书”。,软件生命周期每个阶段的基本任务2/6,3.总体设计又称为概要设计这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统?”根据上一阶段已确定的需求制定客户满意的设计方案,并依照此方案设计软件的体系结构,也就是确定程序由哪些模块组成以及模块间的关系。本阶段生成“概要设计说明书”。4.详细设计又称模块设计 总体设计阶段以抽象概括的方式提出了解决问题的办法。详细设计阶段的任务就是把解法具体化,也就是回答下面这个关键问题:“应该怎具体地实现这个系统呢?”这个阶段是详细地设计每个模块,确定实现模块功能所需要的

20、算法和数据结构。本阶段生成“详细设计说明书”,软件生命周期每个阶段的基本任务3/6,5.编码和单元测试 这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。程序员选取一种适当程序设计语言,把详细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。6.综合测试 这个阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。最基本的测试是集成测试、系统测试和验收测试。,软件生命周期每个阶段的基本任务4/6,关于软件测试的知识会在第二部分详细讲授,这部分知识也是我们本课程的重点,在这里为了大家更好的了解程序生命周期过程,我简单介绍下几种测试的定义。集成测试:

21、把若干个程序模块集成在一起测试。系统测试:将软件,硬件以及网络等其他因素结合起来测试,以测系统与用户需求说明是否吻合。验收测试:按照合同和规格说明书的规定,由用户或者用户信任的第三方机构对目标系统进行验收。应该用正式的文档资料把测试计划、测试用例、测试问题报告单、测试报告以及实际测试结果保存下来,作为软件配置的一个组成部分。,软件生命周期每个阶段的基本任务5/6,7.软件维护 维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。通常有4类维护活动:1、改正性维护,也就是诊断和改正在使用过程中发现的软件错误;2、适应性维护,即修改软件以适应环境的变化;3、完善性维护,即根据用

22、户的要求改进或扩充软件使它更完善;4、预防性维护,即修改软件为将来的维护活动预先做准备。每一项维护活动都应该准确地记录下来,作为正式的文档资料加以保存。,软件生命周期每个阶段的基本任务6/6,4.2几种典型的文档总结,1、可行性报告2、软件需求规格说明书3、系统概要设计说明书4、数据库设计说明书5、系统详细设计说明书6、用户操作手册7、软件测试计划8、软件测试报告9、软件修改和维护记录 除了上述文档,在项目开发中还有很多辅助文档,而且不同的公司,不同的软件过程模型具有不同的辅助文档集,在这里大家只需要理解上述几个典型的文档的作用以及所属的阶段即可。几个文档的模版我也提供给大家。,课后复习,了解软件危机的概念深刻理解软件危机的具体表现和产生的原因。了解软件工程具有的本质特征掌握软件工程的7个基本原理熟练掌握软件生命周期有哪几个阶段,每个阶段的任务、生成的文档。记住几种常见典型文档的名称作用了解软件工程这门学科的研究内容,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号