软件过程模型与软件项目组织.ppt
《软件过程模型与软件项目组织.ppt》由会员分享,可在线阅读,更多相关《软件过程模型与软件项目组织.ppt(70页珍藏版)》请在冰豆网上搜索。
软件过程模型与软件项目组织软件过程模型与软件项目组织o软件生存周期o软件过程模型o编码修正模型o瀑布模型o原型实现模型o演化过程模型o基于构件的开发模型o形式化开发o过程模型与项目组织软件生存周期软件生存周期o软件生存周期是软件产品或系统从形成概念开始,经过研制,交付使用,在使用中不断增补修订,直到最后被淘汰,让位于新的软件产品的全过程。
o对软件生存周期的不同划分,形成了不同的软件开发模型。
o软件生存周期的主要阶段制定计划(Planning)需求分析和定义(RequirementAnalysisandDefinition)软件设计(SoftwareDesign)程序编写(Coding,Programming)软件测试(Testing)运行/维护(Running/Maintenance)a“quality”focusa“quality”focusprocessmodelprocessmodelmethodsmethodstoolstools过程规定方法使用的顺序;要求过程规定方法使用的顺序;要求交付的文档资料;为保证质量和交付的文档资料;为保证质量和适应变化所需要的管理;软件开适应变化所需要的管理;软件开发各个阶段完成的里程碑。
发各个阶段完成的里程碑。
方法提供了方法提供了“如何做如何做”的技术。
的技术。
工具为软件工程方法提供工具为软件工程方法提供了自动的或半自动的软件了自动的或半自动的软件支撑环境,支撑环境,CASE软件工程层次图软件工程层次图软件过程软件过程o过程过程过程是为实现一个给定目标而进行的一系列运作步骤。
过程具有一系列的性质:
时间性、并发性、嵌套性和度量性等。
o软件过程软件过程软件过程是开发和维护软件及其相关产品所涉及的一系列活动。
过程是活动的集合;活动是任务的集合;任务是把输入转换为输出的操作。
软件过程软件过程o软件过程是80年代后软件工程关注的焦点。
o软件过程是开发高质量软件所需要完成的任务的一个框架。
o软件工程是由软件人员在定义好的、成熟的软件过程框架中进行的。
软件过程框架软件过程框架o软件过程提供了一个公共过程框架;o选择一个公共过程框架的依据是产品、人员和项目;o在公共过程框架下可以建立一个软件开发的综合计划:
n若干框架活动适用于所有软件项目,而不在乎其规模和复杂性。
n若干不同任务的集合使得框架活动适应于不同软件项目的特征和项目组的需求。
n每一个任务集合都由任务、里程碑、交付物以及质量保证点组成。
n若干庇护性活动如软件质量保证、软件配置管理、测试与度量等,贯穿于整个过程模型之中。
n庇护性活动独立于任何一个框架活动,且贯穿于整个过程之中。
公共过程框架公共过程框架Commonprocessframework庇护性活动庇护性活动UmbrellaActivitiesProjecttracking&controlFormaltechnicalreviewsQualityassuranceConfigurationmanagementDocumentationReusabilitymanagementMeasurementRiskmanagement框架活动框架活动FrameworkActivities任务集合任务集合worktasks工作任务工作任务workproducts交付物交付物milestones&deliverables质量保证点质量保证点QAcheckpoints软件过程分类软件过程分类软件过程可分为三大类:
o基本过程类:
是构成软件生存周期主要部分的过程,包括获取、开发、实施、维护等过程。
o支持过程类:
可穿插到基本过程中提供支持的一系列过程,包括配置管理、质量保证、验证、确认、评审等过程。
o组织过程类:
一个组织用来建立、实施一种基础结构、并不断改进该基础结构的过程,包括管理、改进、培训等过程。
软件过程模型软件过程模型o软件过程模型是软件过程的抽象表示。
o一个软件过程模型是软件开发全部过程、活动和任务的结构框架。
它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。
o软件过程模型也常称为软件开发模型。
软件过程模型软件过程模型o过程模型定义了:
n特定问题和应用的开发过程中将遵循的步骤;n确定将用于表示问题和解的那些成分的类型;n利用这些成分表示与问题解决有关的抽象;n直接得到问题的结构。
o过程模型的选择影响到设计方法、编码语言和测试和维护技术的选择。
软件过程模型软件过程模型p编码修正模型(CodeandFixModel)p瀑布模型(WaterfallModel)p快速原型法(Rapidapplicationdevelopment)p增量开发模型(TheIncrementalModel)p螺旋模型(TheSpiralModel)p构件开发模型(Component-BasedDevelopment)p形式化开发模型(TheFormalMethodsModel)p第四代开发技术(FourthGenerationTechniques)编码修正模型编码修正模型o从一个大致的想法开始工作,然后经过非正规的设计、编码和测试,最后完成全部工作。
可能有或可能没有规格发布(可能)编码修正模型编码修正模型o好处:
好处:
n成本可能很低。
n只需要很少的专业知识,任何写过程序的人都可以。
n适用于一些非常小的、开发完后就会很快丢弃的软件。
o缺点:
缺点:
n对于规模稍大的项目,采用这种模型使项目难以控制。
瀑布模型瀑布模型瀑布模型瀑布模型o所有过程模型的鼻祖。
-Royce,1970o基本思想是把软件开发过程划分成若干阶段,各个阶段相当于瀑布中的一个台阶,把软件过程比喻成瀑布中的流水,暖流,在这些台阶中由上向下奔流。
o瀑布模型每个阶段的任务相对独立,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度。
o在软件的生存期的每个阶段都采用科学的管理技术和良好的方法与技术,而且每个阶段结束之前,都从技术和管理两个角度进行严格的审查,经确认之后才开始下一阶段工作。
o瀑布模型适合于结构化开发方法。
结构化分析过程问题定义和可行性研究问题定义和可行性研究o确定要开发软件系统的总目标。
o给出功能、性能、接口等方面的要求,完成该软件任务的可行性研究。
o估计可利用的资源(计算机硬件,软件,人力等)、成本、效益、开发进度。
o制定出完成开发任务的实施计划,连同可行性研究报告,提交项目管理部门审查。
需求分析需求分析o对待开发软件提出的需求进行分析并给出详细的定义。
o编写软件需求说明书或系统功能说明书及初步的系统用户手册。
o提交管理机构评审。
软件设计软件设计o总体设计“如何解决问题”o可以列出多种解决方案进行比较o把各项需求转换成软件的体系结构。
结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应o详细设计对每个模块要完成的工作进行具体的描述,为源程序编写打下基础o编写设计说明书,提交评审。
程序编写程序编写o把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”。
o写出的程序应当是结构良好、清晰易读的,且与设计相一致的。
软件测试软件测试o单元测试:
查找各模块在功能和结构上存在的问题并加以纠正。
o组装测试:
将已测试过的模块按一定顺序组装起来。
o按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用。
运行维护运行维护o改正性维护:
运行中发现了软件中的错误需要修正。
o适应性维护:
为了适应变化了的软件工作环境,需做适当变更。
o完善性维护:
为了增强软件的功能需做变更。
瀑布模型的特点瀑布模型的特点o里程碑或基线驱动,或者说是文档驱动。
每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。
o是一种严格线性的、按阶段顺序的、逐步细化的过程模型(开发模式),阶段间具有顺序性和依赖性。
过程逆转性很差或者说不可逆转,因为上流的错误会在下流进行发散性传播,逆转会延误工期,增加成本。
选择瀑布模型的条件选择瀑布模型的条件o开发时间内需求没有或很少变化。
o分析设计人员对应用很熟悉。
o低风险项目,对目标和环境很熟悉。
o用户使用环境很稳定。
瀑布模型的适用场合瀑布模型的适用场合o当有一个稳定的产品定义和很容易被理解的技术解决方案时,可以采用纯瀑布模型。
o当你对一个定义得很好的版本进行维护或将一个产品移植到一个新的平台上,可以采用瀑布模型。
o在质量需求高于成本需求和进度需求的时候,可以采用瀑布模型。
瀑布模型的缺陷瀑布模型的缺陷o在项目开始的时候,用户常常难以清楚地给出所有需求;用户与开发人员对需求理解存在差异。
o很少软件项目按照顺序模型进行,不能很好地支持迭代。
o缺乏灵活性,因为瀑布模型确定了需求分析的绝对重要性,但是在实践中要想获得完善的需求说明是非常困难的,导致“阻塞状态”。
反馈信息慢,开发周期长。
o只有到了整个项目的后半段时间,客户才能看到软件的模样。
一个没有及时发现的错误,可能导致灾难。
o虽然存在不少缺陷,瀑布模型经常被嘲笑为“旧式的”,但是在需求被很好地理解的情况下,仍然是一种合理的方法。
瀑布模型变种:
瀑布模型变种:
V型模型型模型o该方法是对瀑布模型的修正,强调了验证活动瀑布模型变种:
生鱼片模型瀑布模型变种:
生鱼片模型o把阶段重叠起来的瀑布模型o起源于日本硬件开发模型(富士通施乐)可行性研究可行性研究需求分析需求分析总体设计总体设计详细设计详细设计编码和调试编码和调试系统测试系统测试瀑布模型变种:
生鱼片模型瀑布模型变种:
生鱼片模型o传统的瀑布模型强调阶段之间最小的重叠,而生鱼片模型强调大幅度的重叠,即在需求分析完成之前就可以进行架构设计和部分详细设计。
o纯瀑布模型强调在任意两个阶段交接时,文档从一个团队交给另一个完全隔离的团队,但是如果一个团队完成各个阶段任务时,可以没有那么多文档。
o问题:
缺点是什么?
生鱼片模型因为阶段重叠,因而里程碑不明确,很难有效地进行过程跟踪和控制。
瀑布模型变种:
具有子项目的瀑布模型瀑布模型变种:
具有子项目的瀑布模型o纯瀑布模型的一个问题是必须完成全部的总体设计后才能进行详细设计,但是,整个系统中有些部分可能有些特殊性,可以有自己的步骤,即将这些部分划分为为子项目。
o问题:
该模型有何问题?
o这种方法的主要风险是相关性无法预料。
瀑布模型变种:
能够降低风险的瀑布模型瀑布模型变种:
能够降低风险的瀑布模型o纯瀑布模型要求在开始总体设计前,必须将用户的所有需求都搞清楚,但是实际中是很困难的。
o可降低风险的瀑布模型是在顶端,即需求分析和总体设计阶段引入螺旋以便降低风险。
o在该螺旋中,先开发一个用户界面原型,采用系统情节串联图版(systemstoryboarding)引导用户提出需求,记录用户与系统的交互操作方式,或者采用其它需求获取方法。
听取用户听取用户意见意见建造建造/修改修改原型原型用户测试用户测试运行原型运行原型原型模型原型模型PrototypeModel建立原建立原型目标型目标开发开发原型原型定义原定义原型功能型功能评估评估原型原型原型开发过程原型开发过程原型规划原型规划框架定义框架定义可执行原型可执行原型评估报告评估报告原型模型分类原型模型分类o原型是项目系统中的一个方面或者多个方面的工作模型。
n抛弃型原型:
用于试验某些概念,试验完系统将无用处n进化型原型:
原型系统不断被开发和被修正,最终它变为一个真正的系统。
原型模型的基本思想原型模型的基本思想o有一个原型,描述了系统的主要功能。
o通过人机交互,让双方了解目标系统的操作。
o有一个可运行的子集,用户可以评价需求和设计。
o利用线性系统,不断演化形成最终系统。
o降低了成本,及早发现错误、修改量小、开发周期短。
原型模型的特点原型模型的特点o原型驱动。
o优点:
o从实践中学习o改善沟通和用户参与o使部分已知需求清晰化o展示描述的一致性和完整性o提高系统的实用性、可维护性选择原型模型的条件选择原型模型的条件o适用于用户驱动的系统,即需求模糊或随时间变化的系统。
o已有产品或产品的原型,只需客户化的