第1章 软件工程概述课件_第1页
第1章 软件工程概述课件_第2页
第1章 软件工程概述课件_第3页
第1章 软件工程概述课件_第4页
第1章 软件工程概述课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章软件工程概述1软件工程第1章软件工程概述2上课相关说明上课不要迟到课堂认真听讲,手机关机或设为静音有问题及时问,不积攒问题有事请假,严格考勤第1章软件工程概述3课程说明

通过本课程的学习,要求掌握软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,能用软件工程的方法参与软件项目的分析、设计、实现和维护,为更深入地学习和今后从事软件工程的实践打下良好的基础。本课程的特点是该领域涉及范围非常广泛,更新非常快;另一突出特点是实践性强。第1章软件工程概述4课程考核

本课程4学分,共60学时,50学时理论,10学时实验,最后成绩由平时成绩和期末考试卷面成绩综合确定,平时成绩主要考查学生的作业、出勤、大作业、课堂表现等方面,占70%,期末卷面成绩占30%。

第1章软件工程概述5参考书1.(美)ShariLawrencePfleeger.SofewareEngineeringTheoryandPractice(SecondEdition).吴丹,史争印,唐忆译.北京:清华大学出版社,2003,82.(英)IanSommerville.SofewareEngineering(6thEdition).程成等译.北京:机械工业出版社,2003,13.《软件工程实践教程》,赵池龙、姜义平编著,电子工业出版社。4.《软件工程导论》(第5版),张海藩编著,人民邮电出版社。5.《实用软件工程》,赵池龙编著,电子工业出版社。6.《软件工程》,杨文龙、姚淑珍等编著,电子工业出版社。7.《软件开发管理的实践》,张少仲、李远明编著,清华大学出版社。

第1章软件工程概述6第一章

软件工程概述

第1章软件工程概述7主要内容软件工程产生的背景软件工程的概念及相关的基本知识软件生存周期的六个阶段及各阶段的主要任务

软件开发的主要开发模型软件开发过程及软件工程三要素第1章软件工程概述81.1软件工程学产生的背景(一)问题一:什么是软件?软件是由计算机程序的发展而形成的一种概念。程序是按既定算法,用某种计算机语言所规定的指令或语句编写的一系列指令或语句的集合。软件是程序再加上程序实现和维护程序时所必须的文档的总称。第1章软件工程概述9软件被普遍接受的软件的定义是:软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程序(program)、相关数据(data)及其说明文档(document)。其中程序是按照事先设计的功能和性能要求执行的指令序列;数据是是程序能正常操纵信息的数据结构;文档是与程序开发维护和使用有关的各种图文资料。

第1章软件工程概述10软件中国大百科全书中对软件的定义是:软件是计算机系统中的程序和有关文件(文档)。根据国际标准化组织的定义,软件是“与计算机系统操作有关的程序、过程、规则、及任何有关的文档资料”。软件=程序+数据+文档第1章软件工程概述11软件工程学产生的背景(二)问题二:软件发展经历了哪些阶段?50~60年代:程序设计阶段(个性化软件环境)60~70年代:程序系统阶段(软件作坊)70年代以后:软件工程阶段。

第1章软件工程概述12软件工程学产生的背景(三)问题三:什么是软件危机?开发软件所需的高成本同产品低质量之间有着尖锐的矛盾,即计算机软件的开发和维护中遇到的一系列严重问题。

第1章软件工程概述13

IBM公司的OS/360,共约100万条指令,花费了5000个人年;经费达数亿美元,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“…像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。…”

1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序:

DO5I=1,3

误写为:DO5I=1.3

1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。软件危机第1章软件工程概述14软件危机的表现对开发成本和进度估计不准确用户对已完成的软件不满意软件产品的质量往往靠不住软件常常是不可维护的软件通常没有合适的文档资料软件成本在计算机系统总成本中比例逐年上升软件开发生产率提高的速度,跟不上计算机普及速度。第1章软件工程概述15软件危机产生的原因

1.与软件自身的特点有关(1)软件不同于硬件,管理和控制软件开发过程相当困难,软件不会因为使用时间过长而被用坏。(2)软件不同于一般程序,它的一个显著特点是规模庞大。2.和软件开发与维护的方法不正确有关(1)对用户要求没有完整准确地认识就匆忙编写程序是许多软件开发工程失败的主要原因之一;(2)没有认识到程序只是完整的软件产品的一个组成部分。

第1章软件工程概述16解决软件危机的途径

要解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。

第1章软件工程概述171.2软件工程的概念

软件工程是指导计算机软件开发和维护的工程学科,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。

