软件工程复习资料1. 软件危机产生的因素(1) 软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件。在写出程序代码并在计算机上试运营之前软件开发过程的进展情况较难衡量。很难检查开发的对的性且软件开发的质量也较难评价。因此控制软件开发过程相称困难。此外在软件运营过程中发现错误很也许是碰到了一个在开发期间引入的但在测试阶段没有可以检测出来的错误,所以软件维护常常意味着修改原来的设计。这样维护的费用十分惊人,客观上使得软件较难维护。 (2) 软件开发的过程是多人分工合作分阶段完毕的过程,参加人员之间的沟通和配合十分重要。但是,相称多的软件开发人员对软件的开发和维护存在不少错误的观念。在实践的过程中没有采纳工程化的方法,或多或少采纳了一些错误的方法和技术。这是导致软件危机的重要因素。 (3) 开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的规定。对用户的规定没有完整准确的结识就急于编写程序。这是许多软件开发失败的另一重要因素。事实上,许多用户在开始时并不能准确具体地叙述他们的需要。软件人员需要做大量进一步细致的调查讨论工作,反复多次与用户沟通信息,才能真正全面、准确、具体地了解用户的规定。 (4) 软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理法律规范。一方面是文档缺少一致性和完整性,从而失去管理的依据。由于程序只是完整软件产品的一个组成部分。一个软件产品必须由一组的配置组成,不能只重视程序而应当特别重视软件配置。另一方面,由于成本估量不准确,资金分派混乱,人员组织不合理,进度安排无序,导致软件技术无法实行。 (5) 在软件的开发和维护关系问题上存在错误的观念。软件维护工作通常是在软件完毕之后进行的,因此是极端艰巨复杂的工作,需要花费很大的代价。所以做好软件的定义工作是减少软件成本,提高软件质量的关键。假如软件人员在定义阶段没有对的、全面地理解用户规定,直到测试阶段才发现软件产品不完全符合用户的需要,这时再修改就为时已晚了。此外,在软件生存期的不同结点进行修改需要付出的代价是很不相同的。在初期引入变更涉及面较小,付出的代价较低,在开发的中期软件配置的许多成分已经完毕,引入一个变更也许需要对所有已完毕的配置成分都做相应的修改,不仅工作量大,并且逻辑上更复杂。因而付出的代价剧增。在软"已经完毕"后再引入变更。则需要付出更高得多的代价。因此,必须把软件维护的...