初识软件工程.pptx

初识软件工程.pptx

ID:83584599

大小:2.10 MB

页数:67页

时间:2024-09-01

上传者:xinshengwencai
初识软件工程.pptx_第1页
初识软件工程.pptx_第2页
初识软件工程.pptx_第3页
初识软件工程.pptx_第4页
初识软件工程.pptx_第5页
初识软件工程.pptx_第6页
初识软件工程.pptx_第7页
初识软件工程.pptx_第8页
初识软件工程.pptx_第9页
初识软件工程.pptx_第10页
资源描述:

《初识软件工程.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

软件工程 软件工程教学安排讲课学时:30实验:30考试:120分钟作业:3次实验:6次,并上缴实验报告。成绩:期末考试70%,实验20%,作业10% 教材和参考书教材:实用软件工程与实训杜文洁主编清华大学出版社主要参考书:张海藩,软件工程导论。第4版。北京:清华大学出版社,2003梅宏译.RogerSPressman著.软件工程:实践者的研究方法.第5版.北京:机械工业出版社,2002邵维忠等译.GradyBooch,JamesRaumbaugh,IvarJacobson著.UML用户指南(第2版).北京:机械工业出版社,2001徐家等译.[美]MartinFowlerKendallScott著.UML精粹(第2版)标准对象建模语言简明指南》.北京:清华大学出版社,2000 第1章初识软件工程4学时 引言建一个茅草屋的过程建一个别墅的过程写一个helloworld程序开发一个图书馆图书信息管理软件过程 简陋的小屋—太简单!不要设计 新农村别墅造型图—复杂!需要设计了 别墅的设计—设计图纸、施工图纸 设计和施工说明 其他管理性文件项目计划书施工质量计划书建设标准和规范施工手册…… 典型helloworld程序—太简单!不要设计#includeintmain() { printf(“helloworld!”);//输出helloworld!return0; } 图书馆图书信息管理软件—复杂!需要设计 图书馆信息管理系统--需求分析 图书馆信息管理系统--功能设计 图书馆信息管理系统--物理模型设计 图书馆信息管理系统—部分逻辑模型设计 图书馆信息管理系统--数据设计--过程设计 图书馆信息管理系统--界面设计 点评:软件生产同其他行业,例如建筑行业一样需要工程化、规模化、自动化、标准化。软件生产过程中也有中间环节(设计物理模型、逻辑模型、界面、数据、过程等等),也可以随时进行质量检查。软件生产中也需要有高效的工具。软件生产人员也可以细分为:分析员、设计员、程序员、测试员、操作员、维护人员等等。软件生产低水平的手工作坊不能适应当今的大规模软件开发需求……怎么办?软件工程化开发与维护! 主要内容1)软件的特点2)软件危机的现象3)软件工程定义及其概念4)软件工程发展简史5)软件工程的7条基本原理6)主流的软件工程方法7)软件生命周期模型掌握理解掌握了解理解理解理解要求 1.1软件与软件危机1.1.1软件定义1983年,IEEE(国际电气与电子工程协会)为软件下的定义是:计算机程序、方法、规则和相关的文档资料以及在计算机上运行时所必需的数据。对软件比较公认的解释:软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。记住软件=程序+数据+文档软件≠程序 1.1软件与软件危机1.1.2软件的特点:软件的质量是开发出来的,不是“制造”出来的软件可能会被“废弃”,但不会被“用坏”过去的软件大多是“定制”,而不是“装配”的。P2 1.1.2软件的特点(续)软件生产至今尚未摆脱手工方式,软件开发的手工行为造就了一个致命的问题,就是为应用“量身订做”软件。其他工程领域有产品标准,所有生产厂家按照标准生产产品。例如,不管哪个厂家生产的灯泡,只要瓦数、电压、电流、接口几个指标符合要求,用户买来装上就可以使用。而长期以来,软件给人的感觉是修改几条指令很简单,客户总是强调软件要适应自己的业务需求。因此,软件产品大多是为客户“订做”的,通用性差。软件涉及各行各业的知识,这对软件工程师提出了很高要求。软件不仅是一种在市场上推销的工业产品,也是与文学艺术作品相似的精神作品。与体力劳动相比,精神活动过程的特点是“不可见性”,这大大增加了组织管理上的困难。 社会对软件的要求用户的需求更高、涉及的领域更广软件运行环境更加庞大软件更新换代更加频繁 1.1.3软件危机--软件生产的现状P3“已完成”的软件不满足用户的需求软件产品的质量没有保证。开发进度不能保障,交付时间一再拖延。开发成本超出预算。软件没有适当的文档危机定义:计算机软件开发和维护过程中所遇到的一系列严重问题。 需求不满足哈药“城门失火”2000年,哈尔滨医药集决定上ERP项目,参与软件争夺的两个主要对手是Oracle与利玛。一开始两家在ERP软件上打得难解难分,一年之后,Oracle击败利玛,哈药决定选择标致巨额投入搁浅MRPII项目的设备,目标是实现全公司订单、生产、库存、销售、人事、财务等的统一管理,以提高公司运行效益,增进企业经济效益。许继项目被迫暂停1998年初,河南许继集团采用Symix公司(现更返回 软件质量案例美国阿波罗8号太空飞船的一个软件错误,造成了存储器部分信息丢失;而阿波罗14号在飞行的10天中,出现了18个软件错误。返回 产生软件危机的原因软件维护费用急剧上升,直接威胁计算机应用的扩大软件生产技术进步缓慢,是加速这一软件危机的重要原因 1.2软件行业的出路?--软件工程1)1993IEEE软件工程定义:P6软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,②对①中所选方法的研究。注意:软件工程研究所依据的基础理论:数学、计算机科学、经济学、工程学、管理学和心理学等学科。其中数学和计算机科学用于构造模型、分析算法;工程学用于评估成本、制定规范和标准;管理学和心理学用于进度、资源、环境、质量、成本等的分析和管理。 2)软件工程研究的主要内容软件开发技术方面:研究软件开发方法、软件开发过程、软件开发工具和环境。软件管理方面:主要研究软件管理学、软件经济学、软件心理学。 3)软件工程层次化(补充) 4)规范化和文档化(补充)规范化:使众多的开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式—关注国标、行标。文档化:把软件的设计思想、设计过程和实现过程完整地记录下来,便于各类相关人员交流和沟通;使软件开发过程由不可见变为可见,便于管理者对软件生产进度和开发过程进行管理;是验收、质量检测的标准和依据。 5)软件工程的目标(补充)软件工程旨在开发满足用户需要、及时交付、不超过预算和无故障的软件,其主要目标如下:实现预期的软件功能,达到较好的软件性能,满足用户的需求。增强软件过程可见性和可控性,保证软件的质量。提高软件的可维护性,降低维护费用。提高软件开发生产率,及时交付使用。合理预算开发成本,付出较低的开发费用。 软件工程7条基本原理(补充)原理1、用分阶段的生命周期计划严格管理在软件开发与维护的漫长生命周期中,需要完成许多性质各异的工作,这条基本原理意味着,应该把软件生命周期划分成若干阶段,并相应地制定出切实可行的计划,按照计划对软件的开发与维护工作进行控制。 原理2、坚持进行阶段评审。软件的质量保证工作不能等到编码阶段结束之后再进行。经过大量的统计数据表明,大部分错误是在编码之前造成的,其中,设计错误约占软件错误的63%,编码错误占37%。在前期改正错误所需要的可能只是橡皮和铅笔,而在交付后改正错误需要的工作就太多了:查找出错的代码、重新组织程序结构和数据结构、测试、修改文档。也就是说,错误发现与改正的越晚,所需付出的代价也越高。因此,在每个阶段都应该进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。软件工程核心--7条基本原理 原理3、实行严格的产品控制基准配置又称基线配置,它们是经过阶段评审后的软件配置成份。基准配置管理的思想是:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审和控制,获得批准以后才能实施修改。目的是当需求变动时,其它各阶段的文档或代码随之相应变动,以保证软件的一致性。软件工程核心--7条基本原理 原理4、采用现代程序设计技术自从提出软件工程概念后,人们一直把主要精力用于研究各种新的程序设计技术。60年代末提出了结构化程序设计技术,以后又进一步发展出结构化分析与设计技术、面向对象的分析和设计技术。实践表明,采用先进的技术既可提高软件开发和维护的效率,又可提高软件质量。软件工程核心--7条基本原理 原理5、结果应能清楚地审查软件是一种看不见、摸不着的逻辑产品。软件开发小组的工作进展情况难于评价和管理。为更好地进行管理,应根据软件开发的总目标及完成期限,明确地规定开发小组的责任和产品标准,从而使所得到的产品有明确的标准能清楚地审查。软件工程核心--7条基本原理 原理6、开发小组的人员应该少而精软件开发小组成员的素质应该好,人数不宜过多。素质高的人员开发效率高、质量好、错误少。开发小组人员过多,信息交流造成的通信开销会急剧增加。软件工程核心--7条基本原理 原理7、承认不断改进软件工程实践的必要性遵循上述六条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产。但是,仅有上述六条原理并不能保证软件开发与维护的过程能赶上时代前进的步伐,因此,应把承认不断改进软件工程实践的必要性作为软件工程的第七条基本原理。软件工程核心--7条基本原理 软件过程模型(补充)1)定义:软件过程是人们开发和维护软件及相关产品(如软件项目计划,设计文档、代码、测试用例及用户手册)的活动、方法、实践和改进的集合。解释:过程是为了达到一个目标所进行的一系列活动,或者说是为达到一个目标而设计的“路线图”。例如:为了培养一个世界体操冠军,需要研究训练方法、运用先进的训练器械、不断改进训练过程,最终有可能培养出世界冠军。比较:软件开发和维护工作的目标是按时交付高质量的、满足需求的、低成本的软件代码和文档,为此也需要研究软件工程的过程、工具和方法,比如过程可以选择RUP或者XP,工具可以选择RationalSuite或者其他,方法可以是面向对象也可以是面向过程等等。 1.4软件生命周期p11一个软件从提出开发要求到废弃为止的整个时期。通常划分为:计算机系统工程、需求分析、设计、编码、测试、运行和维护8个阶段。 问题定义阶段:主要内容是确定“要解决什么问题?”。通过对客户的访问调查,系统分析人员简要地写出关于问题的背景、解决的意义和目标。一般这个活动放在可行性研究活动之前,作为其活动的一部分。 可行性研究:确定“要解决的问题是否有解?”。分析待开发系统的总体目标和范围,研究系统的可行性和可能的解决方案,对资源、成本及进度进行合理的估算。 需求分析:明确“为了解决这个问题,系统必须做什么?”。通过分析、整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册。通过评审需求规格说明书,确保对用户需求达到共同的理解与认识。需求规格说明书明确地描述了软件的功能,列出软件必须满足的所有约束条件,并定义软件的输入和输出接口。 概要设计:概要设计“系统的蓝图”。确定解决问题的策略,设计目标系统框架结构和主要元素的布局。 详细设计:详细设计,根据整体结构设计具体的细节:用户界面设计,模块实现算法、数据结构和接口等,编写设计说明书,并组织进行设计评审。设计过程将现实世界的问题模型转换成计算机世界的实现模型,设计同样需要文档化,并应当在编写程序之前评审其质量。 编码和单元测试:将所设计的各个模块编写成计算机可接受的程序代码。在设计测试用例的基础上,测试软件的各个组成模块。然后,将各个模块集成起来,测试整个产品的功能和性能是否满足已有的规格说明。一旦生成了代码,就可以开始单元测试,这种测试一般由程序员完成。 系统集成和综合测试:软件是作为一个整体运行的,而模块的集成方法和顺序对最终的产品质量具有重大的影响。因此,除了单个模块的测试外,还需要进行系统集成,以及集成测试、系统测试和验收测试等。 运行和维护:一旦软件交付运行之后,所做的任何修改就是维护。维护是软件过程的一个组成部分,应当在软件的设计和实现阶段充分考虑软件的可维护性。 1.5了解软件开发模型上述个阶段顺序不同产生了不同的软件生命周期模型,例如,严格按照8大活动顺序地执行,叫做瀑布模型。先问题定义,然后编程,在做需求分析和设计……形成了快速原型化模型。还有其他的渐增模型、螺旋模型,快速应用开发模型。近几年主流的软件过程模型有敏捷软件过程(ASP)、Rational统一过程(RUP)、Microsoft解决方案框架(MSF)、个体软件过程(PSP)和小组软件过程(TSP)。 1.5.1瀑布模型由W.Royce于1970年首先提出的。瀑布模型规定了软件生命周期的各项活动:问题定义、可行性研究、需求分析、软件设计、编码、测试、运行和维护。各项活动自顶向下、相互衔接如同瀑布一样。这里的修饰词“瀑布”非常贴切,明确了一个活动结束,进入到下一个活动后,很难再回到前一个活动中去,也就是工作不可逆转。 瀑布模型的优缺点:为项目提供了按阶段划分的检查点;当前一活动完成后,只需要去关注后续活动;它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。缺点:由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。 快速原型化模型基本思想:在需求分析的同时,以较小的代价快速建立一个能够反映用户主要需求的原型系统。用户在原型系统上可以进行基本操作,并且提出改进意见。分析人员根据用户的意见完善原型,然后再由用户评价,提出建议,如此往复,直到开发的原型系统满足用户的需求为止。 快速原型化模型的优缺点客户和开发者可以通过原型快速对需求达成一致,明确一致的需求对软件设计和实现具有重要作用;克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。如果抛弃原型其缺点课避免。 渐增模型也叫增量模型也叫增量模型,是从一组给定的需求开始,通过构造一系列可执行的软件构件来实施开发活动,以增量方式逐步完善待开发的软件。当一个新的构件被编码和测试后,并入到软件系统结构中,然后将该结构作为一个整体进行测试。这个过程不断循环往复直到软件系统达到要求的功能为止。演化模型在各个阶段并不交付一个可运行的完整产品,而是交付一个子集。整个产品被分解成多个构件,开发人员可以分别实现各个构件,每个构件都可以独立运行。 渐增模型的优缺点:人员分配灵活,刚开始不用投入大量人力资源,当核心产品受欢迎时,可增加人力实现下一个增量;它提供了一种先推出核心产品的途径;具有一定的市场运作的灵活性。至始至终开发者和客户必须在一起,直到完全版本出来。 螺旋模型:基本思想:通过建立原型、划分开发阶段来降低风险,一旦在开发过程中风险过大就停止继续开发。螺旋模型一般被划分为2~6个框架活动,沿着顺时针布局,如图所示。 螺旋模型解释:沿螺旋线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。左上象限:确定初步的目标、制定方案和限制条件。右上象限:风险分析。右下象限:开发原型,理解需求,左下象限:对原型进行评价,修正需求。根据用户提出的建议进入螺旋的第二层,又与用户交谈,再次执行计划和实施方案,然后再一次分析实施的风险,如果风险过大,可以就此终止,否则再次进入实施阶段,用户评价这一轮的实施结果,并提出修改建议。然后进入第三层螺旋……,如此下去,逐步延伸,最终用户获得完整的系统。 螺旋模型的优缺点:对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。需要相当的风险分析评估专门技术,比较复杂。 1.3软件的开发方法1)结构化方法1978年,E.Yourdon和L.L.Constantine提出了Yourdon方法,也称为结构化方法或面向功能的软件开发方法或面向数据流的方法。Yourdon方法是80年代使用最广泛的软件开发方法。它首先用结构化分析技术进行需求分析,然后用结构化设计技术进行总体设计和详细设计,最后是结构化编程。这一方法的精髓是自顶向下、逐步求精,也就是将功能逐步分解,直到人们可以理解和控制它为止。 2)面向对象方法:研究始于1966年,自90年代以来,面向对象的分析、设计、测试、度量和管理等研究都得到长足发展。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。继承性是对具有层次关系的类的属性和操作进行共享的一种方式。基本思想:用对象模拟问题领域中的实体,以对象间的关系刻画实体间联系。本质是主张从客观世界固有的事物出发构造系统。 11.软件工程研究的最新方向软件形式语言的研究:目前,大部分软件文档都是用自然语言书写的。由于自然语言本身具有模糊性,因此有一部分专家研究“形式化描述语言的应用,以及不同形式化语言之间的转换”。这类研究工作难度较大,也不容易为一般人所接受。但是由于越来越多的大型软件的复杂程度与日俱增,这些软件一旦出错所引起的后果十分严重,所以形式化的研究工作就显得非常重要。构件技术:软件开发构件化可以说是软件开发技术的一个发展趋势,也是软件工程界的一个热门话题。近年来,软件技术的进步以及CORBA,DCOM,JavaBean等构件标准的出现已经使情况开始改变,这给软件危机的真正缓和带来了希望。质量管理:软件开发过程的质量控制将逐步得到重视。软件开发过程中精神活动的“不可见性”大大增加了过程管理的困难。因此软件工程管理的指导思想就是千方百计地使这些过程变为“可见的”,以及事后可以检查的记录。只有从一开始就在软件开发过程中严格贯彻质量管理,软件产品的质量才有保证。否则,开发工作一旦进行到后期,无论怎样测试和补漏洞,都无济于事。这就是近年来国际上十分重视的“软件生产过程质量管理”思想。 本章要点软件危机的主要表现是“已完成”的软件不满足用户的需求;开发进度不能保障;软件开发成本难以准确估算;软件产品的质量没有保证。软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和先进软件开发技术结合起来,运用到软件开发和维护过程中,来解决软件危机。软件工程研究的主要内容是软件开发技术和软件开发管理两个方面。软件开发技术方面主要研究软件开发方法、软件开发过程、软件开发工具和环境。软件开发管理方面主要研究软件工程管理学、软件工程经济学、软件工程心理学。 本章要点(续)软件工程的7条基本原理是①用分阶段的生命周期计划严格管理②坚持进行阶段评审③实行严格的产品控制④采用现代程序设计技术⑤结果应能清楚地审查⑥开发小组的人员应该少而精⑦承认不断改进软件工程实践的必要性。软件生命周期是指一个软件从提出开发要求开始到该软件报废为止的整个时期。通常将软件的生命周期划分为问题定义、可行性研究、需求分析、概要设计、详细设计、编码和单元测试、集成和测试、维护阶段。软件生命周期模型反映的是软件开发过程、活动和任务的结构框架。它能够清晰、直观地表达软件开发全过程,明确规定要完成的主要活动和任务。对于不同的软件系统,可能采用不同的开发方法,使用不同的程序设计语言、不同的管理方法和手段、以及各种具有不同技能的人员参与工作,但是对于软件生命周期模型来说都应该是稳定有效和普遍适用的。到目前为止,已经提出了多种模型,主要有瀑布模型、快速原型模型、演化模型、螺旋模型、V模型等。模型的选择是基于软件的特点和应用领域。 本章要点(续)目前,主流的软件开发方法有结构化方法和面向对象方法。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