1.1 软件的定义、特征和分类

1.0 简述软件工程的历史

  • 软件工程作为一门独立的学科,其发展已逾五十年。
  • 20世纪60年代,由于高级语言的流行,使得计算机的应用范围得到了较大扩展,对软件系统的需求急剧上升,软件的规模急剧增长,从而出现了所谓的“软件危机”。
  • 软件开发从质量、效率等方面均远远不能满足需求。
  • 20世纪60年代末,如何克服“软件危机”,为软件开发提供高质、高效的技术支持,收到人们的高度关注。
  • 1968年,在NATO会议上首次提出了“软件工程”这一概念,从而使软件开发开始了从“艺术”“技巧”和“个体行为”向“工程化”和“群体协同工作”转化的历程。
  • 多年来,软件工程的研究和实践取得了长足的发展,虽然与彻底解决“软件危机”尚有较大差距,但对软件开发的工程化以及软件产业的发展起到了积极的推动作用,提供了良好的技术支持。

1.1.1 软件的定义

  • 软件是计算机系统中与硬件相互依存的另一部分。
  • 软件是包括程序、数据以及其相关文档的完整集合。
    • 程序:是按实现设计的功能和性能要求执行的指令序列
    • 数据:为进行同行、解释和处理而使用的信息的形式化表现形式
    • 文档:是与程序开发、维护和使用相关的图文材料

1.1.2 软件的特征

软件是整个计算机系统中的一个逻辑部件,而硬件是一个物理部件。

软件具有硬件完全不同的特性:

  • 软件是一种逻辑实体,不是具体的物理实体。
    软件具有抽象性,可以存储在存储介质中,但却无法看到软件本身的形态,必须经过观察、分析、思考和判断去了解它的功能、性能以及其他特性。
  • 软件和硬件的生产方式不同。
    • 在软件的开发过程中,没有明显的制造过程
    • 也不像硬件那样,一旦研制成功就可以重复制造,可以在制造过程中进行质量控制以保证产品的质量
    • 软件是通过人们的智力活动把知识与技术转化为信息的一种产品。
    • 一旦某一软件项目研制成功,以后就可以大量地复制同一内容的副本,应用到更多的地方。
  • 软件与硬件的维护方式不同。
    • 硬件是有损耗的,会产生磨损和老化而使故障率增加甚至损坏。
      1.1  软件的定义、特征和分类
  • 软件的复杂性
    • 一方面来自它所反映的实际问题的复杂性
    • 另一方面也来自程序结构的复杂性
    • 软件技术的发展明显落后于复杂的软件需求,并且随着时间的推移,这个差距日益加大
      1.1  软件的定义、特征和分类
  • 软件的使用和社会因素有关。
    • 许多软件的开发和运行涉及到机构、体制及管理方式等问题,甚至涉及人的观念和人们的心里,它直接影响到项目的成败
  • 1.1.3 软件的分类

    1.按软件的功能进行划分

    • 系统软件:
      • 能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。
      • 例如:操作系统、数据库管理系统、设备驱动程序以及通信处理程序等
    • 支撑软件:
      • 是协助用户开发软件的工具性软件
        • 其中包括帮助程序人员开发软件产品的工具
        • 也包括帮助管理人员控制开发进程的工具
    • 应用软件:
      • 是在特定领域内开发,为特定目的服务的一类软件

    2.按软件规模进行划分

    • 按开发软件所需的人力、时间以及完成的源程序行数,可确定6种不同规模的软件。
    类别 参加人数 研制期限 产品规模(源程序行数)
    微型 1~4 10周以下 1k
    小型 5~20 2~10月 2k~10k
    中型 20~50 1~2年 10k~100k
    大型 50~500 2~4年 100k~1M
    甚大型 500~1000 4~6年 1M~10M
    极大型 1000以上 7年以上 10M以上
    • 规模大、时间长、很多人参加的软件项目,其开发工作必须要有软件工程的知识做指导。
    • 规模小、时间短、参加人员少的软件项目也要有软件工程的概念,遵循一定的开发规范。
    • 任何软件的开发的基本原则是一样的,只是对软件工程技术的以来的程度不同而已。

    3.按软件工作方式划分

    • 实时处理软件:
      • 指在事件或数据产生时,立即予以处理,并及时反馈信号,控制需要监测和控制的过程软件。
      • 主要包括数据采集、分析、输出三部分。
    • 分时软件:
      • 允许多个联机用户同时使用计算机
    • 交互式软件:
      • 能实现人机通信的软件
    • 批处理软件:
      • 把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的软件。

    4.按软件服务对象的范围划分

    • 项目软件(定制软件):
      • 是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约束下开发出来的软件。
      • 例如,军用防空指挥系统、卫星控制系统。
    • 产品软件:
      • 是由软件开发机构开发出来直接提供给市场,或是为千百个用户服务的软件。
      • 例如:文字处理软件、文本处理软件、财务处理软件、人事管理软件等。

    5.按使用的频度进行划分

    • 有的软件开发出来仅供一次使用。
      • 例如:用于人口普查、工业普查的软件。
    • 有些软件具有较高的使用频度。
      • 例如:天气预报软件。

    6.按软件失效的影响进行划分

    • 有的软件在工作中出现了故障,造成软件失效,可能给软件整个系统带来的影响不大。
    • 有的软件一旦失效,可能酿成灾难性后果。这类软件被称为关键软件。
      • 例如:财务金融、交通通信、航空航天等

    来源:qq_41919653

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

    上一篇 2020年4月25日
    下一篇 2020年4月25日

    相关推荐