




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程及软件开发应用,第1章软件工程概述,1.1软件与软件危机1.1.1计算机软件概念1.1.2计算机软件的发展1.1.3软件危机1.2软件工程1.2.1软件工程定义1.2.2软件工程的内容1.2.3软件工程基本原理1.2.4软件开发方法1.3软件生命周期1.3.1软件生命周期的划分1.3.2各阶段的基本任务,第1章软件工程概述,1.4软件开发模型1.4.1瀑布模型1.4.2快速原型模型1.4.3增量模型1.4.4螺旋模型1.4.5喷泉模型1.5应用实例1.6小结习题,第1章软件工程概述,软件工程是20世纪60年代末,为了克服“软件危机”而出现的一门研究软件开发与维护的工程学科。本章主要介绍了软件工程的基本知识,包括软件的概念、软件危机,软件工程的内容、基本原理以及软件开发的方法和模型。,1.1软件与软件危机,1.1.1计算机软件概念一.硬件与软件的区别、联系:1.区别:计算机硬件是计算机系统的物理部件。计算机软件是计算机系统中的逻辑部件。2.联系:计算机硬件和软件又是相互联系,相互依赖,缺一不可。“裸机”的概念计算机系统只有配备了硬件以及控制和管理硬件的软件,才能发挥作用。,1.1.1计算机软件概念,二.软件的定义、特点1.定义:软件是程序、数据和相关文档的完整集合。程序是按照设计文档的功能和性能要求所编写的指令序列。数据是能使程序正常操纵信息的数据结构。文档是与程序开发、管理、维护和使用有关的图文材料。,1.1.1计算机软件概念,二.软件的定义、特点2.特点:软件是一种逻辑实体,具有抽象性。记录在介质上,看不到软件的形态,它具有功能和性能。软件的生产与硬件不同。将知识和技术转化为信息的一种产品,可以复制。软件规模庞大,维护比较困难。软件成本昂贵。,1.1.2计算机软件的发展,自从1946年第一台计算机ENIAC诞生以来,计算机系统经历了四个不同的发展阶段,其中计算机软件系统也经历了不同的变化。1.第1阶段(20世纪50到60年代)通用硬件相当普遍,用汇编语言取代机器语言,程序是为每个具体应用而专门编写的。特点:规模较小的程序,编写者和使用者往往是同一个(或同一组)人。只有程序清单,没有其他文档资料保存下来。,1.1.2计算机软件的发展,2.第2阶段:(20世纪60年代中期到70年代中期)特征:“软件作坊”,使用产品软件。使用汇编语言和面向过程的程序设计语言。出现了多用户系统、数据库、实时监控系统等软件产品。但是,“软件作坊”基本上仍然沿用早期形成的个体化软件开发方法。碰到问题:一旦软件交付给用户使用后,会出现这样那样的错误;当用户有了新的需求时,必须相应地修改程序;当硬件或操作系统更新时,通常需要修改程序以适应新的环境。出现了“软件危机”!,1.1.2计算机软件的发展,3.第3阶段(20世纪70年代中期到90年代)软件开发技术不断改进,开发软件时开始遵循软件工程的思想,并采用结构化技术进行软件的开发。4.第4阶段(20世纪90年代至今)软件产业迅猛发展,计算机成了人们工作、学习和获取信息时不可缺少的工具。出现了面向对象的技术和快速原型法技术,并在软件开发中得到了广泛应用,一些先进的软件系统,如:专家系统、神经网络、通信和网络软件等不断出现并得到应用。,1.1.3软件危机,一.定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。概括地说,软件危机包含下述两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。,1.1.3软件危机,软件危机的具体表现:1对软件开发成本和进度的估计常常很不准确。没有制定好软件开发计划和进度,估计的成本和预期进度不准确。2用户对“已完成的”软件系统不满意的现象经常发生。对用户需求没有深入了解,没有和用户进行充分信息交流,就匆忙设计、编写程序。,1.1.3软件危机,软件危机的具体表现:3软件产品的质量往往靠不住。软件质量保证技术(审查、复审和测试)还没有坚持不懈地应用到软件开发的全过程中。4软件常常是不可维护的。很多程序中的错误很难改正,为了适应新的硬件环境,要想根据用户的需要在原有程序中增加一些新的功能也很难。人们仍然在重复开发类似的或基本类似的软件。,1.1.3软件危机,软件危机的具体表现:5软件通常没有适当的文档资料。计算机软件包括程序和文档资料。文档资料应该是在软件开发过程中产生出来的。对于软件维护人员而言,这些文档资料可以给软件开发和维护带来许多的便利。6软件成本在计算机系统总成本中所占的比例逐年上升。软件开发需要大量人力,软件成本随着通货膨胀以及软件规模和数量的不断扩大而持续上升。7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。,1.1.3软件危机,1.二.产生软件危机的原因:1.与软件本身的特点有关。软件本身具有的特点是:它与硬件不同,它是计算机系统中的逻辑部件而不是物理部件。它又与一般程序不同,规模庞大。2.和软件开发与维护的方法不正确有关。在软件开发和维护过程中采用的错误方法包括忽视软件需求分析的重要性和轻视软件维护,认为软件开发就是编写程序再运行就可以了。.3软件危机,1.2软件工程,121软件工程定义一.定义软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把正确的管理技术和技术方法结合起来,开发出高质量的软件并有效地维护它,这就是软件工程。,1.2.1软件工程定义,其他的软件工程定义:11968年在第一届NATO会议的早期定义:“软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。”21983年IEEE的软件工程定义:“软件工程是开发、运行、维护和修复软件的系统方法。”31993年IEEE进一步给出的更全面更具体的定义:“软件工程是研究如何以系统化的、规范的、可度量的方法应用于软件开发、运行和维护过程,也就是把工程应用于软件上。”,1.2.2软件工程内容,软件工程的内容:1.软件开发方法2.软件开发模型3.软件工具软件开发方法是在软件开发过程中所采用的技术,如结构化技术和面向对象技术。软件开发模型是描述软件开发过程中各种活动如何执行的模型,如瀑布模型、渐增模型和螺旋模型。软件工具是在软件开发过程中采用的工具,如建模工具UML和RationalRose。,1.2.2软件工程内容,软件工程方法学包含3个要素:方法、工具和过程。方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。,1.2.3软件工程基本原理,自从1968年NATO会议上正式提出并使用了“软件工程”这个术语以来,研究软件工程的专家学者们陆续提出了100多条关于软件工程的准则或“信条”。著名的软件工程专家B.W.Boehm综合这些学者们的意见并总结了TRW公司多年开发软件的经验,于1983年提出了软件工程的7条基本原理。,1.2.3软件工程基本原理,软件工程的基本原理:1用分阶段的生命周期计划严格管理。把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。2坚持进行阶段评审。在每个阶段都进行严格的评审,若上一阶段评审通不过,就不能进入下一阶段的工作。错误发现与改正得越早,所付出的代价就越低。3实行严格的产品控制。在软件开发过程中,不应随意的改变需求。如要改变需求,为了保持软件各个配置成分的一致性,必须按照严格的规程进行评审,获得批准以后才能实施修改。,1.2.3软件工程基本原理,软件工程的基本原理:4采用现代程序设计技术。现代程序设计技术就是结构化技术,包括结构化分析、结构化设计、结构化编码和结构化测试。5结果应能清楚地审查。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。,1.2.3软件工程基本原理,软件工程的基本原理:6开发小组的人员应该少而精。开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。开发组织不在人多,在于每个人的技能适合要求。同时用人少而精,可减少沟通路径,提高生产率。7承认不断改进软件工程实践的必要性。要积极主动地采纳新的软件技术,注意不断总结经验,改进开发的组织和过程,有效地通过过程质量的改进提高软件产品的质量。还有一条基本原理在软件的开发和管理中特别重要,补充进去,作为软件工程的第8条基本原理。,1.2.3软件工程基本原理,软件工程的基本原理:8二八定律对软件项目进度和工作量的估计:一般人主观上认为已经完成了80%,但实际上只完成了20%。对程序中存在问题的估计:80%的问题存在于20%的程序之中。对模块功能的估计:20%的模块实现了80%的功能。对人力资源的估计:20%的人,解决了软件中80%的问题。对投入资金的估计:企业信息系统中80%的问题,可以用20%的资金来解决。,1.2.4软件开发方法,通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。1传统的方法学(生命周期方法学)定义:采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。它把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。基本特点:在分析设计中强调“自顶向下,逐步求精”,在编程实现时强调程序的“单入口,单出口”。,1.2.4软件开发方法,2面向对象方法学定义:是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。它包括面向对象分析、面向对象设计、面向对象实现和面向对象管理。基本特点:将对象的属性和方法封装起来,形成信息系统的基本执行单位,再利用对象的继承特征,由基本执行单位派生出其它执行单位,从而产生许多新的对象。,1.2.4软件开发方法,3开发方法的新发展1)软件复用和基于构件的软件开发软件复用是将已有的软件成分用于构造新的软件系统的过程。包括程序的复用,以及对软件生产过程中任何活动所产生的劳动成果的复用。,1.2.4软件开发方法,3开发方法的新发展1)软件复用和基于构件的软件开发基于构件的软件开发是一种软件开发的新范型,它是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。典型的构件技术规范有:EJB,它是建立在以J2EE平台基础上的企业级构件体系结构模型。CORBA是对象管理组织制定的公共对象请求代理体系规范。COM(ComponentObjectModel)是构件对象模型,Windows2000系统就采用了COM架构。,1.2.4软件开发方法,3开发方法的新发展2)敏捷开发方法敏捷软件开发方法其实不是一个具体的过程,而是一个涵盖性术语。用于概括那些应需而生的具有类似价值观的软件开发方法,这些方法都具有以人为核心、循环迭代和响应变化的特点。代表性的方法有:极限编程、特征驱动软件开发、动态系统开发和自适应软件开发。敏捷方法对新技术或新工具并不强调,而是合理利用现有的成熟技术和结合自己的开发实践进行软件开发。,1.3软件生命周期,131软件生命周期的划分一.定义软件生命周期是从时间的角度出发,从软件目标的提出、定义、开发和维护,直至最终被丢弃的整个过程。二.阶段划分一般来说,软件的生命周期由软件定义、软件开发和软件维护3个时期组成,每个时期又进一步划分成若干个阶段。,1.3软件生命周期,131软件生命周期的划分二.阶段划分1.软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。2.软件开发时期由4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。3.软件维护时期有软件维护阶段。软件生命周期包括3个时期和8个阶段。,1.3.2各阶段的基本任务,1问题定义这个阶段必须回答的关键问题是:“要解决的问题是什么?”提出关于问题性质、工程目标和工程规模的书面报告。2可行性研究这个阶段要回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?”若有,则要提出在技术、经济和社会几方面可行的解决方案,并提交可行性研究报告和项目开发计划。若没有,则终止此项目。,1.3.2各阶段的基本任务,3需求分析这个阶段的任务是确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。通常用数据流图、数据字典等图形工具表示系统的逻辑模型。4总体设计(概要设计)这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统?”其中包括系统设计和结构设计。,1.3.2各阶段的基本任务,5详细设计详细设计阶段要回答的关键问题是:“应该怎样具体地实现这个系统呢?”这个阶段的任务是确定实现系统中每个模块功能所需要的算法和数据结构,并设计出程序的详细规格说明。最后提交详细设计说明书。6编码与单元测试程序员选取一种程序设计语言,把详细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。最后提交源程序清单。,1.3.2各阶段的基本任务,7综合测试这个阶段的关键任务是通过各种类型的测试及相应的调试使软件达到预定的要求,保证软件的质量。最基本的测试是集成测试和验收测试。8软件维护关键任务是通过各种必要的维护活动使系统持久地满足用户的需要。通常有4类维护活动:改正性维护,适应性维护,完善性维护,预防性维护。文档是维护报告。,1.4软件开发模型,定义:软件开发模型是软件工程思想的具体化,是跨越软件生命周期的系统开发、运行、维护所实施的全部活动和任务的过程框架。常用的软件开发模型有瀑布模型、快速原型模型、增量模型、螺旋模型和喷泉模型。,1.4软件开发模型,141瀑布模型一.定义:(传统的软件开发模型)按照传统的生命周期方法学开发软件,从问题定义开始逐一按生命周期各阶段顺序进行。它包括问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试维护阶段。瀑布模型规定了由前至后、相互衔接的固定次序,如同瀑布流水,逐级下落。如图1-1所示。,1.4.1瀑布模型,图1-1瀑布模型,1.4.1瀑布模型,二.特点:1阶段间具有顺序性和依赖性必须等前一阶段的工作完成之后,才能开始后一阶段的工作,前一阶段的输出文档就是后一阶段的输入文档。2推迟实现的观点前面阶段的工作没做或做得不扎实,过早地考虑进行程序实现,往往导致大量返工,有时甚至发生无法弥补的问题,带来灾难性后果。,1.4.1瀑布模型,二.特点:3质量保证的观点为了保证所开发软件的质量,在瀑布模型的每个阶段都应做到:每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。及时审查是保证软件质量,降低软件成本的重要措施。,1.4.2快速原型模型,一.基本思想:基本思想是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用一旦用户认为这个原型系统确实能完成他们所需要的工作,开发人员便可以此原性系统书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。,1.4.2快速原型模型,二.分类(3类)1探索型原型其原型模型是把原型用于开发的需求分析阶段,目的是要弄清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发者对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求。,1.4.2快速原型模型,二.分类:2实验型原型主要用于设计阶段,考核实现方案是否合适,能否实现。对于一个大型系统,若对设计方案心中没有把握时,可通过这种原型来证实设计方案的正确性。3演化型原型主要用于及早向用户提交一个原型系统,该原型系统包含系统的框架,或包含系统的主要功能,在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统。它将原型的思想扩展到软件开发的全过程。,1.4.3增量模型,瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件。,1.4.3增量模型,一.定义(渐增模型)增量模型是在项目的开发过程中以一系列的增量方式开发系统。增量方式包括增量开发和增量提交。增量开发是指在项目开发周期内,以一定的时间间隔开发部分工作软件;增量提交是指在项目开发周期内,以一定的时间间隔增量方式向用户提交工作软件及相应文档。增量开发和增量提交可以同时使用,也可单独使用。,1.4.3增量模型,二.分类分类有:增量构造模型和演化提交模型。1增量构造模型在该模型中,需求分析阶段和设计阶段都是按瀑布模型的整体方式开发,但是编码阶段和测试阶段是按增量方式开发。在这种模型的开发中,用户可以及早看到部分软件功能,及早发现问题,以便在开发其它软件功能时及时解决问题。,1.4.3增量模型,二.分类2演化提交模型在该模型(如图1-2所示)中,项目开发的各个阶段都是增量方式。先对某部分功能进行需求分析,然后顺序进行设计、编码和测试,把该功能的软件交付给用户,再对另一部分功能进行开发,提交用户直至所有功能全部增量开发完毕为止。该模型是增量开发的极端形式,它不仅是增量开发也是增量提交,用户将最早收到部分工作软件,能及早发现问题,使修改扩充更容易了。,1.4.3增量模型,增量n交付,图1-2增量模型,1.4.4螺旋模型,螺旋模型将瀑布模型与增量模型结合起来,不仅汇聚了两种模型的优点,而且还增加了风险分析,弥补了这两种模型的不足。一.定义:螺旋模型是一种风险驱动的模型。在软件开发中,有各种各样的风险,对于不同的软件项目,其开发风险有大有小。在制定项目开发计划时,分析员要明确项目的需求是什么,需要多少资源,如何安排开发进度等一系列问题。,1.4.4螺旋模型,二.螺旋周期:螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合。每个螺旋周期可分为4个工作步骤。制定计划,即确定目标,选定实施方案,明确开发限制条件;风险分析,即分析所选方案,识别风险,通过原型消除风险;开发实施,即实施软件开发;用户评估,即评价开发工作,提出修改意见,建立下一个周期的计划。,1.4.4螺旋模型,图1-3螺旋模型,1.4.4螺旋模型,1确定目标、方案和限制条件确定软件产品各部分的目标,如性能、功能和适应变化的能力等;确定软件产品各部分实现的各种方案,选择如A设计、B设计、软件重用和购买等;确定不同方案的限制条件,如成本、规模、接口调度、资源分析和时间表安排等。2评估方案、标识风险和解决风险对各个不同实现方案进行评估,对出现的不确定因素进行风险分析,提出解决风险的策略,建立相应的原型。若原型是可运行的、健壮的,则可作为下一步产品演化的基础。,1.4.4螺旋模型,3开发确认产品若以前的原型已解决了所有性能和用户接口风险,而且占主要位置的是程序开发和接口控制风险,那么接下来的应是采用瀑布模型的方法,进行用户需求分析、软件设计和软件实现等。同时要对其作适当修改,以适应增量开发。4计划下一周期工作对下一周期的软件需求、软件设计和软件实现进行计划;对部分产品进行增量开发;或者是由部分组织和个人开发软件的各个组成部分。可设想有一系列平行的螺旋循环,每一个螺旋循环对应一个组成部分,好像在图中加入第三维,即加若干重叠的螺旋平面,不同的螺旋平面对应于不同的软件组成部分,以有分别演化。,1.4.5喷泉模型,一.定义喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,主要适合于面向对象的开发方法。喷泉模型克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,使开发过程具有迭代性和无间隙性。迭代性是指系统某些部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统。无间隙性是指在分析、设计和实现等开发活动之间不存在明显的边界。喷泉模型如图1-4所示。,1.4.5喷泉模型,二.特点:喷泉模型规定软件开发过程有4个阶段,即分析、系统设计、软件设计和软件实现。喷泉模型的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 去年江西省会考数学试卷
- 七宝实验小学数学试卷
- 青岛李沧区初三数学试卷
- 宁波鄞州七下数学试卷
- 宁乡市中考数学试卷
- 2024年闵行浦锦街道招聘公益性岗位辅助人员笔试真题
- 2025年西藏自治区公务员考试真题
- 轻工中学初三数学试卷
- 宁波历年中考数学试卷
- 内初考试数学试卷
- 膀胱镜检查记录
- 2021年西安陕鼓动力股份有限公司校园招聘笔试试题及答案解析
- 沈阳终止解除劳动合同证明书(三联)
- 化工装置静设备基本知识
- 电脑节能环保证书
- 江西师范大学研究生院非事业编制聘用人员公开招聘1人(专业学位培养办公室助理)(必考题)模拟卷
- 2021社会保险法知识竞赛试题库及答案
- 罐头食品加工工艺课件
- 《排课高手》用户手册
- 变压器套管课件
- 血液透析管路及透析器安装操作评分标准
评论
0/150
提交评论