1.1.2 软件的分类
由于软件产品各式各样、种类繁多,要对软件产品进行分类,并不是件容易的事情。按照不同的标准,会有不同的分类结果。比如,按照软件产品功能的不同,可以分为系统软件、支撑软件和应用软件;按照软件产品服务对象的不同,软件可以分为通用软件和定制软件;按照软件产品规模的不同,软件可以划分为小型、中型、大型和超大型软件;按照软件产品工作方式的不同,可以划分为实时软件、分时软件、交互式软件和批处理软件。
软件的分类示意图如图1.3所示。

图1.3 软件的分类
另外,从软件工程学的角度来划分软件产品,可以分为基础软件、支撑软件和应用软件等。
(1)基础软件是指保证计算机运行并支撑应用软件运行的基础环境,包括操作系统、数据库、中间件。
(2)支撑软件是指支撑各种软件的开发与维护的软件,又称为集成开发环境(Integrated Development Environment,IDE),主要有环境数据库、各种接口软件和工具组,包括编程工具、建模工具、版本控制、软件测试等类型。
(3)应用软件是指为满足用户不同领域、不同问题的应用需求而提供的软件。它是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,分为应用软件包和用户程序。应用软件包是利用计算机解决某类问题而设计的程序的集合,可供多用户使用。
实际上,软件工程所涉及的主要就是应用软件的开发方法和开发管理。应用软件主要可分为如下四类。
(1)桌面通用软件(个人)。桌面通用软件(个人)是指安装在PC上可以独立运行的软件,包括办公室软件(如Office、WPS),互联网软件(如QQ、IE),多媒体软件(如Photoshop、AutoCAD)等。
(2)企业级软件。企业级软件是指为商业组织、大型企业、行政事业部等特定领域创建并部署的软件。随着信息化时代的到来以及经济全球化的不断深入,企业级软件已经发生了从部门独立应用到企业集成、从少数人使用到面向广大客户、从企业内部使用到企业间协作的转变。
企业级软件具有资源庞杂、事务密集、数据量大、用户众多、并发操作等特点,构成了结构复杂、操作便捷、网际协调与分布、高安全需求的应用集群。例如,企业资源规划(Enterprise Resource Planning,ERP),客户关系管理(Customer Relationship Management,CRM),后台管理(Back Office),供应链管理(special Chemical Materials,SCM),产品生存周期管理(Product Life-Cycle Management,PLM)等软件都属于企业级软件,此外还有会计类、电子商务类等专业软件。
软件工程主要针对的就是企业级软件的开发。(https://www.daowen.com)
(3)嵌入式软件。嵌入式软件就是基于嵌入式系统设计的软件,它也是计算机软件的一种,同样由程序及其文档组成,也有自己的基础软件(嵌入式系统,如手机上的Android系统),支撑软件[开发工具包、应用程序编程接口(Application Programming Interface,API)]和应用软件。
嵌入式软件是嵌入式系统的重要组成部分,广泛应用于国防、工业控制、家用、商用、办公、医疗等领域。例如,我们常见的手机、平板电脑、数码相机、机顶盒、智能电视、车载系统等都是用嵌入式软件技术对传统产品进行智能化改造的结果。
嵌入式系统以应用为主,以微电子技术、控制技术、计算机技术和通信技术为基础,根据应用需求定向开发,面向产业和市场,强调硬件、软件的协同性和整合性,软件与硬件可剪裁,以满足系统对功能、成本、体积和功耗的要求。
每种嵌入式软件都有自己独特的应用环境和实用价值。Android(以Linux为基础的半开源操作系统,主要用于移动设备),iOS(iPhone Operating System,苹果公司为iPhone开发的操作系统)是最常见的嵌入式系统,在这些系统平台上运行的软件产品实质上都是嵌入式系统的应用软件。
(4)云计算软件。对于云计算(Cloud Computing),目前广为接受的是美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)给出的定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络、服务器、存储、应用软件和服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
云计算的基本原理是通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将与互联网更相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。
云计算的应用方式可分为基础设施即服务(Infrastructure as a Service,IaaS),平台即服务(Platform as a Service,PaaS),软件即服务(Software as a Service,SaaS),数据即服务(Data as a Service,DaaS)等。由于目前业界还没有统一的标准,不同厂商和云平台服务商都提供了不同的解决方案,导致用户在选择解决方案时产生困惑。
通过对云计算的主要特性进行归纳总结可以看出云计算的体系结构可分为四个层面:基础设施层,资源池,管理中间件,面向服务的体系结构(Service-Oriented Architecture,SOA)。
①基础设施层是云系统的硬件部分(如计算机、存储器、网络设备等)、数据库和软件等。
②资源池是通过虚拟化技术将大量相同类型的资源构成同构或接近同构的资源池,如计算资源池、存储资源池、数据资源池、软件资源池等。
③管理中间件负责资源管理、任务管理、用户管理和安全管理等各种工作,主要由中间件软件完成,目前比较流行的有WebLogic、WebSphere等。
④面向服务的体系结构(SOA)的主要功能是将云计算的各种应用封装成Web服务的形式,用户通过Web接口可以选择需要的服务,包括服务的接口、服务的注册、服务的查找、服务的访问及服务的流程等。
云计算可以彻底改变人们未来的生活,但同时也要重视环境问题,这样才能真正为人类进步做贡献,而不是简单的技术提升。