一、软件危机
1.Software=Program+Data+Document
2.软件的特点:
(1)无形
(2)副本制作简单
(3)无磨损
3.软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
4.软件危机的典型表现:
(1)对软件开发成本和进度的估计常常很不准确;
(2)用户对“已完成的”软件系统不满意的现象经常发生;
(3)软件产品的质量往往靠不住;
(4)软件常常是不可维护的;
(5)软件通常没有适合的文档资料;
(6)软件成本在计算机系统总成本中所占的比例逐年上升;
(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
5.产生软件危机的原因:
一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
二、软件工程
1.中心思想:
把软件当作一种工业产品,要求采用工程化的原理与方法对软件进行计划、开发和维护。
2.目的:
实现按预期的进度和经费完成软件生产计划,提高软件的生产率和可靠性。
3.基本流程:
(1)首先进行系统调查和系统分析;
(2)再进行逻辑设计、物理设计;
(3)最后才编制实施;
(4)反复测试;
(5)试运行后,再投入长期运行;
(6)在运行中不断维护、完善。
三、软件生命周期
四、软件工程模型
1.瀑布模型:
(1)阶段具有顺序性和依赖性{①必须等前一阶段的工作完成之后,才能开始后一阶段的工作;②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输入文档正确,后一阶段的工作才能获得正确的结果}
(2)推迟实现的观点
(3)质量保证的观点{①每个阶段都必须完成规定的文档;②每个阶段结束前都要对所完成的文档进行评审}
瀑布模型基本上是一种文档驱动的模型
优点: 可强迫开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
缺点: 用户只能通过文档了解产品,很可能导致最终开发出的软件产品不能真正满足用户的需要。
2.快速原型模型:
快速原型的本质是“快速”,快速原型模型是不带反馈环的
优点: 有助于保证用户的真实需要的得到满足;软件产品的开发基本上是线性顺序进行的。
缺点: 系统结构通常较差;用户可能混淆原型系统和最终系统。
3.增量模型:
增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。
优点: 能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。
难点: 软件体系结构必须是开放的;不同的构件可能无法集成到一体。
4.螺旋模型:
螺旋模型的基本思想是:使用原型及其他方法来尽量降低风险。
理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。适用于内部开发的大规模软件项目。
优点: (风险驱动)对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试和测试不足所带来的风险;维护和开发之间并没有本质区别。
缺点: 过多的迭代次数可能会增加成本,延迟提交时间。
5.喷泉模型:
“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。
喷泉模型适用于面向对象的软件开发
优点: 各个阶段没有明确的界限,开发人员可以同步开发;降低错误的可能性。
缺点: 需要大量的开发人员,不利于项目的管理;要求严格管理文档,审核难度大。
五、Rational统一过程(略)