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

下载本文档

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

文档简介

软件工程基础软件教研室张翼飞Tel.89723956E-mail:zhangyifei@学习“软件工程”的目的和意义学会如何在现代IT企业的环境中做一个成功者;学会如何做世界级的、高质量的研究;学会如何创建大规模的软件产品。

——微软全球资深副总裁原微软亚洲研究院院长首席科学家张亚勤

一、全球软件产业的现状、趋势与挑战TheChallengesandOpportunitiesoftheGlobalSoftwareIndustry.软件产业的网络化趋势软件产业的服务化趋势软件产业的全球化趋势智能网络(IntelligentWeb)·从静态网到动态网·从被动方式到主动方式·从呈现信息和浏览的窗口到智能生成的平台·从HTML到XML一、全球软件产业的现状、趋势与挑战TheChallengesandOpportunitiesoftheGlobalSoftwareIndustry.软件产业的网络化趋势软件产业的服务化趋势软件产业的全球化趋势

相对目前“打包式”软件,为用户提供智能化的“服务式”软件。一、全球软件产业的现状、趋势与挑战TheChallengesandOpportunitiesoftheGlobalSoftwareIndustry.软件产业的网络化趋势软件产业的服务化趋势软件产业的全球化趋势·强调开放性、交互性·支持主流的开放式标准·人才的全球化对中国软件企业有什么启示和挑战?TalentBeyondTechnology_WhatKindofTalentWeNeedforModernSoftwareDevelopment扎实的基础创新、独立的工作能力主人翁精神和团队精神勾通与协调能力成就感强、有激情自觉地干好工作契而不舍,从错误中学习二、现代软件开发对人才的要求

我国复合型软件人才匮乏,培养适应迅速变化的市场需求的复合型软件人才已是迫在眉睫。三、信息化建设中对复合型软件人才的需求

复合型软件人才—具备不同专业背景、有市场观念的开发管理、工程管理和软件经营等复合型软件人才;四、软件开发中的错误观点2.软件需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。1.只要掌握了1-2门程序设计语言,进行软件开发就没有问题。总之,错误认为:软件就是程序,开发软件就是编写程序。3.只要有最好的开发工具、最好的计算机,一定能做出优秀的软件。

本课程学习的主要内容1.传统的软件工程方法2.面向对象的建模技术—UML统一建模语言3.软件项目管理及CMM(软件能力成熟度模型)4.软件复用及构件工程

本课程以传统的软件工程技术为基础,主要讨论如何应用软件工程的最新技术—UML统一建模语言进行软件开发,提高软件开发的水平和技术。教材及主要参考书作者:许家珆主编白忠建,彭德中,吴磊编写出版社:电子工业出版社1.软件工程—方法与实践

本书是在吸取了国内外有关教材的精华,并结合编者多年来进行软件工程的教学及软件开发实践的经验、体会的基础上编写的。作者:许家珆曾翎彭德中出版社:高等教育出版社出版日期:2004-06-30配套光盘1张2.软件工程—理论与实践

本书是教育部新世纪网络课程建设工程的子课题“软件工程网络课程”配套教材。其主要特色是理论与实践密切结合,给出了“软件工程课程设计”的相关指导。其第二版已评为国家十一五规划教材,拟今年内出版。教材及主要参考书教材及主要参考书3.软件工程SoftwareEngineering,6thEdition作者:(英)IanSommerville出版社:机械工业出版社(影印版)

本书是英国著名软件工程学家IanSommerville系统介绍软件工程理论的力作,以要求极高的一类系统为实例,精辟透彻地阐述了软件工程的内涵。教材及主要参考书3.软件工程:一位实践者的方法(第7版)SoftwareEngineering:APractitioner'sApproach,SixthEdition作者:(美)RogerS.Pressman出版社:McGraw-HillScience/Engineering/Math参考网站http://

软件工程网卡内基梅大学软件工程研究所/

对象技术和构件技术链接Rational公司http://OMG(ObjectManagementGroup)http://

软件工程网卡内基梅大学软件工程研究所/

对象技术和构件技术链接Rational公司第一章1概述1.1软件工程的产生和发展

