软件工程课件01导论_第1页
软件工程课件01导论_第2页
软件工程课件01导论_第3页
软件工程课件01导论_第4页
软件工程课件01导论_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1、软件工程概述软件工程概述什么是工程?什么是工程?你了解哪些工程?工程定义为“以某组设想的目标为依据,应用有关的科学知识和技术手段,通过一群人的有组织活动将某个(或某些)现有实体(自然的或人造的)转化为具有预期 使用价值的人造产品过程”。简单说,工程就是由一群人为达到某种目的,使用工具,借助技术协作活动生产某种产品的过程。什么是软件工程?什么是软件工程?软件工程相比其他行业的工程有什么区别?学习软件工程有什么用处?目录目录1.1 软件危机1.2 软件工程1.3 软件生命周期1.4 软件过程1.5 软件工程方法学1.6 小结丹佛新国际机场地下行李传送系统丹佛新国际机场地下行李传送系统拉布雷阿的焦油

2、坑焦油坑(Mural of La Brea Tar Pits)1.1 软件危机软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。概括地说,软件危机包含下述两方面的问题:如何开发软件,以有限的资源满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。1.1.1 软件危机典型现象软件危机典型现象对软件开发成本和进度的估计常常很不准确 用户对“已完成的”软件系统不满意的现象经常发生,软件产品的质量往往靠不住 软件常常是不可维护的,通常没有适当的相关文档资料软件成本在计算机系统总成本中所占的比例逐年上升 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势1.1

3、.2 产生软件危机的原因产生软件危机的原因一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件是一种纯粹的逻辑产品,不具备物理形态,这使得管理和控制软件开发过程相当困难软件的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升软件规模软件规模对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一在开发时期没有对软件进行设计程序编写完之后没有经过大量的测试工作在后期引入一个变动比在早期引入相同变动所需付出的代价高23个数量级1.1.2 产生软件危机的原因产生软件危机的原因变动代价变动代价软件维护通常意味着改正或修改原来的设计轻

4、视维护,实际上用于软件维护的费用占软件总费用的55%70%1.1.2 产生软件危机的原因产生软件危机的原因1.1.3 怎么消除软件危机怎么消除软件危机清楚地定义什么是软件:彻底消除在计算机系统早期发展阶段形成的“软件就是程序”的错误观念,一个软件必须由一个完整的配置组成,事实上,软件是程序、数据及相关文档的完整集合。1983年IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。必须充分吸取和借鉴人类长期以来从事其它各种工程项目

5、所积累的行之有效的原理、技术和方法,特别要吸取几十年来人类从事计算机硬件研究和开发的经验教训。应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。1.1.3 怎么消除软件危机怎么消除软件危机1.1.3 怎么消除软件危机怎么消除软件危机应该开发和使用更好的软件工具。如果把各个阶段使用的软件工具有机地集合成一个整体,支持软件开发的全过程,则称为软件工程环境(SEE)。计算机辅助软件工程 (CASE),CASE是一组工具和方法的集合,用来辅助软件开发生命周期各阶段EclipseWinrunnerWin

6、CVSProject Planner1.2 软件工程软件工程为了解决软件危机组织、管理措施技术措施(方法和工具)软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。1.2.1 软件工程定义软件工程定义概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。1.2.2 软件工程的基本原理软件工程的基本原理软件工程专家B.W.Boehm于1983年在一篇论文中提出了软件工程的7条基本原理

7、1. 用分阶段的生命周期计划严格管理2. 坚持进行阶段评审3. 实行严格的产品控制4. 采用现代程序设计技术5. 结果应能清楚地审查6. 开发小组的人员应该少而精7. 承认不断改进软件工程实践的必要性1.2.3 软件工程学的主要内容软件工程学的主要内容将软件生命周期划分成阶段,根据每个阶段的不同特性,对软件生产的产品、人员和质量进行管理 对软件生命周期各阶段所采用的规格说明、分析设计方法和形式化描述技术等进行研究; 提供各种软件工具以改进软件质量和生产效率; 研究软件生产的质量保证体系; 研究软件系统的项目管理、人员组织、成本估算等各种度量方法终极目标:软件生产自动化1.2.4 软件工程的特性

