《软件工程》第2课-软件生存周期与软件过程_第1页
《软件工程》第2课-软件生存周期与软件过程_第2页
《软件工程》第2课-软件生存周期与软件过程_第3页
《软件工程》第2课-软件生存周期与软件过程_第4页
《软件工程》第2课-软件生存周期与软件过程_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

第2课软件生存周期与软件过程,知识回顾,软件工程学的范畴过程、方法、工具软件工程的发展三种编程范式三代软件工程,前馈及作业总结,作业电子版、笔记都可以,电子版随每次前馈一起提交,笔记定期检查。自学情况、需要精讲要填选,必须提出问题,要每个人都有,提出1-2个好问题。名称:第X小组软件工程课程前馈表,每个小组集成到一个文件中。用QQ发离线文件交给我。,问题解答,如果我们自己研究一个项目,怎么确定使用哪个模型进行研发,每个模型各有特点,优缺点,是否可以根据需求在软件开发的阶段选择最合适的模型进行研发?马振兴在软件风险中,有一项是编程人员离职,毕竟编程人员每个人的编码风格不同,怎么能降低这一情况产生时对项目的负面影响?史孟然螺旋模型从表面上看是采用了之前各个模型的优点建立的(保证了质量),但是螺旋模型的每一个小部分都使用瀑布模型和原型岂不是增加了开发成本和时间?陈万敏,前馈检查,把生存周期划分为阶段的目的是什么?传统的瀑布模型把生存周期分为哪些阶段?可行性研究包含哪些内容?为什么要进行风险分析?,讲授内容,生存周期与软件过程的关系传统的软件过程瀑布模型、快速原型模型软件演化模型增量模型、螺旋模型、构件集成模型统一过程和敏捷过程软件可行性研究可行性研究的内容与步骤软件风险分析,第二章软件生存周期与软件过程,软件生存周期传统的软件过程软件演化模型统一过程和敏捷过程软件可行性研究,1.软件生存周期,软件生存周期(SoftwareLifeCycle):一个软件项目从问题提出开始,直到软件产品最终退役(废弃不用)为止。软件生存周期分为三个时期:计划、开发和维护整个软件生存周期划分为多个相对独立的较小阶段,给每个阶段赋予确定而有限的任务,从而降低了整个软件工程的难度,提高了软件开发生产率,典型的软件生存周期,软件生存周期的主要活动,需求分析明确需要解决的问题(从用户的视角)建立需求模型:功能、性能、约束、接口等软件分析从开发人员的视角对软件进行分析建立分析模型:软件的逻辑模型软件设计确定软件的总体结构和各部件的数据结构和操作建立软件设计模型:考虑实现技术和平台编码用程序设计语言将设计文档翻译成源程序建立软件实现模型:包含现有软件构件包软件测试发现程序中的错误、提高软件质量单元测试、集成测试、确认测试、系统测试运行维护,软件过程与软件生存周期,软件过程围绕软件开发所进行的一系列活动,早期也叫“软件开发模型”。软件过程模型把软件生存周期中软件开发活动的有序流程用一个合理的框架来规范描述。软件过程模型是一种软件过程的抽象表示法,它从一个特定的角度表现一个开发过程。软件生存周期中的阶段和软件过程中的活动是基本一致的。,2.传统的软件过程,传统的过程模型瀑布模型(waterfallmodel)基于软件生存周期的线性开发模型。快速原型模型(rapidprototypemodel)基于原型的迭代化开发模型。,瀑布模型,W.Royce于1970年提出线性开发模型强调软件文档每一个阶段必须完成规定的文档每一个阶段都要复审完成的文档,瀑布模型,特点阶段的顺序性(前一阶段完成后才能开始下一阶段)和依赖性(前一阶段输出文档是下一阶段输入文档)。推迟实现的观点(不要过早编码)。质量保证的观点(必须完成文档并进行复审)。存在问题不适合需求模糊的系统。开发初始阶段很难彻底弄清软件需求。,快速原型模型,需求,原型开发,最终系统设计,原型评价,最终系统实现,用户反馈,快速原型模型,特点“逼真”的原型可以使用户迅速作出反馈。循环回溯和迭代:非线性模型。使用快速开发工具。种类渐进型:对原型补充和修改获得最终系统。抛弃型:原型废弃不用。应防止的偏向舍不得抛弃,从而影响软件质量。,3.软件演化模型,演化开发模型,遵循迭代的思想方法,使所开发的软件在迭代中逐步完善。增量模型(incrementalmodel)。螺旋模型(spiralmodel)。构件集成模型(componentintegrationmodel)。,增量模型,把软件看作一系列相互联系的增量,每次迭代完成一个增量,增量模型,增量小而可用的软件。第一个增量通常是软件的核心。特点在前面增量的基础上开发后面的增量。每个增量的开发可用瀑布或快速原型模型。每个增量开发的顺序性和总体的迭代性相结合。,螺旋模型,螺旋模型,特点瀑布模型(顺序性、边开发边复审)+快速原型(迭代性)。适用大型软件开发。风险分析,发现、控制风险。一个螺旋式周期计划:确定目标,选择方案,选定完成目标的策略。风险分析:从风险角度分析该策略。开发:启动一个开发活动。评审:评价前一步的结果,计划下一轮的工作。,构件集成模型,面向对象的基本概念对象(Object)类(Class)继承(Inheritance)消息(Message)面向对象对象+类+继承+消息通信面向对象开发模型均可借用面向过程开发模型。构件集成模型主要适用于面向对象的软件开发。,构件集成模型,构件在某个领域内具有通用性,可以复用的软件部件。将可以复用的构件存储起来,形成构件库。特点面向对象。基于构件库。融合螺旋模型特征。支持软件开发的迭代方法。软件复用。,构件集成模型,4.形式化方法模型,形式化方法模型,基于程序变换和验证技术的软件开发。转换模型(transformationalmodel)。净室模型(cleanroommodel)。,转换模型,开发过程确定形式化需求规格说明书。进行自动的程序变换。针对形式化开发记录进行测试。常用技术基于模型的需求规格说明书及变换技术。基于代数的需求规格说明书及变换技术。基于时序逻辑的需求规格说明书和验证技术。基于可视形式化的技术。,转换模型,净室模型,净室思想在分析和设计阶段消除错误。在“洁净”状态下实现软件制作。增量模型把软件看成一系列的增量。形式化每一个增量用形式化表示盒,表示分析和设计。正确性验证。,净室模型,需求收集,盒结构规约,形式化设计,统计性使用测试,正确性证明,代码生成与检查,测试计划,认证,需求收集,盒结构规约,形式化设计,统计性使用测试,正确性证明,代码生成与检查,测试计划,认证,需求收集,盒结构规约,形式化设计,统计性使用测试,正确性证明,代码生成与检查,测试计划,认证,增量1,增量2,增量n,软件过程模型的特点汇总,课堂互动,快速原型的快速表现在哪里?实现快速原型法的最终系统可以有几种方法?请说明并加以比较。,5.统一过程和敏捷过程,统一过程RationalUnifiedProcess(RUP)描述了软件开发中各个环节应该做什么、怎么做、什么时候做以及为什么要做,描述了一组以某种顺序完成的活动。敏捷过程AgileDevelopment是一种以人为核心、迭代、循序渐进的开发方法,其软件开发过程称为“敏捷过程”。,RUP,RationalUnifiedProcess将软件开发分为四个阶段:初始定义整个项目的范围,是否可行。细化制定项目计划、描述功能、建立体系架构框架。构造构造软件产品。迁移将软件产品移交到最终用户手中。,敏捷过程,把一个大项目分为多个相互联系但也可独立运行的小项目,并分别完成,在此过程中软件处于可用状态。敏捷开发的价值观个人和交互胜过过程和工具。可以运行的软件胜过面面俱到的文档。客户合作胜过合同谈判。响应变化胜过遵循计划。,敏捷过程,敏捷开发的12条原则尽早、不断地提交有价值的软件允许改变需求,利用变化来为客户创造优势尽快、不断地提交可运行的软件在业务人员和开发人员必须天天都在一起工作以积极向上的员工为中心建立项目组,提供环境和支持,并信任他们的工作在团队内部重视面对面的交流依据可运行软件来评估项目的进展提倡可持续的开发时刻关注技术上的精益求精和好的设计,以增强敏捷能力简单是最根本的最好的构架、需求和设计出于自组织团队每隔一定时间,要反省如何才能更有效地工作,然后作相应调整,极限编程,eXtremeProgramming是一种轻量级的、敏捷的软件开发方法。4个价值观交流、简单、反馈、勇气4个方面改善加强交流、从简单做起、寻求反馈、勇于实事就是。12个核心实践完整团队、计划对策、测试、简单设计、结对编程、小软件版本、设计改进、持续集成、代码共有、编码标准、系统比喻、可持续的速度。,6.软件可行性研究,目的研究项目是否可能实现和值得进行。研究的内容经济可行性技术可行性运行可行性法律可行性,可行性研究的步骤,对当前系统进行调查和研究弄清当前系统导出新系统逻辑模型导出新系统的解决方案设计不同的解决方案提出推荐的方案本项目的开发价值推荐这个方案的理由编写可行性论证报告系统概述可行性分析结论意见,软件风险分析,软件开发存在风险。风险识别项目风险(进度、人力、资源、客户)技术风险(设计、实现、接口、维护)商业风险(市场、策略、推销)建立风险项目检测表产品规模商业影响客户关系人员技术,例:人员配备风险检测表,(1)开发人员的水平如何。(2)开发人员在技术上是否配套。(3)开发人员的数量如何。(4)开发人员是否能够自始至终地参加软件开发工作。(5)开发人员是否能够集中全部精力投入到软件开发工作。(6)开发人员对自己的工作是否有正确的期望。(7)开发人员是否接受过必要的培训。(8)开发人员的流动是否能够保证工作的连续性。上述问题可以选用0,1,2,3,4,5来回答。完全肯定取值为0,反之为5,中间情况分别取值1,2,3,4值越大表示风险越大。人员配备风险检测表反映了人的因素给软件项目带来的风险。,风险估算,软件项目管理人员可以从影响风险的因素和风险发生后的损失两方面来度量风险。,风险评价和管理,三元组ri,li,xii=1,2,3l风险序号其中:ri表示风险,li表示风险发生的概率xi表示风险产生的影响。由于项目超支、进度拖延和软件性能下降都会导致软件项目的终止,对大多数软件项目,分析应都需要给出成本、进度和性能的风险参考值,当某一风险或风险组合值超过参考值时项目被迫停止。,风险评价和管理,三元组ri,li,xi是风险管理的基础设高级职员流动给项目带来风险ri,根据历史的经验或直观感觉,高级职员离开课题组的概率li=70%,这一风险导致事件xi发生项目开发时间延长15%,成本增加20%,项目负责人采取的风险管理措施,(1)项目开始前控制产生风险的原因。项目开工后应设法减轻风险的影响。(2)了解项目开发人员变动的原因,在项目开发期间应控制上述原因,尽量减少人员的流动。(3)在工作方法和技术上采取适当措施,防止因人员流动给工作带来损失。(4)项目在开发过程中应及时公布并交流项目开发的信息。(5)建立组织机构,确定文档标准、并及时生成文档。(6)对工作进行集体复审,使多数人都能了解工作的细节,跟上工作进度。(7)为关键技术准备后备人员。,风险缓解、监控和管理计划,风险缓解、监控和管理计划RiskMitigation,Monitoring,andManagementPlan将风险分析工作文档化,成为项目的一部分。执行RMMM计划需要成本当软件项目比较大时,可能标出30至40种风险,如果为每种风险定义3至7种风险管理步骤,则风险管理本身就是一个项目。,项目实施计划,软件计划主要有7种类型。项目实施计划最重要的软件计划,管理文档,供软件开发单位使用。通常包括软件目标、功能、进度、资源和费用等多个方面。质量保证软件测试文档编制用户培训综合支持软件分发,课堂互动,哪些开发模型适用于面向对象的软件开发?你认为可行性研究还应包含哪些内容?,小结,随着软件工程的发展,许多学者先后提出了瀑布模型、快速原型模型、增量模型、螺旋模型、转换模型、净室模型和构件集成等多种过程模型,各种软件开发模型各有优缺点在选定软件开发过程时,开发者不仅应该了解开发过程的特点,还应该结合待开发系统的特点一起考虑。如有必要,也可以同时组合多种模型或创建新的模型。,课外任务,作业P40:习题3、习题6、习题10、习题12。从教学群下载“软件工程课程学案.doc”文件完成第3次课学案内

温馨提示

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

评论

0/150

提交评论