软件危机(softwarecrisis),20世纪60年代以前,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。

【我亲身经历的2022年软件质量工作】_开发语言

60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长。高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生。软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发。

年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,第一次讨论软件危机问题,并正式提出“软件工程”一词,从此一门新兴的工程学科——软件工程学——为研究和克服软件危机应运而生。

软件危机主要表现在:

  • ①软件开发费用和进度失控。费用超支、进度拖延的情况屡屡发生。有时为了赶进度或压成本不得不采取一些权宜之计,这样又往往严重损害了软件产品的质量。
  • ②软件的可靠性差。尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分惊人。
  • ③生产出来的软件难以维护。很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误。随着软件的社会拥有量越来越大,维护占用了大量人力、物力和财力。进入80年代以来,尽管软件工程研究与实践取得了可喜的成就,软件技术水平有了长足的进展,但是软件生产水平依然远远落后于硬件生产水平的发展速度。
  • ④用户对“已完成”的系统不满意现象经常发生。一方面,许多用户在软件开发的初期不能准确完整的向开发人员表达他们的需求;另一方面,软件开发人员常常在对用户需求还没有正确全面认识的情况下,就急于编写程序。

软件危机不仅没有消失,还有加剧之势。主要表现在:

  • ①软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升。由于微电子学技术的进步和硬件生产自动化程度不断提高,硬件成本逐年下降,性能和产量迅速提高。然而软件开发需要大量人力,软件成本随着软件规模和数量的剧增而持续上升。从美、日两国的统计数字表明,年度软件成本大约占总成本的90%。
  • ②软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的需要,软件产品供不应求的状况使得人类不能充分利用现代计算机硬件所能提供的巨大潜力。
    危机原因

【我亲身经历的2022年软件质量工作】_软件工程_02

随着计算机应用领域的扩大,99%的软件应用需求已不再是定义良好的数值计算问题,而是难以精确描述且富于变化的非数值型应用问题。因此,当人们的应用需求变化发展的时候,往往要求通过改变软件来使计算机系统满足新的需求,维护用户业务的延续性。

  • 其一,软件产品是人的思维结果,因此软件生产水平最终在相当程度上取决于软件人员的教育、训练和经验的积累;
  • 其二,对于大型软件往往需要许多人合作开发,甚至要求软件开发人员深入应用领域的问题研究,这样就需要在用户与软件人员之间以及软件开发人员之间相互通讯,在此过程中难免发生理解的差异,从而导致后续错误的设计或实现,而要消除这些误解和错误往往需要付出巨大的代价;
  • 其三,由于计算机技术和应用发展迅速,知识更新周期加快,软件开发人员经常处在变化之中,不仅需要适应硬件更新的变化,而且还要涉及日益扩大的应用领域问题研究;软件开发人员所进行的每一项软件开发几乎都必须调整自身的知识结构以适应新的问题求解的需要,而这种调整是人所固有的学习行为,难以用工具来代替。

从软件开发危机的种种表现和软件开发作为逻辑产品的特殊性可以发现软件开发危机的原因:

  • (1)用户需求不明确
    在软件开发过程中,用户需求不明确问题主要体现在四个方面:
    在软件开发出来之前,用户自己也不清楚软件开发的具体需求;
    用户对软件开发需求的描述不精确,可能有遗漏、有二义性、甚至有错误;
    在软件开发过程中,用户还提出修改软件开发功能、界面、支撑环境等方面的要求;
    软件开发人员对用户需求的理解与用户本来愿望有差异。
  • (2)缺乏正确的理论指导
    缺乏有力的方法学和工具方面的支持。由于软件开发不同于大多数其他工业产品,其开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。由于过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件开发产品的个性化,也是发生软件开发危机的一个重要原因。
  • (3)软件开发规模越来越大
    随着软件开发应用范围的增广,软件开发规模愈来愈大。大型软件开发项目需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件开发系统的经验,而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。软件开发项目开发人员不能有效地、独立自主地处理大型软件开发的全部关系和各个分支,因此容易产生疏漏和错误。
  • (4)软件开发复杂度越来越高
    软件开发不仅仅是在规模上快速地发展扩大,而且其复杂性也急剧地增加。软件开发产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。所谓“复杂问题”的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提高了软件开发效率和能力,新的、更大的、更复杂的问题又摆在人们的面前。

