软件与软件工程第一讲
d e liv e ry o f 2 n d in cre m e n t
d e liv e ry o f 1 st in cre m e n t
project calendar t ime
2速应用开发
Te am # n
M o d e lin g
b u s in e s s m o d e lin g d a t a m o d e lin g p r o c e s s m o d e lin g
in crem ent # 2
Co m m u n i c a t i o n P l a n n i n g M o d e l i n g analy s is des ign
d e liv e ry o f n t h in cre m e n t
Co n s t ru c t i o n c ode t es t De p l o y m e n t d e l i v e ry fe e d b a c k
2007年9月7日
软件教研室
软件生命周期
三个阶段七个环节: 三个阶段七个环节:
软件定义阶段:可行性研究和需求分析 软件开发阶段:概要设计、详细设计、编码和测试 和综合测试 软件维护:
2007年9月7日
软件教研室
一个典型的一般性框架
1.通讯(问题定义、可行性研究、需求分析) 2.计划(总体设计) 3.建模(详细设计) 4.构造(编码和测试、综合测试) 5.部署(综合测试和软件维护) 注:这些过程在具体实施时可能会有些不同,但 过程的框架行为始终不变。
2007年9月7日
软件教研室
软件工程方法学
传统方法学 面向对象方法学 面向方面的软件工程方法 面向组件的软件工程方法 面向Agent的软件开发方法 面向 的软件开发方法 敏捷软件工程开发方法
• • • • • •
2007年9月7日
软件教研室
基于组件的开发模型
这种模型结合了一些螺旋模型的特性,应用 该模型的主要目的是对现有组件对象的复用 主要步骤: 研究可用的基于问题领域的组件产品; 怎样集成组件; 设计合适组件应用的软件体系结构; 将组件集成进软件架构; 对于组件功能的综合测试工作;
2007年9月7日
软件教研室
软件工程定义
软件工程是 1.把系统的、规范的、可度量的方法应用于软 件开发、运行和维护过程,也就是把工程应用 于软件; 2.将第一点提到的方法作为对象的研究活动;
2007年9月7日
软件教研室
PressMan的软件工程定义 的软件工程定义
Software Engineering
第一讲 软件与软件工程
本讲主要介绍软件和软件工程两个概 本讲主要介绍软件和软件工程两个概 软件 很好地理解这两个概念是非常重要。 念,很好地理解这两个概念是非常重要。 软件概念重点在于理解软件系统不同与 软件概念重点在于理解软件系统不同与 其他系统的特点, 其他系统的特点,软件工程概念重点在 于理解为什么会产生软件工程 为什么会产生软件工程, 于理解为什么会产生软件工程,软件工 程与一般工程有什么不同, 程与一般工程有什么不同,软件工程的 软件过程概念等 软件过程概念等
Planning
estimating scheduling tracking
Modeling
analysis design
Const ruct ion
code t est
Deployment
delivery support f eedback
2007年9月7日
软件教研室
增量模型
increm ent # n
2007年9月7日
软件教研室
第一节
软件
软件是多种术语和对象的集合, 软件是多种术语和对象的集合,并将 这些术语和对象有效地配置在一起。 这些术语和对象有效地配置在一起。 一般包括程序、文档和数据。 一般包括程序、文档和数据。
2007年9月7日
软件教研室
软件的两种角色
1.首先, 1.首先,软件作为一种服务社会的产品 首先
2007年9月7日
软件教研室
面向方面的软件开发方法
面向方面直观的理解就是对软件组件做一 次垂直的分解,提取其中的那些具有交叉 性的功能和一些非功能属性,建立方面; 一些公共的系统方面有:用户接口、协作 工作、分布、内存管理、安全管理等。
2007年9月7日
软件教研室
思考题
• 通过以上学习 说说你理解的软件工程概念 通过以上学习,说说你理解的软件工程概念 说说你理解的软件工程概念? • 说说软件工程三个要素之间的关系 说说软件工程三个要素之间的关系? • 例举出您所知道的一些软件工程方法? 例举出您所知道的一些软件工程方法
2007年9月7日
软件教研室
2007年9月7日
软件教研室
2007年9月7日
软件教研室
2007年9月7日
软件教研室
软件的分类 传统分类: 传统分类: 系统软件、应用软件、工程和科学软件 、嵌入式软件、专用产品软件、Web应 用软件、人工智能软件
2007年9月7日
软件教研室
现代分类: 现代分类: 随处计算软件(Ubiquitous computing); 网络源软件(Netsourcing); 开源软件; 数据挖掘(data mining); 网格计算(grid computing); 认知机器(cognitive machines); 软件新经济研究(电子商务技术); SOA(多种老应用的整合和新应用的灵活性);
2007年9月7日
软件教研室
第三节 软件过程
当建造一个产品或系统时,采用一系列可 推断的步骤是非常重要的,这样一个路径 表能够帮助你建立一个及时的、高品质的 结果。这个所谓的路径表就是我们所说的 软件过程。
2007年9月7日
软件教研室
软件过程框架
软件过程框架通过封装一些阶段性行为 ,并将这些行为普遍应用到各类软件项 目中,而不需要考虑该项目的大小和复 杂性等。
2007年9月7日
软件教研室
软件工程的基本原理
1.用分阶段的生命周期计划严格管理; 2.坚持进行阶段评审(早发现问题); 3.实行严格的产品控制(适应需求变化,并控 制变化) ; 4.采用现代程序设计技术; 5.结果应该能够清楚地审查; 6.开发小组的人员应该少而精; 7.承认不断改进软件工程实践的必要性;
2.其次,软件也可以作为其他产品的承载工具 2.其次, 其次
2007年9月7日
软件教研室
软件的特点
1.软件是被工程化的逻辑系统; 软件是被工程化的逻辑系统; 软件是被工程化的逻辑系统 2.软件一般没有磨损; 软件一般没有磨损; 软件一般没有磨损 3.软件具有不同于一般实物系统的复杂性 软件具有不同于一般实物系统的复杂性
2007年9月7日
软件教研室
思考题
1.什么是软件; 2.软件的特点及其问题; 3.今天软件危机是否已经解决了,你认为软件 危机是否可以最终解决; 4.例举一些在现实生活中的软件观点;
2007年9月7日
软件教研室
第二节 软件工程
任何学科从产生到成熟必须经历的四个层次: 1.解决哲学问题; 2.基础科学建立; 3.技术科学建立; 4.系统的管理工程方法(学科成熟的标志);
2007年9月7日
软件教研室
软件过程中的雨伞行为
软件工程中存在一些始终贯穿整个软件过程的 雨伞行为,主要表现有: 1.软件项目的跟踪和控制; 2.风险管理; 3.软件品质保障; 4.形式化技术分析; 5.软件度量; 6.软件配置管理; 7.重用管理;
2007年9月7日
软件教研室
典型的软件过程模型
2007年9月7日
软件教研室
软件危机
软件危机是指在软件发展过程中遇 到的一系列严重问题。这些问题不 是在解决具体问题时遇到的,而是 软件开发过程所面临的具有普适性 的问题。
2007年9月7日
软件教研室
软件危机的表现
1.对软件开发成本和进度的评估常常很不 准确; 2.用户对“已完成的”软件系统不满意; 3.软件产品的质量无法保证; 4.软件难以维护; 5.相关的开发文档不健全; 6.软件的重要性在不断提高; 7.软件开发工作量的提高; 8.软件需求越来越复杂;
2007年9月7日
软件教研室
软件管理者
1.对于软件开发有一些通用的能够适应所有需求的 准则或程序,可满足所有的开发需求; 2. 2.如果软件产品的开发周期拖后了,可以通过增加 人手来加快软件的开发速度; 3.通过从第三方采购软件项目,就可以轻松地什么 都不用做地完成项目;
2007年9月7日
软件教研室
2007年9月7日
软件教研室
遗留软件与软件进化
所谓遗留软件是指多年之前开发的, 所谓遗留软件是指多年之前开发的,能够继 续被修改以满足商业需要和计算平台的系统, 续被修改以满足商业需要和计算平台的系统, 对于这些系统的增殖处理常常是让一些大的组 织头痛的事情, 织头痛的事情,系统的维护费用和风险都将增 大。
通过使用模型简洁地描述软件过程中的各项 活动、任务、中间产品和里程碑的完成过程 ,如软件生命周期。 包括两类软件过程模型,说明性过程模型和 敏捷过程模型
2007年9月7日
软件教研室
说明性过程模型 瀑布模型
Communicat ion
project init iat ion requirement gat hering
软件用户
1.一般对于需求的描述就足够开始编写程序了,详 细的细节将由开发人员在开发过程中补充完善; 2.项目需求在不断改变,但由于软件是灵活的因此 这种变化可以轻易地被在软件中进行调整;
2007年9月7日
软件教研室
开发者角度
1.一旦完成软件的编写,并成功上线运行,那 么软件开发的工作就完成了; 2.对于软件的好坏,只有到软件编写完成后才 可以看到。 3.仅仅可运行的软件产品才是用户需要的东西 4.在编写软件过程中编写文档和其他一些工作 都是在浪费时间