软件危机是什么?是谁发现的
软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重问题. 是1968年北大西洋公约组织发现的
软件危机的准确定义是什么?
软件危机(Software Crisis) 是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
“软件危机”使得人们开始对软件及其特性进行更深一步的研究,人们改变了早期对软件的不正确看法。早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧。现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充。
程序设计语言虽然为计算机的应用开拓了无比广阔的前景,但游荡在软件世界的幽灵——“软件危机”依然存在。因为软件的开发不仅受到程序设计的方法、结构的制约,而且受到开发周期以及软件开发成本的限制,更重要的是软件质量的保障与其程序设计的正确性关系极大。如果所开发的软件其可靠性得不到保障,在运行中将会产生不堪设想的严重后果。
其次就是,有软件危机的存在,也对应着程序员不断去更新和完善软件
什么是软件危机?
软件危机指,随着计算机工业的发展,在软件开发过程中逐渐形成了一些矛盾.比如:软件开发没有计划性;软件前期需求分析不足;软件开发过程没有规范等等.这些矛盾表现在软件开发中导致了一系列问题,如开发计划无法顺利执行,成本昂贵,开发的软件错误百出等等.正是这种软件危机才促使人们寻求解决方法,也就产生了软件工程.
软件危机是什么啊?
软件开发技术的进步未能满足发展的要求.在软件开发中遇到的问题找不到解决的办法,问题积累起来,形成尖锐的矛盾,导致了软件危机 产生的原因: 1,软件分规模越来越大,结构越来越复杂 2,软件开发管理困难而复杂 3,软件包开费用不断增加 4,软件开发技术落后 5,生产方式落后,仍采用手工方式 6,开发工具落后,生产率提高缓慢
软件危机产生的原因
软件工程研究结果表明 ,软件危机的原因主要有两方面:
①与软件本身的特点有关。
软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件;软件样品即是产品,试制过程也就是生产过程;软件不会因使用时间过长而“老化”或“用坏”;软件具有可运行的行为特性,在写出程序代码并在计算机上试运行之前,软件开发过程的进展情况较难衡量,软件质量也较难评价,因此管理和控制软件开发过程十分困难;软件质量不是根据大量制造的相同实体的质量来度量,而是与每一个组成部分的不同实体的质量紧密相关,因此,在运行时所出现的软件错误几乎都是在开发时期就存在而一直未被发现的,改正这类错误通常意味着改正或修改原来的设计,这就在客观上使得软件维护远比硬件维护困难;软件是一种信息产品,具有可延展性,属于柔性生产,与通用性强的硬件相比,软件更具有多样化的特点,更加接近人们的应用问题。
随着计算机应用领域的扩大,99%的软件应用需求已不再是定义良好的数值计算问题,而是难以精确描述且富于变化的非数值型应用问题。因此,当人们的应用需求变化发展的时候,往往要求通过改变软件来使计算机系统满足新的需求,维护用户业务的延续性。
②危机原因来自于软件开发人员的如下弱点:
其一,软件产品是人的思维结果,因此软件生产水平最终在相当程度上取决于软件人员的教育、训练和经验的积累;
其二,对于大型软件往往需要许多人合作开发,甚至要求软件开发人员深入应用领域的问题研究,这样就需要在用户与软件人员之间以及软件开发人员之间相互通讯,在此过程中难免发生理解的差异,从而导致后续错误的设计或实现,而要消除这些误解和错误往往需要付出巨大的代价;
其三,由于计算机技术和应用发展迅速,知识更新周期加快,软件开发人员经常处在变化之中,不仅需要适应硬件更新的变化,而且还要涉及日益扩大的应用领域问题研究;软件开发人员所进行的每一项软件开发几乎都必须调整自身的知识结构以适应新的问题求解的需要,而这种调整是人所固有的学习行为,难以用工具来代替。
软件生产的这种知识密集和人力密集的特点是造成软件危机的根源所在。
从软件开发危机的种种表现和软件开发作为逻辑产品的特殊性可以发现软件开发危机的原因:
(1)用户需求不明确
在软件开发过程中,用户需求不明确问题主要体现在四个方面:
在软件开发出来之前,用户自己也不清楚软件开发的具体需求;
用户对软件开发需求的描述不精确,可能有遗漏、有二义性、甚至有错误;
在软件开发过程中,用户还提出修改软件开发功能、界面、支撑环境等方面的要求;
软件开发人员对用户需求的理解与用户本来愿望有差异。
(2)缺乏正确的理论指导
缺乏有力的方法学和工具方面的支持。由于软件开发不同于大多数其他工业产品,其开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。由于过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件开发产品的个性化,也是发生软件开发危机的一个重要原因。
(3)软件开发规模越来越大
随着软件开发应用范围的增广,软件开发规模愈来愈大。大型软件开发项目需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件开发系统的经验,而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。软件开发项目开发人员不能有效地、独立自主地处理大型软件开发的全部关系和各个分支,因此容易产生疏漏和错误。
(4)软件开发复杂度越来越高
软件开发不仅仅是在规模上快速地发展扩大,而且其复杂性也急剧地增加。软件开发产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。所谓“复杂问题”的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提高了软件开发效率和能力,新的、更大的、更复杂的问题又摆在人们的面前。这个只是原因,有一些解决的方法,我不想打字了 累死我了!你要是想知道再说吧。
为什么会有软件危机
从软件危机的种种表现和软件作为逻辑产品的特殊性可以发现软件危机的原因:
(1)用户对软件需求的描述不精确,可能有遗漏,有二义性,有错误,甚至在软件开发过程中,用户还提出修改软件功能,界面,支撑环境等方面的要求;
(2)软件开发人员对用户需求的理解与用户的本来愿望有差异,这种差异必然导致开发出来的软件产品与用户要求不一致;
(3)大型软件项目需要组织一定的人力共同完成,多数管理人员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验.各类人员的信息交流不及时,不准确,有时还会产生误解;
(4)软件项目开发人员不能有效地,独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误;
(5)缺乏有力的方法学和工具方面的支持,过分地依赖程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化;
(6)软件产品的特殊性和人类智力的局限性,导致人们无力处理”复杂问题”.所谓”复杂问题”的概念是相对的,一旦人们采用先进的组织形式,开发方法和工具构造提高了软件的开发效率和能力,新的,更大的,更复杂的问题又摆在人们面前.
信息系统中原型法的主要目标是?
、结构化系统开发方法(亦称“生命周期法”)
(1)优点:从系统整体出发,强调在整体优化的条件下“自上而下”地分析和设计,保证了系统的整体性和目标的一致性;遵循用户至上原则;严格区分系统开发的阶段性;每一阶段的工作成果是下一阶段的依据,便于系统开发的管理和控制;文档规范化,按工程标准建立标准化的文档资料。
(2)缺点:用户素质或系统分析员和管理者之间的沟通问题;开发周期长,难于适应环境变化;结构化程度较低的系统,在开发初期难以锁定功能要求。
(3)适用范围:主要适用于规模较大、结构化程度较高的系统的开发
2、原型法
(1)优点:符合人们认识事物的规律,系统开发循序渐进,反复修改,确保较好的用户满意度;开发周期短,费用相对少;由于有用户的直接参与,系统更加贴近实际;易学易用,减少用户的培训时间;应变能力强。
(2)缺点:不适合大规模系统的开发;开发过程管理要求高,整个开发过程要经过“修改—评价—再修改”的多次反复;用户过早看到系统原型,误认为系统就是就是这个模样,易使用户失去信心;开发人员易将原型取代系统分析;缺乏规范化的文档资料
(3)适用范围:处理过程明确、简单系统;涉及面窄的小型系统
不适合于:大型、复杂系统,难以模拟;存在大量运算、逻辑性强的处理系统;管理基础工作不完善、处理过程不规范;大量批处理系统
3、面向对象开发方法
(1)优点:a、分析、设计中的对象和软件中的对象的一致性
b、实现软件复用,简化程序设计
c、系统易于维护
d、缩短开发周期
(2)缺点:不易于大系统的开发