1.3 软件生存周期模型,方法和工具
1.3.1 软件生存周期模型
软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。
目前有若干种软件生存周期模型。例如:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型。
1.瀑布模型
瀑布模型是将软件生存周期各个活动规定为自上向下,按照线性顺序连接的若干阶段的模型。该模型支持结构化的设计方法,但它是一种理想的线性开发模式,缺乏灵活性,无法解决软件需求不明确或不准确的问题。
2.增量模型
增量模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发出来的。该模型有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。
3.螺旋模型
螺旋模型是一种风险驱动的模型。螺旋模型适合于大型软件的开发,它吸收了软件工程“演化”的概念,包括需求定义、风险分析、工程实现及用户评估四个阶段,螺旋模型由上述四个阶段组成的迭代模型,迭代的结果必须尽快收敛到客户允许的或可接受的目标范围内。
4.喷泉模型
喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。
5.基于知识的模型
基于知识的模型又称智能模型,它把瀑布模型和专家系统结合在一起。该模型在开发的各个阶段都利用相应的专家系统来帮助软件人员完成开发工作,使维护在系统需求说明阶段开始。该模型还处于研究实验阶段,还未达到实用阶段。
6.变换模型
这是一种适合于形式化开发方法的模型。从软件需求形式化说明开始,经过一系列变换,最终得到系统的目标程序。
1.3.2 软件开发方法
软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。软件开发的目标是在规定的投资和时间内,开发出符合用户需求的高质量的软件。为了达到此目的,需要成功的开发方法。下面介绍几种常用的软件开发方法。
1.结构化方法
结构化方法由结构化分析、结构化设计、结构化程序设计构成。它是一种面向数据流的开发方法。该方法采用自顶向下、逐步求精的指导思想,应用较广,技术成熟。
结构化分析是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作。
结构化设计是根据模块独立性准则、软件结构准则将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。
结构程序设计是根据结构程序设计原理,将每个模块的功能用相应的标准控制结构表示出来,从面实现详细设计。
结构化方法不适应规模大的项目,对于特别复杂的项目,该方法难于解决软件重用问题,难于适应需求变化的问题,难于彻底解决维护问题。
2.Jackson方法
这是一种面向数据结构的开发方法。JSP方法是以数据结构为驱动的,适合于小规模的项目。
3.维也纳开发方法(VDM)
这是一种形式化的开发方法,软件的需求用严格的形式语言描述,然后把描述模型逐步变换成目标系统。
4.面向对象的开发方法
面向对象的开发方法完全不同于传统开发方法,它是90年代的主流开发方法。
面向对象开发方法包括面向对象分析、面向对象设计、面向对象实现。面向对象开发方法有Booch方法、Coad方法和OMT方法等。为了统一各种面向对象方法的术语、概念和模型,1997年推出了统一建模语言,即UML(Unified Modeling Language)语言。它是面向对象的标准建模语言,通过统一的语义和符号表示,使各种方法的建模过程和表示统一起来,将成为面向对象建模的工业标准。
1.3.3 软件开发工具
1. 软件工具的重要性
软件工具一般使指为了支持软件人员开发和维护活动而使用的软件。
2.工具箱
最初的软件工具是以工具箱的形式出现的,一种工具支持一种开发活动,然后将各种工具简单具有结合起来就构成工具箱。
3.软件开发环境
由于工具箱存在的问题,人们在工具系统的整体化及集成化方面开展一系列研究工作,使之形成完整的软件环境。
4.计算机辅助软件工程
计算机辅助软件工程可以简单地定义为软件开发地自动化,通常简称为CASE(Computer Aided Software Engineering)。