新闻动态
软件的概念和分类
https://www.sytm.net 发布日期:2013/10/22 16:18:51

软件的概念

50多年前,人们对软件的概念知之甚少,甚至从未听说过这个词。如今,软件已经渗透到人类生活的方方面面,但人们对于软件的理解并不准确。“软件就是程序,软件开发就是编程”这种错误的观点仍然存在。随着软件工程新方法、新技术和新理论的出现,软件的外延和内涵较传统软件已经发生了巨大的改变。因此正确地把握软件的概念对于正确认识软件工程具有非常重要的意义。

关于软件的一种工人的定义是:软件是计算机系统中与硬件相互依存的另一部分。软件是程序、数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能够正确地处理信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。简单地表述,可以认为:软件=程序+文档。

不同的时代赋予程序不同的含义。在结构化程序设计时代,程序的最小单位是函数及子程序,程序与数据是分离的。在面向对象程序设计时代,程序的最小单位是类,在类中封装了相关的数据及对数据的操作。如果摒弃这些表现形式上的差异,可以归纳出软件具有如下属性。

软件是逻辑实体。因此是无形的、不可见的。当然无法用几何尺寸、物理性质和化学成分等属性对其进行度量。即便如此,也不能因而否定它的存在和低估它的价值。

控制软件产品的质量是困难的,表现在以下方面:

(1)目标软件的需求在软件开发之初常常是不确切的。也木容易确切地给出。同时需求的变更在软件开发过程中也是经常发生的,这就使软件质量控制变得异常闲难。

(2)由于软件产品是人类思维的外化产物,而人类的思维方式是因人而异、因时而异、因事而异的。这样很难如同规范劳动密集型制造业一样约束软件开发的过程。所以软件产品的质量是难以控制的。

(3)软件测试技术是保让软件质量的重要手段之一。然而该技术存在先天不足。软件测试只能证明软件是存在错误的,永远不能证明软件是没有错误的。因为,任何测试都无法穷尽软件运行过程中的所有场景,无法枚举软件运行过程中的庞大的应用实例数据。仅仅是在极大数量的应用场景和数据下,选取极为有限的一部分用以测试,因此,导致无法得到完全没有缺陷的软件产品。

3.智能特性

软件是人类思维的外化产物,它的开发基于人们大员的脑力劳动。是知识、实践经验和人类智慧的沉淀。它可以帮助解决复杂的计算、分析、判断和决策等问题,因此具有了部分的类似人类的智能。

4.开发特性

软件升发的自动化(简称软件自动化)从某种意义上来说是软件工程学科发展的终极目标。

但到目前为止,距离该目标还有很长的路要走。原因在于软件开发仍然包含了相当分量的个体劳动,使得这一大规模知识密集型工作充满了个人因素和个人行为。软件的开发不同于传统制造业。传统制造业的工艺都已经相当成熟。大规模地采用了自动化生产技术、摆脱了手工作坊式的生产,而大多数的软件产品是根据用户的需求进行定制开发的个性化产品,虽然出现了—些具有现代工业生产特征的软件开发技术和方法(如构件技术等),但现实情况是,这些技术只能从某一方面提高软件开发的自动化程度。改变或改善软件产品的生产效率。

软件的开发和运行依赖于不同的计算机系统环境(包括支持它的开发和运行的相关硬件和软件)。软件对于计算机系统的环境有着不可摆脱的依赖性。

6.生产特性

与硬件或传统的制造业产品的生产过程不同,软件一旦设计开发出来。可以同时提供给多个用户使用。软件的复制是十分简单的,其成本也是极为有限的。正因为如此,设计开发成本占据了大部分软件产品的生产成本。

7.演化特性

软件投入使用以后,随着用户需求的变更、新生态环境的变化、新错误的发现,使得原有软件逐渐沦为遗产软件。但完全抛弃这些遗产软件,重新开发适合当前环境和技术要求的新系统往往又是代价高昂的,有些时候甚至是不可行的。因此软件需要具备演化能力,针对相应的变化动态地进行调整。

8.管理特性

对软件开发,特别是大型软件开发过程的管理,实际上是对大规模知识型工作者的智力劳动管理,包括必要的培训、知道、激励、制度化规程的推行、过程的量化分析与监督以及沟通、协调,甚至过程文化的建立和实施。因此,很难借鉴管理产业工人的方法进行管理。

9.应用特性

软件的应用极为广泛,如今它已渗透到社会生活的各个领域,软件产业现已成为关乎国计民生的重要产业。


更多阅读
返回列表
© 2010 TianMei Technology All rights reserved. ICP:辽B2-20150138辽公网安备 21010202000010号  目录概览