现代社会离不开软件。国家基础设施和公共建设都是由基于计算机的系统控制,大多数的电子产品都有计算机和控制软件。工业制造和分销已经完全计算机化了,金融系统也是这样。娱乐业,包括音乐产业、计算机游戏产业、电影和电视产业,也是一个软件密集型的产业。因此,软件工程对于一个国家和整个国际社会的运转都是必不可少的。
软件是抽象的、不可触摸的,它不受物质材料的限制,也不受物理定律或加工过程的制约,这一方面使软件工程得以简化,因为软件的潜能不受物理因素的限制;另一方面,由于缺乏自然约束,软件系统也就很容易变得极为复杂,理解它会很困难、改变它价格高昂。
从简单的嵌入式系统到复杂的全球信息系统,有很多不同类型的软件系统。正是由于不同的软件系统需要不同的技术,所以试图为软件工程寻求通用的符号系统、方法和技术是毫无意义的。开发一个机构信息系统和开发一个科学仪器的控制器是完全不同的。而这些系统都跟图形密集型的计算机游戏没有太多的共同点。所有这些应用都需要软件工程,但不是都需要相同的软件工程技术。
现在仍有许多有关软件项目出问题和“软件失败”的报道。软件工程因不能充分支持现代软件的开发而遭非议。然而,在我看来,这些所谓的软件失败源于以下两方面的原因:
1.不断增长的需求由于新的软件工程技术可以帮助我们构建更大更复杂的系统,用户的需要因而在发生改变。系统必须更快速地构建并交付;需要更大更复杂的系统;系统必须具备在以前看来不可能实现的功能。现有的软件工程方法已经不能应对新形势,而新的软件工程技术还有待于进一步发展。
……
展开