软件工程—绪论软件工程的生产(软件的特点、软件生产的发展、软件危机产生的原因。软件工程的概念)

                                                  1.1软件工程的产生

    1.1.1软件的特点
   ※ “软件”定义为计算机程序及其说明程序的各种文档。
   ※ “程序”是计算机的处理对象和处理规则的描述。
   ※ “文档”是有关计算机程序功能、设计、编制、使用文字或图形资料。

          软件是一种特殊产品,它具有下列一些特性:
          (1)软件是一种逻辑产品,它与物质产品有很大的区别。
          (软件产品是看不见摸不着的,因而具有无形性,它是脑力劳动的结晶,它以程序和文档的形式出现,保存在计算机存储器的磁盘和光盘介质上,通过计算机的执行才能体现它的功能和作用)

          (2)软件产品的生产主要是研制、
          (软件产品的成本主要体现在软件的开发和研制上,软件开发研制完成后,通过复制就产生了大量的软件产品)

          (3)软件产品不会用坏,不存在磨损、消耗问题。

          (4)软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,大部分产品是”定做”的。

          (5)软件费用不断增加,软件成本相当昂贵。
          (软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本非常高)

    1.1.2软件生产的发展

     自从第一台计算机诞生至今,软件的生产经过了程序设计程序系统软件工程三个时代

    1.程序设计时代(1946~1956)
      (这个阶段的生产方式是个体手工劳动、使用的工具是机器语言、汇编语言、开发方法是追求编程技巧,追求程序运行效率,因而使得程序难读、难懂、难修改,硬件特征是价格贵、存储容量小、运行可靠性差。软件特征是只有程序、程序设计概念,不重视程序设计方法、)

    2.程序系统时代(1956~1968)
      (这个阶段的生产方式是”作坊式”的小集团合作生产,生产工具是高级语言,开发方法仍旧靠个人技巧,但开始提出结构化方法,硬件特征是速度、容量、工作可靠性有明显提高,价格降低,销售有爆炸性增长,软件特征是程序员数量猛增,大量其他行业人员进入这个行业,因为缺乏训练,因而开发人员素质差,这时已意识到软件开发的重要性,但开发技术没有新的突破,大量软件开发的需求与提出,但开发人员的素质和落后的开发技术不适应规模大,结构复杂的软件开发产生了尖锐的矛盾,导致软件危机的产生)

    3.软件工程时代(1968年至今)
      (这个阶段的生产方式是工程化的生产,使用数据库开发工具、开发环境,网络分布式面向对象技术来开发软件,硬件特征是向高速,超高速,大容量、微型化以及网络化方向发展,软件特征是开发技术有很大进步,但是未能获得突破性进展,软件价格不再上升,没有完全摆脱软件危机)

    1.1.3软件危机

     1.软件危机的产生

      软件开发中遇到的问题因找不到解决的办法,使问题积累起来,形成尖锐的矛盾,导致了软件危机。
      (软件发展第二阶段的末期,由于计算机硬件技术的进步,计算机运行速度、容量、可靠性有显著的提高,生产成本显著下降,作为计算机的广泛应用创造了条件,一些复杂的大型的软件开发项目提出来了,但是软件开发的进一步一直未能满足发展的要求,在软件开发中遇到的问题,找不到解决的方法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机)

     2.软件危机的表现

     软件危机表现在以下几个方面:
      (1)经费预算经常突破,完成时间一再拖延。
      (由于缺乏软件开发的经验和软件开发数据的积累,使得开发工作的计划很难指定,主观盲目指定计划,执行起来与实际情况有很大差距,使得开发经费一再突破,由于对工作量估计不足,对开发难度估计不足,经费计划无法按时完成,开发时间一再拖延)
      (2)开发的软件不能满足用户要求。
      (开发初期对用户的要求了解不够明确,未能得到明确的表达,开发工作开始后,软件人员和用户又不能及时交换意见,使得一些问题不能及时解决,导致开发的软件不能满足用户的需求,因而开发失败)
      (3)开发的软件可维护性差。
      (开发过程没有统一地规范,软件开发人员按照各自的风格工作,各行其是,开发过程无完整规范的文档,发现问题后进行杂乱无章的修改,程序结构不好,运行时发现错误也很难修改,导致维护性差)
      (4)开发的软件可靠性差。
      (由于在开发的过程中,没有确保软件质量的体系和措施,在软件测试时,又没有严格的充分的完全的测试,提交给用户的软件质量差,在运行中暴露出来的问题多,最终不可靠的软件,轻者会影响系统正常工作,重者会发生事故造成生命财产的重大损失)

     2.软件危机的原因
      (上述软件危机的原因是由于软件产品本身的特点,以及开发软件的方式,方法技术和人员引起的)

      (1)软件的规模越来越大,结构越来越复杂。
      (随着计算机应用的日益广泛,需要开发的软件规模也日益庞大,软件结构也日益复杂,1968年,美国航空公司订票系统达到30万条指令;IBM 360 OS第16版达到100万条指令,花了5000人一年研制;1973年美国阿波罗计划达到1千万条指令;1979年哥伦比亚航天飞机系统达到4000万条指令,这些庞大软件功能非常复杂,体现在处理功能的多样性,和运行环境的多样性,有人曾估计,软件设计与硬件设计相比,其逻辑量要多达10到100倍,由于这种庞大规模软件的复杂性,其调用关系接口信息复杂,数据结构也复杂,这种复杂程度超过了人们经受的程度)
      (2)软件开发的管理困难。
      (由于软件规模大,结构复杂,具有无形性,因此导致管理困难,进度控制困难,质量控制困难,可靠性无法保证)
      (3)软件开发费用不断增加。
      (软件产品是一种智力劳动,它是资金密集、人力密集的产业,大型软件投入人力多,周期长费用上升快,)
      (4)软件开发技术落后
      (在60年代,人们注重一些计算机理论研究,问题的研究,如编译原理,操作系统原理,数据库原理,人工智能原理,形势语言理论等,不注重软件开发技术的研究,用户要求的软件复杂性与软件技术解决复杂性的能力不相适应,他们之前的差距越来越大)
      (5)生产方式落后。
      (仍然采用个体生产方式开发,根据个人习惯爱好工作,无章可循,无规范可依据,开言传身教方式工作)
      (6)开发工具落后,生产率提高缓慢。
      (软件开发工具过于原始,没有出现高效率的开发工具,因而软件生产力低下,在1960年到1980年这20年间,鉴于硬件的生产由于采用计算机辅助设计自动生产线等先进工具是,使硬件生产率提高一百万倍,在这20年间,软件生产力只提高2倍,相差十分悬殊,)

    1.1.4软件工程

          在1968年北大西洋公约组织的工作会议上首先提出”软件工程”的概念,提出要用工程化的思想来开发软件。

     1.软件工程的定义
      软件工程是用科学知识和技术原理来定义、开发、维护软件的一门学科

      主要思想是在软件生产中用工程化的方法代替传统手工方法。这种工程化的思想贯穿到需求分析、设计、实现,直到维护整个过程。

     2.软件工程的性质

      软件工程是涉及计算机科学、工程科学、管理学科、数学等领域的一门综合性的交叉学科

      计算机科学中的研究成果均可用于软件工程,但计算机科学着重与原理和理论,而软件工程着重与如何建造一个软件系统
      (软件工程科学中的观点来进行费用估算,制定进度,指定计划和方案,软件工程要用管理科学中的方法和原理进行软件生产和管理,软件工程要用数学的方法建立软件开发中的各种模型和各种算法,如可靠性模型,说明用户需求的形式化模型等)

     3.软件工程的目标
      ※付出较低的开发成本;
      ※达到要求的软件功能;
      ※取得较好的软件性能;
      ※开发的软件易于移植;
      ※需要较低的维护费用;
      ※能按时完成开发任务,及时交付使用;
      ※开发的软件可靠性高。

     4.软件工程的内容

      软件工程研究的主要内容是指软件开发技术和软件开发管理两个方面。
      (在软件开发技术中,主要研究软件开发方法,软件开发过程,软件开发工具和环境,在软件开发管理中,主要是研究软件管理学,软件经济学,软件心理学等)

     5.软件工程面临的问题
      ※软件费用
      (由于软件生产基本上仍处于手工状态,软件是知识高度密集的技术的综合产物,人力资源远远不能适用软件这种迅速增长的社会要求,所以软件费用上升的势头必然还将继续下去)
      ※软件可靠性
      (软件可靠性是指软件系统能否在既定的环境条件下,运行并实现所希望的结果,在软件开发中,通常要花费百分之四十的代价进行测试和拍错,就这样还不能保证以后不发生错误,为了提高软件可靠性,就要付出足够的代价)
      ※软件可维护性
      (统计数据表明,软件的维护费用在整个软件系统费用的三分之二,而软件开发费用所占整个软件系统的三分之一,所以有如此大的花费,因为已经已经运行的软件还需排除隐含的错误,新增加的功能要加入进去,维护工作又是非常苦难的,效率又是非常低下的,因此,如何提高软件可维护性,减少软件维护的工作量,也是软件公工程面临的主要问题之一)
      ※软件生产率
      (计算的广泛应用使得软件的需求量大幅度上升,而软件的生产又处于手工开发的状态,软件生产力低下,使得各国都感到软件开发人员不足,这种趋势仍旧继续下去,所以如何提高软件生产率是软件工程又一重要问题,)
      ※软件重用
      (提高软件的重用性,对于提高软件生产力,降低软件成本有重要意义,当前的软件开发存在着大量重复的劳动,耗费了不少人力资源,软件的重用有个各种级别,软件规格说明,软件模块,软件代码,软件文档等都可以是软件重用的单位,软件重用是软件工程中的一个重要研究课题,软件重用的理论和技术课题至今尚未彻底解决)

来源:近视的脚踏实地

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年8月10日
下一篇 2019年8月10日

相关推荐