软件工程—理论与实践
软件工程概述
1.1软件是什么
软件不等于程序
以前人们把各种不同功能的程序,包括应用程序和用户自己编写的程序等称之为软件。然而,随着计算机的应用日益普及,软件日益复杂,规模日益增大,人们意识到程序是程序员为了完成特定的功能而编制的一组指令集,它由计算机的语言描述,并在计算机系统上执行。
而软件并不仅仅等于程序。
软件包括程序,程序的处理对象-数据,以及与程序开发,维护和使用有关的图文资料(文档)
在此举一个例子,将软件的运行看成做一件事情,比如修炼武功,修炼武功就要有武功秘籍,秘籍中所列举了一些招式,学这些招式的先后顺序,也就是操作步骤,人按照操作步骤,练习招式。这本武功秘籍就是程序,招式就是数据,操作步骤就是控制流程,而我们人,就是CPU,人练功就是CPU的执行程序,就是进程。
软件的特点:
软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。软件的生产于硬件不同,他没有明显的制造过程。要提高软件的质量,必须在软件的开发方面下功夫。在软件的运行和使用期间,不会出现硬件中所出现的机械磨损和老化问题。然而它存在退化问题。必须对其进行多次修护与维护,直至其退役。计算机的开发与运行常常受到计算机系统的制约,它对计算机系统有着不同程度的依赖性。软件的开发至今尚未完全摆脱人工的开发方式。软件本身就是复杂的软件本身相当昂贵相当多的软件工作涉及社会因素
1.2软件的分类
人们可以按照不同角度对软件进行分类:
1.按照功能不同:可分为系统软件,支撑软件,应用软件
系统软件是居于计算机系统中最靠近硬件的一层,为其他程序提供最底层的系统服务,他和具体的应用领域无关。如编译程序和操作系统等。
支撑软件以系统软件为基础,以提高系统性能为主要目标,支撑应用软件的开发与运行,包括环境数据库,各种接口软件和工具组。
应用软件是提供特定应用服务的软件,如字处理程序等。
这三个软件互相分工合作,不能截然分开。
基于规模不同:可分为微型,小型,中型,大型,超大型软件
根据软件服务对象的不同:可分为通用软件,定制软件
通用软件由特定的软件开发机构开发,面向市场公开独立销售的独立运行的软件系统和定制软件,如操作系统,文档处理系统等
定制软件通常是面向特定的用户需求由软件开发机构在合同的约束下开发的软件,如为企业定制的办公系统等。
按照工作方式的不同:可分为实时软件,分时软件,交互式软件,批处理软件