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

下载本文档

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

文档简介

软件工程12/19/20231第一章软件工程的概念1.1软件的概念1.2软件危机及其解决思路1.3软件工程1.4生存周期模型1.5优秀软件的属性1.6内容总结12/19/20232项目的定义我项目管理的发展

我国最早的大型项目——2000多年前的万里长城。

严格意义的中国项目管理学科的发展——开始于20世纪60年代著名科学家华罗庚教授倡导的统筹方法和钱学森教授倡导的系统工程理论。他们提出了一系列系统的、适合我国国情的项目管理方法,并应用到许多大型项目中

改革开放以来、特别是我国加入了WTO之后,经济活动日益频繁,企业越来越多地采用“项目”模式进行商业运作,项目驱动型的企业和组织越来越多。

目前我国的项目管理还处于刚刚兴起的阶段,与国际项目管理还有一定距离。12/19/20233什么是项目

(1)项目

如三峡工程、2008年奥运会等。实际“项目”范畴要远比这来得广。

所谓“项目”,就是在既定的约束条件下(例如资源、资金、时间、法规、现有技术等),为实现特定目标、由一系列相关任务组成的一次性活动

小到一次会议、新产品的研制,大到三峡工程、奥运会等,都可以视为项目进行管理。【案例1-2】项目成功案例——西游记的取经团队有人戏称,中国古代一个最成功的项目团队,就是西游记中的取经团队。取经也可以视作一个“项目”吗?有人作了分析。

12/19/20234【案例1-2】项目成功案例——西游记的取经团队有人戏称,中国古代一个最成功的项目团队,就是西游记中的取经团队。取经也可以视作一个“项目”吗?有人作了分析。

首先,取经当然是“一次性”活动

其次,项目有明确的目标,那就是为了完成西天取经的伟大任务。

再次,项目有明确的约束条件,例如路途中只有师徒四人,必须千山万水地走过所有路程(不许使用法术)。

最后,项目是由“一系列相关任务”组成,一共经历了八十一次劫难,方能修成正果。至于项目的特点也都全部符合,所以称这次行动是一个“项目”并不为过。

唐僧=“项目经理”.因为他具有坚韧不拔的精神,不取真经誓不罢休。

沙和尚言语不多、任劳任怨,承担了项目中挑担这种既粗笨又无趣的工作

猪八戒:好吃懒做,但他性格开朗、天性乐观,在项目团队中起了润滑油的作用

孙悟空:取经团队的核心,本领高强,但性格不羁、很难管束,可是取经途中实在缺不了他,只好采用各种方法收复他(比如紧箍咒)。

除此之外,取经团队还充分利用了外部资源12/19/20235(2)项目的特点

一次性。没有现成的、完全可以照搬的先例。

独特性。每个项目都是独一无二的。

目的性。每个项目都有明确的目标。

风险性。风险管理是项目管理中非常重要的一环,包括风险识别、风险预测、风险决策内容。

高收益。12/19/202361.1软件(Software)概念1.软件的定义:计算机软件——与计算机系统操作有关的程序、规程、规则及任何与之有关的文档和数据。∴软件程序及有关数据—机器可执行;文档(与软件开发、运行、维护、使用、培训有关)——不可执行。程序(program)——按既定算法,用程序设计语言描述的,适合于计算机处理的指令或语句序列的集合。12/19/20237(二)软件的特点刻有word文档的光盘是软件吗?软件的制造过程与硬件的制造过程一样吗?软件开发的自动化程度比硬件制造的自动化程度高吗?计算机系统中软件的成本与硬件的成本谁高??12/19/202382、软件的特点软件是一个逻辑的而不是物理的产品。软件生产主要是脑力劳动,未摆脱手工开发方式软件开发是复杂过程,开发费用越来越高

软件具有与硬件不同的特点:软件是由开发或工程化而形成的,而不是传统意义上的制造产生的;软件不会“磨损”、“老化”;大多数软件是自定义的,而不是通过已有构件组装的。维护比硬件复杂。1.1软件(Software)概念12/19/20239(三)软件的分类一、软件的发展及理论按功能进行划分按规模进行划分按工作方式划分按服务对象范围划分类别参加人员数研制期限产品规模(代码行数)------------------------------------------------------------------微型11-4周0.5K小型11-6月1-2K中型2-51-2年5-50K大型5-202-3年10-100K甚大型100-10004-5年1M极大型2000-50005-10年1-10M实时处理软件分时软件交互式软件批处理软件项目软件产品软件系统软件支撑软件应用软件第一章绪论12/19/202310软件技术面临的问题:软件复杂性

例:1Windows95程序超过1000万行

2WWMCCS(军事和控制)花费3500多人拖了几年,交付后发显出100个错误。最后失败。

3城市银行出纳机程序7.8万行

软件生产率低下

开发一个软件可能需要几年,开发出来后已经过时12/19/2023111.2软件危机及其解决思路——软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。

