第一章 软件工程概述
目录
1.1 软件的概念与特点
一、软件的定义
软件 = 程序 + 数据 + 文档
1、程序:按事先设计的功能、性能需求执行的指令序列 -> 可执行部分
2、数据:是程序能正常操纵信息的数据结构
3、文档:与程序开发、维护、使用有关的图文材料 不可执行部分
(文档并不一定都是给用户看的,它与程序开发的工程化有很大的关系)
(1)分类:开发文档,用户文档,管理文档
(2)作用:记录,通信和交流,向用户展示,管理和维护
二、软件的特征
1、复杂性
2、不可见性
3、易变性
4、服从性(一致性):服从硬件、用户等 的要求
5、非连续性:输入上很小的变化,会引起输出上极大的变化
(1)软件是一种逻辑实体,而不是具体的物理实体;因而它具有抽象性
(2)软件的生产与硬件不同,在它的开发过程中没有明显的制造过程;软件成本集中于开发上,但后面复制过程却极为容易
(3)相对于硬件,软件产品更易于被多次修改;但改动困难,想满足客户新的需求并保证原来的质量不容易
(4)软件的开发至今尚未完全摆脱手工艺的开发方式,只能由受过训练的人来开发,不能用机器自动制造出来
(至少不能全部用机器代替,参考这个问题)
(5)软件开发的环境对产品影响较大,开发者在开发过程中易受到各种环境因素干扰
软件开发的时间和工作量难以估计,而不像机器生产速率那样容易度量
(6)与工业产品不同,软件的开发进度几乎没有客观衡量标准(有一些经验标准,但都不太准)
(7)软件的测试非常困难,有些错误隐藏极深
(8)软件不存在硬件那样的磨损和老化,但它存在退化问题,即在功能上或性能上不再满足需求;开发人员必须维护软件
(9)软件维护不是简单的更换元器件,由于代码之间更为复杂的逻辑结构,变更容易产生新的问题
三、软件的双重作用
1、一方面是一种产品
(1)提供计算能力
(2)产生、管理、获取、 修改、显示、或传输信息
2、另一方面是开发其他软件产品的工具
(1)帮助开发其它软件(如集成开发环境IDE)
(2)支持或直接提供系统所需 的功能,控制其他程序 (如操作系统)
(3)改善通信(如网络软件)
(4)其它功能……
四、软件的分类
1、按软件功能
(1)系统软件
(2)支撑软件
(3)应用软件
2、按服务对象
(1)项目软件
项目软件服务于一个具体项目范围内的客户集合,
比如 某高校的教务管理系统;或者用于实验研究的项目;
这类项目的生命周期受合同约束较大, 往往较短
(2)产品软件
产品软件服务对象更为庞大,如各类互联网软件,它们的目标服务对象都是全国乃至全世界的网民;
一般会提供培训及服务;
生命周期较长
五、软件的发展
1、个体化
(1)规模小、无规范与标准;
(2)编程作为一门技艺,完全由程序员的个人素质决定软件质量;
(3)缺少有效方法与软件工具的支持;
(4)不重视软件开发的管理;
(5)软件的维护工作很难进行
2、作坊式
(1)出现软件产品,软件作坊的概念
(2)出现软件危机
3、工程化
软件从个性化的程序变为工程化的产品
4、产业化
(1)面向对象的方法在许多领域迅速取代了