赞
踩
本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明!
32.喷泉模型属于哪种类型的过程模型?有什么特性?为什么这样说?
36.试讨论Rational统一过程的优缺点?以及所适用的项目?
为了更有效的开发与维护软件,研究消除软件危机的途径,所以形成了软件工程这门学科
- 规模较小的程序,为每个具体应用而专门编写,只保存程序清单
- 软件作坊
- 软件工程阶段
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题,几乎所有的软件都不同程度的存在这些问题
- 如何开发软件,以满足对软件日益增长的需求
- 如何维护数量不断膨胀的已有软件
- 软件危机具有长期性和症状不明显的特征
- 对软件开发成本和进度估计常常很不准确
- 用户对已完成的软件系统不满意的现象经常发生
- 软件产品的质量往往靠不住
- 软件常常是不可维护的
- 软件通常没有适当的文档资料
- 软件成本在计算机系统总成本中所占的比例逐年上升
- 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势
- 与软件本身的复杂性特点有关(根本原因)
- 与软件开发与维护的方法不正确有关(主要原因)
主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等
主要包括程序、文档和数据
程序是指能够完成预定功能和性能的可执行的指令序列
数据是使程序能够适当地处理信息的数据结构
文档是开发、使用和维护程序所需要的图文资料
- 把系统的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是将工程应用于软件
- 研究1中所提到的途径
- 应该推广使用在实践中总结出来的开发软件的成功技术和方法,并且研究探索更好更有效的技术和方法
- 应该开发和使用更好的软件工具
- 应该有必要的组织管理措施
- 用分阶段的生命周期计划严格管理
- 坚持进行阶段评审
- 实行严格的产品控制
- 采用现代程序设计技术
- 结果应该能被清楚地审查
- 开发小组的人员应该少而精
- 承认不断改进软件工程实践的必要性
简记:分 、评 、控 、现 、审 、少 、必
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型
软件工程三要素是指:方法、工具和过程
方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题
工具是为应用方法而提供的自动的或者半自动的软件工程支持环境
过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤
传统方法学也称为生命周期方法学或结构化范型,采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。
- 文档是通信的工具
- 文档也起到了备忘录的作用
- 文档能提高软件开发过程的能见度
- 文档记录了开发过程的有关信息
- 文档可作为阶段工作成果和结束的标志
简记:通、备、度、记、标
缺点:传统方法学要么面向数据要么面向处理,当软件规模庞大,或者对软件的需求是模糊的或会随着时间变化而变化时,使用传统方法学开发软件往往不成功,并且难以维护。
优点:把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。采用传统方法学也可以大大提高软件开发成功率和生产率。
优点:
- 降低了软件产品的复杂性
- 提高了软件的可理解性
- 简化了软件的开发与维护工作
- 促进了软件重用
缺点:
- 面向对象方法学其特有的继承、多态等机制,造成面向对象测试和调试困难
- 面向对象架构设计困难,比较复杂,可能会造成系统不合理等问题
- 面向对象的开发成本高,且不利于新手开发
面向对象方法 = 对象 + 类 + 继承 + 消息通信
传统方法学强调自顶向下顺序的完成软件开发的各项阶段任务。
而面向对象则是一个主动地多次反复迭代的演化过程,其特有的继承性和多态性进一步提高了面向对象软件的可重用性
软件生命周期是指从软件产品开始,直到该软件被淘汰的全过程
分为八大阶段:问题定义、可行性研究、需求分析、总体设计、
详细设计、编码和单元测试、综合测试、软件维护
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
获取用户需求的方法不同
- 阶段间具有顺序性和依赖性
- 推迟实现的观点
- 质量保证的观点
实际的瀑布模型是带“反馈环”的,它是由文档驱动的模型,这既是它的优点也是缺点。
优点:
- 强迫开发人员采用规范的方法
- 严格规定了每个阶段必须提交的文档
- 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证
缺点:
- 实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。
- 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。
- 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。
- 是一种文档驱动的模型
快速原型模型的本质是“快速”,不带“反馈环”,开发基本上是线性顺序进行,优点是有助于保证用户的真实需要得到满足。
- 原型系统已经通过与用户交互而得到了验证,据此产生的规格说明文档正确描述了用户的需求,不会因此而后期返工
- 开发人员通过建立原型系统学到了很多东西,在设计和编码阶段犯错的可能性降低
优点:
- 原型系统已经通过与用户交互而得到了验证,据此产生的规格说明文档正确描述了用户的需求,不会因此而后期返工
- 开发人员通过建立原型系统学到了很多东西,在设计和编码阶段犯错的可能性降低
- 原型使得用户可以尽早接触系统
- 原型系统可以用来识别和化解风险
缺点:
- 产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使原型能够尽快完工
- 开销较大,需求一且确认, 原型即被抛弃,造成资金浪费
- 开发过程管理要求高
优点:
- 可以在较短时间内向用户提交可完成部分工作的产品
- 逐步增加产品功能,使得用户有充裕的时间学习和适应,从而减少新软件带来的冲击
缺点:
- 至始至终开发者和客户纠缠在一 起,直到完全版本出来
- 适合于软件需求不明确、设计方案有一定风险的软件项目
- 使用这种方法将冒构件无法集中在一 起的风险,除非密切监控整个开发过程,否则整个工程将毁于一旦
螺旋模型由制定计划、风险分析、实施工程和客户评估四部分构成
螺旋模型=瀑布模型 + 风险分析的快速原型模型
另一种说法:螺旋模型=瀑布模型 + 风险分析的增量模型
优点:
- 有利于已有软件的重用
- 使软件开发和软件维护没有本质区别
- 有助于把软件质量作为软件开发的重要目标
- 可减少测试不足所带来的风险
缺点:
- 需要相当的风险分析评估的专门技术,且成功依赖于这种技术
- 螺旋模型未指明不同达代过程所经历的4个方面内容与重点有何不同
- 螺旋模型未提出迭代过程结束时所交付的增量原型的具体要求
喷泉模型是典型的面向对象软件过程模型,有迭代和无缝的特性。
之所以说喷泉模型很好地体现了面向对象软件开发过程中无缝和迭代的特性,是因为使用面向对象方法学开发软件时,各个阶段都使用统一的概念和表示符号, 因此,整个开发过程都是吻合一致的, 或者说是无缝连接的,这自然就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好的体现了面向对象软件开发过程迭代和无缝的特性。
RUP(Rational Unified Process)是一个二维的生命周期模型
敏捷过程是为了有更高效工作和快速响应变化的能力,极限编程就是其中最有名的一个
极限是指将好的开发实践运用到极致
- RUP是一个二维的生命周期模型,而极限编程是一维的
- 极限编程对于需求变化和不确定性有着更快速的反应,且能保持高速的开发速度
- RUP比极限编程更加全面
微软过程适用于商业环境下具有有限资源和有限开发时间约束的项目
微软过程对方法、工具和产品等方面的论述不如RUP和敏捷过程全面
优点:
- 提高了团队生产力,在迭代的开发过程、需求管理、基于组建的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面、针对所有关键的开发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成员共享相同的知识基础
- 建立了简洁和清晰的过程结构,为开发过程提供较大的通用性
缺点:
- RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容
- 它没有支持多项目的开发结构,这在一定程度 上降低了在开发组织内大范围实现重用的可能性
适用项目:适用于大型的需求不断变化的复杂软件系统项目
- 软件工程关注于大型程序的构造
- 软件工程的中心课题是控制复杂性
- 软件经常变化
- 开发软件的效率非常重要
- 和谐地开发是开发软件的关键
- 软件必须有效地支持它的用户
- 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
本章力图对计算机软件工程学作一个简短的概述。
首先通过回顾计算机系统发展简史,说明开发软件的一些错误方法和观念是怎样形成的。然后列举了这些错误方法带来的严重弊病(软件危机),澄清了一些糊涂观念。为了计算机系统的进步发展 ,需要认真研究开发和维护软件的科学技术。应总结计算机软件的历史经验教训,借鉴其他工程领域的管理技术,逐步使软件工程这门新学科发展和完善起来。
本章力求使读者对软件工程的基本原理和方法有概括的本质的认识。生命周期方法
学把软件生命周期划分为若干个相对独立的阶段,每个阶段完成一些确定的任务,交出最
终的软件配置的一个或几个成分(文档或程序);基本上按顺序完成各个阶段的任务,在
完成每个阶段的任务时采用结构化技术和适当的软件工具;在每个阶段结束之前都进行
严格的技术审查和管理复审。当软件规模庞大或对软件的需求模糊易变时,采用生命周期方法学开发往往不成功,近年来在许多应用领域面向对象方法学已经迅速取代了生命周期方法学。面向对象方法学有4个要点,可以用下列方程式概括:面向对象方法=对象+类+继承+消息通信。也就是说,面向对象方法就是既使用对象又使用类和继承等机制,而且对象之间仅能
通过传递消息实现彼此通信的方法。面向对象方法简化了软件的开发和维护,提高了软件的可重用性。按照在软件生命周期全过程中应完成的任务的性质,在概念可以把软件生命周期
划分成问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试以及运行维护共8个阶段。实际从事软件开发工作时,软件规模种类,开发环境及使用的技术方法等因素,都影响阶段的划分。软件过程是为了获得高质量的软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤,由于没有一个适用于所有软件项目的任务集合,科学、有效的软件过程应该定义一组适 合于所承担的项目特点的任务集合。通常使用软件过程模型简洁地描述软件过程,它规定了把软件生命周期划分成的阶段及各个阶段的顺序。本章介绍了8种典型的软件过程模型。
瀑布模型历史悠久、广为人知,它的优势在于它是规范的、文档驱动的方法;这种模型
的问题是,最终开发出的软件产品可能并不是用户真正需要的。
快速原型模型正是为了克服瀑布模型的缺点而提出来的。它通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的办法,获取用户的真实需求。
增量模型具有可在软件开发的早期阶段使投资获得明显回报和较易维护的优点,但
是,要求软件具有开放的结构是使用这种模型时固有的困难。
风险驱动的螺旋模型适用于内部开发的大型软件项目,但是,只有在开发人员具有风
险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。
喷泉模型较好地体现了面向对象软件开发过程无缝与迭代的特性,是典型的面向对象
的软件过程模型之一。
1998年首次推出的Rational统一过程(RUP)是一个具有突出优点的软件过程模型,
它提供了理想开发环境下软件过程的一种完整而且完美的模式,可以作为对一个项目进
行软件开发的良好开端。
近年来推出的以极限编程(XP)为杰出代表的敏捷过程,具有对变化和不确定性的更快速、更敏捷的反应特性,因此能够较好地适应商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束,可以作为对RUP的补充和完善;但是,作为种软件过程模式,敏捷过程远不如RUP全面和完整。
多年的实践经验证明微软过程是非常成功和行之有效的。一方面,可以把微软过程看作RUP的一个精简配置版本,整个过程包含着工个生命周期的持续递进循环,每个生命周期由5个阶段组成,每个阶段精简为由次迭代完成;另 一方面,可以把微软过程看作敏捷过程的一个扩充版本,它扩充了每个生命周期内的各个阶段的具体工作流程。
下一章: 软件工程——第2章可行性研究知识点整理
反反复复,扎扎实实;念念不忘,必有回响!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。