软件工程(SoftwareEngineering)是在克服60年代末所出现的“软件危机”的过程中逐渐形成与发展的。

随着互联网平台和环境的迅速发展,对软件工程的发展产生了变革性的巨大影响,网格计算、普适计算、中间件、网构软件等一批新技术和理念,从网络资源共享与管理,人机交互及软件服务等各方面提出了软件技术的新课题。

软件工程的发展已经历了四个重要阶段:4.第四代软件工程—

构件工程3.第三代软件工程—

过程工程2.第二代软件工程—

对象工程1.第一代软件工程—

传统的软件工程软件工程的发展已经历了四个重要阶段:1.第一代软件工程—

传统的软件工程2.第二代软件工程—

对象工程3.第三代软件工程—

过程工程4.第四代软件工程—

构件工程60年代末到70年代为了克服“软件危机”(Softwarecrisis)提出“软件工程”的名词,将软件开发纳入工程化的轨道,基本形成软件工程的概念、框架、技术和方法。称为传统的软件工程。软件工程的发展已经历了四个重要阶段:1、第一代软件工程—

传统的软件工程2、第二代软件工程—

对象工程3、第三代软件工程—

过程工程4、第四代软件工程—

构件工程

80年代中到90年代,面向对象的方法与技术得到发展,研究的重点转移到面向对象的分析与设计,演化为一种完整的软件开发方法和系统的技术体系,称为对象工程。软件工程的发展已经历了四个重要阶段:1、第一代软件工程—

传统的软件工程2、第二代软件工程—

对象工程3、第三代软件工程—

过程工程4、第四代软件工程—

构件工程

80年代中开始,人们在软件开发的实践过程中认识到:提高软件生产率,保证软件质量的关键是“软件过程”,是软件开发和维护中的管理和支持能力,逐步形成软件过程工程。软件工程的发展已经历了四个重要阶段:1、第一代软件工程—

传统的软件工程2、第二代软件工程—

对象工程3、第三代软件工程—

过程工程4、第四代软件工程—

构件工程

90起年代,基于构件(Component)的开发方法取得重要进展,软件系统的开发可通过使用现成的可复用构件组装完成,而无需从头开始构造,以此达到提高效率和质量,降低成本的目的。称为构件工程。

软件工程是一门新兴的边缘学科,涉及的学科多,研究的范围广,研究的主要内容有以下几方面:}

软件开发技术软件开发方法、技术软件开发工具及环境软件管理技术软件规范(国际规范)}

软件管理技术是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。通常包括以下四类基本过程:1、软件规格说明:规定软件的功能及其运行环境。2、软件开发:产生满足规格说明的软件。3、软件确认:确认软件能够完成客户提出的要求。4、软件演进:为满足客户的变更要求,软件必须在使用的过程中演进。软件工程过程

(Softwareengineeringprocess)1.2软件工程过程与软件生存期软件生命周期(SDLD)软件生命周期是指从软件开始开发到报废的全过程,亦称软件生存期(softwarelifecycle)。一般用经典的瀑布模型来描述。GB8567中规定,软件生命周期分为7个阶段:1.可行性研究和项目开发计划2.

需求分析3.概要设计4.

详细设计5.编码6.

测试7.维护

在大部分文献中将生存周期划分为5个阶段,即需求定义、设计、编码、测试及维护。其中需求定义阶段包括可行性研究和项目开发计划、需求分析,设计阶段包括概要设计和详细设计。1.3软件开发模型软件开发模型是描述软件开发过程中各种活动如何执行的模型。因此又称为软件过程模型。软件过程模型是对软件开发实际过程的抽象和简化。

目前典型的软件开发模型有:

瀑布模型、增量模型、螺旋模型、喷泉模型和快速原型模型等。不同的开发方法有不同的软件过程模型。瀑布模型问题定义编码需求分析软件设计可行性研究运行与维护测试开发时期运行时期计划时期(目标与范围说明书)(可行性论证论告)(维护报告)(测试报告)(程序)(设计文档)(需求说明书)瀑布模型(1)一步错,步步错。最终可能从头到尾重新修改。(2)开发人员常常陷入“阻塞状态”,人力资源的运用不合理。增量模型(incrementalmodel)

