软件危机出现于20世纪60年代,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,使用依赖于计算机的机器代码或汇编语言,软件的规模比较小,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。
60年代中期,大容量、高速度计算机的出现,计算机应用范围扩大,需要更多的软件服务计算机。高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理使得第一代数据库管理系统的诞生。软件的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发。
软件危机主要表现在:
1、软件开发费用和进度失控。
2、软件的可靠性差。
3、生产出来的软件难以维护。
4、用户对“已完成”的软件不满意现象经常发生。
1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,第一次讨论软件危机问题,并正式提出“软件工程”一词,从此一门新兴的工程学科——软件工程学——为研究和克服软件危机应运而生。
1993年IEEE进一步给出了一个更全面更具体的定义:“软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件。”
软件工程具有下述的本质特性:
1、软件工程关注于大型程序的构造;
2、软件工程的中心课题是控制复杂性;
3、软件经常变化;
4、开发软件的效率非常重要;
5、和谐地合作是开发软件的关键;
6、软件必须有效地支持它的用户;
7、在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的基本原理:
1、用分阶段的生命周期计划严格管理;
2、坚持进行阶段评审;
3、实行严格的产品控制;
4、采用现代程序设计技术;
5、结果应能清楚地审查;
6、开发小组的人员应该少而精;
7、承认不断改进软件工程实践的必要性。