《软件工程——软件过程.ppt》由会员分享,可在线阅读,更多相关《软件工程——软件过程.ppt(55页珍藏版)》请在第壹文秘上搜索。
1、第2章 软件过程2第第2章章 软件过程软件过程 2.1 软件生命周期与瀑布模型 2.2 软件过程的概念 2.3 几个典型的软件过程模型 2.4 迭代与递增 2.5 RUP软件开发过程 2.6 敏捷开发2.1 软件生命周期与瀑布模型软件生命周期与瀑布模型 1.什么是软件生命周期 2.软件生命周期的阶段 3.各阶段的任务与文档 4.瀑布模型31.什么是软件生命周期什么是软件生命周期 一个软件从定义、开发、使用和维护,直到陈旧退役,要经历一个漫长的时期,称为软件的生命周期。Software Life Cycle也称为软件生存周期4人的生命周期:婴儿、幼儿、儿童、少年、2.软件生命周期的阶段软件生命周
2、期的阶段P18软件生命周期软件生命周期软件定义软件定义开发时期开发时期运行维护运行维护问题定义问题定义可行性研究可行性研究需求分析需求分析概要设计概要设计详细设计详细设计编码和单元测试编码和单元测试综合测试综合测试系统设计系统设计系统实现系统实现WhatWhatHowHowChangeChange系统系统分析员分析员系统系统设计员设计员测试员测试员程序程序设计员设计员5阶段任务结果(文档) 问题定义问题是什么问题概况说明可行性研究是否可行可行性研究报告需求分析系统要做什么 需求规格说明总体设计如何解决总体规格说明详细设计应该怎样具体地实现详细规格说明编码和单元测试编写正确的程序程序说明、清单、
3、单元测试方案和结果系统测试符合要求的软件测试方案和结果系统维护持久地满足用户需要完整准确的维护记录逐步细化6可行性研究可行性研究 任务了解用户要求和现实环境,从技术、经济、市场等方面研究并论证开发该软件系统的可行性 技术途径调查和了解用户要求和现实环境攒写调查报告可行性论证和分析(技术、经济等)如可行,制定初步项目开发计划(人员,进度) 阶段性产品可行性论证报告初步的项目开发计划7需求分析需求分析 任务确定用户对拟开发软件系统的需求包括:功能性能运行环境约束 重要性软件开发依据,软件验收的标准 困难性难以说清, 动态变化, 歧义,复杂 技术途径和工具需求分析人员需与用户不断、反复地交流和商讨,
4、使用户需求逐步准确化、一致化、完全化抽象、问题分解、快速原型、多视点等技术 阶段性产品软件需求规格说明书SRS(功能,性能和运行环境约束)8概要设计(总体设计)概要设计(总体设计) 任务根据SRS建立目标软件系统总体结构、设计全局数据库和数据结构,规定设计约束,制定集成测试计划等等。 技术途径和工具根据软件需求规格说明书, 自顶向下, 逐步求精, 抽象, 模块化, 局部化,信息隐藏 . 阶段性产品概要设计规格说明书数据库或数据结构设计说明书集成测试计划。9详细设计详细设计 任务细化概要设计所生成的各个模块, 并详细描述程序模块的内部细节(算法,数据结构等),形成可编程的程序模块,制订单元测试计
5、划 技术途径根据SRS和概要设计结果进行,单入口单出口 阶段性产品详细设计规格说明书单元测试计划10实现实现 任务根据详细设计规格说明书编写源程序,并对程序进行调试和单元测试,验证程序与详细设计文档 一致性 技术途径和工具以详细设计规格说明书为依据、基于某种程序设计语言进行编码 阶段性产品源程序代码单元测试报告11集成测试集成测试 任务根据概要设计规格说明书,将经过单元测试的模块逐步进行集成和测试 技术途径和工具以概要设计规格说明书和集成测试计划为依据,进行集成模块并进行测试IDE, 专有工具等 阶段性产品生成满足概要设计要求、可运行的系统源程序和系统集成测试报告12确认测试确认测试 任务根据
6、软件需求规格说明书,测试软件系统是否满足用户的需求 途径 由用户参与,以软件需求规格说明书为依据进行确认测试 阶段性产品可供用户使用的软件产品(文档,源程序)13软件维护软件维护 任务对使用后的软件进行维护例如:修正使用过程中发现的错误纠错性维护增加新的功能完善性维护从一个环境搬迁到另一个环境适应性维护 途径以文档和源程序为基础按用户要求进行 阶段性产品版本更新的软件产品141516瀑布模型图4.瀑布模型瀑布模型 主要思想 存在的问题17主要思想主要思想 基本活动与软件生命周期的阶段是一致的应制定软件开发规范或开发标准,明确规定各个开发阶段应交付的产品 开发流程流程:线性每个阶段只有当其前一个
7、阶段完成,并经过确认和验证以后才能开始(因果关系) 需对阶段性产品进行评审18存在的问题存在的问题 与软件规律不符软件工作是一个高速的、永不停止的变化变化流 需求必须准确定义和相对稳定应对需求变化的能力非常弱 与用户见面晚,纠错慢直到项目结束之前,都不能演示系统,增加了项目的风险。19当条件满足时,瀑布模型仍然很有效当条件满足时,瀑布模型仍然很有效202.2 软件过程的概念软件过程的概念 1.软件过程的公共框架 2.软件过程模型 3.软件过程能力成熟度模型211.软件生存期过程软件生存期过程 过程为了达到目标所进行的一系列活动或路线图 软件开发和维护的目标按时交付高质量的、满足需求的、低成本的
8、软件 1995年ISO/IEC 12207给出了一个软件过程的公共框架,P18图2-1为了获得软件产品所需要完成的一系列有关的活动每个过程包含一组活动,每项活动又包含一组任务22232.软件过程模型软件过程模型 描述了整个软件生存期中所实施的全部过程、活动和任务的结构框架是一个子集根据开发的软件项目规模和应用性质、采用的方法、需要的控制、参与的人员等多种因素进行裁剪常用的软件过程模型模型没有最佳的软件过程软件过程需要不断改进243.软件过程能力成熟度模型软件过程能力成熟度模型CMM 评价软件开发组织的软件过程的能力评估调查表252.3 几个典型的软件过程模型几个典型的软件过程模型 1.快速原型
9、 2.增量模型 3.螺旋模型 4.构件组装模型2627 初初步步需需求求分分析析 快快速速设设计计 建建造造原原型型 用用户户评评估估原原型型(新新需需求求) 开开发发产产品品 开开始始 结结束束 1.快速原型快速原型 开发流程快速构建原型明确需求丢弃丢弃原型重新开发 基本思想利用原型与用户沟通,以获取需求获取需求样品 【提示】快速原型法实际上是了解软件需求的一种快速原型法实际上是了解软件需求的一种方法,通常不做为一个独立的模型来使用。方法,通常不做为一个独立的模型来使用。282.增量模型增量模型 基本思想把项目拆解成若干个部分,分别开发 开发流程拆解的方法有两种:图2-5、图2-6线性流+并
10、行流 如何实施第一个增量往往是核心产品 优缺点P2529例:文字处理软件例:文字处理软件 第一个增量提供基本的文件管理、编辑和文档生成 第二个增量提供复杂的编辑和文档生成 第三个增量提供拼写和语法检查 第四个增量提供高级页面排版功能30313.螺旋模型螺旋模型 开发流程以螺旋的方式运用瀑布模型 基本思想是瀑布模型、原型模型的有机结合,同时强调了风险分析风险分析风险驱动把原型开发作为降低风险的机制32螺旋模型的优缺点螺旋模型的优缺点 对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。 需要相当的风险分析评估专门技术,比较复杂。 不适用于合
11、同项目334.构件组装模型构件组装模型 基于构件构件的软件开发接口 组装利用已有的构件 优点P27 问题34例例 如果你的客户要求你在一个不可能完成的时如果你的客户要求你在一个不可能完成的时间提交产品,你会如何处理?间提交产品,你会如何处理?建议采用增量增量模型,先迅速地为用户提供一套功能有限但包含核心核心功能的软件产品,然后在后续版本中进行细化和扩展功能。352.4 迭代与递增迭代与递增36需求 设计实现、测试、集成和进一步设计最终集成和 系统测试 需求 设计3周(例如) 系统是增量增量式增长的 .根据迭代N的反馈反馈,在迭代第N1中对需求和设计进行调整。如此反复,不断进化进化。迭代迭代:一
12、系列的短期小项目.时间最终集成和 系统测试实现、测试、集成和进一步设计 迭代软件开发过程是OOAD的最佳实践由一系列短时快速的开发小项目组成每次迭代都有各自的需求分析、设计、实现和测试活动,并集成为可执行的局部系统通过不断的反馈反馈,持续地扩展和精化系统,使之最终成为满足用户需求的系统 需求和设计的不稳定性 随时间下降37早期迭代远离系统的“真实路径”。通过反馈和设计,系统向最适宜的需求和设计收敛包括设计、实现、集成和测试的一次迭代,(快速的一小步快速的一小步)及时反馈、适应变化及时反馈、适应变化 软件开发过程中充斥着变化无论是需求、设计还是编码,不可能一次性就达到完美变化不是对过去工作的否定
13、,而是着眼于未来,是使工作更加完善的必要手段使工作更加完善的必要手段 及时准确的反馈,才能应对变化快速快速反应,周期不宜过长用户用户的积极参与,才能得到正确的、有价值的反馈38周期短、目标明确周期短、目标明确 迭代周期在26周 目标明确达到什么目的如何检查该目标是否已经达到39例子例子 P29A、B、C、D四个大的业务模块,每个约两周增量第一次完成A、B第二次完成C、D迭代第一次仅完成ABCD四个的基本业务第二次逐渐细化补充完成结果两周之后,迭代的四个模块都与用户见面,基本可用40迭代+增量:每次迭代,既有新增模块,也有对已开发模块的完善2.5 RUP软件开发过程软件开发过程 一、RUP的二维
14、开发模型 二、RUP的6个最佳实践活动 三、开发过程的4个阶段和里程碑 四、9个核心工作流 五、RUP的十大要素41RUP:Rational Unified Process一、一、RUP的二维开发模型的二维开发模型 值得注意的是,几乎所有的工作流在所有的时间段内均有工作量,只是工作量的大小不同而已。这与瀑布式开发模型有明显的不同。 横轴:时间轴展开了过程的生命周期初始、细化、构造和交付体现开发过程的动态结构 纵轴:内容轴列出开展的活动项目:9个核心工作流分为6个核心过程工作流(Core Process Workflows)3个核心支持工作流(Core Supporting Workflows)
15、体现开发过程的静态结构43二、二、RUP的的6个最佳实践活动个最佳实践活动 1.迭代开发规避风险,更好地获取需求 2.管理需求提高软件质量和客户满意度 3.使用构件的体系框架系统结构稳定 4.可视化的建模(UML)更好地理解与沟通44 5.持续的质量检验及早发现软件中的缺陷 6.管理变更项目成败的关键45三、开发过程的三、开发过程的4个阶段和里程碑个阶段和里程碑 初始阶段-目标建立商业模型并确定边界 细化阶段-结构分析问题领域,建立完整的体系结构,编制计划 构造阶段-初始功能开发构件并集成为产品 交付阶段-产品发布确保软件对用户是可用的46四、四、9个核心工作流个核心工作流 1.商业建模 2.
16、需求 3.分析和设计 4.实现 5.测试 6.部署 7.配置和变更 8.项目管理 9.环境47五、五、RUP的十大要素的十大要素 P3348六、六、RUP的运用经验的运用经验 P35492.6 敏捷开发敏捷开发 敏捷开发一些经验丰富的软件设计师在应对快速交付、需求易变的开发要求实践中分别总结出自己独特且有效的软件开发方法,被业界概括为敏捷软件开发方法。其中以“极限编程”最为流行。特点:以人为核心、循环迭代、响应变化目标:能高质量地快速交付客户满意的工作软件50敏捷宣言敏捷宣言敏捷开发实例敏捷开发实例 问题定义企业网站项目主要功能包括新闻发布、产品信息发布以及后台的用户管理和权限设置外围的论坛、FTP和电子邮件系统51 需求分析列出网站所有的功能,标记各功能之间的关系所有网页的布局问题:用户权限管理的设计方案企业部门众多:100+授权管理方式:层层授权52 构建第一次迭代20天主要功能第二次迭代完善细节部署53一周之后太过繁琐的层层授权模式导致客户怨声载道 重新开发与用户共同商讨优化的权限管理模式User Story客户代表的参与整个开发期间都与项目组在一起小步前进快速迭代54系统规模: