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

下载本文档

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

文档简介

第一章软件工程概述11.1软件工程的基本概念1.3

软件生存期模型1.5软件工具与软件开发环境1.4

软件开发方法1.2软件工程过程与软件生存期1.1软件工程的基本概念1.1软件工程的基本概念

软件是信息化的核心,国民经济、国防建设、社会发展及人民生活都离不开软件。软件产业是增长最快的朝阳产业,是高投入/高产出、无污染、低能耗的绿色产业。软件产业关系到国家经济和文化安全,体现了国家综合实力,是决定21世纪国际竞争地位的战略性产业。软件工程(SoftwareEngineering)是在克服60年代末所出现的“软件危机”的过程中逐渐形成与发展的。软件工程是一门指导计算机软件系统开发和维护的工程学科,是一门新兴的边缘学科,主要研究如何应用软件开发的科学理论和工程技术来指导大型软件系统的开发。1.1.1软件工程的产生和发展1.1.1软件工程的产生和发展软件工程的发展已经历了四个重要阶段:4、第四代软件工程

构件工程3、第三代软件工程

过程工程2、第二代软件工程

对象工程1、第一代软件工程

传统的软件工程1.1.1软件工程的产生和发展1.1.1软件工程的产生和发展软件工程的发展已经历了四个重要阶段:1、第一代软件工程

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

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

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

构件工程60年代末到70年代为了克服“软件危机”

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

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

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

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

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

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

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

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

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

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

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

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

构件工程90起年代,基于构件(Component)的开发方法取得重要进展,软件系统的开发可通过使用现成的可复用构件组装完成,而无需从头开始构造,以此达到提高效率和质量,降低成本的目的。称为构件工程。1.1.2软件工程研究的内容软件工程是一门新兴的边缘学科,涉及的学科多,研究的范围广。归结起来软件工程研究的主要内容有以下几方面:}软件开发技术软件开发方法、技术软件开发工具及环境软件管理技术软件规范(国际规范)}软件管理技术(1)软件开发技术(软件结构、开发方法、工具与软件工程环境、软件工程标准化)(2)软件工程管理(质量管理,软件工程经济学:成本估算,计划安排)1.1.2软件工程研究的内容1.2软件工程过程与软件生存期1.2软件工程过程与软件生存期从68年北大西洋公约的软件可靠性会议(NATO)上,首次提出“软件工程”的概念,提出了在软件生产中采用工程化的方法,采用一系列科学的、现代化的方法技术来开发软件。这种工程化的思想贯穿到软件开发和维护的全过程。了解有关软件、软件生存期及软件工程过程等重要的概念,对掌握、学习和应用软件工程的方法、技术是极有益的。1.2.1软件的概念和特点1.2.1软件的概念和特点一、软件(Software)要纠正软件就是程序,开发软件就是编写程序的错误观念。软件是“程序以及开发使用维护程序所需的所有文档”,由应用程序,系统程序,面向用户的文档,及面向开发者的文档四部分构成。二、软件的特点1、软件是一种逻辑实体,不是具体的物理实体。2、软件产品的生产主要是研制。3、软件具有“复杂性”,其开发和运行常受到计算机系统的限制。4、软件成本昂贵,其开发方式目前尚未完全摆脱手工生产方式。5、软件不存在磨损和老化问题,但存在退化问题。

硬件失效率曲线,是一U型曲线(即浴盆曲线)。软件失效率曲线,它没有U型曲线的右半翼。因为软件不存在磨损和老化问题,然而存在退化问题。失效率时间

硬件失效率曲线失效率时间实际曲线理想曲线

软件失效率曲线1.2.1软件的概念和特点软、硬件失效情况的对比三、软件的分类1、按照软件功能划分系统软件

如操作系统、设备驱动程序等。支撑软件(实用软件)—

协助用户开发的工具软件,如编辑程序、程序库、图形软件包等。应用软件

如工程与科学计算软件、CAD/CAM软件、CAI软件、信息管理系统等。2、按照软件规模划分类别参加人数研制期限产品规模(源代码行)微型11–4周0.5K小型11–6月1K–2K中型2-51–2年5–50K大型5-202–3年50–500K甚大型100-10004–5年1M极大型2000-50005–10年1M–10M1.2.1软件的概念和特点分类续3、按照软件工作方式划分实时处理软件 交互式软件 批处理软件4、按照软件服务对象的范围划分项目软件—

