软件与软件工程第一讲

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2007年9月7日
软件教研室
软件工程定义
软件工程是 1.把系统的、规范的、可度量的方法应用于软 件开发、运行和维护过程,也就是把工程应用 于软件; 2.将第一点提到的方法作为对象的研究活动;
2007年9月7日
软件教研室
PressMan的软件工程定义 的软件工程定义
Software Engineering
软件用户
1.一般对于需求的描述就足够开始编写程序了,详 细的细节将由开发人员在开发过程中补充完善; 2.项目需求在不断改变,但由于软件是灵活的因此 这种变化可以轻易地被在软件中进行调整;
2007年9月7日
软件教研室
开发者角度
1.一旦完成软件的编写,并成功上线运行,那 么软件开发的工作就完成了; 2.对于软件的好坏,只有到软件编写完成后才 可以看到。 3.仅仅可运行的软件产品才是用户需要的东西 4.在编写软件过程中编写文档和其他一些工作 都是在浪费时间
C o n s t r u c t io n
Co m m u n ic a t io n
注:概括说,开发周期长、成本高、质量差、适应性差和难维护等 四大难题;
2007年9月7日
软件教研室
软件问题
• 为什么需要这么长的时间去获取一个可用的软件; 为什么需要这么长的时间去获取一个可用的软件; • 为什么软件开发的费用这么高; 为什么软件开发的费用这么高; • 为什么不能在将软件提交给我们的用户之前,发 为什么不能在将软件提交给我们的用户之前, 现所有的软件错误并解决它们; 现所有的软件错误并解决它们; • 为什么需要花费那么多的时间和努力来维护已经 在运行的系统; 在运行的系统; • 为什么无论在软件被开发还是在维护阶段我们都 那么困难来度量它; 那么困难来度量它;
2007年9月7日
软件教研室
2007年9月7日
软件教研室
2007年9月7日
软件教研室
2007年9月7日
软件教研室
2007年9月7日
软件教研室
软件与软件系统 • 为实现要求的功能和性能,必须制 作或获取一系列软件部件 • 软件元素分为两类 • 应用软件用来实现信息处理的 功能 • 系统软件完成使应用软件能与 其它系统元素交互的控制功能
2007年9月7日
软件教研室
软件工程方法学
传统方法学 面向对象方法学 面向方面的软件工程方法 面向组件的软件工程方法 面向Agent的软件开发方法 面向 的软件开发方法 敏捷软件工程开发方法
• • • • • •
2007年9月7日
软件教研室
基于组件的开发模型
这种模型结合了一些螺旋模型的特性,应用 该模型的主要目的是对现有组件对象的复用 主要步骤: 研究可用的基于问题领域的组件产品; 怎样集成组件; 设计合适组件应用的软件体系结构; 将组件集成进软件架构; 对于组件功能的综合测试工作;
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
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
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日
软件教研室
第一节
Fra Baidu bibliotek
软件
软件是多种术语和对象的集合, 软件是多种术语和对象的集合,并将 这些术语和对象有效地配置在一起。 这些术语和对象有效地配置在一起。 一般包括程序、文档和数据。 一般包括程序、文档和数据。
2007年9月7日
软件教研室
软件的两种角色
1.首先, 1.首先,软件作为一种服务社会的产品 首先
通过使用模型简洁地描述软件过程中的各项 活动、任务、中间产品和里程碑的完成过程 ,如软件生命周期。 包括两类软件过程模型,说明性过程模型和 敏捷过程模型
2007年9月7日
软件教研室
说明性过程模型 瀑布模型
Communicat ion
project init iat ion requirement gat hering
2007年9月7日
软件教研室
面向方面的软件开发方法
面向方面直观的理解就是对软件组件做一 次垂直的分解,提取其中的那些具有交叉 性的功能和一些非功能属性,建立方面; 一些公共的系统方面有:用户接口、协作 工作、分布、内存管理、安全管理等。
2007年9月7日
软件教研室
思考题
• 通过以上学习 说说你理解的软件工程概念 通过以上学习,说说你理解的软件工程概念 说说你理解的软件工程概念? • 说说软件工程三个要素之间的关系 说说软件工程三个要素之间的关系? • 例举出您所知道的一些软件工程方法? 例举出您所知道的一些软件工程方法
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.软件开发工作量的提高; 8.软件需求越来越复杂;
2007年9月7日
软件教研室
软件生命周期
三个阶段七个环节: 三个阶段七个环节:
软件定义阶段:可行性研究和需求分析 软件开发阶段:概要设计、详细设计、编码和测试 和综合测试 软件维护:
2007年9月7日
软件教研室
一个典型的一般性框架
1.通讯(问题定义、可行性研究、需求分析) 2.计划(总体设计) 3.建模(详细设计) 4.构造(编码和测试、综合测试) 5.部署(综合测试和软件维护) 注:这些过程在具体实施时可能会有些不同,但 过程的框架行为始终不变。
tools methods process model a “quality” focus 注:软件工程的三个基本要素:方法、工具和过程 过程:规定了完成各项任务的过程; 方法:完成软件开发的各项任务的技术方法; 工具:软件工程的支撑环境;
2007年9月7日
软件教研室
软件工程的本质
1.关注于大型程序的构造; 2.可控制的复杂性; 3.软件经常变化; 4.提高软件的开发效率; 5.协作开发产品; 6.有效支持用户; 7.服务特色领域;
2007年9月7日
软件教研室
软件工程的基本原理
1.用分阶段的生命周期计划严格管理; 2.坚持进行阶段评审(早发现问题); 3.实行严格的产品控制(适应需求变化,并控 制变化) ; 4.采用现代程序设计技术; 5.结果应该能够清楚地审查; 6.开发小组的人员应该少而精; 7.承认不断改进软件工程实践的必要性;
increm ent # 1
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 ig n Co n s t ru c t i o n c ode t est De p l o y m e n t d e l i v e ry f e e d b a c k
2007年9月7日
软件教研室
思考题
1.什么是软件; 2.软件的特点及其问题; 3.今天软件危机是否已经解决了,你认为软件 危机是否可以最终解决; 4.例举一些在现实生活中的软件观点;
2007年9月7日
软件教研室
第二节 软件工程
任何学科从产生到成熟必须经历的四个层次: 1.解决哲学问题; 2.基础科学建立; 3.技术科学建立; 4.系统的管理工程方法(学科成熟的标志);
2007年9月7日
软件教研室
软件管理者
1.对于软件开发有一些通用的能够适应所有需求的 准则或程序,可满足所有的开发需求; 2. 2.如果软件产品的开发周期拖后了,可以通过增加 人手来加快软件的开发速度; 3.通过从第三方采购软件项目,就可以轻松地什么 都不用做地完成项目;
2007年9月7日
软件教研室
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
2007年9月7日
软件教研室
增量模型中的快速应用开发
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
2.其次,软件也可以作为其他产品的承载工具 2.其次, 其次
2007年9月7日
软件教研室
软件的特点
1.软件是被工程化的逻辑系统; 软件是被工程化的逻辑系统; 软件是被工程化的逻辑系统 2.软件一般没有磨损; 软件一般没有磨损; 软件一般没有磨损 3.软件具有不同于一般实物系统的复杂性 软件具有不同于一般实物系统的复杂性
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日
软件教研室
软件过程中的雨伞行为
软件工程中存在一些始终贯穿整个软件过程的 雨伞行为,主要表现有: 1.软件项目的跟踪和控制; 2.风险管理; 3.软件品质保障; 4.形式化技术分析; 5.软件度量; 6.软件配置管理; 7.重用管理;
2007年9月7日
软件教研室
典型的软件过程模型
相关文档
最新文档