您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程-第2讲R2
软件工程第2讲软件过程贾西平Email:jiaxp@126.com本课程的学习内容概述基本概念过程模型需求分析需求分析过程结构化分析面向对象分析软件设计设计概述结构化设计面向对象设计软件实现测试与维护软件测试软件维护项目管理项目估算计划管理21:582内容提要•软件过程•软件生命周期•能力成熟度模型•敏捷过程•软件过程实践3软件过程•定义–软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成的有关软件工程的活动。–通常使用生命周期模型简洁地描述软件过程•层次–软件工程是一门建立在以质量焦点为基础,分过程、方法和工具三个研究层次的综合技术。4过程、方法与工具工具方法过程质量焦点5•软件工程方法:为软件开发提供了“如何做某项工作的”的技术指南。过程、方法与工具工具方法过程质量焦点6•软件工程工具:为软件工程方法提供了自动的或半自动的软件支撑环境。过程、方法与工具工具方法过程质量焦点7•软件工程过程:定义了如何把各种方法和工具进行综合才能使软件开发合理,及时的进行。软件过程框架•框架是实现整个软件开发活动的基础;•与过程有关的角色、职责的定义以及实现都离不开框架的支持•软件过程包括两个方面:–组织及管理框架–技术及工具框架8软件过程模型•把软件生命周期中各项开发活动的流程用一个合理的框架—开发模型来规范描述,这就是软件过程模型。•也称软件生命周期模型9软件生命周期•定义:软件产品从策划、定义、开发、使用与维护直到最后废弃所经过的一个漫长时期。•划分为定义、开发,运行与维护三个阶段•细分为六个阶段:–问题的定义及规划–需求分析–软件设计–程序编码–软件测试–运行维护1021:58需求变更代价低中高代价早期中期晚期变更出现的时间图1.4需求变更代价随时间变化的趋势示意21:58改正问题代价2020010002000需求分析结构设计详细设计编码集成测试系统测试现场0.050.52.55改正一个问题的估算费用/美元改正一个问题的估算工作量/人日图1.5改正一个问题需要付出的代价能力成熟度模型集成•CMM(CapabilityMaturityModel):能力成熟度模型•CMM由美国卡内基-梅隆大学的软件工程研究所(SEI)开发的软件成熟度模型。•思想:管理软件过程的方法不当引起的问题,导致新软件技术的运用并不会自动提高软件的生产率和质量。•CMM为软件企业的过程能力提供了一个阶梯式的改进框架,它基于过去所有软件工程过程改进的成果,吸取了以往软件工程的经验教训,提供了一个基于过程改进的框架。•能力成熟度模型集成(CMMI--CapabilityMaturityModelIntegration)是CMM模型的最新版本。13CMM概述•为企业的发展规定过程成熟级别,分为5级(Version1.0):–初始级(Initial):一般企业皆具有–可重复级(Repeatable):成功经验可以重复–已定义级(Defined):一套完整的企业过程,人员自觉遵守(培训)–已管理级(Managed):过程&产品可度量和控制–优化级(Optimizing):过程持续改进•从无序到有序、从特殊到一般、从定性管理到定量管理、最终达到动态优化14CMM概述(续)2.Repeatable1.Initial3.Defined4.ManagedDisciplinedProcessStandard,ConsistentProcessPredictableProcessContinuouslyImprovingProcessUnpredictableandpoorlycontrolledCanrepeatpreviouslymasteredtasksProcesscharacterized,fairlywellunderstoodProcessmeasuredandcontrolledFocusonprocessimprovement5.OptimizingProjectManagementIntegratedEngineeringProcessProductandProcessQualityManagingChangeDisorderDisciplinedPredictableImmatureMature15CMM的概念模型•关键过程域KPA:代表一组相关的工作(活动)。每个KPA都有一个确定的目标,完成该目标即认为过程能力的提高。•一般特性CF(CommonFeatures):进一步细分KPA的工作。五个特性:–承诺(commitment)–准备(ability)–执行(activity)–度量分析(measurement&analysis)–验证(verifyingimplementation)16CMM的五个级别•Level1:初始级–过程无序且不可见OutIn17CMM的五个级别•Level2:可重复级–里程碑可见,按计划开发18CMM的五个级别Level2的6个KPA:侧重于管理•需求管理(RequirementsManagement)•软件项目计划(SoftwareProjectPlanning)•软件项目的跟踪和监控(SoftwareProjectTackingandOversight)•软件子合同管理(SoftwareSubcontractManagement)•软件质量保证(SoftwareQualityAssurance)•软件配置管理(SoftwareConfigurationManagement)19CMM的五个级别•Level3:已定义级–每个阶段的内部活动可见–项目定义过程可根据标准过程修改后进行20CMM的五个级别Level3的7个KPA:工程过程+企业理念•机构过程关注(OrganizationProcessFocus)•机构过程定义(OrganizationProcessDefinition)•培训计划(TrainingProgram)•集成软件管理(IntegratedSoftwareManagement)-过程裁剪和定义•软件产品工程(SoftwareProductEngineering)-过程执行•组间协调(IntergroupCoordination)•对等审查(PeerReviews)21CMM的五个级别•Level4已管理级–过程可度量,预测值与结果之间的偏差可控22CMM的五个级别•Level4的2个KPA:预测+量化管理•定量过程管理(QuantitativeProcessManagement)-过程度量•软件质量管理(SoftwareQualityManagement)-产品度量23CMM的五个级别•Level5优化级–过程动态调整、新技术的采用24CMM的五个级别•Level5的3个KPA:动态优化•缺陷预防(DefectPrevention)•技术改变管理(TechnologyChangeManagement)•过程改变管理(ProcessChangeManagement)25能力成熟度模型集成•CMMI--CapabilityMaturityModelIntegration是CMM模型的最新版本。•CMMI有两种表示方法:–阶段式表现方法(和软件CMM一样)–连续式的表现方法•CMMI的目标是质量、时间表和最低的成本26敏捷过程•是一类过程的统称•做法:–引入迭代式的开发手段–将整个软件生命周期分解为若干个小的迭代周期–获取切实有效的客户反馈,及时响应需求变更–提出12条基本原则•敏捷方法的两大特征:–对“适应性”的强调–对“人”的关注27极限编程•极限编程(eXtremeProgramming,XP)是一种软件工程方法学,是敏捷开发中最富有成效的方法学之一•极限:把提倡的方法和思想做到极限,不提倡的方法和思想一概忽略•由KentBeck在1996年提出•具有强沟通、简化设计、迅速反馈等特点•适合于规模小、进度紧、需求不稳定、开发小项目的小团队。28极限编程•特点:–XP模型是“轻量型”或“灵活”的软件过程模型,可与面向对象语言结合提出开发方案–用于解决大型软件开发中的棘手问题,被称为“专家协作”的开发方式•核心有四个要点:–交流–简单–反馈–勇气29结对编程•结对编程(Pair-Programming)是XP中非常重要的实践之一。•定义:两个人坐在同一台计算机前面,使用相同的键盘和鼠标来开发同样的一个模块,一个称为驾驶者(Driver),负责代码的键入,另外一个称为领航员(Navigator),负责监看与决策,包括低级错误和方向性的错误。当出现的一个问题对其中一个人来说,难以解决,而恰好是另外一个人的强项的时候,那么角色就会发生转换。30结对编程•优势:–可以减少风险–可以使团队生产效率更高–是知识传播的最好途径–可以打造出最佳的合作团队。–可以生成更好的代码•三个方面的应用:–教育学结对学习–工业界结对开发与编程–分布式结对编程环境31自适应软件开发•英文名:AdaptiveSoftwareDevelopment•由JimHighsmith提出•着眼于人员协作和团队自我组织,类似于收集人们创意的容器•生命周期三个阶段包括:–思考:启动项目并完成自适应循环计划–协作:沟通与信任–学习:改进真正的理解水平,通过焦点组、正式技术评审和事后剖析方式进行学习32动态系统开发•英文名:DynamicSystemDevelopmentMethod•是一种使用增量原型开发模式完全满足对时间约束的系统构建和维护的敏捷软件开发方法。•借用Pareto(佩瑞多)原则:即如果交付整个应用系统需用100%时间,那么80%的应用系统可以用20%的时间交付•建议使用迭代软件过程33特征驱动开发•特征驱动开发(Feature-Drivendevelopment)把软件开发项目作为一个系统,即生产软件的系统•定义六种关键项目角色:–项目经理–主设计师–开发经理–主程序员–类的所有者–领域专家34软件工程实践•软件工程实践的精髓:理解问题、计划解决方案、实施计划和检查结果的精确度等方面•通用的框架活动包括:–沟通–计划–建模–部署–普适性活动35软件工程实践•核心原则:①存在价值②保持简洁③维护视图④生产者要让消费者理解⑤面向未来⑥计划复用⑦认真思考36软件工程实践•沟通实践:包括决定项目涉及人的信息和沟通需求•计划实践:是软件开发过程的准备阶段,包括定义问题、可行性分析、制定计划•建立模型实践:创建分析模型和设计模型37要点回顾•软件过程•软件生命周期•能力成熟度模型CMM•敏捷过程•软件工程实践38思考题•什么是软件过程?•什么是软件生命周期?分哪几个阶段?•能力成熟度模型包括哪几个级别?•软件工程实践的精髓是什么?39谢谢!40
本文标题:软件工程-第2讲R2
链接地址:https://www.777doc.com/doc-4007941 .html