1、第2章 软件过程n 2.1 软件过程概述n 2.2 软件过程模型n 2.3 软件项目的过程管理n 2.4 软件过程评估2.2 软件过程模型n 软件过程模型n 软件过程模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。n 对任何软件的开发项目,都需要选择合适的软件过程模型,这种选择基于软件项目和应用的性质、采用的方法、需要的控制,以及要交付的产品的特点。2.2 软件过程模型n 软件过程模型n 瀑布模型n 演化过程模型n 增量过程模型n 专用过程模型n Rational统一过程n 敏捷过程与极限编程n 微软软件过程2.2 软件过程模
2、型n 瀑布模型n 瀑布模型(Waterfall Model)也称软件生存周期模型或线性顺序过程模型。瀑布模型是一种线性模型。n 瀑布模型提出了系统开发 系统化的顺序方法。将软件 生存周期各活动规定为线性 顺序连接的若干阶段,规定 了它们自上而下、相互衔接 的固定次序。2.2 软件过程模型n 瀑布模型n 特点:n 阶段间具有顺序性和依赖性n 推迟实现的观点n 质量保证的观点n 瀑布模型缺陷是将充满回溯且相互重叠的软件开发过程硬性地分为多个阶段,随着开发软件规模的增加,造成的危害大增。2.2 软件过程模型n 演化过程模型n 演化过程模型是一种全局的软件生存周期模型,属于迭代开发的模型。n 根据用户
3、的基本需求,通过快速分析构造出该软件的原型,然后根据用户在使用原型过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这一过程,最终可以得到令用户满意的软件产品。n 演化过程模型主要有原型模型螺旋模型与协同开发模型。2.2 软件过程模型n 原型模型n 开发者在初步了解用户需求的基础上设计和开发一个实在的软件初始模型(原型),利用原型模型进行软件开发。2.2 软件过程模型n 原型模型优点:n 减少设计中的错误和开发中的风险,减少对用户培训的时间;n 逐步求精完善原型,使得原型能够快速开发,避免了像瀑布模型一样难以对用户的反馈作出快速响应;n 原型模型通过“样品”不断改进,降低了成本;n
4、原型模型的应用使人们对需求有了渐进的认识,使软件开发更有针对性。n 原型模型的应用充分利用了最新的软件工具,使软件开发效率大为提高。2.2 软件过程模型n 螺旋模型:将瀑布模型和快速原型模型结合,强调其他模型所忽视的风险分析,吸收了“演化”的概念,可使开发人员和客户对每个演化层的风险有所了解,继而做出应有反应。n 将开发过程划分为制定计划、风险分析、实施工程和客户评估四类活动。将沿着螺旋线继续进行,自内向外逐步延伸,最终得到满意的软件产品。2.2 软件过程模型n 协同模型:协同就是通过将一组主动的片断黏合起来的方式来构建程序的过程。n 程序=协同+计算,倡导在分布式程序设计中将分布的协同与局部
5、的计算分离的思想。2.2 软件过程模型n 增量过程模型n 增量过程模型融合了线性顺序模型的基本成分和原型模型的迭代特征,采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。2.2 软件过程模型n 专用过程模型n 基于构件的开发模型:复用已有构件库中的软构件,逐步完成系统设计及实现。n 形式化系统开发模型:基于形式化数学变换的软件开发方法。n 面向方面的开发模型:将系统的横切关注点和核心关注点分开,避免横切关注点散乱分布在系统的多个类中。2.2 软件过程模型n Rational统一过程n 将软件生存周期分解为一个个周期,每一个周期又划分为4个连续的阶段:n 初始
6、阶段 为系统建立商业案例和确定项目的边界。n 精化阶段 分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。n 构建阶段 管理资源和控制运作以优化成本、日程、质量的生产过程。n 交付阶段 将软件产品交付给用户。2.2 软件过程模型n 敏捷过程n 敏捷过程是一种以人为核心、迭代、循序渐进的开发过程。n 个体与互动 胜于 过程与工具n 可工作软件 胜于 复杂文档n 用户协作 胜于 合同谈判n 响应变化 胜于 遵循计划2.2 软件过程模型n 极限编程n 是敏捷软件开发中可能是最富有成效的方法学之一,与传统方法学的本质不同在于它更强调可适应性以及面临的困难。n 加强开发者与用
7、户的沟通需求,让客户全面参与软件的开发设计,保证变化的需求及时得到修正。n 主要目标在于降低因需求变更而带来的成本。n 把软件开发过程重新定义为聆听、测试、编码、设计的迭代循环过程。2.2 软件过程模型n 微软软件过程n 微软过程的每个生存周期发布一个递进的软件版本,各生存周期持续、快速地循环。课堂讨论n 1.假如客户需求很模糊,或者他不是很了解软件开发的一些概念,这时,你拟采用什么软件过程模型?为什么?n 2.微软软件过程模型中,迭代和里程碑是重要主题。其中,用里程碑来计划和监控项目的进程;代码、文档、设计、计划和其他的工作成果都是以迭代的形式出现的。试分析模型中的主里程碑,以及迭代方法。问题思考n 1.什么是软件过程模型?有哪些主要模型(回答4种以上)?n 2.为什么增量过程模型适合商务软件?它适合实时控制系统吗?软件过程是指软件整个生命周期,从需求获取,需求分析,设计,实现,测试,发布和维护一个过程模型。软件过程构成了软件项目管理控制的基础,并创建了一个环境以便于技术方法的采用、工作产品的产生、里程碑的创建、质量的保证、正常变更的正确管理。