软件工程---第一章 软件工程学的概述
1.1 软件危机的介绍
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题
1.2 软件危机的一些典型表现
对软件开发成本和进度估计常常很不准确
用户对已完成的软件系统不满意的现象经常发生
软件产品的质量往往靠不住
软件常常似乎不可维护的
软件通常没有适当的文档资料
软件成本在计算机系统成本中所占的比例逐年上升
软件开发产率提高的速度
1.3 产生软件危机的原因
一方面是软件本身的特点有关;另一方面也和软件与维护的方方法不正确有关。
具体如下:
(1)
软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件。在写出程序代码并在计算机上试运行之前,软件开发过程的进展情况较难衡量。很难检验开发的正确性且软件开发的质量也较难评价。因此,控制软件开发过程相当困难。此外,在软件运行过程中发现错误,很可能是遇到了一个在开发期间引入的、但在测试阶段没有能够检测出来的错误,所以软件维护常常意味着修改原来的设计。这样,维护的费用十分惊人,客观上使得软件较难维护。
(2)
软件开发的过程是多人分工合作,分阶段完成的过程,参与人员之间的沟通和配合十分重要。但是,相当多的软件开发人员对软件的开发和维护存在不少错误的观念,在实践的过程中没有采用工程化的方法,或多或少采用了一些错误的方法和技术,这是造成软件危机的
主要原因。
(3)
开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的要求。对用户的要求没有完整准确的认识就急于编写程序。这是许多软件开发失败的另一主要原因。事实上,许多用户在开始时并不能准确具体地叙述他们的需要,软件人员需要做大量深入细致
的调查研究工作,反复多次与用户交流信息,才能真正全面、准确、具体地了解用户的要求。
(4)
软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。首先是文档缺乏一致性和完整性,从而失去管理的依据。因为程序只是完整软件产品的一个组成部分,一个软件产品必须由一组的配置组成,不能只重视程序而应当特别重视软件配置。其次,由于成本估计不准确,资金分配混乱,人员组织不合理,进度安排无序,导致软件技术无法实施。
(5)
在软件的开发和维护关系问题上存在错误的观念。软件维护工作通常是在软件完成之后进行的,因此是极端艰巨复杂的工作,需要花费很大的代价。所以做好软件的定义工作,是降低软件成本,提高软件质量的关键。如果软件人员在定义阶段没有正确、全面地理解用户
要求,直到测试阶段才发现软件产品不完全符合用户的需要,这时再修改就为时已晚了。另外,在软件生存期的不同结点进行修改需要付出的代价是很不相同的。在早期引入变更,涉及面较小,付出的代价较低;在开发的中期软件配置的许多成分已经完成,引入一个变更可
能需要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上更复杂,因而付出的代价剧增。在软"已经完成"后再引入变更。则需要付出更高得多的代价。因此,必须把软件维护的观念引入软件开发的各个阶段,建立起软件开发与维护的正确关系。
1.4 消除软件危机的途径
为了消除软件危机,首先应该对计算机软件有一个正确的认识。在早期形成的“软件就是程序”的错误观念。一个软件必须由一个完整的配置组成,事实上,软件是程序、数据以及文档的完整集合。消除危机必须既要有技术设施又要有必要的组织管理措施。
1.5 软件工程
软件工程是指导计算机软件开发和维护的一门学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前做好的技术方法结合起来,已经济地开发出高质量的软件并有效地卫华他,这就是软件工程。
有一种更全面地定义:1.软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用与软件;2.研究1中提到的途径。
1.6 软件工程的基本原理(7条)
1.用分阶段的生命周期进行管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清楚地审查
6.开发小组的人员应该少而精
7.承认不断改进软件工程时间的必要性
1.7 软件工程方法学
`软件工程包括技术和管理两方面的内容
所谓管理就是通过计划、组织和控制等一系列活动,合理地配置和使用资源,以达到既定的目标过程
通常把软件生命周期全过程中使用的一整套技术方法的集合称为方法学也称为范型
软件工程包括的三要素:方法、过程、工具