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

下载本文档

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

文档简介

引言

1.《软件工程》的地位

2.《软件工程》课程本身

3.《软件工程》考试第1章软件工程学概述

1.1软件危机

1.2软件工程

1.3软件生命周期

1.4软件过程

1.5小结1.1软件危机

迄今为止,计算机系统已经历了四个不同的发展阶段:1946年~60年代初,是计算机软件发展的初期,称为程序设计时期,其主要特征是程序生产方式为个体手工方式。20世纪60年代初~70年代初,是计算机软件发展的第二个时期,这个时期称为程序系统时期。

20世纪70年代中期~80年代中期(跨越了整整10年),是计算机软件发展的第三个时期,称为软件工程时期。软件的开发以工程化的思想为指导,用工程化的原则、方法和标准来开发和维护软件。20世纪80年代中期至今,这个时期称为面向对象时期,面向对象软件开发技术在迅速取代传统软件工程开发方法。

1.1软件危机1.1.1软件危机的介绍软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。

1.1.1软件危机的介绍具体来说,软件危机主要有以下一些典型表现:对软件开发成本和进度的估计常常很不准确。用户对“已完成的”软件系统不满意的现象经常发生。软件产品的质量往往靠不住。软件常常是不可维护的。软件通常没有适当的文档资料。软件成本在计算机系统总成本中所占的比例逐年上升。软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。1.1.2产生软件危机的原因软件独有的特点给开发和维护带来困难软件人员的错误认识软件生产技术进步缓慢软件维护成本和难度急剧增加软件开发工具自动化程度低图1.1引入同一变动付出的代价随时间变化的趋势1.1.2产生软件危机的原因1.1.3消除软件危机的途径首先应该对计算机软件有一个正确的认识。应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法。应该开发和使用更好的软件工具。1.1.3消除软件危机的途径总之,为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。1.2

软件工程概括地说,软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理技术和目前能够得到的最有效的技术与方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。1.2.1软件工程的介绍

软件工程关注于大型程序的构造

软件工程的中心课题是控制复杂性

软件经常变化

开发软件的效率非常重要

和谐地合作是开发软件的关键

软件必须有效地支持它的用户

在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品1.2.2软件工程的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性1.2.3软件工程方法学通常把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也称为范型(paradigm)。在软件工程范畴中,这两个词的含义基本相同。

软件工程方法学包括三个要素,这就是方法、工具和过程。

目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。1.2.3软件工程方法学

1.传统方法学传统方法学也称为生命周期方法学或结构化范型。它采用结构化技术(结构化分析、结构化设计、结构程序设计和结构化测试)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。1.2.3软件工程方法学

2.面向对象方法学

当软件规模较大,或者对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往往不成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。与传统方法学相反,面向对象方法学把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合在一起的方法。1.2.3软件工程方法学2.面向对象方法学

面向对象方法学具有下述四个要点。把对象(Object)作为融合了数据及在数据上的操作行为的统一的软件构件。把所有对象都划分成类(Class)。按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。对象彼此之间仅能通过发送消息互相联系。1.2.3软件工程方法学2.面向对象方法学

面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使得描述问题的问题空间与实现解法的解空间在结构上尽可能一致。

1.2.3软件工程方法学

传统方法学强调自顶向下顺序完成软件开发的各阶段任务。

用面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程。面向对象方法在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑(无缝)过渡。1.3

软件生命周期软件生命周期由软件定义、开发和运行维护三个时期组成,每个时期又可以进一步划分成若干个阶段。软件定义时期划分为三个阶段:问题定义、可行性研究、需求分析。开发时期通常由下述四个阶段组成:概要设计、详细设计、编码和单元测试、综合测试。运行维护时期的主要任务是使得软件持久地满足用户需要并长期为用户服务。通常对维护时期不再进一步划分阶段。1.3

软件生命周期问题定义:在问题定义阶段,软件开发人员应该清楚:“要解决什么问题”。可行性研究:知道了要解决的问题,在这个阶段应该清楚“用什么办法解决这个问题”,保证在技术上、实效上、法律上都是行得通的。需求分析:确定软件的功能和性能。总体设计:设计软件的总体结构,将一个大系统按照功能设计成小模块,每个模块完成一个相对独立的小功能。总体设计有时也称概要设计。1.3