由客户委托开发的软件。产品软件—

由软件开发机构开发,提供给市场的。此外,还可以按照软件使用的频度及按照软件失效的影响进行划分。软件工程过程(Softwareengineeringprocess):是指在软件工具的支持下,所进行的一系列软件工程活动。

通常包括以下四类基本过程:1、软件规格说明:规定软件的功能及其运行环境2、软件开发:产生满足规格说明的软件3、软件确认:确认软件能够完成客户提出的要求4、软件演进:为满足客户的变更要求,软件必须在使用的过程中演进。

软件工程过程的特性:1、可理解性 2、可见性(过程的进展和结果可见)3、可靠性4、可支持性(易于使用CASE工具支持)5、可维护性 6、可接受性(为软件工程师接受)7、开发效率 8、健壮性(抵御外部意外错误的能力)1.2.2软件工程过程1.2.2软件工程过程1.3软件生存期模型

软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。目前有若干软件生存期模型,各种模型有其不同的特点,并适用于不同的开发方法。1.3软件生存期模型瀑布模型(waterfallmodel)循环模型(loopmodel)增量模型(incrementalmodel)螺旋模型(spiralmodel)喷泉模型(fountainmodel)智能模型(intelligentmodel)问题定义编码需求分析设计可行性研究运行与维护测试开发时期运行时期计划时期(目标与范围说明书)(可行性论证论告)(维护报告)(测试报告)(程序)(设计文档)(需求说明书)瀑布模型图1.3瀑布模型1.3软件生存期1.3.2循环模型

为了描述软件开发过程中可能的回溯,尤其是维护阶段往往要经历上述各个阶段,采用循环模型描述。1.3.2循环模型需求分析设计编码测试运行评价计划

循环模型1.3.3增量模型(incrementalmodel)1.3.3渐增模型

增量模型是一种非整体开发的模型。根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。增量模型和瀑布模型之间的本质区别是:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件。1.3.3增量模型定义概要需求把需求分配给增量设计系统结构开发系统增量验证增量组装增量验证系统系统不完全最终系统

增量模型1.3.3增量模型

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

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

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

3.开发确认产品;

4.计划下一周期工作。

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

其特点如下:

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

1.3.5喷泉模型1.3.6智能模型(intelligentmodel)获取需求需求分析具体描述优化程序调整验证维护知识库专家系统程序

也称为基于知识的软件开发模型,是知识工程与软件工程相结合的软件开发模型。其主要特点是必须建立知识库,并将模型本身、软件工程知识、特定领域知识放入知识库。具体描述可以使用形式功能规约,也可以使用知识处理语言描述等。其模型如图所示:1.3.5智能模型图1.13智能模型1.4软件开发方法1.4软件开发方法软件开发的目标是要在规定的投资和时间内,开发出符合用户的需求,高质量的软件,为此需要有成功的开发方法。为了克服软件危机,从60年代末开始,一直在进行软件方法的研究与实践,提出了多种软件开发方法和技术,对软件产业的发展起着不可估量的作用。1.4.1软件工程方法

软件工程的内容包括技术和管理两方面,两方面又紧密结合。通常把在软件生命期中所使用的一整套技术的集合称为方法(methodology)或范型(paradigm)。1.4.1软件工程方法如何评价软件开发方法:1、技术特征:层次性、抽象性、并行性、安全性、正确性等。2、使用特征:易理解性、易修改性、可移植性、工具的支持、可复用性、任务范围、使用的频度等。3、管理特征:易管理性;成本估算、配置管理等。4、经济特征:各种效益与代价。

