系统软件与应用软件 计算机的硬件是由软件来控制的。只有硬件的计算机称为裸机。按与硬件相关的密切程度, 通常将计算机的软件分为系统软件和应用软件。用户直接使用的软件通常为应用软件, 而应用软件通常是通过系统软件来指挥计算机的硬件完成其功能的。最重要的系统软件是操作系统(Operation System,OS),它完成指挥计算机运行的各个细节, 亦即, 操作系统是计算机系统中用于指挥和管理其自身的软件。实质上, 使用计算机时, 我们并不直接使用计算机的硬件, 与我们直接打交道的是应用软件。我们使用应用软件, 由应用软件在“幕后”与操作系统打交道, 再由操作系统指挥计算机完成相应的工作。 不同体系的计算机硬件要求的操作系统不同, 相同体系的计算机硬件也可用不同的操作系统来指挥和管理。目前应用最广泛的是微型计算机(IBM PC及其兼容机), 其最常使用的操作系统是DOS、窗口系统(Windows 3.x、Windows 95、Windows NT系列)、Linux等。应用软件通常是由计算机专业人员为满足人们完成特定任务的要求开发的, 这些软件通常以特定的操作系统作为其运行基础(称应用平台)。我们最常用的应用软件有文字处理、电子表格、数据库应用系统、图形图象处理软件等。
1、概念不同。
应用程序(applicationsoftware或 application Program)是计算机软件的主要分类之一,是指为针对用户的某种特殊应用目的所撰写的软件。
应用程序在分类上也比较多,系统应用程序,桌面应用程序,驱动应用程序,网络应用程序,手机应用程序,物联网应用程序等。
根据《软件工程:实践者的研究方法》中的定义,软件(software)是一系列按照特定顺序组织的计算机数据和指令,是计算机中的非有形部分。计算机中的有形部分称为硬件,由计算机的外壳及各零件及电路所组成。
软件由一个或多个应用程序组合而成,分类上有编程语言、系统软件、恶意软件,嵌入式软件,游戏软件,应用软件和介于这两者之间的中间件。
系统软件就是常见的操作系统,Windows,MacOS,Linux都是操作系统软件。
应用软件是需要运行在操作系统上的软件,比如常见的文档处理软件,图像处理软件,编程软件等。
恶意软件会故意造成隐私或机密数据外泄、系统损害(包括但不限于系统崩溃等)、数据丢失等故障及信息安全问题。
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。
软件包括所有在计算机运行的程序,和其架构无关,例如可执行文件、库及脚本语言都属于软件。软件不分架构,有其共通的特性。
应用程序只是软件的一部分,而软件的概念及其广泛,不是只有应用程序。
2、功能不同
软件由多个应用程序组合而成,功能及其复杂,比如常见的office软件,能做表格,做PPT,处理文档等功能。
而应用程序功能比较单一,只能处理一类工作。PPT只能用来处理幻灯片,没有办法处理复杂表格,想要录制音频需要调用office软件包里录制音频的应用程序。
3、开发难度不同。
软件的开发难度要比应用程序大得多,由于需要多个应用程序配合,而且需要在不同的操作系统平台上发布,都是用不同的编程语言混合开发而成。
软件对性能有一定的要求,很少选择性能比较差的脚本语言开发,一般都是使用C++,Java这类编译型语言开发。
但编译型语言的问题是,有的语言设计不合理,历史积累,不够成熟等原因,造成开发起来较繁琐,调试比较困难,开发时间较长。因此一个功能完整的软件开发起来通常需要几年才能完成。
最常见的游戏软件就是如此,很多游戏软件的游戏引擎都是C++,C#这种编译型语言开发(有现成的也需要二次开发),也是整个游戏的灵魂,开发难度也是最大的。
而游戏的动作,事件等则选择LUA,JavaScript或者Python这些脚本语言开发。很多游戏大作都是跨平台的,开发周期最少的都在1年以上。
应用程序的功能相对比较单一,遇到的业务场景也不会很复杂。通常开发一个功能完善的应用程序,只需要几个月时间,复杂的应用程序最多1-2年就能完成。
应用程序通常对性能的需求没有软件那么大,很多解释型的脚本语言也可以开发。开发一个移动端手机应用程序(web应用程序),功能不算很复杂,开发周期都不长。通常一个完整的web应用程序,会分为客户端和服务端两部分。
/iknow-pic.cdn.bcebos.com/960a304e251f95cab93fe5afc7177f3e660952e4"target="_blank"title="点击查看大图"class="ikqb_img_alink">/iknow-pic.cdn.bcebos.com/960a304e251f95cab93fe5afc7177f3e660952e4?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/960a304e251f95cab93fe5afc7177f3e660952e4"/>
客户端软件技术选型上,常用ReactNative或者flutter(IOS有自己的一套UI),服务端软件一般常用C++、Java、PHP、Python、Ruby等编程语言开发,通常都会同时在安卓和IOS平台上发布。
参考资料来源:/baike.baidu.com/item/%E5%BA%94%E7%94%A8%E8%BD%AF%E4%BB%B6/216367?fr=aladdin"target="_blank"title="百度百科——应用软件">百度百科——应用软件
参考资料来源:(美) Rosger S Pressman著,《软件工程:实践者的研究方法(原书第六版)》第一章