学习任务:

视频学习软件的组成

什么是程序

什么是数据

什么是文档

软件的特点

国标(GB)中对软件的定义为:与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据的统称。软件可以简单概括为:程序、数据、相关文档的集合。

程序是告诉计算机完成一个任务,这个任务用程序设计语言编写的并且计算机可以识别的指令序列。

如下所示就是一个程序,该程序共有6行语句组成,该程序完成的功能是在显示屏幕上输出:Welcome to 攀博课堂!

public class HelloWorld {
  public static void main(String[]agrs)
    {
      System.out.println("Welcome to 攀博课堂!");
    }
}

上边的6行语句,每行语句都是些特殊的符号和英文单词或英文字符组成,这些就是按照Java程序设计语言的语法规则所编写的程序指令。

为什么要用程序设计语言编写程序呢?

计算机底层有自己的机器语言,机器语言的语法是非常难懂的,现在要告诉计算机输出一行文本"Welcome to 攀博课堂!",如何使用容易看懂的方式告诉计算机要执行的任务呢?程序设计语言就是人类和计算机之间沟通的语言。首先使用程序设计语言编写程序,然后将程序在计算机中执行即可翻译成计算机的机器语言,最后计算机便收到了执行任务的指令。

这就好比一个中国人和一个老外见面,中间由翻译传递信息一样,程序语言就是人与计算机之间的翻译官。

image-20210105104906693

数据是程序执行过程中依赖或者所产生的数据。

有些程序要正常运行还必须提供一些基础数据,比如,使用手机充值软件进行充值,用户输入手机号码后手机充值软件就会判断这个手机号输入的对不对,该手机卡有没有开通等,它判断的标准就是从基础数据中查询手机号码是否合法,如果手机号输入不对或手机号不存在充值软件将会提示错误信息,这些数据为手机充值软件的运行提供了基础的支持,它是软件的一部分。

程序在执行过程中也会产生数据,比如:用户向微信注册一个账号,微信收到请求会将用户的相关信息保存在数据库中,这时便产生的数据。

下图是攀博课堂(在线学习平台)的数据字典表中的部分数据:

image-20200724142928560

文档是与程序相关的设计、开发、维护等所使用的图文资料。

比如:大家在使用微信或QQ的一些新功能时发现有些功能不知道如何使用,这时大家就会去看微信或QQ功能的帮助说明,这个帮助说明就是指软件的文档,当然文档还有很多比如设计软件用的设计文档,还有详细说明用户需求的软件需求规格说明书等。

下图是攀博课堂项目的部分文档清单:

image-20200724142117430

下图是攀博课堂需求规则说明书文档的部分大纲视图:

image-20200724142403852

以上我们讨论了软件的概念及分类,那么软件有以下特点:

1、软件是一种逻辑实体,具有抽象性; 软件与其它工程对象有着明显的差异,人们可以把它记录在纸上或存储介质上,但却无法看到软件本身的形态,必须通过观察、思考、分析、判断才能了解它的功能以它的性能特点。

2、软件的生产与硬件不同,它没有明显的制作过程; 软件研发成功后就可以大量复制很多份去销售,所以说软件的质量控制就是在软件开发时的质量控制,而不像其它商品每生产一个都要质量控制。

3、软件在运行、使用期间不存在磨损、老化问题; 软件虽然不会因为磨损而老化,但为了适应计算机硬件、用户需求的变化等原因软件是要经过演进的也就是软件版本的升级,比如我们以前使用windows 95、windows 98、现在是windows 8、windows10,这就是windows操作系统的软件演进。

4、软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 系统软件和硬件离得最近,它和硬件依赖也最大,应用软件是在系统软件之上运行的所以它依赖于系统软件,其实也间接依赖硬件,受这两个方面的限制我们开发软件要考虑可移值性问题。当然一般的应用软件不需要考虑硬件方面的问题只需要考虑和操作系统(比如window、Linux)适应就可以。 5、软件复杂性高,成本昂贵; 虽然说软件开发成功后采用复制拷贝的方法去生产,但开发过程中的成本是比较高的,需要投入大量高强度的脑力劳动以及开发工具,并且整个开发过程具有很大的风险性。

6、软件开发涉及诸多的社会因素。 许多软件的开发和运行涉及软件用户的机构设置、体制问题以及用户管理方式等等,甚至涉及人们的观念和心理、软件知识产权及法律等问题。

提问-攀博课堂
我要提问 不会就问,有效沟通
关注公众号,加入微信群交流提问。 攀博课堂官方公众号
问答列表,查看本知识点所有问题