前言

内容摘抄并精简/微调了书中核心内容。

第一章-软件工程学概述

迄今为止,计算机系统经历了四个发展阶段,但仍未彻底摆脱“软件危机”。为了更有效地开发和维护软件,20世纪60年代,开始真正研究消除软件危机的途径,逐渐形成一门新兴的工程学科,计算机软件工程。

1.1、软件危机

计算机系统发展早期(20世纪,60年代中期以前),软件规模较小,编写者和使用者往往是同一人/同一组人,除了程序清单,无任何文档资料。

20世纪60到70年代中期,出现软件作坊,但仍沿用个体化软件开发方法,维护工作以令人吃惊的比例消耗资源,软件危机因此出现。

旧的软件开发方法已经不合时宜,好似刻舟求剑(读史明理,有则改无责勉),促使软件工程学科出现。

1.1.1、软件危机介绍

软件危机指:软件开发和维护中一系列严重问题。概括来说含两方面:如何满足日益增长的需求;如何维护不断扩张的已有软件。

典型表现如下(当然远不止这些):

1、开发成本和进度常常估计不准确。

2、用户对已完成的软件系统不满意,常常由于仅对用户需求模糊了解,就匆忙着手编码,上演闭门造车。

3、软件产品质量靠不住。

4、软件常常不可维护。

5、没有合适的文档资料。

6、软件开发成本在计算机系统总成本中所占的比例逐年上升。

7、开发生产效率远跟不上计算机应用迅速普及的趋势。

1.1.2、产生软件危机的原因

主要原因:软件本身特点有关;开发和维护方法不正确。

由于缺乏“可见性”,开发进展较难衡量,软件质量较难评价,因此管理和控制软件开发相当困难。

软件的维护意味着改正/修改原有设计,这客观上使得较难维护。

软件规模庞大,随着规模的增加其复杂度呈指数上升,同样多人开发又引发了如何高质量协作这一复杂且困难的问题。

目前相当多的软件开发人员,存在不少糊涂观念,采用了错误的方法和技术。忽视需求分析的重要性,认为开发就是写程序并使其能运行,轻视软件维护。

对需求没有完整认识就急忙编码,急于求成,仓促上阵,方向不对必然徒劳无功。 事实上,越早写程序,完成它需要的时间就越长。

1.1.3、消除软件危机的途径

正确的认识是关键。软件是由一个完整的配置组成的,软件项目/产品是程序、数据、相关文档资料的完整集。

软件开发不是个体劳动,而是需要组织良好,管理严密,多人合作,共同完成的工程项目。需充分吸收和借鉴前人积累的有效原理、经验、技巧、概念、方法等。特别是吸取教训。

应使用实践中总结的技术和方法,并探索更多更有效的技术和方法,消除错误观念。

总之解决软件危机既要有技术措施,也要有组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科。

未完结!