第1章软件工程概述18软件工程具有的本质特性软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人第1章软件工程概述19软件工程的基本原理

著名的软件工程专家B.W.Boehm综合这些学者们的意见并总结了TRW公司多年开发软件的经验,于1983年在一篇论文中提出了软件工程的7条基本原理。他认为这7条原理是确保软件产品质量和开发效率的原理的最小集合。第1章软件工程概述20软件工程的基本原理1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性第1章软件工程概述21软件工程与其他学科的区别软件工程和计算机科学有何区别?计算机科学侧重理论和基础,而软件工程则侧重于开发和交付的实际活动。软件工程和系统工程有何区别?系统工程侧重基于计算机系统开发的所有方面,包括硬件、软件和处理工程。软件工程只是它的一部分。第1章软件工程概述22软件工程所面临的主要问题是什么?

1)遗留系统的挑战:维护和更新这些软件,既要避免过多的支出,又要不断地交付基本的业务服务。2)多样性的挑战:必须开发出新技术,制作可靠的软件,从而足以灵活应对这种多样性。

3)交付上的挑战:在不损及系统质量的前提下,缩短大型、复杂系统的移交时间。

第1章软件工程概述23软件工程方法学软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。所谓管理就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。第1章软件工程概述24软件工程方法学软件工程方法学包含3个要素:方法、工具和过程。方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。第1章软件工程概述25软件工程方法学

目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。1.传统方法学生命周期方法学或结构化范型。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。采用这种方法学开发软件的时候,从对问题的抽象逻辑分析开始,一个阶段一个阶段地进行开发。第1章软件工程概述26软件工程方法学2.面向对象方法学结构化范型只能获得有限成功的一个重要原因是,这种技术要么面向行为(即对数据的操作),要么面向数据,还没有既面向数据又面向行为的结构化技术。数据和对数据的处理原本是密切相关的,把数据和操作人为地分离成两个独立的部分,自然会增加软件开发与维护的难度。与传统方法相反,面向对象方法把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。第1章软件工程概述271.3软件生存期

1.可行性研究与计划:调查用户需求及处理过程,进行可行性分析研究2.需求分析:分析用户需求,建立目标系统逻辑模型。3.系统设计:分为概要设计和详细设计,概要设计建立目标系统的总体结构及数据库设计;详细设计对模块进行过程描述,确定模块间的详细接口。4.程序设计:按详细设计说明书为每个模块编写程序。5.系统测试:检查和调试程序的正确性,排除错误。

6.维护运行:运行软件;对程序扩充修改;修改有关的文档。

第1章软件工程概述281.4开发模型

瀑布模型演化模型螺旋模型喷泉模型RUP开发敏捷过程与极限编程微软过程第1章软件工程概述29问题定义编码需求分析设计可行性研究运行与维护测试开发时期运行维护时期计划时期(目标与范围说明书)(可行性论证论告)(维护报告)(测试报告)(程序)(设计文档)(需求说明书)1.4.1瀑布模型(WaterfallModel)瀑布模型第1章软件工程概述301.4.1瀑布模型瀑布模型软件开发具有以下几个特征:1.阶段间的顺序性和依赖性顺序性是指:只有等前一阶段的工作完成以后,后一阶段的工作才能开始;前一阶段的输出文档,就是后一阶段的输入文档。依赖性又同时表明了,只有前一阶段有正确的输出时,后一阶段才可能有正确的结果。第1章软件工程概述311.4.1瀑布模型2.推迟实现的观点过早地考虑程序的实现,常常导致大量返工,有时甚至给开发人员带来灾难性的后果。瀑布模型在编码以前安排了分析阶段和设计阶段,并且明确宣布,这两个阶段都只考虑目标系统的逻辑模型,不涉及软件的物理实现。把逻辑设计与物理设计清楚地划分开来,尽可能推迟程序的物理实现,这是瀑布型软件开发的一条重要的指导思想。第1章软件工程概述321.4.1瀑布模型3.质量保证的观点为了保证质量,瀑布型软件开发在各个阶段坚持了两个重要的做法:(1)每一阶段都要完成规定的文档。没有完成文档,就认为没有完成该阶段的任务。(2)每一阶段都要对完成的文档进行复审,以便尽早发现问题,消除隐患。第1章软件工程概述331.4.2快速原型模型(RapidPrototypemodel)

所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成功能的一个子集。第1章软件工程概述341.4.2快速原型模型第1章软件工程概述351.4.2快速原型模型

快速原型模型是不带反馈环的,软件产品的开发基本上是线性顺序进行的。主要原因如下:(1)原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求;(2)开发人员通过建立系统原型已经了解了许多与构建系统有关的内容,因此在后面设计和编码阶段犯错的可能性大大降低。第1章软件工程概述361.4.3增量模型(IncrementModel)

