→软件工程基本知识←51Testing软件测试网y"`8s8{RS*W(n]
一、软件工程的产生
Hbx
w1jy0gq0 随着1946年世界上第一台电子计算机的诞生,计算机的灵魂——软件也慢慢发展起来。在50、60年代开发大型系统软件用手工方式进行,生产效率低、出错率高。例如,IBM公司的OS/360操作系统用了5000人年开发,软件产品每个版本均有1000多个大大小小的错误,这种状态无法满足日益增长的软件生产的需要。产生了以下几个方面的问题:51Testing软件测试网t:f*Ny*xJ8?(g7_4j So
(1) 软件复杂性飞速增长
2r$j;G fBs]0(2) 软件成本极高51Testing软件测试网0H{N{*}xSU
(3) 开发周期长51Testing软件测试网 Z-k5@VA?Z6HPe
(4) 维护工作量大
z'N(C$l3E`0由于以上几个方面的原因,导致了60年代的“软件危机”,软件危机是指软件在开发和维护过程中所遇到的一系列严重。概括地说软件危机包含以下两方面的问题:
!}3OsVn9~0F/j0(1) 如何开发软件,怎样满足软件日益增长的需求;51Testing软件测试网b{X(t6T[3e!{o
(2) 如何维护数量不断膨胀地已有软件。51Testing软件测试网~z
Gf
DIbnS
具体地说,软件危机主要有以下表现:
GR\8Tv0(1) 对软件开发成本和进度的估计常常很不准确;51Testing软件测试网-sv*j,B6|
Kn
(2) 用户对“已完成的”软件系统不满意的现象经常发生;51Testing软件测试网R$zKGik-u.t
(3) 软件产品的质量往往靠不组合;
^B3}&l
^(IB0(4) 软件常常是不可维护的;
9v8o8Pmv1kE,{0(5) 软件通常没有适当的文档资料;
DQ#Nzl@}f0(6) 软件成本在计算机系统总体成本中所占的比例逐年上升;51Testing软件测试网,eVp#Wd9_az {
(7) 软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。51Testing软件测试网9E5uj:t;ctTO$@/gV
为了解决软件危机中出现的问题,在1968年计算机软件学术会议上第一次的提出了“软件工程”的概念。
v PB
u(}5u qj0软件工程强调使用生命周期方法学和各种结构化分析与设计技术。用“系统的观点来分解问题然后再分别解决各个子问题。”51Testing软件测试网,[f
y*n(k r
生命周期:和生命的孕育、诞生、成长于衰亡一样,软件生命周期指软件的有关概念的提出到软件的消亡共包括可行性分析→概要设计→详细设计→编码→测试→运行和维护6个阶段。
3E!}e w.]
@O/A5c/I0二、软件工程核心思想51Testing软件测试网?K(X}b^O*`(@
软件工程是指导计算机软件开发和维护的工程科学。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,这就是软件工程。管理和技术是软件工程的核心。
R8J(Ns!^rgv6w$A0软件工程的七条基本原理:
];V _/OgH&u-^zg01. 用分阶段的生命周期计划严格管理;
r!Bg^;?0这条原理意味着应把软件生命周期分成若干阶段,并制定相应地切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。
4{.FR$^4XN0Boehm认为,在软件的整个生命周期中应该制定并严格执行六类计划:51Testing软件测试网+D w,}F'u&l:AN!V!]
1) 项目概要计划
,G?8o;R7cS]0o02) 里程碑计划
%D[s)LD/ztw03) 项目控制计划51Testing软件测试网I4H$DZ$V/iq_)rLo
4) 产品控制计划
*DI4H4hG(T;K,c05) 验证计划51Testing软件测试网4}0p$s-iL-sr
6) 运行维护计划51Testing软件测试网'L2fekQ9mC
[TVD!M
不同层次管理人员都必须严格按照计划各尽其责地管理软件开发与维护工作,绝不能受客户或上级人员的影响而擅自背离预定计划。
4?6i+F*YfI U02. 坚持进行阶段评审;51Testing软件测试网,D3\\$m@j1|L!o
软件的质量保证工作不能等到编码阶段结束之后再进行。至少有两个理由:
"E7|'rJ"_`!j1XK0第一, 大部分错误是在编码之前造成的,根据Boehm等人的统计,设计错误占软件错误的63%,编码错误仅占37%。51Testing软件测试网2R aR0Dhm2~
第二, 错误发现与改正的越晚,所需付出的代价也越高。
K'H ~Fz/x0因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。
-k!R Z"Za?|ln|03. 实现严格的产品控制;
6A/{
}Z]4b{WL0在软件开发过程中不随意改变需求,因为改变一项需求往往需要付出较高的代价。绝对不能谁想修改软件,就随意修改软件。
6Z+M3Y
TX]9c"n04. 采用现代化设计技术;51Testing软件测试网/bV.IU-u,^h-[
1960s年代末提出的结构程序设计技术,已经成为绝大多数人公认的先进的程序设计技术。以后又进一步发展出各种结构分析与结构设计技术。实践表明,采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。
NE.t"Xw.VsN05. 结果应能清楚地审查;
rAD9DE7{ M'J06. 开发人员应该少而精;51Testing软件测试网4d,j7} tY{E
7. 承认不断改进软件工程事件的必要性。
'c;Be+W.J:Wk+c*B0