【我亲身经历的2022年软件质量工作】_开发语言_03

具体体现

  1. 软件开发进度难以预测
    拖延工期几个月甚至几年的现象并不罕见,这种现象降低了软件开发组织的信誉。以丹佛新国际机场为例:
    该机场规模是曼哈顿机场的两倍,宽为希思机场的10倍,可以全天侯同时起降三架喷气式客机;投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4,台遥控车,可按不同线路在20家不同的航空公司柜台、登机门和行李领取处之间发送和传递行李;支持该系统的是5,个电子眼、台无线电接受机、56台条形码扫描仪和台计算机。按原定计划要在年万圣节前启用,但一直到年6月,机场的计划者还无法预测行李系统何时能达到可使机场开放的稳定程度。
  2. 软件开发成本难以控制
    投资一再追加,令人难于置信。往往是实际成本比预算成本高出一个数量级。
    而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。
  3. 用户对产品功能难以满足
    开发人员和用户之间很难沟通、矛盾很难统一。往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。
    在双方互不充分了解的情况下,就仓促上阵设计系统、匆忙着手编写程序,这种"闭门造车"的开发方式必然导致最终的产品不符合用户的实际需要。
  4. 软件产品质量无法保证
    系统中的错误难以消除。软件是逻辑产品,质量问题很难以统一的标准度量,因而造成质量控制困难。
    软件产品并不是没有错误,而是盲目检测很难发现错误,而隐藏下来的错误往往是造成重大事故的隐患。
  5. 软件产品难以维护
    软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代。除非是开发者本人,否则很难及时检测、排除系统故障。
    为使系统适应新的硬件环境,或根据用户的需要在原系统中增加一些新的功能,又有可能增加系统中的错误。
  6. 软件缺少适当的文档资料
    文档资料是软件必不可少的重要组成部分。
    实际上,软件的文档资料是开发组织和用户的之间权利和义务的合同书,是系统管理者、总体设计者向开发人员下达的任务书,是系统维护人员的技术指导手册,是用户的操作说明书。
    缺乏必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。

【我亲身经历的2022年软件质量工作】_开发语言_04

软件工程专业女生毕业做什么工作好 就业方向有哪些?

软件工程专业女生毕业从事各级各类企事业单位的办公自动化处理、计算机安装与维护、网页制作、计算机网络和专业服务器的维护管理和开发工作、动态商务网站开发与管理、软件测试与开发及计算机相关设备的商品贸易等方面的有关工作。

软件工程这个专业的就业方向还是比较多的,软件服务外包属于智力人才密集型现代服务业,一般来说学生毕业后主要就业去向包括软件外包与服务企业、信息产品与服务企业,担任软件工程师、项目经理、软件开发工程师、测试工程师、java开发工程师等等。

1、软件开发工程师
软件开发工程师主要负责RFID相关应用软件、信息管理类软件的设计、研发、维护、安装实施,数据库管理及应用开发,根据要求进行软件概要设计、详细设计、编码、单元测试工作及说明文档的编写。这类工作薪资水平基本上都是很高的,福利待遇也是很好的。

2、软件工程师
软件工程师基本上就是指导程序员的工作,协助工程管理人保证项目的质量,参与软件工程系统的设计、开发、测试等过程,还要编写各种各样的软件说明书,如:需求说明书,概要说明书等。工作的内容比较复杂,需要有一定的工作经验,不过基本上薪资水平在行业里比较高,待遇也很好。

软件工程师薪资一般在元到元/月左右。学习软件工程师推荐选择达内教育,该机构致力于面向IT互联网行业,培养软件开发工程师、测试工程师、UI设计师、网络营销工程师、会计等职场人才,拥有行业内完善的教研团队,强大的师资力量,确保学员利益,全方位保障学员学习。

软件工程师薪资待遇与以下因素有关:

  • 1、城市,城市的发展程度决定了工资水平,一般程序员、软件工程师薪资比较高的城市是北京、上海等一线城市。
  • 2、水平,专业水平是否过硬,如果做到公司少了自己无法工作的状况,那薪资必定很高。
  • 3、面试沟通技巧,程序员不要小看这个环节,面试过程中能否脱颖而出,能否谈的高工资就看和面试官如何沟通。