计算机导论课后总结(第十四周)

这周学习了软件的相关知识,现作总结。

什么是软件?从字面来看,一定有一个“硬件”与之相对,那什么是硬件呢?由上周的学习知道,硬件是客观存在的实体,它们为信息处理提供了物质基础,但却不能实现信息处理的要求,但是计算机怎么能不作信息处理呢?简单来说,软件就是这样一个媒介,承担着指挥硬件协调工作、并有条不紊地执行信息处理的作用。

硬件有分类,指挥硬件工作的软件自然也有分类:

  1. 按软件的功能来分,可分为系统软件、应用软件两大类。其中,系统软件与计算机硬件紧密配合在一起,使计算机系统的各个部件、相关的软件和数据协调、高效地工作,系统软件又可分为操作系统和支撑软件,操作系统是所有软件运行的基础;应用软件呢?举例来说,就是诸如Word、QQ、CAD等为了解决某一领域、某类问题的应用需求而提供的软件。

  2. 按软件的规模来分,可用下图来表示:
    计算机导论课后总结(第十四周)

  3. 按软件的工作方式来分,可以分为实时处理软件、分时软件、交互式软件和批处理软件四大类。

了解了软件的功能和分类,怎么把它做出来呢?书上先提到“软件架构”的定义,在学习这一概念之前,不妨先回忆前面学习到的计算机系统结构的知识,有两句话是这么说的:“计算机组成是计算机系统结构的逻辑实现”、“计算机实现是计算机组成的物理实现”。再来看看软件架构的定义:软件架构是有关软件整体结构与组件的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图,它描述的是直接构成系统的抽象组件。两个概念对比来看,有许多相似的地方,方便理解记忆。再来看看软件架构的分层:

  1. 什么是分层?目前的软件系统,特别是企业级的系统,越来越庞大、复杂,要满足设计目标越来越困难,而用分层对系统进行分而治之的管理是一种行之有效的办法。分层表示将功能进行了有序的分组:应用程序专用功能位于高层,跨越应用程序领域的功能位于中层,而配置环境专用功能则位于低层。下图是一个软件架构四层结构的示例。
    计算机导论课后总结(第十四周)
    类似于上面提到的软件规模的分类,层的数量与组成自然也可以分类,如下表:
    计算机导论课后总结(第十四周)

系统分层的标准包含可见度、易变性、通用性、层数几条规则,这里的“易变性”,指的是在顶层放置随用户需求的改变而改变的元素;在底层防止随实施平台(硬件、语言、操作系统、数据库等)的改变而改变的元素;在中间层放置广泛适用于各种系统和实施环境的元素。简单来说,易变性指的是通过对软件架构分层的调整、更改,来适应不同的使用需求。

操作系统

  1. 前面讲到,操作系统是系统软件的一个分类,是所有软件运行的基础。我们打开计算机时,它运行的第一个程序就是操作系统。可以将操作系统理解为是应用程序与计算机硬件的“中间人”,在它的帮助下,计算机硬件才能执行应用程序的命令,使程序得以运行。从系统角度来看,对比于CPU是计算机系统的心脏,操作系统就是计算机系统的大脑,是整个系统的控制中心;从用户观点来看,操作系统就是用户使用计算机的界面,通过操作系统,用户才得以轻松实现如命令方式、系统调用、图形界面等操作;从软件观点来看,操作系统又是程序、数据和文档的集合,它是直接与硬件相连的第一层软件,由大量复杂的系统程序、众多的数据和不同类型的文档组成,以实现对整个计算机资源的管理和控制。

  2. 小时候还未接触编程,在一次安装游戏出问题,到网上找解决办法的时候,了解到了命令提示符的概念。那时候就感觉很神奇也很cool,好像自己就像一个厉害的黑客,几行命令就能够让游戏成功安装运行。这次课学习到这一内容,原来这叫做“DOS命令”,“命令提示符”则是“Windows所提供的支持DOS命令的环境”,帮助我重新理清了DOS和cmd这两个概念!如下图为命令提示符界面。
    计算机导论课后总结(第十四周)

  3. 书上介绍了一些常见的操作系统,例如Windows、UNIX、Linux、Mac OS等计算机操作系统,还介绍到智能手机的一些操作系统,如Symbian、Windows Phone、iOS、Android等。这里总结一下UNIX、Linux、Windows这三个概念。首先,先有UNIX操作系统,但是UNIX系统是收费的,而有个教授为了给学生上课,就自己开发了一个“迷你版”的UNIX,即“mini-UNIX”,但他没有将这个系统推广。后来,一个名叫Linus的人发现这个mini-UNIX很有价值,就买回去研究,最终发展为开源的Linux操作系统。可以说,Linux是UNIX的一种克隆系统,但Linux不源自于任何版本的UNIX的源代码,并不是UNIX,而只是一个类似于UNIX的产品。但无论是UNIX还是Linux,上手难度都不小,对初学者并不友好,比尔盖茨捕捉到了这一商机,选择退学开始研发自己的Windows操作系统。
    计算机导论课后总结(第十四周)
    最后,Windows系统仅靠鼠标就能完成很多操作,不需要像UNIX和Linux那样得熟悉许多命令行语句才能上手,最终以其可视化程度高、对初学者友好等特点迅速流行起来,成为目前为止最常见、最常用的操作系统之一……

我们还学习到软件的开发。软件开发有一个过程,可以分为如下几部分:

  1. 问题定义—要解决的问题是什么

  2. 可行性研究—对上一个阶段所确定的问题是否有行得通的解决方法

  3. 需求分析—为了解决这个问题,目标系统需要做什么

  4. 总体设计—概括地说,应该如何实现目标系统

  5. 详细设计—如何具体地实现这个系统

  6. 程序开发

  7. 软件测试

  8. 软件维护

以上提到的各项任务,将软件的生命周期划分为了8个阶段。当然,这8个阶段显然不是一成不变的,要根据实际情况来对软件开发阶段进行不同的划分,这是一种动态的、大致的过程,没有一个统一的模板来描述。

老师提到,用户体验是很重要的。我们进行软件开发,开发出来是给用户使用的,他们有什么样的需求、期待得到一种什么样的使用体验,都是我们应该考虑的内容。下图为iPhone用户界面:
计算机导论课后总结(第十四周)
就像乔布斯所说的:“任何个性化的前提都是满足人们的需求,这个需求就是要做好用户体验—让用户因为使用苹果的产品而爽起来”,一言以蔽之,让用户用得舒服,是应用软件设计的宗旨。

总结至此,共勉!