1.1 软件和软件危机


  • 软件的定义、特点及分类
    • 软件的定义
      • 在计算机发展初期,软件就是指程序。
      • 随着计算机技术的发展、计算机应用的日益普及、软件日益复杂、规模日益增大,人们开始意识到软件并不仅仅等于程序。
      • 软件不是程序,而是程序数据以及开发、使用和维护程序需要的所有文档的完整集合。
        1. 程序:计算任务的处理对象和处理规则的描述;人们为了完成特定的功能而编制的一组指令集。
        2. 数据:程序能处理的具有一定数据结构的信息。
        3. 文档:为了便于了解程序所需的阐明性资料;与程序的开发、维护和使用有关的图文资料,如软件开发计划书、需求规格说明书、设计说明书、测试分析报告和用户手册等。
    • 软件的特点
      • 软件是一种特殊的产品,与传统的工业产品相比,它具有以下一些独特的特点。
        1. 软件是一种逻辑产品,而不是具体的物理实体,具有抽象性。
          • 它正确与否,一直到程序在机器上运行才能够真正知道,给设计、生产和管理带来许多困难
        2. 软件产品的生产主要是开发研制,没有明显的制造过程。
          • 这就意味着,软件开发对分析设计人员对于专业知识以及经验都提出很高的要求;无法像汽车制造业制造汽车一样,通过构件的标准化组装而生产获得
        3. 软件产品在使用过程中,不存在磨损消耗老化等问题。
          • 这是软件的优点,一款软件最终退出历史舞台,只是软件使用者不再使用它
        4. 软件产品的开发主要是脑力劳动,还未完全摆脱手工开发方式,生产效率低。
        5. 软件是定制开发的。
          • 虽然整个工业向着基于构建的构造模式发展,然而大多数软件仍是根据实际的客户需求定制的
          • 所以,如何捕获不同用户的不同需求,是软件开发非常重要的工作
        6. 软件产品的成本相当昂贵,软件费用不断增加,软件的研制需要投入大量的人力、物力和资金,生产过程中还需对产品进行质量控制,对每件产品进行严格的检验。
          • 尤其是软件规模很大,软件非常复杂的时候,软件的成本可能呈几何增长
        7. 软件对硬件和环境有不同程度的依赖性,为了减少这种依赖性,在软件开发中提出了软件的可移植性问题。软件易于复制-特点优点
        8. 软件是复杂的。软件是人类有史以来生产的复杂度最高的工业产品,软件是一个庞大的逻辑系统。软件开发,尤其是应用软件的开发常常涉及到其他领域的专门知识,这就对软件开发人员提出了很高的要求。
          • 软件开发人员:需要理解各个行业的业务流程、需求
          • 需要和行业的专门的领域人才进行合作,获得软件需求
        9. 软件的质量要求很高。
        10. 软件的开发与运行都离不开相关的计算机系统环境的支持
        11. 软件的开发工作牵涉到很多社会因素
          • 如机构设置、机制和管理方式,以及人们的观念和心理
          • 不同于一般的工程项目,在软件项目开发过程中,实际开发(编写代码)的成本只是整个工程成本的一小部分,甚至可以说是“冰山一角”
          • 而软件需求分析、测试、系统维护等任务将占据工程的很大一部分成本
    • 软件的分类
      • 按照软件的功能划分,软件一般可以分为系统软件支撑软件应用软件三类
        • 系统软件:
          1. 居于计算机系统中最靠近硬件的一层。
          2. 其他软件一般都通过系统软件发挥作用。它与具体的应用领域无关,如编译程序和操作系统等。
          3. 编译程序把程序人员用高级语言书写的程序翻译成与之等价的、可执行的低级语言程序;
          4. 操作系统:负责管理系统的各种资源、控制程序的执行。
        • 支撑软件
          1. 支撑软件的开发、维护与运行的软件。
          2. 70年代后期发展起来的软件开发环境以及后来的中间件可被看成现代支撑软件的代表。
          3. 软件开发环境主要包括环境数据库、各种接口软件和工具组。三者形成整体,协同支撑软件的开发与维护;
          4. 中间件是一种软件,它处于系统软件(操作系统和网络软件)与应用软件之间,它能使远距离相隔的应用软件可协同工作(互操作)。
          5. vc++、Jbuilder、DCom、J2EE
        • 应用软件
          1. 特定应用领域专用的软件。
  • 软件危机的定义及表现形式
    • 软件危机的定义
      指在计算机软件的开发和维护过程中所遇到的一系列严重问题
    • 软件危机主要包含两方面的问题
      1. ü如何开发软件以满足多软件日益增长的需求;
      2. ü如何维护数量不断增长的已有软件。
    • 软件危机的典型表现形式
      1. 对软件开发成本和研制进度的估计常常很不精确。
      2. “已完成”的软件不能满足用户要求。
      3. 软件产品质量差,可靠性得不到保证。
      4. 软件产品可维护性差。
      5. 软件成本在计算机系统总成本中所占的比例逐年上升。
      6. 软件开发生产率提高的速度,远远跟不上计算机应用速度普及深入的趋势。
  • 软件危机的产生原因及解决途径
    • 产生原因
      1. 软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂。
      2. 软件开发的管理困难。
      3. 软件开发费用不断增加,维护费用急剧上升,直接威胁计算机应用的扩大。
      4. 软件开发技术落后。
      5. 生产方式落后。
      6. 开发工具落后,生产效率提高缓慢。
    • 解决途径
      1. 首先应该对计算机软件有一个正确的认识,彻底清除“软件就是程序”的错误观念。
      2. 要使用好的开发技术和方法,并且要不断研究探索更好更有效的技术和方法。尽快消除在计算机系统早期发展阶段形成的一些错误观念和作法。
      3. 要有良好的组织、严密的管理,各类人员要相互配合,共同完成任务。充分认识软件开发不是某种个体劳动的神秘技巧。
      4. 应该开发和使用好的软件工具。
    • 为了解决软件危机,人们逐渐认识了软件的特性以及软件产品开发的内在规律,并尝试用工程化的思想去指导软件开发,于是软件工程诞生了。

文章作者: Chipfron
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Chipfron !
  目录