软件工程方法包括三要素:方法、工具和过程。方法:完成软件开发各项任务的技术方法;工具:为方法的运用提供自动或者半自动的支撑环境;过程:为开发高质量软件所规定的各项任务的工作步骤。软件开发方法可分为几大类:面向过程的开发方法(传统的)面向对象的开发方法基于构件的开发方法1.4.1软件工程方法特别要注意:由于软件与程序是不同的概念,软件开发方法与程序设计方法是两个不同的概念。软件开发方法可以是针对局部的,也可以是针对全局的。软件工程方法,更加强调和重点研究的是需求分析与软件设计的开发方法。也称为面向过程的软件开发方法,这类开发方法都典型地包含了分析、设计、实现、确认(测试)、演化(维护)等活动。典型的传统软件开发方法有:

Jackson方法、结构化开发方法、原型化方法、HIPO法、IDEF法等。1.4.2传统的软件开发方法1.4.2传统的软件开发方法1.4.2传统的软件开发方法一、结构化开发方法(StructuredDevelopingMethod)是一种面向数据流的开发方法,是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。结构化方法总的指导思想是自顶向下、逐步求精,以数据流,数据的封闭性准则来逐层分解的,它的基本原则是功能的分解与抽象。

结构化方法强调结构的合理性。提出了一组提高软件结构质量的准则,如功能的分解与抽象、模块独立性、信息屏蔽等。二、Jackson方法1.4.2传统的软件开发方法

JACKSON方法是一种面向数据结构的设计方法。强调程序结构与问题结构相对应。

JACKSON方法由两部分构成:

1、JSP(Jacksonstructured

Programming)

2、JSD(JacksonSystemDevelopment)原型是软件开发过程中,软件的一个早期可运行的版本,它反映了最终系统的部分重要特性。

原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习的机会,原型化方法又称速成原型法(RapidPrototyping)。强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。将维护和修改阶段的工作尽早进行,使用户验收提前,从而使软件产品更加适用。1.4.2传统的软件开发方法三、原型化方法(PrototypingMethod)1.4.2传统的软件开发方法四、HIPO法(HierarchyPlusInput—Process—Output)

HIPO法(HierarchyPlusInput—Process—Output),按功能层次结构分析法,74年由IBM公司推出的软件分析及设计方法,又称HIPO图。

HIPO图是以功能、功能完备性准则逐层分解的。由直观目录表(H图),概要HIPO图,详细IPO图三部分组成。OOSD(Object-OrientedSoftwareDevelopment)法这是80年代推出的一种全新的软件开发方法。非常实用而强有力,被誉为90年代软件的核心技术之一。1.4.3面向对象方法1.4.3面向对象方法

其基本思想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程。面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。1.5软件复用技术

“软件重用”或“软件复用”(SoftwareReuse)是指将已有的软件成分用于构造新的软件系统。该技术是提高软件生产率和质量,降低成本的有效方法。1.5.1复用方式复用程序:包括目标代码和源代码的复用,可通过连接(Link)、绑定(Binding)、包含(include)等功能支持及对象链接及嵌入(OLE)技术实现。复用分析比设计复用级别更高,实现方式与设计复用类似。复用设计:设计结果比源程序的抽象级别高,因此复用受环境影响小。可以通过从现有系统中提取全部或者不同粒度的设计构件,或者独立于具体应用开发设计构件。复用结构复用模块结构或者数据结构。1.5软件复用技术1.5.2可复用的构件

构件是指可以被明确标识的软件制品,可以是软件开发不同阶段的产品。

可复用构件是指可被其它系统复用,用于构成新系统的构件。可复用构件的特性:1.独立性解决相对独立的问题,与外界联系尽量少。2.完整性既要包括完整的解决方案,还定义相应操作。3.通用性在同类应用中具有一般性。4.可标识性通过合适的命名,构件所解决的问题是可标识的。5.可适应性适应环境变化。6.可靠性对各个使用它的系统都具有高的可靠性。1.5.2可复用的构件1.6软件工具及软件开发环境CASE(计算机辅助软件工程)的两个阶段:1、依赖与于软件内生命周期各阶段的分散工具。2、软件开发环境(SoftwareDevelopmentEnvironment)

软件工程环境(SoftwareEngineeringEnvironment)

是包括方法、工具和管理等多种技术在内的综合系统,应具备以下特点:①紧密性(各种工具紧密配合工作)②坚定性(环境可自

温馨提示

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

最新文档

评论

0/150

提交评论