课 名,软件工程教学方式:授课+课程设计授课教师:王燕兴、计晓云联系方式:信南楼 412 Tel:67391745
信北楼 213 Tel:67392548
E_mail:wangyxw@public.bta.net.cn
第一章 软件工程概述
§ 1.1 软件工程的背景和历史
1968年由 NATO (北大西洋公约组织 )在德国 Garmish召开的学术会议上,Feitz Bauer首先提出了,软件工程,概念。
Evolution of software
早期 第二阶段 第三阶段 第四阶段
面向批处理?多用户?分布式系统?强大的桌面系统
有限的分布?实时?嵌入,智能,?面向对象技术
自定义软件?数据库?低成本硬件?专家系 统
软件产品?消费者的影响?人工神经网络
并行计算
网络计算机
1950 1960 1970 1980 1990 2000
软件技术面临的问题
复杂性
生产率
例,Windows95有 1000万行代码
Windows2000有 5000万行代码
Exchange2000和 Windows2000开发人员结构
Exchange2000 Windows2000
项目经理 25人 约 250人开发人员 140人 约 1700人测试人员 350人 约 3200人软件危机的主要特征
软件开发周期大大超过规定日期 ;
软件开发成本严重超标 ;
软件质量难于保证。
改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量
20
200
2000
1000
5.0
2.5
0.05
0.5
(美元 ) (人天 )
yet,Success Hasn?t Come Easily
31%
53% 16%
Successfully
Challenged
Canceled
成功的标准:
用户在 用
用户可很容易做完要做的事失败的根本原因:
开发人员写出的东西达不到用户要求 (人的问题,技术问题 )
处在十字路口的中国软件产业
主权大国必须建立基于自主技术的、
完整的软件产业体系。
软件本国提供率:中国 1/3左右,美国 97%
,印度模式,还是,中国模式,
软件人才结构不合理,缺乏中高级软件人才软件人员缺乏软件工程化的概念。
软件工程的定义
Fritz Bauer在 NATO会议上给出的定义:
,软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)。,
软件工程的定义
IEEE【 IEE83】 给出的软件工程定义:
,软件工程是开发、运行
、维护和修复软件的系统方法
。,
软件工程的定义
IEEE【 IEE93】 给出了一个更加综合的定义:
,将系统化的、规范的、可度量的方法应用于软件的开发、
运行和维护的过程,即将工程化应用于软件中。,
软件工程的定义软件工程是应用计算机科学、
数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的

软件工程是一门交叉学科软件工程的主要研究内容
软件开发技术,软件开发方法学软件开发过程软件工具和软件工程环境
软件工程管理,软件管理学软件经济学软件心理学软件工程所包含的内容不是一成不变的,
随着人们对软件系统的研制开发和生产的理解。
应用发展的眼光看待它。
软件工程 — 一种层次化技术工具方法过程质量焦点
Software engineering layers
软件工程三个要素,方法、工具、过程软件工程框架可用性 性 性确正 合算选取适宜的开发模型采用合适的设计方法提供高质量的工程支持重视软件工程的管理基本过程原则目标过 程支持过程组织过程软件工程与一般工程的差异
软件是逻辑产品而不是实物产品
软件的功能依赖于硬件和软件的运行环境以及人们对它的操作
软件设计的复杂性
软件特征,功能的多样性实现的多样性能见度低软件结构合理性差
智力密集及知识产权保护软件工程知识结构
2001年 5月 ISO/IEC JTC 1( ISO
和 IEC的第一联合技术委员会)发布了
,SWEBOK指南 V0.95(试用版 )》
( Guide to the Software Engineering
Body of Knowledge,简称 SWEBOK)
SWEBOK把软件工程学科的主体知识分为 10个知识领域。
软件工程知识结构
软件需求
软件设计
软件构造
软件测试
软件维护
软件配置管理
软件工程管理
软件工程过程
软件工程工具和方法
软件质量
,软件工程”课程与其它软件专业课的区别
(1) 立足于系统的整体。
(2) 讲授系统分析、系统设计、
测试及维护的理论和方法。
(3) 构筑一个软件系统,实践软件开发全过程。
,软件工程”课程教学与实践的目标
转变对软件的认识:
上升程序 系统
转变思维定式:
上升程序员 系统工程师
(系统分析员 )
工程化训练系统分析员的地位用户 分析员 程序员
,一个好的工业,应有一套良好的标准来配套”
软件的工业化生产过程应具备的特点:
明确的工作步骤
详细具体的规范化文档
明确的质量评价标准软件产品的标准化软件开发过程的标准化软件工程技术的两个明显特点:
强调规范化
强调文档化