使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。 把软件产品分解成增量构件时,应该使构件的规模适中,规模过大或过小都不好。分解时必须遵守的约束条件是,当把新构件集成到现有软件中时,所形成的产品必须是可测试的。第1章软件工程概述37

1.4.4螺旋模型(SpiralModel)

对于大型软件,只开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:

1.确定目标、方案和限制条件;

2.评估方案、标识风险和解决风险;

3.开发确认产品;

4.计划下一周期工作。

螺旋模型第1章软件工程概述381.4.5喷泉模型WaterFountainModel分析系统设计软件设计实现图1.5喷泉模型该模型是由B.H.Sollers和J.M.Edwards于1990年提出的一种新的开发模型。主要用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,喷泉模型使开发过程具有迭代性和无间隙性。

其特点如下:

1、开发过程有分析、系统设计、软件设计和实现4个阶段。2、各阶段相互重叠,它反映了软件过程并行性的特点。3、以分析为基础,资源消耗成塔型。4、反映了软件过程迭代性的自然特性,从高层返回低层无资源消耗。5、强调增量开发,整个过程是一个迭代的逐步提炼的过程。

第1章软件工程概述391.4.6RUP软件开发(1)RUP总结了经过多年商业化验证的6条最有效的软件开发经验,这些经验被称为最佳实践:迭代式开发管理需求使用基于构件的体系结构可视化建模验证软件质量控制软件变更第1章软件工程概述401.4.6RUP(2)RUP软件开发生命周期核心工作流:RUP有9个核心工作流,前6个为核心过程工作流程,后3个位核心支持工作流程。业务建模需求分析与设计实现测试部署配置与变更管理项目管理环境 第1章软件工程概述411.4.6RUP(3)RUP工作阶段初始阶段:建立业务模型,定义最终产品视图,并且确定项目的范围精化阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求构建阶段:开发出所有构建和应用程序,把它们集成为客户需要的产品,并且详尽地测试所有功能。移交阶段:把开发出的产品提交给用户使用第1章软件工程概述421.4.6RUP(4)第1章软件工程概述431.4.7敏捷过程与极限编程(1)

为了使软件开发团队具有高效工作和快速响应变化的能力,17位著名的软件专家于2001年2月联合起草的敏捷软件开发宣言。敏捷过程4个简单的价值观声明个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划第1章软件工程概述441.4.7敏捷过程与极限编程(2)XP是敏捷过程中最负盛名的一个XP的有效实践客户作为开发团队的成员使用用户素材短交付周期验收测试结对编程测试驱动开发集体所有持续集成可持续的开发速度开放的工作空间及时调整计划简单的设计重构使用隐喻第1章软件工程概述451.4.7敏捷过程与极限编程(3)XP项目的整体开发过程第1章软件工程概述461.4.7敏捷过程与极限编程(4)XP迭代开发过程第1章软件工程概述471.4.8微软过程(1)微软过程准则项目计划应该兼顾未来的不确定因素用有效的风险管理来减少不确定因素的影响经过生成并快速地测试软件的过渡版本,从而提高产品的稳定性和可预测性。采用快速循环、递进的开发过程用创造性的工作来平衡产品特性和产品成本项目进度表应该具有较高稳定性和权威性使用小型项目组并发地完成开发工作在项目早期把软件配置项基线化,项目后期则冻结产品使用原型验证概念,对项目进行早期结论把零缺陷作为追求的目标里程碑评审会的目的是改进工作,切忌相互指责第1章软件工程概述481.4.8微软过程(2)微软软件生命周期阶段划分和主要里程碑第1章软件工程概述491.4.8微软过程(3)微软过程的生命周期模型第1章软件工程概述50各模型比较(1)每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点,下表列出了几种常见模型的优缺点。第1章软件工程概述51各模型比较(2)模型优点缺点瀑布模型文档驱动系统可能不满足客户的需求快速原型模型关注满足客户需求可能导致系统设计差、效率低,难于维护增量模型开发早期反馈及时,易于维护需要开放式体系结构,可能会设计差、效率低螺旋模型风险驱动风险分析人员需要有经验且经过充分训练第1章软件工程概述52软件工程项目的基本目标

(1)付出较低的开发成本;(2)达到要求的软件功能;(3)取得较好的软件性能;(4)开发的软件易于移植;(5)需要较低的维护费用;(6)能按时完成开发工作,及时交付使用。

第1章软件工程概述53软件工程项目的基本目标低开发成本按时交付高性能高可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论