1、软件危机的表现1)对软件开发成本和进度的估计常常很不准确。--常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象,从而降低了开发商的信誉,引起用户不满。2)产品不符合用户要求,质量差。用户对已完成的软件不满意的现象时有发生。3)软件产品的质量往往是靠不住的。12/19/2023124)软件可维护性差。5)软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。6)价格昂贵。软件成本在计算机系统总成本中所占比例逐年上升。特别是软件维护成本迅速增加,已经占据软硬件总成本的40%~75%。7)开发生产率提高的速度远跟不上软件需求。12/19/202313软件的发展计算机软件经历了三个发展阶段。12/19/202314(四)软件的发展程序设计程序系统软件工程软件所指程序程序及说明书程序、文档、数据设计语言汇编及机器语言高级语言软件语言软件工作范围程序编写包括设计和测试软件生存周期需求者程序设计者本人少数用户市场用户软件规模小型中小型大中小型软件开发组织个人开发小组开发小组、开发机构维护责任者程序设计者开发小组专职维护人员质量决定因素个人程序技术小组技术水平管理水平注:软件语言包括需求定义语言、软件功能语言、软件设计语言和程序设计语言等。12/19/202315软件危机1、软件开发无计划性;2、软件需求不充分3、软件开发过程无规范4、软件产品无评测手段软件开发过程中出现的问题:12/19/2023162.产生软件危机的原因1)用户对软件需求的描述不精确。2)软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需求不一致。3)缺乏处理大型软件项目的经验。开发大型软件项目需要组织众多人员共同完成。一般来说,多数管理人员缺乏大型软件的开发经验,而多数软件开发人员又缺乏大型软件项目的管理经验,致使各类人员的信息交流不及时、不准确、容易产生误解。4)开发大型软件易产生疏漏和错误。5)缺乏有力的方法学的指导和有效的开发工具的支持。软件开发过多地依靠程序员的“技巧”,从而加剧了软件产品的个性化。6)面对日益增长的软件需求,人们显得力不从心。从某种意义上说,解决供求矛盾将是一个永恒的主题。12/19/2023173.解决软件危机的途径到了20世纪60年代末期,软件危机已相当严重。这促使计算机科学家们开始探索缓解软件危机的方法。他们提出了“软件工程”的概念,即用现代工程的原理、技术和方法进行软件的开发、管理、维护和更新。于是,开创了计算机科学技术的一个新的研究领域。12/19/2023183.解决软件危机的途径纠正错误认识(建立工程化思想)将软件开发活动工程化,借鉴其他领域的经验指导软件开发发展新的软件工具,提高软件生产的效率和质量12/19/2023191.3软件工程的概念1.软件工程的定义1968年,北大西洋公约组织在原西德召开计算机科学会议,由FritzBauer首次提出了“软件工程”的概念。软件工程——用工程科学和数学的原则与方法来定义、开发、维护计算机软件的有关技术和管理方法。软件工程由方法、工具和过程三部分组成,称软件工程的三要素。目标:降低成本;达到要求的软件功能,取得较好的性能;易于移植;降低维护费用;及时交付;可靠性高12/19/2023202、件工程是一门交叉学科软件开发模型软件开发方法软件开发工具软件开发环境软件设计的交流语言软件开发过程及模型(软件立项到终止的全过程)软件项目管理软件实施与维护软件工程经济学计算机辅助软件工程(CASE)?软件工程的主要研究内容软件工程技术12/19/2023213、软件开发方法学定义:指编制软件的方法系统软件开发方法分类:结构化方法(传统方法):采用结构化技术(分析、设计、程序设计、测试)完成软件开发任务。缺点:维护难;代码重用低;面向对象方法12/19/2023224、开发过程方法学个体软件过程(PSP)群组软件开发过程(TSP)能力成熟度过程(CMM)12/19/2023231.4

软件生存周期软件生存周期定义(SoftwareLifeCycle)软件产品或软件系统从设计、投入使用到被淘汰的全过程,又叫生命周期。软件定义时期的任务是什么?p11可将软件生存周期划分为3个过程共9个阶段。3个过程是:软件定义过程、软件开发过程、软件使用与维护过程。9个阶段有:问题定义、可行性研究、需求分析、概要设计、详细设计、编码和单元测试、综合测试、使用与维护、退役。它们之间的关系如图1-4-1所示。12/19/202324图1-4-1软件生存周期阶段的划分使用与维护综合测试编码与单元测试详细设计概要设计需求分析退役开发过程使用与维护过程定义过程可行性研究问题定义要解决的问题是什么?(问题性质、工程目标、规模)问题是否有解决方法?研究问题是否值得解决目标系统必须做什么?确定系统必须完成的工作概括回答怎样实现目标?一个解决方法框架解决方法细化、模块化模块编程与测试组合模块过程中测试12/19/202325下面简要介绍软件生命周期每个阶段的基本任务:1、问题定义:必须回答的关键问题是:要解决的问题是什么?2、可行性研究:必须回答的关键问题是:对于上一个阶段所确定的问题有行得通的解决办法吗?3、需求分析准确地确定“为了解决这个问题,目标系统必须做什么?12/19/2023264、总体设计:必须回答的关键问题是:概括地说,应该怎样实现目标系统?5、详细设计:任务:把解法具体化,“应该怎样具体实现这个系统”?6、编码和单元测试关键任务是写出正确的容易理解、容易维护的程序模块。12/19/2023277、综合测试:关键任务是通过各种类型的测试使软件达到预定的要求。8、软件维护:关键任务是通过各种必要的维护活动使系统持久地满足用户的需求。12/19/2023281.4软件工程软件过程定义了运用技术方法上的顺序、应该交付的文档、为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。通常使用生命周期模型概括地描述软件过程。生命周期模型规定了软件过程包含的各个阶段,以及完成这些阶段的顺序。12/19/202329软件生存周期模型瀑布模型增量模型