软件生命周期详细设计:即模块设计,这个阶段是对每个模块设计具体的算法和数据结构,可以包括具体细节,即程序的详细规格说明(类似于工程设计中的施工图纸)。编码及单元测试:这个阶段的主要任务是根据详细设计的结果,用一种程序设计语言,编写正确的源程序,并且对每段程序进行严格测试。要求源程序容易理解、容易维护。综合测试:通过测试使软件达到预定的要求。最基本的测试是集成测试和验收测试。软件维护:软件投入运行后,通常有四类维护活动:改正性维护、适应性维护、完善性维护、预防性维护。1.4软件过程1.4软件过程软件过程定义了运用软件开发方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施以及软件开发各个阶段任务完成的标志。通常使用软件过程模型来描述软件过程,它规定了把软件生命周期划分成哪些阶段及各个阶段的执行顺序。八种软件过程模型:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、Rational统一过程、敏捷过程与极限编程、微软过程。1.4.1瀑布模型图1.3实际的瀑布模型

图1.2

传统的瀑布模型

特点:(1)阶段间具有顺序性和依赖性(2)推迟实现的观点(3)质量保证的观点1.4.1瀑布模型瀑布模型的优点:

1.它可强迫开发人员采用规范的开发方法(例如,结构化技术)。

2.它严格地规定了每个阶段必须提交的文档。

3.它要求每个阶段所交出的一切产品都必须经过质量保证小组的仔细验证。缺陷:由于瀑布模型几乎完全依赖于书面的规格说明,有可能导致最终开发出的软件产品不能真正满足用户的需要。1.4.2快速原型模型

所谓快速原型是快速建立起来的可以在计算机上运行的程序,它能完成的功能往往是最终的软件产品所能完成的功能的一个子集。模型的主要优点:软件产品的开发基本上是线性顺序进行的。图1.4

快速原型模型1.4.3增量模型图1.5

增量模型增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。1.4.3增量模型图1.6风险更大的增量模型1.4.3增量模型人员分配灵活,刚开始不用投入大量人力资源;如果核心产品很受欢迎,则可增加人力实现下一个增量;能在短时间内向用户提交可完成部分工作的产品;逐步增加产品功能,可使用户有较充裕的时间学习和适应新产品。

优点:缺点:并行开发构件可能遇到不能集成的风险;增量模型本身的矛盾性,使软件过程的控制失去整体性。

1.4.3增量模型适用范围:进行已有产品升级或新版本开发,增量模型非常适合;对完成期限严格要求的产品,可以使用增量模型;对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。

1.4.4螺旋模型

螺旋模型的基本思想是,使用原型及其他方法以尽可能地降低风险。理解这种模型的一个简易方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。图1.6简化的螺旋模型1.4.4螺旋模型

优点:有利于已有软件的重用;减少过多测试带来的风险;维护只是模型的另一个周期。

缺点:很难正确评估软件开发风险。图1.7完整的螺旋模型1.4.5喷泉模型图1.9喷泉模型适用于面向对象方法。主张分析和设计过程的重叠、不严格区分。模块集成过程:反复经过分析、设计、测试、集成,再分析、设计、测试、集成。1.4.5喷泉模型可以提高软件开发效率,节省开发时间,适应于面向对象的软件开发过程

;可以从任何一个开发阶段(泡泡)转到其它任一个开发阶段,各阶段之间没有明显的界限。优点:缺点:开发中需要大量开发人员,不利于项目管理

;这种模型要求严格管理文档,使得审核难度加大。

1.4.6Rational统一过程图1.10RUP软件开发生命周期

RUP(RationalUnifiedProcess)使用UML。采用用例驱动和架构优先的策略。采用迭代增量建造方法。1.4.6Rational统一过程采用迭代方式开发软件有效地管理需求使用基于构件的体系结构可视化软件建模严格验证软件质量控制软件变更特点:1.4.7敏捷过程与极限编程根据以下4个价值观提出的软件过程统称为敏捷过程:

1.个体和交互胜过过程和工具。

2.可以工作的软件比面面俱到的文档更重要。

3.与客户的合作比合同谈判更重要。

4.及时响应变化胜过遵循计划。1.4.7敏捷过程与极限编程

ExtremeProgramming(极限编程,简称XP)是敏捷过程的典型代表。它是由一系列简单却互相依赖的实践组成。这些实践结合在一起形成了一个胜于部分结合的整体。

XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。1.4.8微软过程

微软过程准则(书P29)

微软软件生命周期

图1.13微软软件生命周期阶段划分和主要

温馨提示

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

评论

0/150

提交评论