增量模型由若干个开发序列构成,每个序列均采用瀑布模型来开发可以发行的“增量”,。每个“增量”都是在原有软件基础上开发出来的,每产生一个“增量”相当于推出一个软件新版本。这个过程不断地重复,直到产生最终的完善的产品。例如采用增量模型开发字处理软件可以在第一个“增量”中实现基本的文件管理、文档编辑等功能在第二个“增量”中实现拼写和语法检查功能在第三个“增量”中实现高级的页面布局功能。

增量模型是多段的瀑布模型,如果项目比较复杂,就把它分成若干个版本来开发。由此带来的好处有:(1)抗“变化”能力比瀑布模型强。(2)每个“增量”实现后就可以交给用户使用,可以边开发、边使用。不象瀑布模型,非得要等到全部工作做完了才可以使用。采用增量模型的主要难点是,新开发的“增量”在合并入原有软件系统时,必须保证不破坏原来构造好了的东西。此外,现有的软件系统必须具备良好的可扩展性,加入新的“增量”的过程应当简便。做到这一点并不很容易,对系统设计师的水平要求颇高。

在很多时候,无法获得明确的、详细的需求。如果匆匆地开发软件,无疑会冒很大的风险。但是又不能干等着,因为需求不会自动送上门来。

快速原型模型应运而生,它的主要用途就是获取与验证需求。首先由开发人员构造原型,然后让用户体验该原型。

一般地,当用户面对一个可操作的软件原型时,他比较容易说清楚“需要什么”和“不要什么”。从而有助于分析人员获取更详细的需求以及验证需求是否正确。

快速原型模型原型内部结构及其实现细节并不重要,重要的是原型必须能被快速地构造出来,以迅速反映用户的需求。一旦需求明确了,原型就完成了使命,应该保留还是抛弃,就看此原型是否值得复用。最好的情况是原型与正式产品的框架完全吻合。这样,原型的开发既快又不浪费。由于快速原型模型的主要目的是获取与验证需求,光采用该模型并不能开发出最终软件。快速原型模型通常与其它软件工程模型结合使用。例如可以先用快速原型模型确定用户真正的需求,然后采用瀑布模型进行正式的软件开发。

螺旋模型

对于大型软件,只开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。

螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:

第一,确定目标、方案和限制条件;

第二,评估方案、标识风险和解决风险;

第三,开发确认产品;

第四,计划下一周期工作。喷泉模型分析系统设计软件设计实现喷泉模型

喷泉模型其实是瀑布模型的另一种表述,只是它的“重叠”与“迭代”特性比瀑布模型画得更加形象。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,喷泉模型使开发过程具有迭代性和无间隙性。其特点如下:1.开发过程有分析、系统设计、软件设计和实现4个阶段。2.各阶段相互重叠,它反映了软件过程并行性的特点。3.以分析为基础,资源消耗成塔型。4.反映了软件过程迭代性的自然特性,从高层返回低层无资源消耗。5.强调增量开发,整个过程是一个迭代的逐步提炼的过程。1.4软件开发方法

软件开发的目标是要在规定的投资和时间内,开发出符合用户的需求,高质量的软件,为此需要有成功的开发方法。软件开发方法结构化开发方法原型化开发方法面向对象的开发方法结构化开发方法(StructuredDevelopingMethod)是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。结构化方法总的指导思想自顶向下、逐步求精。它的基本原则是功能的分解与抽象。一、结构化开发方法的组成结构化程序设计方法SP法(StructuredProgram)结构化设计方法SD法(StructuredDesign)结构化分析方法SA法(StructuredAnalysis)SA,SD,SP法相互衔接,形成了一整套开发方法。结构化方法什么是原型化方法(PrototypingMethod)原型化方法及其工作模型

原型——是软件的一个早期可运行的版本,它反映了最终系统的部分重要特性。原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习的机会。原型化方法又称速成原型法(RapidPrototyping)。原型化方法及其工作模型

1、废弃(throwaway)型

RSP法(RapidSpecificPrototyping)快速建立需求规格原型。

2、追加(addon)型

RCP法(RapidCyclicPrototyping)快速建立

温馨提示

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

评论

0/150

提交评论