
1.2.4 软件的类型
要给计算机软件做出科学的分类是很难的事情。对于不同类型的工程对象,对其进行开发和维护有着不同的要求和处理方法,需对软件类型进行必要的划分。
1.按功能划分
按功能划分,软件可分为系统软件、应用软件和支撑软件三大类。
系统软件能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作,比如操作系统、数据库管理系统、设备驱动程序以及通信处理程序等。系统软件是计算机系统中必不可少的组成部分。
应用软件是在特定的领域内开发、为特定目的服务的一类软件,如CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAI(计算机辅助教学)等软件以及专家系统、模式识别系统、刹车系统等。
支撑软件是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具(如集成开发环境IDE),也包括帮助管理人员控制开发进程的工具(如版本控制软件SVN或Git等)。
2.按规模划分
按规模划分,软件可分为微型软件、小型软件、中型软件、大型软件、甚大型软件、极大型软件等。
微型软件通常是只有一个人在几天之内完成的软件,通常不到500行代码。
小型软件通常是一个人半年之内完成的、2000行语句以内的软件。例如,数值计算问题或数据处理问题就是这种规模的软件。这种程序通常没有与其他程序的接口。
中型软件通常是5人以内在一年多时间里完成的5000到50000行语句的软件。这种软件需要关注软件人员之间以及软件人员与用户之间的联系、协调和配合关系等问题。
大型软件通常是5~10人在两年多的时间里完成的5万行到10万行语句的软件。如编译程序、小型分时系统、应用软件包、实时控制系统等。
甚大型软件通常是100~1000人参与完成的软件。
极大型软件通常是2000~5000人参与完成的软件,如微软的Windows 2000项目包含近3000名工程师,被分成几百个小的团队。
3.按软件开发划分
按软件开发划分,软件可分为软件产品和软件项目两类。
软件产品指不局限于特定领域的可以被广大用户直接使用的软件系统,如微软的Windows、Office等。这类系统的特点是技术含量高,开发时要考虑各种不同的用户需求。
软件项目也称定制软件,是受某个特定客户或少数客户的委托,由一个或多个软件开发机构完成,有具体合同的约定,如我们常说的管理信息系统(MIS)和电子商务系统。这类软件的特点是领域知识所占的比重较大,相对技术而言,工程性更强。例如,军用防空指挥系统、卫星控制系统等均为这类软件。
针对上述两种不同类型的软件,有不同的软件开发方法去指导项目开发过程。例如,针对软件产品的开发,微软公司积累了许多成功的经验;针对软件项目的开发,目前比较成熟的软件开发方法有软件成熟度模型(CMM)。这种软件开发模型试图将整个软件开发过程规范化和量化,直到可以对软件开发过程进行定量的控制和优化。