软件工程导论笔记

1.1软件危机

软件危机:软件开发和维护中遇到的一系列严重问题。
软件危机的典型表现:

  1. 软件开发的成本和进度常估计不准确
  2. 用户经常不满意已完成的软件
  3. 软件产品的质量常靠不住
  4. 软件常不可维护
  5. 没有文档
  6. 软件成本在计算机系统总成本中所占的比例逐年上升
  7. 软件开发生产效率提高的速度,跟不上计算机应用迅速普及深入的趋势

软件危机产生的原因:
与软件本身特点有关
1、软件不同于硬件,管理和控制软件开发过程相当困难。
2、软件在运行过程中不会因为使用过长而被“用坏”。如果运行中发现了错误,很可能是遇到了一个在开发时期引入的、在测试阶段没能检测出来的错误。
3、软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
4、事实上,对用户要求没有准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一。
5、目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念。在实践过程中或多或上地采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因。
6、错误的认识和做法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等。
软件开发与维护的方法不正确有关
1、只重视程序而忽视软件配置其余成分的糊涂观念。
2、软件开发人员在定义时期没有正确全面地理解用户需求,直到测试阶段或软件交付使用后才发现“已完成的”软件不完成符合用户的需要。
3、严重的问题是在软件开发的不同阶段进行修改需要付出的代价是很不相同的。

1.2软件工程

软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

软件三要素:程序加数据,文档
软件工程三要素:方法,工具,过程,

1.4软件过程

1.4.1瀑布模型

传统瀑布模型:需求分析->规格说明->设计->编码->测试->维护
特点
a.阶段间具有顺序性和依赖性
b.推迟实现:编码在步骤的后面
c.质量保证:每个阶段都要完成文档,每个阶段结束前都要对文档进行评审
实际瀑布模型:在后面阶段发现前面阶段的错误时,需要返回前面的阶段
在这里插入图片描述
优点:强迫开发人员采用规范的方法,提交的文档,验证
缺点:开发周期长
适用场合:大家都做过很多遍,用户参与不多,比如编译器,系统。

1.4.2快速原型模型

在计算机快速建立一个可以运行的程序
阶段:快速原型-规格说明-设计-编码-综合测试-维护
在这里插入图片描述
与瀑布模型不同的是,最先做一个原型
优点:少返工
工具:HTML,python,鲁比
适用场合:用户参与多

1.4.3增量模型

为了缩短瀑布模型开发周期,出现了渐增模型,分成了很多模块
过程:需求分析->规格说明->概要设计->对构件设计,编码,集成,测试
在这里插入图片描述困难:
风险更大的增量模型:
在这里插入图片描述

1.4.4螺旋模型

简单的螺旋模型
在快速原型的基础上每步骤都加了风险分析
完整的螺旋模型
在这里插入图片描述

1.4.5喷泉模型

为了解决瀑布模型交付时间过长的问题
迭代

1.4.6Rational统一过程(RUP)

RUP是由Ration公司推出的一种完整的软件过程

RUP总结了6条最有效的开发经验:
迭代式开发,管理需求,使用基于构件的体系结构,可视化建模,验证软件质量,控制软件变更

RUP开发周期:
RUP软件开发生命周期:
迭代四项:
初始,精化,构建,移交

在这里插入图片描述

1.4.7敏捷过程与极限编程

敏捷宣言:
1.个体和交互胜过过程和工具:个体是关注程序员的能力的提高,交互是合作
2.可以工作的软件胜过面面俱到的文档:没有人是通过看文档学会玩手机的,软件比文档更重要
3.客户合作胜过合同谈判:传统开发中不允许客户更改需求(需求冻结),但现在用户需求总在变化,要适用于时代的变化
4.响应变化胜过遵循计划:

极限编程:把好的开发时间用到极致
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
用户故事是非形式化的。

1.4.8微软过程

就比较瀑布,快速原型法

发布了30 篇原创文章 · 获赞 13 · 访问量 1095

猜你喜欢

转载自blog.csdn.net/qq_30738155/article/details/104531017