1.概念
2.软件设计模型
2.1瀑布模型
2.2快速原型模型
2.3增量模型
2.4螺旋模型
2.5喷泉模型
2.6Ration统一过程
一、概念
1、软件工程的定义:软件是计算机系统中与硬件相互依存的另一部分,与硬件合为一体完成系统功能。包括:程序、相关数据、说明文档
2、软件分类
(1)按功能:系统软件、支撑软件、应用软件
(2)按规划:微型、小型、中型、大型、甚大型、极大型
(3)按工作方式:实时处理软件、分时处理软件、交互式软件、批处理软件
3、软件危机:是计算机软件在它开发和维护过程中所遇到的一系列严重问题。
主要包括的问题:一方面:如何开发软件,怎样满足对软件日益增长的需求。另一方面:如何维护数量不断膨胀的已有软件。
4、软件生命周期:一个软件产品从定义、开发、维护到废弃的时间总和。
二、软件模型
1、瀑布模型
也称为线性顺序模型或软件生命周期模型。遵循软件生命周期的划分,各个阶段的工作自上而下顺序展开,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,最终得到所开发的软件产品。
优点:
- 强迫开发人员采用规范的方法
- 文档齐全
- 质量保证
缺点:
- 开发过程一般不能逆转
- 实际的项目很难按该模型进行
- 客户往往很难给出所有需求
适用场景:
- 适用于结构化,面向过程的的软件开发方法
- 开发过程需求很少变化,需要低风险项目,用户提出需求后很少参与开发。
2、快速原型模型
迅速建造一个可以运行的软件原型。使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。就是通过向用户提供原型获取用户的反馈,使开发出的软件能够真正反映用户的需求。并且逐步求精完善原型,使原型更快速的开发。
优点:
- 有助于满足用户的真实需求,并生产的规格说明文档能够正确描述用户的需求
- 开发基本上是按照线性顺序的
- 在开发的后续阶段,不会因为规格说明文档的错误而进行较大的返工
- 开发人员在建立原型的时候学到的东西较多,所以在设计和编码阶段犯错误可能性小
- 快速原型的特点就是快速
缺点:
- 客户和开发者对原型的理解不同
- 准确的原型设计比较难
- 不利于开发人员的创新
使用场景:
适用于不能预先确切定义需求的软件系统的开发,项目组成员不能很好的交流或通讯的情况下
3、增量模型
也称渐增模型。是一种非整体开发模型。把软件产品作为一系列的增量构件来设计、实现、集成和测试。
优点:
- 在较短的时间内就可以向用户提交一些有用的工作品
- 可以使用户有教充裕的时间学习和适应新的产品
- 项目失败的风险低
- 优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来
缺点:
- 集成新的构件时,不能破坏原有的产品
- 软件的体系结构必须设计的便于按这种方式进行扩充,就是软件体系结构必需是开放的
使用场景:
- 对已有的产品进行更新升级。
- 对要求具有严格开发完成时间的项目
4、螺旋模型
将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险的分析,特别适用于大型复杂的系统。螺旋模型沿着螺旋线旋转,即在坐标的4个象限上分别表示了4个方面的活动:制定计划、风险分析、实施开发、客户评价、
优点:
- 是一种风险驱动的方法体系。每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。
- 有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。
缺点:
- 开发过程一般不可逆,并且实际开发很难严格按照模型进行。
- 客户往往很难清楚地给出所有的需求,而该模型却要求如此。
- 软件的实际情况必须到项目开发的后期客户才能看到。
适用场景:只使用于大型规模的项目开发
5、喷泉模型
是一种新的开发模型,是一种以用户需求为动力,以对象为驱动的模型,主要用于采用面向对象技术的软件开发项目。克服了瀑布模型不支持软件重用多项开发活动集成的局限性。各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏
优点:喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
缺点:由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理。这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。
适用环境:适用于面向对象的开发过程
6、Rational统一过程模型
是迭代式增量开发、用例驱动、以软件体系结构为核心。在软件生命周期过程中以用例为驱动、构架为中心来进行一次一次的增量式的迭代,每次迭代都是以上一次迭代为基础并生成包括构件的源代码体、需求说明、测试用例等的制品。
每次迭代分为:初始、细化、提交和转移。
每个阶段又分几个步骤:需求、分析、设计、实现和测试。
有九个核心工作流:商业建模、需求、分析和设计、实现、测试、部署、配置和管理、项目管理、环境。
适用环境:RUP方法非常适用于开发复杂度高、技术难度大、需求多变、高风险的项目。