软件在开发和维护的过程当中,会遇到不少问题,软件工程做为一门学科,是为了解决软件危机的,那么什么是软件危机?工具
1、软件危机
软件危机泛指在计算机软件的开发和维护过程当中所遇到的一系列严重问题。人工智能
软件危机主要表现:
1 软件开发进度难以预测
拖延工期几个月甚至几年的现象并不罕见,这种现象下降了软件开发组织的信誉。
2 软件开发成本难以控制
投资一再追加,使人难于置信。每每是实际成本比预算成本高出一个数量级。
而为了赶进度和节约成本所采起的一些权宜之计又每每损害了软件产品的质量,从而不可避免地会引发用户的不满。
3 用户对产品功能难以知足
开发人员和用户之间很难沟通、矛盾很难统一。每每是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方没法用共同熟悉的语言进行交流和描述。
在双方互不充分了解的状况下,就仓促上阵设计系统、匆忙着手编写程序,这种"闭门造车"的开发方式必然致使最终的产品不符合用户的实际须要。
4 软件产品质量没法保证
系统中的错误难以消除。软件是逻辑产品,质量问题很难以统一的标准度量,于是形成质量控制困难。
软件产品并非没有错误,而是盲目检测很难发现错误,而隐藏下来的错误每每是形成重大事故的隐患。
5 软件产品难以维护
软件产品本质上是开发人员的代码化的逻辑思惟活动,他人难以替代。除非是开发者本人,不然很难及时检测、排除系统故障。
为使系统适应新的硬件环境,或根据用户的须要在原系统中增长一些新的功能,又有可能增长系统中的错误。
6 软件缺乏适当的文档资料
文档资料是软件必不可少的重要组成部分。实际上,软件的文档资料是开发组织和用户的之间权利和义务的合同书,是系统管理者、整体设计者向开发人员下达的任务书,是系统维护人员的技术指导手册,是用户的操做说明书。
缺少必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。设计
软件危机缘由分析:
1 用户需求不明确
在软件开发过程当中,用户需求不明确问题主要体如今四个方面:
在软件开发出来以前,用户本身也不清楚软件开发的具体需求;
用户对软件开发需求的描述不精确,可能有遗漏、有二义性、甚至有错误;
在软件开发过程当中,用户还提出修改软件开发功能、界面、支撑环境等方面的要求;
软件开发人员对用户需求的理解与用户原本愿望有差别。
2 缺少正确的理论指导
缺少有力的方法学和工具方面的支持。因为软件开发不一样于大多数其余工业产品,其开发过程是复杂的逻辑思惟过程,其产品极大程度地依赖于开发人员高度的智力投入。因为过度地依靠程序设计人员在软件开发过程当中的技巧和创造性,加重软件开发产品的个性化,也是发生软件开发危机的一个重要缘由。
3 软件开发规模愈来愈大
随着软件开发应用范围的增广,软件开发规模越来越大。大型软件开发项目须要组织必定的人力共同完成,而多数管理人员缺少开发大型软件开发系统的经验,而多数软件开发人员又缺少管理方面的经验。各种人员的信息交流不及时、不许确、有时还会产生误解。软件开发项目开发人员不能有效地、独立自主地处理大型软件开发的所有关系和各个分支,所以容易产生疏漏和错误。
4 软件开发复杂度愈来愈高
软件开发不只仅是在规模上快速地发展扩大,并且其复杂性也急剧地增长。软件开发产品的特殊性和人类智力的局限性,致使人们无力处理“复杂问题”。所谓“复杂问题”的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提升了软件开发效率和能力,新的、更大的、更复杂的问题又摆在人们的面前。
2、软件工程
软件工程是软件危机的解决途径,软件工程诞生于60年代末期,它做为一个新兴的工程学科,
主要研究软件生产的客观规律性,创建与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到下降软件生产成本 、改进软件产品质量、提升软件生产率水平的目标。软件工程学从硬件工程和其余人类工程中吸取了许多成功的经验,明确提出了软件生命周期的模型,发展了许多软件开发与维护阶段适用的技术和方法,并应用于软件工程实践,取得良好的效果。
在软件开发过程当中人们开始研制和使用软件工具,用以辅助进行软件项目管理与技术生产,人们还将软件生命周期各阶段使用的软件工具备机地集合成为一个总体,造成可以连续支持软件开发与维护全过程的集成化软件支援环境,以期从管理和技术两方面解决软件危机问题。
此外,人工智能与软件工程的结合成为80年代末期活跃的研究领域。基于程序变换、自动生成和可重用软件等软件新技术研究也已取得必定的进展,把程序设计自动化的进程向前推动一步。在软件工程理论的指导下,发达国家已经创建起较为完备的软件工业化生产体系,造成了强大的软件生产能力 。软件标准化与可重用性获得了工业界的高度重视,在避免重用劳动,缓解软件危机方面起到了重要做用。
3、软件需求的定义