演化模型原型模型螺旋模型喷泉模型12/19/2023301.瀑布模型(线形顺序模型)可行性研究与计划需求分析设计编码运行维护测试定义阶段开发阶段维护阶段12/19/202331瀑布模型中的软件工程思想1.阶段间具有顺序性和依赖性。2.推迟实现的观点。3.质量保证的观点。

每个阶段必须完成规定的文档;

每个阶段结束前完成文档审查,

及早改正错误。12/19/202332瀑布模型的主要优点:1、强迫开发人员采用规范的技术方法2、严格地规定了每个阶段必须提交的文档3、每个阶段结束前必须正式进行严格的技术审查和管理复审缺点:在可运行的软件产品交付给用户之前,用户只能通过文档来了解未来的产品是什么样子。12/19/2023332、增量模型(incrementalmodel)增量模型是一种非整体开发的模型。根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。增量模型和瀑布模型之间的本质区别是:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件。12/19/202334定义概要需求把需求分配给增量设计系统结构开发系统增量验证增量组装增量验证系统系统不完全最终系统

增量模型12/19/202335增量模型的主要优点如下:1、能在较短时间内向用户提交可完成部分工作的产品2、逐步增加产品功能,从而使用户有较充裕的时间学习和适应新产品12/19/2023364.原型模型又称快速原型模型,一般用于最终系统的早期用户评价,在原形基础上用户提出新的需求,开发人员快速修改。开发工期短,质量有保证12/19/202337快速原型模型所谓快速原型是快速建立起来的、可在计算机上运行的程序,它所能完成的功能往往是最终的软件产品所能完成功能的子集。主要优点:1、使用这种软件过程开发出的软件产品通常能满足用户的真实需求2、软件产品的开发过程基本上是线性顺序过程。12/19/202338

4螺旋模型

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

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

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

3.开发确认产品;

4.计划下一周期工作。

螺旋模型12/19/202339螺旋模型所描述的软件过程主要适用于内部开发的大型软件项目。主要优点:1、有利于已有软件的重用2、有助于软件质量作为软件开发的一个重用目标3、减少了过多测试或测试不足所带来的风险4、软件维护与软件开发没有本质区别12/19/2023406喷泉模型分析系统设计软件设计实现图1.5喷泉模型该模型是由B.H.Sollers和J.M.Edwards于1990年提出的一种新的开发模型。主要用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,喷泉模型使开发过程具有迭代性和无间隙性。

其特点如下:

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

12/19/2023411.4.3

统一软件开发过程(RUP)1、RUP概念p23

统一软件开发过程(RUP)是一种迭代的、可预测的方式来开发和维护高质量软件产品的活动集合,如下图所示。12/19/202342RUP具有四种作用:1)为开发团队的活动顺序提供指导。2)详细说明开发涉及哪些制品以及何时开发。3)指导每一个开发人员和整个开发团队的任务。4)为监控和度量项目的产品和活动提供标准。12/19/202343迭代式开发过程模型二、RUP的精髓1.软件的迭代开发12/19/202344软件迭代开发的特点:在软件开发的早期,强制性地进行风险控制,及时、高效地解决系统开发可能存在的风险。该模型的软件开发方法是一种持续地发现、创造和实现的过程,每一次迭代过程都会使开发团队以一种可预测和循环方式来完善项目产品。软件迭代开发能够解决什么?

可以在生命周期早期发现严重的需求理解错误,这时还可以修正这些错误。这种方法允许并鼓励用户反馈信息,从而抽取出系统的真正需求。这种方法使开发团队将注意力集中到项目中最关键的问题上,并屏蔽掉那些分散注意力的问题。12/19/202345持续的、迭代的测试可以为项目状况给出客观评估。需求、设计和实现中的不一致能够在早期被发现。在整个项目的生命周期中可以更加平均地分配整个团队,尤其是可以平均分配测试团队的工作量。团队可以在过程中总结经验教训,不断地改善开发过程。在整个生命周期中,项目相关人员可以通过具体证据

温馨提示

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

评论

0/150

提交评论