8、软件工程的特性软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户1.3 软件生命周期软件生命周期软件生命周期分为三个时期软件定义软件开发运行维护每个时期又进一步划分成若干个阶段。瀑布模型瀑布模型需求分析需求分析总体设计总体设计详细设计详细设计编码编码 & 单元测试单元测试集成集成 & 系统测试系统测试软件定义软件定义软件开发软件开发交付交付 & 维护维护软件维护软件维护可行性研究可行性研究问题定义问题定义1.3.1 软件定义时期软件定义时期软件定义时期的任务是:确定软件开发工程

9、必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成软件定义时期通常进一步划分成3个阶段问题定义可行性研究需求分析1.3.2 软件开发时期软件开发时期开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计详细设计编码和单元测试集成和系统测试其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。1.3.3 软件维护时期软件维护时期维护时期的主要任务是使软件持久地满足用户的需要。当软件在使用过程中发现错误时应该加以改正;当环境改

10、变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。传统方法学各阶段任务传统方法学各阶段任务1.4 软件过程软件过程软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。1.4.1 瀑布模型瀑布模型1. 阶段间具有顺序性和依赖性这个特点有两重含义: 必须等前一阶段的工作完成之后,才能开始后一阶段的工作; 前一阶段的输出文档就是后一阶段的输入文档,因

11、此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。2. 推迟实现的观点对于规模较大的软件项目来说,往往编码开始得越早最终完成开发工作所需要的时间反而越长。这是因为,前面阶段的工作没做或做得不扎实,过早地考虑进行程序实现,往往导致大量返工,有时甚至发生无法弥补的问题,带来灾难性后果。3. 质量保证的观点软件工程的基本目标是优质、高产。为了保证所开发的软件的质量,在瀑布模型的每个阶段都应坚持两个重要做法:(1) 每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。(2) 每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。图1.3 实际的瀑布

12、模型瀑布模型有许多优点:可强迫开发人员采用规范的方法(例如,结构化技术); 严格地规定了每个阶段必须提交的文档要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品是什么样的。总之,由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。1.4.2 快速原型模型快速原型模型1.5.2 快速原型模型所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。图1.4 快速原型模型Proto

13、typing Modellistentocustomerbuild/revisemock-upcustomertest-drivesmock-upThe prototype must be thrown away.1.4.3 增量模型增量模型1.5.3 增量模型把软件产品作为一系列的增量构件来设计、编码、集成和测试。把软件产品分解成增量构件时,应该使构件的规模适中,规模过大或过小都不好。分解时惟一必须遵守的约束条件是,当把新构件集成到现有软件中时,所形成的产品必须是可测试的。增量模型的另一个优点是,逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带

14、来的冲击。使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。软件体系结构必须是开放的。图1.6 风险更大的增量模型1.4.4 螺旋模型螺旋模型1.4.4 螺旋模型螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。图1.7 简化的螺旋模型图1.8 完整的螺旋模型螺旋模型有许多优点:对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险;更重要的是,在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。螺旋模型主要适用于内部开

15、发的大规模软件项目。螺旋模型的主要优势在于,它是风险驱动的,但是,这也可能是它的一个弱点。除非软件开发人员具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还认为一切正常。1.4.5 喷泉模型喷泉模型1.4.6 Rational 统一过程统一过程Rational 统一过程(Rational Unified Process)是由Rational 软件公司开发和营销的一种软件工程过程,是开发组织用以分配与管理任务和职责的一种规范化方法。这个过程的目的是在预定的进度和预算范围内,开发出满足最终用户需要的高质量软件。谁在使用谁在使用RUP?电信业E

