《软件开发流程实训教程.ppt》由会员分享,可在线阅读,更多相关《软件开发流程实训教程.ppt(473页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件职业技术学院“十一五”规划教材软件开发流程实训教程杜文洁 景秀丽 主编第第1 1章章 软件开发项目的前期准备软件开发项目的前期准备【本章引言本章引言】软件开发在整个计算机软件的生存周期中是最重要的一软件开发在整个计算机软件的生存周期中是最重要的一环。如何高效、高质的开发成功的软件产品一直是软件环。如何高效、高质的开发成功的软件产品一直是软件工程师们一直追求的目标。经过半个多世纪的研究与探工程师们一直追求的目标。经过半个多世纪的研究与探索,人们在计算软件开发领域已经积累了丰富的经验与索,人们在计算软件开发领域已经积累了丰富的经验与成果。成果。【教学目标教学目标】掌握计算机软件的概念与计算机软
2、件的基本分类;掌握计算机软件的概念与计算机软件的基本分类;掌握软件生存周期划分与相关档案掌握软件生存周期划分与相关档案的内容;的内容;掌握常用软件开发模型;掌握常用软件开发模型;掌握计算机软件开发方法。掌握计算机软件开发方法。第一章第一章 软件开发项目的前期准备软件开发项目的前期准备 1.1 计算机软件概述计算机软件概述 1.2 软件的生存周期软件的生存周期 1.3 软件开发常用模型软件开发常用模型 1.4 软件开发方法和软件开发工具软件开发方法和软件开发工具 1.1 计算机软件概述计算机软件概述 1.1.1 计算机软件概念计算机软件概念 1.1.2 软件的分类软件的分类 1.1.3 软件工程
3、的历史及发展软件工程的历史及发展 1.1 计算机软件概述计算机软件概述 软件软件是一个完整的计算机系统中与是一个完整的计算机系统中与硬件相互依存的另一部分,它是包括硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。程序,数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档序能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图是与程序开发,维护和使用有关的图文材料。文材料。1.1.1 计算机软件概念计算机软件概念 软件软件是计算机系统中
4、与硬件相互依存的另一部是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整分,它是包括程序,数据及其相关文档的完整集合。集合。计算机软件计算机软件是指计算机程序以及解释和指导使是指计算机程序以及解释和指导使用程序的文档的总和。计算机程序包括源程序用程序的文档的总和。计算机程序包括源程序和目标程序。和目标程序。1.1.1 计算机软件概念计算机软件概念源程序源程序是指用高级语言或汇编语言编写的是指用高级语言或汇编语言编写的程序,目标程序是指源程序经编译或解释程序,目标程序是指源程序经编译或解释加工以后,语言编写的程序,目标程序是加工以后,语言编写的程序,目标程序是指源程序经
5、编译或解释加工以后可以由计指源程序经编译或解释加工以后可以由计算机直接执行的程序。算机直接执行的程序。文档文档是指用自然语言或者形式化语言所编是指用自然语言或者形式化语言所编写的文字资料和图表,用来描述程序的内写的文字资料和图表,用来描述程序的内容、组成、设计、功能规格、开发情况、容、组成、设计、功能规格、开发情况、测试结果及使用方法。测试结果及使用方法。1.1.1 计算机软件概念计算机软件概念软件开发的特点是:软件开发的特点是:(1)由于软件并不是实际存在的物理形态由于软件并不是实际存在的物理形态 它是一种抽象的逻辑过程,是一种逻辑实体,它是一种抽象的逻辑过程,是一种逻辑实体,这个特点使它与
6、其它工程对象有着明显的差异。这个特点使它与其它工程对象有着明显的差异。人们可以把它记录在纸上、内存、和硬盘、光人们可以把它记录在纸上、内存、和硬盘、光盘上,但却无法看到软件本身的形态,必须通盘上,但却无法看到软件本身的形态,必须通过观察、分析、思考、判断,才能了解它的功过观察、分析、思考、判断,才能了解它的功能、性能等特性。能、性能等特性。1.1.1 计算机软件概念计算机软件概念 (2)(2)软件的生产过程也非常特殊,同我们传软件的生产过程也非常特殊,同我们传统意义里的普通工厂里的加工不同的是,软件统意义里的普通工厂里的加工不同的是,软件更像是一种纯粹的脑力劳动,同第一个特点一更像是一种纯粹的
7、脑力劳动,同第一个特点一样它没有明显的物理加工过程。样它没有明显的物理加工过程。(3)(3)由于软件产品其实是一种抽象的逻辑存由于软件产品其实是一种抽象的逻辑存在,所以在软件的运行和使用期间,没有硬件在,所以在软件的运行和使用期间,没有硬件那样的机械磨损,设施老化问题。那样的机械磨损,设施老化问题。1.1.1 计算机软件概念计算机软件概念 任何物理设备在运行和使用中,都有一个大致趋任何物理设备在运行和使用中,都有一个大致趋势相同的失效率曲线。即为如图势相同的失效率曲线。即为如图1-1(a)1-1(a)所示的型曲所示的型曲线(即浴盆曲线)。在这个曲线里边我们可以看出随线(即浴盆曲线)。在这个曲线
8、里边我们可以看出随着使用时间的增加设备的失效率主要是由磨损用坏造着使用时间的增加设备的失效率主要是由磨损用坏造成的。而软件的情况与此不同,由于其固有的特性,成的。而软件的情况与此不同,由于其固有的特性,本身不存在磨损和老化问题,即便是他的载体出现本身不存在磨损和老化问题,即便是他的载体出现型曲线,软件本身仍然可以便利的移到另一台载体上型曲线,软件本身仍然可以便利的移到另一台载体上边。然而同物理设备不同的是它存在退化问题,说着边。然而同物理设备不同的是它存在退化问题,说着时间的增加,软件本身会出现落伍的现象,因此必须时间的增加,软件本身会出现落伍的现象,因此必须要对软件本身进行一次或多次修改(维
9、护),要对软件本身进行一次或多次修改(维护),如图如图1-1(b)1-1(b)所示。而这些修改又不可避免的引入所示。而这些修改又不可避免的引入错误,导致软件失效率升高,从而似的软件退化。当错误,导致软件失效率升高,从而似的软件退化。当修改的成本变得难以接受时,软件就被抛弃。修改的成本变得难以接受时,软件就被抛弃。1.1.1 计算机软件概念计算机软件概念图图1-1 1-1 计算机软件失效率曲线计算机软件失效率曲线1.1.1 计算机软件概念计算机软件概念 (4)(4)软件的开发和运行不是完全由软软件的开发和运行不是完全由软件本身的技术实现的,它常常还受到件本身的技术实现的,它常常还受到计算机系统的
10、限制,对计算机系统有计算机系统的限制,对计算机系统有着不同程度的依赖性。软件对硬件和着不同程度的依赖性。软件对硬件和环境有着不同程度的依赖性。这导致环境有着不同程度的依赖性。这导致了软件移植的问题了软件移植的问题1.1.1 计算机软件概念计算机软件概念 (5)(5)软件本身是一件结构非常复杂的产品。软件本身是一件结构非常复杂的产品。软件的复杂性来自于两个方面:软件的复杂性来自于两个方面:一是来自它所反映的实际问题的复杂性(即需要解一是来自它所反映的实际问题的复杂性(即需要解决问题的复杂性)决问题的复杂性)二是来自软件本身设计程序逻辑结构的复杂性二是来自软件本身设计程序逻辑结构的复杂性 1.1.
11、1 计算机软件概念计算机软件概念(6)(6)软件的成本问题。软件的成本问题。软件开发成本主要指软件开发过程中所软件开发成本主要指软件开发过程中所花费的工作量及相应的代价。花费的工作量及相应的代价。另外,软件也没有一个明显的制造过程,另外,软件也没有一个明显的制造过程,它的开发成本是以一次性开发过程所花费它的开发成本是以一次性开发过程所花费的代价来计算的。软件的研制工作需要投的代价来计算的。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。它的成本是比较高的。1.1.1 计算机软件概念计算机软件概念 (7)(7)软件开发出来时要给软件
12、开发出来时要给“人人”使用的,使用的,所以软件不可避免地要具备人的社会属所以软件不可避免地要具备人的社会属性。性。相当多的软件工作涉及到社会因素。许多相当多的软件工作涉及到社会因素。许多软件的开发和运行涉及机构、体制及管理方软件的开发和运行涉及机构、体制及管理方式等问题,甚至涉及到人的观念和人们的心式等问题,甚至涉及到人的观念和人们的心理。这些问题都将直接影响项目的成败。理。这些问题都将直接影响项目的成败。1.1.2 软件的分类软件的分类软件软件是计算机的灵魂,没有软件的是计算机的灵魂,没有软件的计算机就如同没有磁带的录音机和没计算机就如同没有磁带的录音机和没有录像带的录像机一样,与废铁没什有
13、录像带的录像机一样,与废铁没什么差别。么差别。它使计算机具有非凡的灵活它使计算机具有非凡的灵活性和通用性。性和通用性。也正是这一原因,决定了计算机的任也正是这一原因,决定了计算机的任何动作都离不开由人安排的指令。何动作都离不开由人安排的指令。1.1.2 软件的分类软件的分类 1.1.按软件的功能进行划分:按软件的功能进行划分:一般把软件按功能分为两大类:应一般把软件按功能分为两大类:应用软件和系统软件。用软件和系统软件。(1 1)应用软件)应用软件(2 2)系统软件)系统软件 1.1.2 软件的分类软件的分类(1 1)应用软件)应用软件 应用软件是专门为某一应用目的而编制的软件,应用软件是专门
14、为某一应用目的而编制的软件,较常见的有以下几种:较常见的有以下几种:l文字处理软件文字处理软件 用于输入、存贮、修改、编辑、打印文字材料等,例用于输入、存贮、修改、编辑、打印文字材料等,例如如WORDWORD、WPSWPS等;等;l信息管理软件信息管理软件 用于输入、存贮、修改、检索各种信息;用于输入、存贮、修改、检索各种信息;l辅助设计软件辅助设计软件用于高效地绘制、修改工程图纸,进行设计中的常规用于高效地绘制、修改工程图纸,进行设计中的常规算,帮助人寻求好设计方案;算,帮助人寻求好设计方案;l实时控制软件实时控制软件用于随时搜集生产装置、飞行器等的运行状态信息,用于随时搜集生产装置、飞行器
15、等的运行状态信息,以此为依据按预定的方案实施自动或半自动控制,以此为依据按预定的方案实施自动或半自动控制,安全、准确地完成任务。安全、准确地完成任务。1.1.2 软件的分类软件的分类(2 2)系统软件)系统软件 代表性的系统软件有:代表性的系统软件有:l操作系统操作系统管理计算机的硬件设备,使应用软件能方便、高效地管理计算机的硬件设备,使应用软件能方便、高效地使用这些设备。在微机上常见的有:使用这些设备。在微机上常见的有:DOSDOS、WINDOWSWINDOWS、UNIXUNIX、OS/2OS/2等;等;l数据库管理系统数据库管理系统有组织地、动态地存贮大量数据,使人们能方便、高有组织地、动
16、态地存贮大量数据,使人们能方便、高效地使用这些数据。现在比较流行的数据库有效地使用这些数据。现在比较流行的数据库有FoxProFoxPro、DB-2DB-2、AccessAccess、SQL-serverSQL-server等;等;l编译软件编译软件CPUCPU执行每一条指令都只完成一项十分简单的操作,一执行每一条指令都只完成一项十分简单的操作,一个系统软件或应用软件,要由成千上万甚至上亿条指个系统软件或应用软件,要由成千上万甚至上亿条指令组合而成。令组合而成。1.1.2 软件的分类软件的分类 2.2.按软件规模进行划分:按软件规模进行划分:根据所完成任务的不同以及开发任根据所完成任务的不同以
17、及开发任务、投入资金等因素,软件也可以按务、投入资金等因素,软件也可以按照规模来划分。照规模来划分。(1 1)微型软件:)微型软件:这类软件一般只需要一这类软件一般只需要一个人几天即可完成,软件只有几个人几天即可完成,软件只有几K K到到几十几十K K大小。由于规模很小,软件测大小。由于规模很小,软件测试也极为容易;试也极为容易;1.1.2 软件的分类软件的分类(2 2)小型软件:)小型软件:这类软件一般由十人以内在半年这类软件一般由十人以内在半年内完成,开发前需要进行完整的开发设计。软内完成,开发前需要进行完整的开发设计。软件一般有几百件一般有几百K K到十几到十几M M。完成时需要进行软件
18、。完成时需要进行软件测试工作,但测试工作相对比较容易;测试工作,但测试工作相对比较容易;(3 3)中型软件:)中型软件:中型软件一般由十几个人甚至几中型软件一般由十几个人甚至几十个人开发,开发工作比较复杂,时限为半年十个人开发,开发工作比较复杂,时限为半年至一年。软件大小一般有几十至一年。软件大小一般有几十M M。对于这种规模。对于这种规模的软件软件测试十分必要。要进行严格的可行的软件软件测试十分必要。要进行严格的可行性分析,开发设计等工作;性分析,开发设计等工作;1.1.2 软件的分类软件的分类(4 4)大型软件:)大型软件:这类软件一般由几十人开发,开这类软件一般由几十人开发,开发工作十分
19、复杂,时限为发工作十分复杂,时限为1 1年甚至两年以上。软年甚至两年以上。软件大小上百件大小上百M M甚至几百甚至几百M M。这类软件开发前要进。这类软件开发前要进行详细可行性分析、需求分析、开发设计等工行详细可行性分析、需求分析、开发设计等工作,软件测试要贯彻在开发全过程。这类软件作,软件测试要贯彻在开发全过程。这类软件交付使用后往往还要进行一次甚至多次维护升交付使用后往往还要进行一次甚至多次维护升级工作;级工作;(5 5)超大型软件:)超大型软件:这类软件开发人员一般超过百这类软件开发人员一般超过百人甚至几百人开发,开发工作十分艰辛,开发人甚至几百人开发,开发工作十分艰辛,开发时限一般在时
20、限一般在2 2年以上,这类软件小则几百年以上,这类软件小则几百M M,大,大则甚至几则甚至几G G。1.1.2 软件的分类软件的分类 3.3.按软件工作方式划分:按软件工作方式划分:(1 1)实时处理软件:)实时处理软件:指在事件或数据产生时,立即指在事件或数据产生时,立即予以处理,并及时反馈信号,控制需要监测和控予以处理,并及时反馈信号,控制需要监测和控制的过程的软件。主要包括数据采集,分析,输制的过程的软件。主要包括数据采集,分析,输出三部分;出三部分;(2 2)分时软件:)分时软件:允许多个联机用户同时使用计算机;允许多个联机用户同时使用计算机;(3 3)交互式软件:)交互式软件:能实现
21、人机通信的软件;能实现人机通信的软件;(4 4)批处理软件:)批处理软件:把一组输入作业或一批数据以成把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的软批处理的方式一次运行,按顺序逐个处理完的软件。件。1.1.2 软件的分类软件的分类 4.4.按软件服务对象的范围划分:按软件服务对象的范围划分:(1 1)项目软件:)项目软件:也称定制软件,是受某个特定也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约束下开发出来的软软件开发机构在合同的约束下开发出来的软件。例如军用防空指挥系统、卫星控制系统;件。例如
22、军用防空指挥系统、卫星控制系统;(2 2)产品软件:)产品软件:是由软件开发机构开发出来直是由软件开发机构开发出来直接提供给市场,或是为千百个用户服务的软接提供给市场,或是为千百个用户服务的软件。例如,文字处理软件、文本处理软件、件。例如,文字处理软件、文本处理软件、财务处理软件、人事管理软件等财务处理软件、人事管理软件等 1.1.3 软件工程的历史及发展软件工程的历史及发展 软件工程软件工程(Software EngineeringSoftware Engineering,简称为,简称为SESE)是针对软件这一具有特殊性质的产品的工是针对软件这一具有特殊性质的产品的工程化方法。软件工程涵盖了
23、软件生存周期程化方法。软件工程涵盖了软件生存周期的所有阶段,并提供了一整套工程化的方的所有阶段,并提供了一整套工程化的方法,来指导软件人员的工作。法,来指导软件人员的工作。1.1.3 软件工程的历史及发展软件工程的历史及发展 1.1.软件工程的含义软件工程的含义“软件工程”是科学和数学的某种应用,通过这一应用,使计算机设备的能力借助于计算机程序、过程和有关文档成为对人类有用的东西。软件工程的成果是为软件设计和开发人员提供思想方法和工具,而软件开发是一项需要良好组织,严密管理且各方面人员配合协作的复杂工作,软件工程正是指导这项工作的一门科学。1.1.3 软件工程的历史及发展软件工程的历史及发展
24、软件工程应该包括哪些知识?软件工程应该包括哪些知识?IEEEIEEE在软件在软件工程知识体系指南(工程知识体系指南(SEWBOKSEWBOK:Guide to Guide to the Software Engineering Body of the Software Engineering Body of Knowledge 2004VersionKnowledge 2004Version)中这样定义:)中这样定义:软件开发、实施、维护的系统化、规范软件开发、实施、维护的系统化、规范化、质量化的方法的应用,也就是软件的化、质量化的方法的应用,也就是软件的应用工程;应用工程;对上述方法的研究。
25、对上述方法的研究。1.1.3 软件工程的历史及发展软件工程的历史及发展 2.2.软件开发的三个历史阶段软件开发的三个历史阶段:第一个阶段是二十世纪第一个阶段是二十世纪5050年代到年代到6060年代,是年代,是程序设计阶段,基本是个体手工劳动的生产方程序设计阶段,基本是个体手工劳动的生产方式。式。第二阶段是二十世纪第二阶段是二十世纪6060年代到年代到7070年代,是软年代,是软件设计阶段,小组合作生产方式。件设计阶段,小组合作生产方式。第三个阶段是从二十世纪八十年代止今,为第三个阶段是从二十世纪八十年代止今,为软件工程时代软件工程时代 ,是工程化的生产方式。,是工程化的生产方式。1.1.3
26、软件工程的历史及发展软件工程的历史及发展 3.3.软件危机软件危机 早期出现的软件危机主要表现在:早期出现的软件危机主要表现在:(1)(1)软件开发费用和进度失控。费用超支、进度拖延软件开发费用和进度失控。费用超支、进度拖延的情况屡屡发生。的情况屡屡发生。(2)(2)软件的可靠性差。尽管耗费了大量的人力物力,软件的可靠性差。尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分惊人;加,由于软件错误而造成的损失十分惊人;(3)(3)生产出来的软件难以维护。很多程序缺乏相应的生产出来的软件难以维护。很多程
27、序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误。时改正了已有的错误又引入新的错误。1.1.3 软件工程的历史及发展软件工程的历史及发展 进入进入8080年代以来,尽管软件工程研年代以来,尽管软件工程研究与实践取得了可喜的成就,软件技术究与实践取得了可喜的成就,软件技术水平有了长足的进展,但是软件生产水水平有了长足的进展,但是软件生产水平依然远远落后于硬件生产水平的发展平依然远远落后于硬件生产水平的发展速度。危机不仅没有消失,还有加剧之速度。危机不仅没有消失,还有加剧之势。主要表现在:势。主要表现在:(1)(1
28、)软件成本在计算机系统总成本中所占软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升。的比例居高不下,且逐年上升。(2)(2)软件开发生产率提高的速度远远跟不软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的需要,软上计算机应用迅速普及深入的需要,软件产品供不应求的状况使得人类不能充件产品供不应求的状况使得人类不能充分利用现代计算机硬件所能提供的巨大分利用现代计算机硬件所能提供的巨大潜力。潜力。1.1.3 软件工程的历史及发展软件工程的历史及发展 IBM360IBM360操作系统的历史教训已成为软件开发项操作系统的历史教训已成为软件开发项目中的典型事例被记入历史史册。目中的典型
29、事例被记入历史史册。出现这种现出现这种现象的主要原因是:象的主要原因是:(1)(1)用户需求不明确。软件开发过程中,用户需求不明用户需求不明确。软件开发过程中,用户需求不明确问题主要体现在四个方面:确问题主要体现在四个方面:l在软件开发出来之前,用户自己也不清楚软件开发在软件开发出来之前,用户自己也不清楚软件开发的具体需求;的具体需求;l用户对软件开发需求的描述不精确,可能有遗漏、用户对软件开发需求的描述不精确,可能有遗漏、有二义性、甚至有错误;有二义性、甚至有错误;l在软件开发过程中,用户还提出修改软件开发功能、在软件开发过程中,用户还提出修改软件开发功能、界面、支撑环境等方面的要求;界面、
30、支撑环境等方面的要求;l软件开发人员对用户需求的理解与用户本来愿望有软件开发人员对用户需求的理解与用户本来愿望有差异。差异。1.1.3 软件工程的历史及发展软件工程的历史及发展 (2)(2)缺乏正确的理论指导。缺乏有力的方法学和工具缺乏正确的理论指导。缺乏有力的方法学和工具方面的支持。由于软件开发不同于大多数其他工业产方面的支持。由于软件开发不同于大多数其他工业产品,其开发过程是复杂的逻辑思维过程,其产品极大品,其开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。程度地依赖于开发人员高度的智力投入。(3)(3)软件开发规模越来越大。随着软件开发应用范围软件开发规模越来
31、越大。随着软件开发应用范围的增广,软件开发规模愈来愈大。大型软件开发项目的增广,软件开发规模愈来愈大。大型软件开发项目需要组织一定的人力共同完成,而多数管理人员缺乏需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件开发系统的经验,而多数软件开发人员开发大型软件开发系统的经验,而多数软件开发人员又缺乏管理方面的经验。又缺乏管理方面的经验。(4)(4)软件开发复杂度越来越高。软件开发不仅仅是在软件开发复杂度越来越高。软件开发不仅仅是在规模上快速地发展扩大,而且其复杂性也急剧地增加规模上快速地发展扩大,而且其复杂性也急剧地增加.l 1.2.1 1.2.1 软软件件生生存存周周期期及及各各阶阶
32、段段的工作的工作l 1.2.2 1.2.2 软件生存周期各阶段的软件生存周期各阶段的文档编制文档编制 1.2 软件的生存周期软件的生存周期1.2.1 软件生存周期及各阶段的工作软件生存周期及各阶段的工作软件生存周期的各个阶段软件生存周期的各个阶段的划分并没有一成不的划分并没有一成不变的法则,不同的开发方式、软件种类、软件规模变的法则,不同的开发方式、软件种类、软件规模和开发环境都会在不同程度上影响软件生存周期各和开发环境都会在不同程度上影响软件生存周期各阶段的划分,但无论最终把生存周期如何根据自己阶段的划分,但无论最终把生存周期如何根据自己的实际情况进行划分,都是旨在更好的利用手中的的实际情况
33、进行划分,都是旨在更好的利用手中的资源(主要指人力资源、软件资源、技术资源和源资源(主要指人力资源、软件资源、技术资源和源码资源),降低软件的开发风险、复杂度和开发成码资源),降低软件的开发风险、复杂度和开发成本(主要以开发的时间和投入资源为衡量标准),本(主要以开发的时间和投入资源为衡量标准),要做到最好的对软件生存周期各阶段进行划分,就要做到最好的对软件生存周期各阶段进行划分,就必须遵循一条基本的原则,那就是在各阶段的任务必须遵循一条基本的原则,那就是在各阶段的任务应尽可能的相对独立,同一阶段各项任务的性质应应尽可能的相对独立,同一阶段各项任务的性质应尽可能的相同,从而达到降低每个阶段任务
34、的复杂尽可能的相同,从而达到降低每个阶段任务的复杂度,减少不同阶段任务之间的联系。这样作对软件度,减少不同阶段任务之间的联系。这样作对软件项目开发的组织管理是十分有必要的,同时对最终项目开发的组织管理是十分有必要的,同时对最终的软件项目开发成功是不可或缺的。的软件项目开发成功是不可或缺的。既然软件开发周期这么重要,我们想既然软件开发周期这么重要,我们想要软件项目最终开发取得成功或是对要软件项目最终开发取得成功或是对软件进行管理和资源投入,我们就应软件进行管理和资源投入,我们就应当充份的了解周期里各个活动的定义当充份的了解周期里各个活动的定义和任务,才能合理,准确,客观的安和任务,才能合理,准确
35、,客观的安排每一阶段的工作,以下就对各种活排每一阶段的工作,以下就对各种活动的定义和任务做一下简单介绍,使动的定义和任务做一下简单介绍,使之对它们有一个初步的了解。之对它们有一个初步的了解。1.2.1 软件生存周期及各阶段的工作软件生存周期及各阶段的工作1.2.1 软件生存周期及各阶段的工作软件生存周期及各阶段的工作1.1.可行性分析和项目开发计划可行性分析和项目开发计划 这两个活动通常被整合在一起进行,在实际工作中通这两个活动通常被整合在一起进行,在实际工作中通常把它们归类到同一个阶段中。常把它们归类到同一个阶段中。在这个阶段中经验起到了决定性的作用,接下来在这个阶段中经验起到了决定性的作用
36、,接下来的任务就是制定详细的项目开发计划,项目开发计划的任务就是制定详细的项目开发计划,项目开发计划主要根据所开发的项目的目标、性能、功能、规模来主要根据所开发的项目的目标、性能、功能、规模来确定所需的资源,主要包括三个方面,即硬件资源、确定所需的资源,主要包括三个方面,即硬件资源、软件资源和人力资源,除此之外还有对项目的开发费软件资源和人力资源,除此之外还有对项目的开发费用,开发进度做出估计,可供决策者和用户参考。用,开发进度做出估计,可供决策者和用户参考。至此,本阶段的工作任务已基本完成,这时候系至此,本阶段的工作任务已基本完成,这时候系统分析员应将统分析员应将可行性报告可行性报告和和项目
37、开发计划项目开发计划一一并提交管理部门审查。并提交管理部门审查。1.2.1 软件生存周期及各阶段的工作软件生存周期及各阶段的工作2.2.需求分析需求分析 需求分析的难点主要体现在以下几个方面:需求分析的难点主要体现在以下几个方面:(1 1)问题的复杂性;)问题的复杂性;(2 2)交流障碍;)交流障碍;(3 3)用户对问题的陈述不完备性和不一致性;)用户对问题的陈述不完备性和不一致性;(4 4)需求易变性。)需求易变性。1.2.1 软件生存周期及各阶段的工作软件生存周期及各阶段的工作 针对需求分析人们提出了许多解决方法和自动针对需求分析人们提出了许多解决方法和自动化分析工具,如结构化分析方法和面
38、向对象化分析工具,如结构化分析方法和面向对象分析方法,分析方法,CASECASE技术等等。解决问题的方法技术等等。解决问题的方法有许多,但都有许多,但都要遵循一些基本的原则:要遵循一些基本的原则:(1 1)可以把一个复杂问题按照某种分解方式)可以把一个复杂问题按照某种分解方式进行分解并可逐层细化;进行分解并可逐层细化;(2 2)必须能够表达和理解问题的数据域和功)必须能够表达和理解问题的数据域和功能域;能域;(3 3)必须具有良好的模型建立能力,能够准)必须具有良好的模型建立能力,能够准确的把问题用确的把问题用“图表图表”的形式表达出来。的形式表达出来。1.2.1 软件生存周期及各阶段的工作软
39、件生存周期及各阶段的工作其实最终的目标就是为了用户的需要,回答这其实最终的目标就是为了用户的需要,回答这个系统要个系统要“做什么做什么”的问题。具体如下:的问题。具体如下:(1 1)问题识别)问题识别 功能需求功能需求 性能需求性能需求 环境需求环境需求 用户界面需求用户界面需求 (2 2)分析与综合,导出软件的逻辑模型)分析与综合,导出软件的逻辑模型 (3 3)编写文档)编写文档 1.2.1 软件生存周期及各阶段的工作软件生存周期及各阶段的工作3.3.概要设计概要设计 概要设计的基本任务如下:概要设计的基本任务如下:(1 1)设计软件系统的逻辑结构。)设计软件系统的逻辑结构。(2 2)设计软
40、件所需要的数据库系统)设计软件所需要的数据库系统 (3 3)编写概要设计文档)编写概要设计文档 (4 4)评审)评审 软件概要设计的几个基本原理:软件概要设计的几个基本原理:(1 1)抽象)抽象 (2 2)信息隐蔽)信息隐蔽(3 3)模块化)模块化 1.2.1 软件生存周期及各阶段的工作软件生存周期及各阶段的工作4.4.详细设计详细设计 程序员会根据这些过程描述来编写程序代码,具程序员会根据这些过程描述来编写程序代码,具体如下:体如下:(1 1)为每个模块进行详细的算法设计。这是需要用)为每个模块进行详细的算法设计。这是需要用相应的工具来完成的,因为自然语言通常很容易相应的工具来完成的,因为自
41、然语言通常很容易具有具有“二义性二义性”,而工具能做到含义唯一性;,而工具能做到含义唯一性;(2 2)为模块内的数据结构进行设计;)为模块内的数据结构进行设计;(3 3)对数据库进行物理设计。注意这不是实现数据)对数据库进行物理设计。注意这不是实现数据库,而是设计出数据库的具体物理结构;库,而是设计出数据库的具体物理结构;(4 4)其它设计(前期特殊代码设计、)其它设计(前期特殊代码设计、I/OI/O格式设计、格式设计、界面友好设计等);界面友好设计等);(5 5)编写详细设计说明书;)编写详细设计说明书;(6 6)评审。)评审。1.2.1 软件生存周期及各阶段的工作软件生存周期及各阶段的工作
42、5.5.编写代码编写代码 6.6.软件测试软件测试 7.7.软件实施软件实施8.8.软件维护软件维护 软件的维护一般的流程如下:软件的维护一般的流程如下:(1 1)确定维护的类型;)确定维护的类型;(2 2)对校正性维护要从评价错误的严重性开始;)对校正性维护要从评价错误的严重性开始;(3 3)对适应性维护和完善性维护可以视业务繁忙情况而)对适应性维护和完善性维护可以视业务繁忙情况而定,也有条件制定比较完善的维护计划;定,也有条件制定比较完善的维护计划;(4 4)实施维护工作,要确保维护是必要和安全的;)实施维护工作,要确保维护是必要和安全的;(5 5)维护回顾,看看有没有什么地方做的不对或遗
43、漏的;)维护回顾,看看有没有什么地方做的不对或遗漏的;(6 6)编写详细的维护日志。)编写详细的维护日志。1.2.2 软件生存周期各阶段的文档编制软件生存周期各阶段的文档编制软件生存周期各阶段交付文档如表软件生存周期各阶段交付文档如表1-11-1所示:所示:1.1.可行性研究报告可行性研究报告 8.8.用户手册用户手册2.2.项目开发计划项目开发计划 9.9.操作手册操作手册3.3.软件需求说明书软件需求说明书 10.10.模块开发卷宗模块开发卷宗4.4.数据要求说明书数据要求说明书 11.11.测试计划测试计划5.5.总体设计说明书总体设计说明书 12.12.测试分析报告测试分析报告6.6.
44、详细设计说明书详细设计说明书 13.13.开发进度月报开发进度月报7.7.数据库设计说明书数据库设计说明书 14.14.项目开发总结报告项目开发总结报告文档文档可行性研可行性研究与计划究与计划需求需求分析分析总体总体设计设计详细详细设计设计系统系统实现实现集成测集成测试试确认确认测试测试使用与使用与维护维护1 1 可行性研究报告可行性研究报告Y YN NN NN NN NN NN NN N2 2 项目开发计划项目开发计划Y YY YN NN NN NN NN NN N3 3 软件需求说明书软件需求说明书N NY YN NN NN NN NN NN N4 4 数据要求说明书数据要求说明书N NY
45、 YN NN NN NN NN NN N5 5 测试计划测试计划N NY YY YN NN NN NN NN N6 6 总体设计说明书总体设计说明书N NN NY YN NN NN NN NN N7 7 详细设计说明书详细设计说明书N NN NN NY YN NN NN NN N8 8 数据库设计说明书数据库设计说明书N NN NY YN NN NN NN NN N9 9 模块开发卷宗模块开发卷宗N NN NN NN NY YY YN NN N10 10 用户手册用户手册N NY YY YY YY YN NN NN N11 11 操作手册操作手册N NN NY YY YY YN NN NY Y
46、12 12 测试分析报告测试分析报告N NN NN NN NN NT TT TN N13 13 开发进度月报开发进度月报Y YY YY YY YY YY YY YN N14 14 项目开发总结项目开发总结N NN NN NN NN NN NY YY Y15 15 维护记录维护记录N NN NN NN NN NN NN NY Y表1-1 软件生存周期各阶段交付文档【说明】:表1-1中前14类文档是国家标准软件产品开发文件编制指南所建议的。1.3 软件开发常用模型软件开发常用模型1.3.1 1.3.1 瀑布模型瀑布模型 1.3.2 1.3.2 增量模型增量模型 1.3.3 1.3.3 螺旋模型螺旋
47、模型 1.3.4 1.3.4 变换模型变换模型 1.3.5 1.3.5 喷泉模型喷泉模型 1.3.6 1.3.6 智能模型智能模型 1.3.7 WINWIN1.3.7 WINWIN模型模型 1.3.8 1.3.8 原型实现模型原型实现模型 1.3.9 RAD1.3.9 RAD模型模型 1.3.10 1.3.10 并发开发模型并发开发模型l 1.3.11 1.3.11 软件开发常用模型小结软件开发常用模型小结 1.3.1 瀑布模型瀑布模型采用瀑布模型的软件过程如图采用瀑布模型的软件过程如图1-21-2所示。所示。图1-2 软件生存周期的瀑布模型1.3.2 增量模型增量模型采用增量模型的软件过程如
48、图采用增量模型的软件过程如图1-31-3所示。所示。图1-3 采用增量模型的软件过程1.3.3 螺旋模型螺旋模型图1-4 螺旋模型螺旋模型沿着螺线旋转,如图螺旋模型沿着螺线旋转,如图1-41-4所示所示 1.3.3 螺旋模型螺旋模型采用螺旋模型的软件过程如图采用螺旋模型的软件过程如图1-51-5所示所示图图1-5采用螺旋模型的软件过程采用螺旋模型的软件过程1.3.4 变换模型变换模型采用变换模型的软件过程如图采用变换模型的软件过程如图1-61-6所示所示图图1-6 1-6 采用变换模型的软件过程采用变换模型的软件过程1.3.5 喷泉模型喷泉模型采用喷泉模型的软件过程如图采用喷泉模型的软件过程如
49、图1-71-7所示所示图图1-7 1-7 采用喷泉模型的软件过程采用喷泉模型的软件过程1.3.6 智能模型智能模型采用智能模型的软件过程如图采用智能模型的软件过程如图1-81-8所示所示图图1-8 1-8 采用智能模型的软件过程采用智能模型的软件过程1.3.7 WINWIN WINWIN模型模型采用采用WINWINWINWIN模型的软件过程如图模型的软件过程如图1-91-9所示所示图图1-9 1-9 采用采用WINWINWINWIN模型的软件过程模型的软件过程1.3.8 原型实现模型原型实现模型采用原型实现模型的软件过程如图采用原型实现模型的软件过程如图1-101-10所示所示图图1-10 1
50、-10 采用原型实现模型的软件过程采用原型实现模型的软件过程1.3.9 RAD RAD模型模型采用采用RADRAD模型的软件过程如图模型的软件过程如图1-111-11所示所示图图1-11 1-11 采用采用RADRAD模型的软件过程模型的软件过程1.3.10 并发开发模型并发开发模型采用并发开发模型的软件过程中一个活动的示意如图采用并发开发模型的软件过程中一个活动的示意如图1-121-12所示所示图图1-12 1-12 并发过程模型的一个活动并发过程模型的一个活动1.3.11 软件开发常用模型小结软件开发常用模型小结软件过程模型发展经历了以下阶段:软件过程模型发展经历了以下阶段:(1)(1)以