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

下载本文档

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

文档简介

2020/5/30,1,软件工程,彭焕峰penghf,教学方式,讲授项目案例作业答辩课堂讨论自主学习,大纲,第一章软件工程概述第二章需求分析第三章软件设计第四章软件测试第五章软件维护第六章过程管理,2020/5/30,4,软件工程,第一章:软件工程概述,推荐教材1,原书名:SoftwareEngineering(9thEdition)原出版社:AddisonWesley作者:(英)IanSommerville译者:程成丛书名:计算机科学丛书出版社:机械工业出版社,推荐教材2,作者:许家珆白忠建吴磊丛书名:普通高等教育“十一五”国家级规划教材出版社:高等教育出版社ISBN:9787040280449上架时间:2011-6-23出版日期:2011年2月,1.1软件工程基本概念,什么是软件?计算机系统中与硬件相互依存的另外一部分包含了程序、数据和相关文档,什么是工程?,工作量大涉及人员多活动分解,并规范化强调管理(计划并监督),软件开发为何要更需要工程化,软件工程与一般工程的差异,软件是逻辑产品而不是实物产品软件的功能依赖于硬件和软件的运行环境以及人们对它的操作软件设计的复杂性智力密集及知识产权保护,软件工程与一般工程的差异,1.软件不是传统意义上的“制造”产生的,而是“研发”出来的。导致:软件项目管理和软件产品保护困难。2.软件不会被“用坏”。导致:软件维护困难(软件维护不能通过重复制造解决)。3.软件大多是“定制”的。导致:软件开发的质量和效率受到影响。4.软件成本难于估计。导致:软件项目计划失效。,软件开发面临的主要问题,规模复杂性生产率,规模举例,Windows95有1000万行代码Windows2000有5000万行代码,Exchange2000和Windows2000开发人员结构,人月神话焦油坑,史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。,软件危机,软件产品质量低劣,甚至开发过程即夭折软件生产率低,不能满足需要,软件工程的定义,软件工程:软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。首次提出:1968年,北大西洋公约组织在原西德召开计算机科学会议,由FritzBauer首次提出了“软件工程”的概念。提出背景:解决软件危机。,软件工程是一门交叉学科,软件工程的主要研究内容:软件开发技术:软件开发方法学软件开发过程软件工具和软件工程环境软件工程管理:软件管理学软件经济学软件心理学软件工程相关研究持续推进!,软件工程三要素,工具,方法,过程,质量焦点,Softwareengineeringlayers,软件工程三个要素:方法、工具、过程,软件工程的发展阶段,软件工程发展的另一种途径,计算机学科的发展,计算机科学(CS),计算机科学(CS),计算机工程(CE),软件工程(SE),信息系统(IS),计算学科(computingdiscipline),软件工程知识结构,2001年5月ISO和IEC的第一联合技术委员会发布了SWEBOK指南V0.95(试用版),SWEBOK把软件工程学科的主体知识分为10个知识领域。,软件需求软件设计软件构造软件测试软件维护软件配置管理软件工程管理软件工程过程软件工程工具和方法软件质量,软件工程学习的目标,转变对软件的认识:上升程序系统转变思维定式:上升程序员系统工程师(系统分析员),软件生存周期,需求分析,软件设计,编码,维护,测试,问题定义,可行性研究,计划时期,开发时期,维护时期,软件过程模型(软件开发模型),软件开发模型:一个软件项目开发和维护的总体过程思路的框架。作用:指出了软件开发过程各阶段之间的关系和顺序。为软件开发过程提供原则和方法。为软件工程管理提供里程碑和进度表。,主要的软件开发模型,主要的软件开发模型传统的软件开发模型瀑布模型快速原型模型软件演化模型阶段开发模型螺旋模型面向对象开发模型统一过程形式化方法模型转换模型模型驱动的开发模型基于构件的软件开发模型构件集成模型基于复用的软件开发模型,1.瀑布模型-WaterfallModel,瀑布模型(WaterfallModel)是W.Royce于1970年提出。在瀑布模型中,各阶段的工作顺序展开。瀑布模型的特征阶段间的顺序性和依赖性:前一阶段工作完成以后,后一阶段工作才能开始;前一阶段的输出文档,是后一阶段的输入文档。推迟实现观点:需求分析软件设计编码质量保证观点:每一阶段都要完成规定文档,没有完成文档,就认为没有完成该阶段的任务;每一阶段都要对已有的文档进行复审,以便尽早发现问题,消除隐患。,1.瀑布模型-WaterfallModel,用户要求,需求分析,需求规格说明,总体设计,软件结构图,详细设计,模块说明,编码,程序清单,单元测试,集成测试,系统测试,验收测试,瀑布模型的阶段和文档,1.瀑布模型-WaterfallModel,瀑布模型存在问题软件开发的初始阶段指明软件系统的全部需求是困难的,有时甚至是不现实的。需求确定以后,用户和软件项目负责人要等到相当长的时间(设计实现测试运行)才能得到一份软件的最初版本。如果用户对这个软件提出比较大的修改意见,那么软件项目将会受到巨大的人力、财力和时间方面的损失。,2.快速原型模型-RapidPrototypeModel,原型:是一个部分开发的产品,它使客户和开发人员能对计划开发的系统来实现一小部分关键需求,以确保需求是一致的、可行和符合实际的。抛弃型:根本目的是帮助用户和开发者更好的确定系统需求,可以看做传统瀑布型需求分析阶段的一个辅助手段。演化型:掌握一定用户需求后,实现系统的基本功能,作为系统的核心,然后反复修改、扩充,发展成最终的软件系统。,2.快速原型模型-RapidPrototypeModel,需求分析,原型评价,最终系统设计,最终系统实现,原型开发,规格说明,可运行原型,用户反馈,快速原型模型的生存周期模型,3.阶段化开发模型-PhaseModel,循环周期:从编写需求文档到系统交付的时间称为循环周期。减少循环周期的方法:阶段化开发。阶段化开发方法:使用阶段化开发方法设计系统时,能够使其一部分一部分地交付,从而在系统其余部分正在开发的同时,用户已经获得了一部分功能。因此,通常会存在两个并行的系统:运行系统或产品系统和开发系统。,3.阶段化开发模型-PhaseModel,阶段化开发模型,构建发布1,构建发布2,构建发布3,发布1,发布2,发布3,开发系统(DevelopmentSystem),开发人员,用户,时间,准备用来替换现行产品系统的下一个版本,产品系统(ProductionSystem),当前正在被客户和用户所使用的系统,4.增量开发和迭代开发模型,增量开发(IncrementalDevelopment),迭代开发(IterativeDevelopment),在增量开发中,需求文档中指定的系统按照功能划分为子系统。定义发布时首先定义一个小的功能子系统,然后在每一个新的发布中增加新功能。,迭代开发是在一开始就提交一个完整的系统,然后在每一个新的发布中改变每个子系统的功能,5.螺旋模型-SpiralModel,在瀑布模型和快速原型模型的基础上增加了风险分析。螺旋模型类似于迭代开发模型。它以需求和一个初始计划(包括预算、约束、人员安排方案、设计和开发环境)为起点,在产生“操作概念”文档(从高层描述系统如何工作)之前,插入一个风险评估和可选原型的步骤。操作概念是第一次迭代的产品,而需求则是第二次迭代的主要产品。在第四次迭代中,系统开发产生设计,而第四次迭代能够进行测试。,5.螺旋模型-SpiralModel,确定目标、可选方案及约束,操作概念,预算1,预算2,预算3,预算4,风险分析1,需求、生命周期计划,约束1,约束2,约束3,约束4,风险分析2,风险分析3,风险分析4,原型1,原型2,原型3,原型4,软件需求,经确认的需求,开发计划,软件设计,评估可选方案及风险,可选方案2,可选方案1,可选方案3,可选方案4,制定计划,集成和测试计划,开发与测试,经确认的设计,详细设计,编码,单元测试,系统测试,验收测试,实施计划,6.构件集成模型-ComponentIntegrationModel,将新构件存入库中,标志候选构件,在构件库中查找构件,进行下一次迭代,构造构件,是否在构件?,是,否,计划,风险分析,用户通信,产品开发与发布,用户评估,提取构件,7.基于复用的开发模型-DevelopmentModelbasedonSoftwareReuse,分析领域需求的共性及变化性,建立满足领域需求的软件架构(DSSA),在代码级实现面向领域的构件,可交付系统,8.模型驱动开发模型-Model-drivenDevelopmentModel,计算无关模型(CIM),平台独立模型(PIM),代码(Code),平台相关模型(PSM),CIM是非常高级层次的抽象模型,它以一种独立于计算机的方式捕获了系统的关键需求以及问题域的术语。,PIM是独立于任何底层平台的(例如,EJB,.Net)、表达软件系统业务语义的模型。,PSM包含了所有在PIM中表达的功能,并且还添加了针对实现平台的设计思想。,软件系统(SoftwareSystem),映射,产生,部署,9.转换模型-TransformationModel,变换模型是基于形式化规格说明语言及程序变换的软件开发模型。,与需求比较后修正,形式化规格说明,形式化开发记录,变换n,变换2,变换1,测试,系统需求,目标系统,10.Rational统一过程-RationalUnifiedProcess,统一软件开发过程(RUP)是一种迭代的、可预测的方式来开发和维护高质量软件产品的活动集合。,RUP迭代过程,10.Rational统一过程-RationalUnifiedProcess,RUP的意义为开发团队的活动顺序提供指导。详细说明开发涉及哪些制品以及何时开发。指导每一个开发人员和整个开发团队的任务。为监控和度量项目的产品和活动提供标准。,11.极限开发模型-AgileDevelopmentModel,敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发方法。敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和响应能力。,敏捷开发更重视人在软件开发中的作用,强调快速迭代、持续集成以及测试驱动开发等。,11.极限开发模型-AgileDevelopmentModel,主要目的是降低需求变化的成本定义了一套简单的开发流程包括:编写用户案例,架构规范,实施规划,迭代计划,代码开发,单元测试,验收测试等等提倡互动交流、反馈、简单、勇气、团队核心做法:小规模,频繁的版本发布,短迭代周期。测试驱动开发(

温馨提示

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

评论

0/150

提交评论