16、ricsson、Alcatel、MCI 交通、航空、国防Lockheed-Martin、British Aerospace制造业Xerox、Volvo、Intel金融业Visa、Merrill Lynch、Schwab 系统集成业Ernst & Young、Oracle、Deloitte & Touche RUP将这些最佳实践活动以一种适当的形式结合起来,从而适应了广泛的项目和开发组织。RUP 是一个过程产品(process product)。Rational (IBM) 软件公司开发并维护着这个产品,并将其与Rational 软件公司自己的一系列软件开发工具集成。RUP 有自

17、己的过程框架 (process framework), 这个框架可以被改造和扩展以适应采纳此方法的组织。RUP最佳实践最佳实践1. 迭代地开发软件2. 管理需求3. 应用基于构件的构架4. 为软件建立可视化的模型5. 不断地验证软件质量6. 控制软件的变更 RUP 二维生命周期模型二维生命周期模型沿时间轴的组织结构沿内容轴的组织结构1.4.7 XP极限编程极限编程XP(Extreme Programming),它是由Kent Beck大师提出的。kent在经历传统软件开发的痛苦之后,希望能够找到一种优秀的软件开发方法。大师总结了大量的软件的成功和失败的因素之后,提出了改进软件开发方法的四个要素

18、:沟通(communication)、简单化(simplicity)、反馈(feedback)、勇气(courage)。这形成了XP的核心价值观。XP最佳实践最佳实践客户作为开发团队的成员使用用户素材短交付周期验收测试结对编程测试驱动开发集体所有持续集成持续集成可持续的开发速度开放的工作空间及时调整计划简单的设计重构使用隐喻XP整体开发过程整体开发过程 XP迭代过程迭代过程 XP开发过程开发过程 1.4.8 微软过程微软过程制定计划时兼顾未来的不确定因素通过有效的风险管理减少不确定因素的影响经常生成过渡版本进行快速测试来提高产品的稳定性及可预测性快速循环、递进的开发过程从产品特性和成本控制出发

19、创造性地工作创建确定的进度表使用小型项目组并发完成工作,并设置多个同步点1.4.8 微软过程微软过程将大型项目分解成多个可管理的单元,以便更快地发布产品用产品的前景目标和概要说明指导项目开发工作-先基线、后冻结避免产品走形使用原型验证概念,进行开发前的测试零缺陷观念非责难式的里程碑评审会1.5 软件工程方法学软件工程方法学软件工程方法学包含3个要素:方法方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题工具工具是为运用方法而提供的自动的或半自动的软件工程支撑环境过程过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤1.5.1 传统方法学传统方法学传

20、统方法学也称为生命周期方法学或结构化范型采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。采用这种方法学开发软件的时候,从对问题的抽象逻辑分析开始,一个阶段一个阶段地进行开发。1.5.1 传统方法学传统方法学审查的一条主要标准就是每个阶段都应该交出“最新式的”(即和所开发的软件完全一致的)高质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置交付使用。文档是通信的工具,它们清楚准确地说明了到这个时候为止,关于该

21、项工程已经知道了什么,同时奠定了下一步工作的基础。1.5.1 传统方法学传统方法学把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度;在软件生命周期的每个阶段都采用科学的管理技术和良好的技术方法,而且在每个阶段结束之前都从技术和管理两个角度进行严格的审查,合格之后才开始下一阶段的工作,这就使软件开发工程的全过程以一种有条不紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性。传统方法学仍然是人们在开发软件时使用得十分广泛的软件工程方法学。1.5.2 面向对象方法学面向对象方法学当软件规模庞大,或者对软件的需求是模糊的或会随时间而变化的时候,使用传统方法学开发软件往往不成功,此外,使用传统方法学开发出的软件,维护起来仍然很困难。结构化范型只能获得有

温馨提示

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

评论

0/150

提交评论