? 2008 BUPT TSEG
软件工程模型与方法
Models & Methods of SE
第一章 软件工程概述肖丁 dxiao@bupt.edu.cn
2? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心本章内容
1.1 计算机软件
1.2 软件的发展和软件危机
1.3 软件工程
1.4 通信软件工程
1.5 软件工程知识体系
3? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.1 计算机软件
本节内容
1.1.1 软件的定义
1.1.2 软件的特点
1.1.3 软件的分类
4? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心引言
Hello World
纸牌、挖地雷
文本编辑器
Notepad/vi…
Winword/WPS…
图书馆信息管理系统 /办公自动化系统 …
财务软件
金蝶 /用友 …
电信运营支撑系统
计费系统、帐务系统 …
呼叫处理 /7号信令 /网络管理系统 …
操作系统
Dos/Windows/Unix/Linux…
数据库管理系统问题:你们能实现么?
在多长时间内能实现?
采用什么样的技术实现?
5? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.1.1 软件的定义
IEEE定义:软件是计算机程序、规程以及运行计算机系统所需要的文档和数据。
Wirth中指出:
在结构化程序设计:程序=算法+数据结构
在软件工程中:软件=程序+文档。
另一种对软件的公认解释是:软件是包括程序、
数据及其相关文档的完整集合。
程序 是按照事先设计的功能和性能要求执行的指令序列;
数据 是使程序能正常操纵信息的数据结构;
文档 是与程序开发、维护和使用有关的图文材料。
6? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.1.2 软件的特点
软件是一种逻辑实体,具有抽象性。
软件开发过程中没有明显的制造过程 。
不存在机械磨损和老化问题,但存在软件退化问题 。
软件的开发和运行受到计算机系统的约束和限制。
软件的开发至今未完全摆脱手工艺的开发方式。
软件是复杂的。
实际需求的复杂性
程序逻辑的复杂性
软件研制成本高,软件成本所占比例逐年增加。
软件投入运行时还涉及到许多社会因素。
7? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.1.3 软件的分类
根据软件服务对象的范围不同:
通用软件:操作系统、数据库等;
定制软件:企业 ERP、卫星控制系统等;
根据软件完成功能所处的层次不同:
系统软件
中间件软件
应用软件
8? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.1.3 软件的分类
系统软件:指能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。
操作系统
数据库管理系统
设备驱动程序
通信处理程序等。
9? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.1.3 软件的分类
中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,将注意力集中在自己的业务上,不必再为程序的移植而重复工作,从而大大减少了技术上的负担。
硬 件 平 台系 统 软 件硬 件 平 台系 统 软 件中 间 件分 布 式 系 统 服 务应 用 应 用
中间件软件:为了解决分布异构系统的集成问题而开发的软件,处于操作系统软件与用户的应用软件的中间,具有标准的接口和协议。
10? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.1.3 软件的分类
应用软件:在特定领域内开发,为特定目的服务的一类软件。
商业数据处理软件
工程与科学计算软件
计算机辅助设计/制造软件
系统仿真软件
智能产品嵌入软件
医疗、制药软件
事务管理、办公自动化软件
计算机辅助教学软件
计算机网络软件
11? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.1.3 软件的分类
按照软件的规模:
类别 参加人员数 开发周期 产品规模( LOC)
微型 1 1~ 4周 0.5k
小型 1 1~ 6月 1k~ 2k
中型 2~ 5 1~ 2年 5k~ 50k
大型 5~ 20 2~ 3年 50k~ 100k
甚大型 100~ 1000 4~ 5年 1M(=1000k)
极大型 2000~ 5000 5~ 10年 1M~ 10M
12? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.1.3 软件的分类
按软件工作方式不同:
实时处理软件,电话交换系统 /股票行情交易系统 /网络游戏
分时软件,操作系统
交互式软件,MIS系统 /网络聊天
按照支撑应用开发的工具类型可以将其划分为,
支持软件开发过程的工具,Visual Studio/Eclipse…
支持软件维护过程的工具,Clear quest/Clear Case
支持软件管理过程和支持过程的工具,Project/ROSE
13? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.2 软件的发展和软件危机
本节内容
1.2.1 软件发展阶段
1.2.2 软件危机
1.2.3 软件危机的解决途径
14? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.2.1 软件发展阶段
程序设计阶段,20世纪 50至 60年代
程序系统阶段,20世纪 60至 70年代
软件工程阶段,20世纪 70至 90年代
现代软件工程阶段,20世纪 90年代至今
15? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.2.1 软件发展阶段阶段程序设计 程序系统 (现代)软件工程特点软件所指 程序 程序及说明书 程序、文档和数据程序设计语言 汇编及机器语言 高级语言 软件语言软件工作范围 程序编写 包括设计和测试 软件生存期需求者 程序设计本人 少数用户 市场用户开发软件的组织 个人 开发小组 开发小组及大中型软件开发机构软件规模 小型 中小型 大中小型决定质量的因素 个人程序技术 小组技术水平 管理水平开发技术和手段 子程序 /程序库 结构化程序设计数据库、开发工具、开发环境、工程化开发方法、标准和规范、网络及分布式开发、面向对象技术、软件复用维护责任者 程序设计者 开发小组 专职维护人员硬件特征 价格高 /存储容量小工作可靠性差 降价、速度、容量及工作可靠性明显提高 向超高速、大容量、微型化及网络化发展软件特征 完全不受重视 软件技术的发展不能满足需求,出现软件危机 开发技术有进步,但未获突破性进展,价高,未摆脱软件危机
16? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.2.2 软件危机
20世纪 60年代后,随着计算机软件应用领域增多,软件规模不断扩大,软件系统功能多,逻辑复杂,不断扩充,从而导致许多系统开发出现了不良的后果:
系统存在大量错误,可用性和可靠性差;
系统无法增加新功能,难于维护;
系统无法按照计划时间完成;
最严重的彻底失败。
17? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.2.2 软件危机
所谓软件危机( Software Crisis)就是计算机软件在开发和维护过程中所遇到的一系列严重问题,
具体表现在:
软件开发成本难以估算,无法制定合理的开发计划;
用户的需求无法确切表达;
软件质量存在问题;
软件的可维护性差;
缺乏文档资料;
软件成本难以控制;
18? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.2.3 软件危机的解决途径
产生软件危机的原因:
软件系统本身的复杂性;
软件开发的方法和技术不合理;
程序设计方法学
讨论程序的性质、程序设计的理论和方法
软件工程方法
1968年提出运用工程化原则和方法组织软件开发工作,去解决软件危机
19? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.3 软件工程
本节内容
1.3.1 软件工程定义
1.3.2 软件工程要素
1.3.3 软件工程的目标和原则
1.3.4 软件工程基本原理
20? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.3.1 软件工程定义
1968年 10月,Fritz Bauer首次提出了“软件工程”的概念:软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则。
Boehm的软件工程定义:运用现代科学技术知识来设计并构造计算机程序及为开发、
运行和维护这些程序所必需的相关文件资料。
21? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.3.1 软件工程定义
Fairley认为:软件工程学是为在成本限额以内按时完成开发和修改软件产品所需的系统生产和维护的技术和管理的学科。
IEEE计算机学会将“软件工程”定义为:
⑴应用系统化的、规范化的、定量的方法来开发、运行和维护软件,即:将工程应用到软件;⑵对⑴中各种方法的研究。
22? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.3.2 软件工程要素
软件工程三要素:方法、工具和过程。
方法:提供了“如何做”的技术
工具:提供了自动或半自动的软件支撑环境
过程:将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的
23? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.3.3 软件工程的目标和原则
软件工程的目标可概括为:生产具有正确性、可用性以及开销适宜的软件产品。
软件工程的最终目的是摆脱手工生产软件的状况,逐步实现软件研制和维护的自动化。
24? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.3.3 软件工程的目标和原则
软件工程研究的内容:
软件开发技术
软件开发方法学
开发过程模型
开发工具
软件工程环境
软件工程管理
软件管理学
软件工程经济学
软件心理学等内容
25? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.3.3 软件工程的目标和原则
使用软件工程开发软件系统的过程中,要坚持四项基本原则:
选取适宜的开发模型;
采用合适的设计方法 ;
提供高质量的工程支持 ;
重视开发过程的管理 ;
26? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.3.4 软件工程管理的基本原理
用分阶段的生命周期计划严格管理
坚持进行阶段评审
实行严格的产品控制
采用现代程序设计技术
结果应能清楚地审查
开发小组的人员应少而精
承认不断改进软件工程实践的必要性
27? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.3.5 软件工程开发的一般原理
抽象:抽取事物最基本的特性和行为,忽略非本质细节。
信息隐藏:要求访问与实现分离,将实现细节隐藏,使模块访问接口 尽量简单。
模块化:有助于信息隐藏和抽象,有助于表示复杂的系统。
局部化:要求在一个模块内集中逻辑上相互关联的计算资源,保证模 块间具有松散的耦合关系,这有助于控制问题的复杂性。
确定性:软件开发过程中所有概念的表达应是确定的、无歧义性的,规范的。
一致性:整个软件系统(包括程序、文档和数据)的各个模块应使用 一致的概念、符号和术语 。
完备性:软件系统不丢失任何重要成分,可以完全实现系统所要求功 能的程度。
可验证性:系统分解应遵循系统易于检查、测试、评审的原则,以确 保系统的正确性。
28? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.4 通信软件工程
本节内容
1.4.1 通信系统
1.4.2 通信软件
1.4.3 通信软件工程
29? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.4.1 通信系统
通信系统的定义:是信息或其表示方式的时 /空转移。
通信系统基本组成:具有广泛的内涵,并有多个层次。
信 源发 端设 备信 道收 端设 备信 宿噪 声 源
30? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.4.2 通信网的组成
通信网硬件包括:
用户终端设备
传输设备
交换设备
通信网软件,是通信网为所必需的一整套协议、标准
,包括网路结构、信令方式、协议和接口、网络管理、技术体制标准等,是通信网实现通信服务和运行支撑的重要组成部分。
31? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.4.3 通信网的功能
通信网系统是一个大网络分布式控制系统,具有以下三个基本功能:
基本的传输和交换功能:要求高实时性和可靠性,信息交换主要进行通信链路汇聚、网路选择、物理编址
、路由分析等。
业务控制功能:在物理通信网上为用户提供电信业务的服务功能,如:语音服务、数据服务、增值业务服务、智能网业务服务等。
网路管理功能:网路管理是为保证在所有情况下,为使网路得到最大程度的利用,而对通信网路进行监视
、测量,必要时有效地控制业务量的工作。
32? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.4.4 通信软件和特点
凡是用来实现两个或多个实体(计算机、电信终端、交换设备等)之间相互通信的软件都可称为通信软件。
电信软件:电话交换软件、移动通信软件、智能网软件等 ;
计算机网络软件:网络协议软件、网络应用软件;
通信软件具有以下几个特点:
实时性强 生命周期长、维护升级频繁
并发性强 结果可预期
跨系统通信 离散性
33? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.4.5 通信软件类型
电信软件类型通 信 网 ( 大 网 络 分 布 式 控 制 系 统 )
基 本 呼 叫 处 理业 务 独 立 逻 辑处 理 模 块资 源 管 理 ( 包 括 网络 管 理 )
业 务 控 制 ( 业 务 生 成 和 管 理 )
客 户 服 务 ( 开 通,保 障 和 计 量 ) 产 品 开 发 与 管 理
34? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.4.6 通信软件工程
通信软件工程就是将软件工程知识应用于通信领域,结合通信软件的特点并遵循软件工程的三要素以实现:
通信软件工程过程;
通信软件的开发方法;
通信软件的开发工具:
分析阶段采用 UML来表达软件的功能需求和信息需求;
用 MSC图描述系统与外部环境的交互以及内部对象之间的信息交互;
在系统设计阶段采用 SDL来形式化描述系统设计;
实时软件开发工具,Telelogic Tau
35? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.5 软件工程知识体系
本节内容
1.5.1 软件工程知识体系指南简介
1.5.2 软件工程知识体系知识域
36? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.5.1 软件工程知识体系
SWEBOK是 IEEE计算机学会的职业实践委员会 (
Professional Practices Committee) 主持的一个项目,目的:
促进世界范围内对软件工程的一致观点 ;
阐明软件工程相对其它学科(如计算机科学、项目管理、计算机工程和数学等)的位置,并确立它们的分界;
刻画软件工程学科的内容;
提供使用知识体系的主题;
为开发课程表和个人认证与许可材料提供一个基础 ;
37? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.5.2 软件工程知识体系知识域
38? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.5.2 软件工程知识体系知识域
39? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心课后作业
什么是软件?软件具有哪些特点?
什么是软件危机?软件危机表现在哪些方面?软件危机产生的原因是什么?
什么是软件工程?软件工程包含哪几个要素?
试述软件工程的基本原理、目标和原则。
试述通信软件的类型及特点。