第2讲软件生命周期和开发模型毛新军教授xjmao@nudt.edu.cn计算机科学与技术系602教研室0731-(45)73649软件工程导论之用工程化的方法来开发软件©CopyrightXinjunMao软件生命周期和软件开发过程模型2本讲内容1.软件生命周期2.软件开发模型3.CASE工具和环境©CopyrightXinjunMao软件生命周期和软件开发过程模型3什么是软件生命周期生命周期–人的生命周期:婴儿、幼儿、儿童、少年、…软件生命周期–软件从提出开发开始到最终灭亡所经历的时期©CopyrightXinjunMao软件生命周期和软件开发过程模型4软件生命周期示意图可行性研究需求分析概要设计详细设计实现集成测试确认测试使用与维护退役软件定义软件开发维护©CopyrightXinjunMao软件生命周期和软件开发过程模型5可行性研究(1/2)任务–了解用户要求和现实环境,从技术、经济、市场等方面研究并论证开发该软件系统的可行性技术途径–调查和了解用户要求和现实环境–攒写调查报告–可行性论证和分析(技术、经济等)–如可行,制定初步项目开发计划(人员,进度)©CopyrightXinjunMao软件生命周期和软件开发过程模型6可行性研究(2/2)阶段性产品–可行性论证报告–初步的项目开发计划©CopyrightXinjunMao软件生命周期和软件开发过程模型7需求分析(1/2)任务–确定用户对待开发软件系统的需求包括:功能性能运行环境约束重要性–软件开发依据,软件验收的标准困难性–难以说清,动态变化,歧义,复杂©CopyrightXinjunMao软件生命周期和软件开发过程模型8需求分析(2/2)技术途径和工具–需求分析人员需与用户不断、反复地交流和商讨,使用户需求逐步准确化、一致化、完全化–抽象、问题分解、快速原型、多视点等技术阶段性产品–软件需求规格说明书SRS(功能,性能和运行环境约束)©CopyrightXinjunMao软件生命周期和软件开发过程模型9概要设计任务–根据SRS建立目标软件系统总体结构、设计全局数据库和数据结构,规定设计约束,制定集成测试计划等等。技术途径和工具–根据软件需求规格说明书,自顶向下,逐步求精,抽象,模块化,局部化,信息隐藏…...阶段性产品–概要设计规格说明书–数据库或数据结构设计说明书–集成测试计划。©CopyrightXinjunMao软件生命周期和软件开发过程模型10详细设计任务–细化概要设计所生成的各个模块,并详细描述程序模块的内部细节(算法,数据结构等),形成可编程的程序模块,制订单元测试计划技术途径–根据SRS和概要设计结果进行,单入口单出口,PDL阶段新产品–详细设计规格说明书–单元测试计划©CopyrightXinjunMao软件生命周期和软件开发过程模型11实现任务–根据详细设计规格说明书编写源程序,并对程序进行调试和单元测试,验证程序与详细设计文档一致性技术途径和工具–以详细设计规格说明书为依据、基于某种程序设计语言进行编码阶段新产品–源程序代码©CopyrightXinjunMao软件生命周期和软件开发过程模型12集成测试任务–根据概要设计规格说明书,将经过单元测试的模块逐步进行集成和测试技术途径和工具–以概要设计规格说明书和集成测试计划为依据,进行集成模块并进行测试–IDE,专有工具等阶段性产品–生成满足概要设计要求、可运行的系统源程序和系统集成测试报告©CopyrightXinjunMao软件生命周期和软件开发过程模型13确认测试任务–根据软件需求规格说明书,测试软件系统是否满足用户的需求途径–由用户参与,以软件需求规格说明书为依据进行确认测试–专有工具阶段性产品–可供用户使用的软件产品(文档,源程序)©CopyrightXinjunMao软件生命周期和软件开发过程模型14软件维护任务–对使用后的软件进行维护例如:修正使用过程中发现的错误-纠错性维护增加新的功能-完善性维护从一个环境搬迁到另一个环境-适应性维护途径–以文档和源程序为基础按用户要求进行阶段性产品–版本更新的软件产品©CopyrightXinjunMao软件生命周期和软件开发过程模型15本讲内容1.软件生命周期2.软件开发模型3.CASE工具和环境©CopyrightXinjunMao软件生命周期和软件开发过程模型16软件开发模型软件生命周期(软件)软件开发过程(开发人员)=?软件开发模型是软件开发全过程、软件开发活动以及它们之间关系的的结构框架–软件项目的管理提供里程碑和进度表–为软件开发提供原则和方法©CopyrightXinjunMao软件生命周期和软件开发过程模型17软件开发模型种类以软件需求可完全确定为前提的瀑布模型在软件开发初期只能提供基本需求所采用的渐进式开发模型如原型模型、螺旋模型以形式化开发方法为基础的变换模型©CopyrightXinjunMao软件生命周期和软件开发过程模型18瀑布模型(1/4)主要思想–软件开发过程与软件生命周期是一致的–相邻二阶段之间存在因果关系–需对阶段性产品进行评审©CopyrightXinjunMao软件生命周期和软件开发过程模型19可行性研究需求分析概要设计详细设计实现集成测试确认测试使用与维护瀑布模型(2/4)©CopyrightXinjunMao软件生命周期和软件开发过程模型20瀑布模型(3/4)瀑布模型在软件工程中占有重要的地位不足–缺乏灵活性–到最后阶段才能得到可运行的软件版本©CopyrightXinjunMao软件生命周期和软件开发过程模型21可行性研究需求分析概要设计详细设计实现组装测试确认测试使用与维护带反馈的瀑布模型示意图©CopyrightXinjunMao软件生命周期和软件开发过程模型22快速原型模型(1/2)初步需求分析快速设计建造原型用户评估原型(新需求)开发产品开始结束©CopyrightXinjunMao软件生命周期和软件开发过程模型23快速原型模型(2/2)优点–有助于获取用户需求,加强对需求的理解–尽早发现软件中的错误–支持需求的动态变化–适合于需求动态变化,事先难以确定系统不足–不能支持风险分析©CopyrightXinjunMao软件生命周期和软件开发过程模型24螺旋模型(1/2)基本思想–螺旋模型是瀑布模型、原型模型的有机结合,同时增加了风险分析©CopyrightXinjunMao软件生命周期和软件开发过程模型25螺旋模型(2/2)优点–有助于获取用户需求,加强对需求的理解–尽早发现软件中的错误–支持需求的动态变化–支持风险分析,可降低或者消除软件开发风险–适合于需求动态变化,事先难以确定并且开发风险较大的系统©CopyrightXinjunMao软件生命周期和软件开发过程模型26本讲内容1.软件生命周期2.软件开发模型3.CASE工具和环境©CopyrightXinjunMao软件生命周期和软件开发过程模型27什么是CASE工具和环境计算机辅助软件工程(CASE)–在软件工程活动中,软件开发人员按照软件工程的方法和原则,借助于计算机及其软件工具的帮助来开发、维护和管理软件产品的过程CASE工具–支持CASE的工具(编译器,编辑器–推土机、锄头)集成CASE环境–将CASE工具、信息按统一标准和接口组装起来,使工具间、人员间、各个过程间能方便交互的环境。–如VisualC++将编辑、编译、调试、界面设计、安装程序生成等等集成在一起。(联合收割机)©CopyrightXinjunMao软件生命周期和软件开发过程模型28CASE工具和环境的类别目前已有大量的CASE工具–项目管理工具:估算项目成本和工作量,制定项目规划等等;–分析和设计工具:用于系统建模;–程序设计工具:编译器,调试器等;–测试工具:测试用例生成,程序动态跟踪工具©CopyrightXinjunMao软件生命周期和软件开发过程模型29CASE工具例子RationalRoseMicrosoftVisualStudio©CopyrightXinjunMao软件生命周期和软件开发过程模型30本讲小结1.软件生命周期2.软件开发模型3.CASE工具和环境©CopyrightXinjunMao软件生命周期和软件开发过程模型31思考题你认为软件开发有什么特点?面临主要问题是什么?软件开发模型和软件生命周期有何区别?软件开发模型在软件开发过程中起到什么作用?没有它行吗?CASE工具和环境在软件开发过程中起到什么作用?没有它行吗?©CopyrightXinjunMao软件生命周期和软件开发过程模型32Q&AAnIntroductiontoSoftwareEngineeringPractice,Practice,andPractice