软件过程综述

过程综述

  IEEE[IEE93]对软件工程的定义为“软件工程是:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;(2)在(1)中所述方法的研究。

  软件工程是一种层次化的技术,任何工程方法都必须以组织对质量的承诺为基础;通过软件过程将各个技术层次结合在一起,并实施合理地、及时地开发计算机软件;软件工程的方法为建造软件提供技术上的解决方法,即如何做,覆盖面很广,包括沟通、需求分析、设计建模、编程、测试和支持;最后软件工程工具为过程和方法提供自动化或半自动化的支持。

  过程框架定义了若干小的框架活动,为完整的软件开发过程建立了基础,这些框架活动可广泛应用于所有软件开发的项目,无论这些项目的规模和复杂性如何。通用过程框架可适用于绝大多数的软件项目,也是后续各种模型描述的基础,包括:沟通、策划、建模、构建、部署

  美国卡内基.梅隆大学软件工程研究所SEI提出了一个全面的过程元模型,当软件开发组织达到不同的过程能力和成熟度水平时,该模型可用来预测其所开发的系统和软件工程能力。为达到这些能力,SEI认为组织都应建立与能力成熟度模型集成(Capability Matuiry Model Integration CMMI)指南相符合的过程模型。CMMI用两种不同的方式描述过程元模型:(1)作为一个连续的模型;(2)作为一个阶段性的模型。连续的CMMI模型从两个维度描述过程;每个过程域都根据特定的目标和实践要求,进行严格的评估,并根据能力水平定义为以下几级:不完全级;已执行级;已管理级;已定义级;以定量管理级;优化级。

  过程模型提供了一个模版,一种描述软件过程中重要特征的一致性方法,通过模式组合,软件团队可以定义能最好满足项目需求的开发过程。

  过程评估用来确认满足了成功软件工程所必须的基本过程和标准要求。主要的软件过程评估方法有:用于过程改进的标准CMMI评估方法Standard CMMI Assessment Method for Process Improvement, SCAMPI;用于组织内部过程改进的CMM评估CMM-Based Appraisal for Internal Process Improvement, CBA IPI;SPICE (ISO/IEC 15504);软件ISO 9001:2000

  个人软件过程Personal Software Process PSP强调对产品以及产品质量的个人测量;PSP过程模型定义了5各框架活动:策划、高层设计、高层设计评审、开发、后验

  团队软件过程Team Software Process TSP目标是建立一个能够自我管理的项目团队,团队能自我组织进行高质量的软件开发;TSP定义了以下框架轰动:项目启动、高层设计、实现、集成、测试以及后验。

  过程技术工具是用来对模型进行调整,以帮助软件开发组织分析现有过程、组织工作任务、控制并监测过程进度和管理技术质量

过程模型

  惯例过程模型规定了一套过程元素,包括框架活动、软件工程动作、任务、工作产品、质量保证以及每个项目的变更控制机制,每个过程模型还定义了工作流,也就是过程元素之间的项目关联的方式。如常见的瀑布模型、增量过程模型、演化过程模型、专用过程模型、统一过程等都是惯例过程模型的一种。

  瀑布模型,又称为经典生命周期,是一个系统的、顺序的软件开发方法,从用户需求规格说明书开始,通过策划、建模、构建和部署的过程,最终提供一个完整的软件并提供持续的技术支持。

  增量过程模型在初始的软件需求有明确定义,但是整个开发过程却不宜单纯运用线性模型的时候,可能需要为用户迅速提供一套功能有限的软件产品,然后在后续的版本中再细化和扩展功能。增量过程模型可以分为增量模型和RAD模型。增量模型以迭代的方式运用瀑布模型。快速应用程序开发Rapid Application Development RAD是一种侧重于短暂的开发周期的增量软件过程模型,是瀑布模型的高速变体,通过基于构件的构建方法实现快速开发,但是需要考虑到人力资源、项目能够合理模块化、系统性能和模块接口之间的关系还有就是技术风险这些因素。

  演化过程模型是迭代的过程模型,当复杂系统在开发过程中业务和产品需求经常发生变化,直接导致最终产品难以实现,严格的交付事件又使得开发团队不可能圆满完成软件产品,但是必须交付功能有限的版本来应对竞争或行业压力;也有些时候很地理解了产品和系统需求,但是产品或系统扩展的细节问题却没有定义,这个时候可以使用演化模型。演化过程模型有原型开发和螺旋模型以及协同开发模型。原型开发在客户无法详细定义输入、处理和输出需求的时候,快速设计一个原型,对原型进行部署,然后由客户或者用户进行评价,根据反馈进一步细化软件的要求,但是其缺点是客户容易忽略原型的欺骗作用。螺旋模型结合了原型的迭代性质和瀑布模型的系统性和可控性特点,具有两个显著的特点:一是采用循环的方式逐步加深系统定义和实现的深度,同时降低风险;而是确定一系列里程碑,确保共利益者都支持可行的和令人满意的系统解决方案。螺旋模型被分割成一些列由软件工程团队定义的框架活动,每个框架活动代表螺旋上的一个片段,随着演进过程开始,从圆心开始顺时针方向,软件团队执行螺旋上的一圈表示的活动,在每次演进的时候,都要考虑风险,每个演进过程还要标记里程碑。协同开发模型可表示为一系列框架活动、软件工程动作和任务以及相应的状态,协同过程模型定义了一系列事件,这些事件将触发软件工程活动、动作或者任务的状态转换。

  专用过程模型通常应用面狭窄,仅适用于某些特定的软件工程方法。基于构件的开发中,构件通常是通过良好定义的接口提供特定的功能,然后能够集成到软件中去。形式化方法模型的主要活动是生成计算机软件形式化的数学规格说明,使用严格的数学符号来说明、开发和验证基于计算机的系统,他的一个变型也被称为净室软件工程。面向方面编程Aspect-Oriented Programming AOP为定义、说明、设计和构建方面aspect提供过程和方法,是对横切关注点局部表示的一种机制,超越了子程序和继承的方法。

  统一过程讨论了建立一种”用例驱动、以架构为核心,迭代并增量“的软件过程的必要性,统一过程Unified Process尝试从传统软件过程中挖掘最好的特征和性质,但是以敏捷软件开发中许多最好的原则来实现。UP主要包含四个阶段:起始阶段,包括客户沟通和策划活动,定以软件的业务需求,提出系统大致的架构,并制定开发计划以保证项目具有迭代和增量的特性;构建阶段,采用体系结构模型作为输入,开发或获取软件构建,使得最终用户能够操作用例;转换阶段,软件被提交给最终用户进行Beta测试,用户反馈报告缺陷及必要的变更,另外软件开发团队创建系统发布所必要的支持信息,在转换阶段结束时,软件增量成为可用的发布版本;生产阶段,监控软件的持续使用,提供运行环境的支持,提交并评估缺陷报告和变更请求。

敏捷视角下的过程

  敏捷宣言:我们正在通过亲身实践以及帮助其他人实践的方式来揭示更好的软件开发之路,通过这项工作,我们认为:个体和交互胜过过程和工具、可工作软件胜过宽泛的文档、客户合作胜过合同谈判、响应变化胜过遵循计划,亦即,虽说上述右边的各项很有价值,但我们认为左边的各项具有更大的价值。

  敏捷联盟为希望达到敏捷的人们定义了12条原则:我们最优先要做的是通过尽早、持续交付有价值的软件来使客户满意;即使在开发的后期,也欢迎需求变更,敏捷过程利用变更为客户创造竞争优势;经常交付可工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好;在整个项目开发期间,业务人员和开发人员必须天天都一起工作;围绕受激励的个人构建项目,给他们提供所需的环境和支持,并且信任他们能够完成工作;在团队内部,最富有效果和效率的信息传递方法是面对面交谈;可工作软件是进度的首要度量标准;敏捷过程倡导可持续的开发速度,负责人、开发者和用户应该能够保持一种长期、稳定的开发速度;不断地关注优秀的技能和好的设计会增强敏捷能力;简单,使不需要的工作最大化的艺术是必要的;好的架构、需求和设计出自于自组织团队;每个一定事件,团队会反省如何才能更有效地工作,并相应调整自己的行为。

  敏捷过程基于三个假设:提前预测哪些需求是稳定的和哪些需求会变化非常困难;对很多软件来说,设计和构建是交错进行的;从制定计划的角度来看,分析、设计、构建和测试并不像我们所设想的那么容易预测。因此如何建立能解决不可预测性的过程,敏捷给出的答案是答案的自适应性,并且是增量地适应。

  敏捷软件开发非常强调人的因素,主要包括:基本能力;共同目标;精诚合作;决策能力;模糊问题解决能力;相互信任和尊重;自我组织

  敏捷过程模型主要有极限编程、自适应软件开发、动态系统开发方法、Scrum、Crystal和敏捷建模几种方法。极限编程eXtreme Programming XP使用面向对象方法作为推荐的开发泛型,包含了策划、设计、编码和测试四个框架活动的规则和实践。自适应软件开发Adaptive Software Development ASD的声明周期定义包含思考、协作和学习三个阶段。动态系统开发方法Dynamic System Development Method DSDM是一种提供”通过在可控项目环境中使用增量原型开发模式完全满足对时间有约束的系统的构建和维护“的敏捷软件开发方法,DSDM声明周期定义了3各不同的迭代循环,前面还有两个生命周期活动:可行性研究、业务研究、功能模型迭代、设计和构建迭代、实现。Scrum强调使用一系列软件过程模式,这些模式被证实在时间紧张的、需求变化的和业务关键的项目中是有效的,每一个过程模式定义一系列开发活动:待定项backlog、冲刺sprint、Scrum例会、演示。Crystal的目的是发展一种提倡机动性的软件开发方法,其首要目标是交付有用、可工作的软件,其第二目标是为下一次行动做准备。特征驱动开发Feature Driven Development FDD,定义了五中协作框架活动:开发全局模型、构造特征列表、特征计划、特征设计、个整构建。敏捷建模Agile Modeling是一种用于对软件系统有效建模和文档化的实践方法学,其主要特点是有目的的建模、使用多个模型、前进灯、内容终于表述形式、理解建模及工具、适应本地需要。

转载于:https://www.cnblogs.com/xp19870106/p/3358361.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值