Presentation is loading. Please wait.

Presentation is loading. Please wait.

软件工程 咸阳师范学院 信息工程学院.

Similar presentations


Presentation on theme: "软件工程 咸阳师范学院 信息工程学院."— Presentation transcript:

1 软件工程 咸阳师范学院 信息工程学院

2 课程地位 《软件工程》是计算机专业高年级学生的一门专业必修课,本课程着重从实用的角度讲述软件工程的基本原理、概念和技术方法,对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义。 目前,在很多院校《软件工程》已成为计算机及信息学科相关专业最重要的专业基础课之一,是计算机应用、计算机软件与理论、信息安全、信息与计算科学、软件工程等专业作为必修课程。

3 课程的培养目标 介绍软件的基本概念和软件工程的目标,通过对传统的面向过程的软件开发方法和面向对象的软件开发方法的介绍,使学生掌握开发高质量软件的方法;通过对软件开发过程和管理技术的学习,使学生了解如何进行软件度量和管理,项目的组织和进度安排,怎样进行质量保证活动,从而能够有效地策划和管理软件开发活动。 以现代教学理念为指导,精心进行教学设计,激发学生的兴趣和潜能,使学生掌握软件开发和维护的方法学,了解软件进化过程和先进的软件项目管理方法。通过实践性教学环节,提高学生实际的软件开发能力和工程素养,培养学生的团队协作意识和创新精神。

4 考核方式 《软件工程》课程考核的重点是:学生掌握软件工程的理论进行软件开发的实际能力。因此,课程考核分为二部分: 平时成绩20%
笔试成绩80%

5 参考书目 《实用软件工程》(第二版) 郑人杰 等编著 清华大学出版社 1997.4
《实用软件工程》(第二版) 郑人杰 等编著 清华大学出版社 《软件工程》(第六版)英 Ian Sommerville 陈霞等译 机械工业出版社 《现代软件工程》(上、中、下) 周之英 等编著 清华大学出版社 2000 《软件工程导论》 张海藩 ,邮电出版社,2003

6 第一章 软件工程概述

7 主要内容 1 软件工程的基本概念 2 软件工程过程与软件生存期 3 软件生存期模型 4 软件开发方法

8 1.1 软件工程的基本概念 软件是信息化的核心,国民经济、国防建设、社会发展 及人民生活都离不开软件。软件产业是增长最快的朝阳产业,
1.1 软件工程的基本概念 软件是信息化的核心,国民经济、国防建设、社会发展 及人民生活都离不开软件。软件产业是增长最快的朝阳产业, 是高投入/高产出、无污染、低能耗的绿色产业。软件产业关 系到国家经济和文化安全,体现了国家综合实力,是决定21世 纪国际竞争地位的战略性产业。 软件工程(Software Engineering)是在克服60年代末所 出现的“软件危机”的过程中逐渐形成与发展的。软件工程是一 门指导计算机软件系统开发和维护的工程学科,是一门新兴的 边缘学科,主要研究如何应用软件开发的科学理论和工程技术 来指导大型软件系统的开发。  

9 软件工程的定义 概括的说,软件工程指导软件开发和维护的一门工程学科。 IEEE的定义:
①是把系统的、规范的、可度量的途径应用于软件开发、运行和维护也就是把工程应用于软件;②研究中提到的途径。

10 1.1.1 软件工程的产生和发展 软件工程的发展已经历了四个重要阶段: 1、第一代软件工程 — 传统的软件工程
2、第二代软件工程 — 对象工程 3、第三代软件工程 — 过程工程 4、第四代软件工程 — 构件工程

11 1.1.1 软件工程的产生和发展 软件工程的发展已经历了四个重要阶段: 1、第一代软件工程 — 传统的软件工程
2、第二代软件工程 — 对象工程 3、第三代软件工程 — 过程工程 4、第四代软件工程 — 构件工程 60年代末到70年代为了克服“软件危机” (Software crisis)提出“软件工程”的名词, 将软件开发纳入工程化的轨道,基本形成软件工程的概念、框架、技术和方法。称为传统的软件工程。

12 1.1.1 软件工程的产生和发展 软件工程的发展已经历了四个重要阶段: 1、第一代软件工程 — 传统的软件工程
2、第二代软件工程 — 对象工程 3、第三代软件工程 — 过程工程 4、第四代软件工程 — 构件工程 80年代中到90年代,面向对象的方法与技术得到发展,研究的重点转移到面向对象的分析与设计,演化为一种完整的软件开发方法和系统的技术体系,称为对象工程。

13 80年代中开始,人们在软件开发的实践过程中认识到:提高软件生产率,保证软件质量的关键是“软件过程”,是软件开发和维护中的管理和支持能力,逐步形成软件过程工程。
1.1.1 软件工程的产生和发展 软件工程的发展已经历了四个重要阶段: 1、第一代软件工程 — 传统的软件工程 2、第二代软件工程 — 对象工程 3、第三代软件工程 — 过程工程 4、第四代软件工程 — 构件工程

14 90起年代,基于构件(Component)的开发方法取得重要进展,软件系统的开发可通过使用现成的可复用构件组装完成,而无需从头开始构造,以此达到提高效率和质量,降低成本的目的。称为构件工程。
1.1.1 软件工程的产生和发展 软件工程的发展已经历了四个重要阶段: 1、第一代软件工程 — 传统的软件工程 2、第二代软件工程 — 对象工程 3、第三代软件工程 — 过程工程 4、第四代软件工程 — 构件工程

15 1.1.2 软件工程研究的内容 软件工程是一门新兴的边缘学科,涉及的学科多,研究的范围广。归结起来软件工程研究的主要内容有以下几方面:
  软件工程是一门新兴的边缘学科,涉及的学科多,研究的范围广。归结起来软件工程研究的主要内容有以下几方面: 软件开发方法、技术 软件开发工具及环境 软件管理技术 软件规范(国际规范) }软件开发技术 }软件管理技术 (1)软件开发技术(软件结构、开发方法、工具与软件工程环境、软件工程标准化) (2)软件工程管理(质量管理,软件工程经济学:成本估算,计划安排)

16 1.2 软件工程过程与软件生存期   从68年北大西洋公约的软件可靠性会议(NATO)上,首次提出 “软件工程”的概念,提出了在软件生产中采用工程化的方法,采用一系列科学的、现代化的方法技术来开发软件。这种工程化的思想贯穿到软件开发和维护的全过程。   了解有关软件、软件生存期及软件工程过程等重要的概念,对掌握、学习和应用软件工程的方法、技术是极有益的。

17 三、软件的分类 1、按照软件功能划分 系统软件 — 如操作系统、设备驱动程序等。 支撑软件(实用软件) — 协助用户开发的工具软件, 如编辑程序、程序库、图形软件包等。 应用软件 — 如工程与科学计算软件、CAD/CAM软件、 CAI软件、信息管理系统等。

18 产品软件 — 由软件开发机构开发,提供给市场的。
分类续 2、按照软件规模划分 类 别 参加人数 研制期限 产品规模(源代码行) 微 型 1 1 –4 周 0.5K 小 型 1 – 6 月 1K – 2K 中 型 2 - 5 1 – 2 年 5 – 50 K 大 型 5 - 20 2 – 3 年 50 – 500 K 甚大型 4 – 5 年 1M 极大型 5 – 10 年 1M – 10 M 3、按照软件工作方式划分 实时处理软件 交互式软件 批处理软件 4、按照软件服务对象的范围划分 项目软件 — 由客户委托开发的软件。 产品软件 — 由软件开发机构开发,提供给市场的。 此外,还可以按照软件使用的频度及按照软件失效的影响进行划分。

19 软件的概念和特点 一、软件(Software)要纠正软件就是程序,开发软件就是编写程序的错误观念。软件是“程序以及开发使用维护程序所需的所有文档”,由应用程序,系统程序,面向用户的文档,及面向开发者的文档四部分构成。 二、软件的特点 1、软件是一种逻辑实体,不是具体的物理实体。 2、软件产品的生产主要是研制。 3、软件具有“复杂性”,其开发和运行常受到计算机系统的限制。 4、软件成本昂贵,其开发方式目前尚未完全摆脱手工生产方式。 5、软件不存在磨损和老化问题,但存在退化问题。

20 软、硬件失效情况的对比 失效率 时间 硬件失效率曲线 失效率 时间 实际曲线 理想曲线 软件失效率曲线    硬件失效率曲线,是一U型曲线(即浴盆曲线)。软件失效率曲线,它没有U型曲线的右半翼。因为软件不存在磨损和老化问题,然而存在退化问题。

21 1.2.2 软件工程过程 软件工程过程(Software engineering process):
是指在软件工具的支持下,所进行的一系列软件工程活动。 通常包括以下四类基本过程: 1、软件规格说明:规定软件的功能及其运行环境 2、软件开发:产生满足规格说明的软件 3、软件确认:确认软件能够完成客户提出的要求 4、软件演进:为满足客户的变更要求,软件必须在使用的过程中演进。

22 软件生存周期 各阶段的任务: 软件定义(总目标、可行性、功能、估算资源成本、制定进度表) 软件开发(设计、实现软件)
运行维护(使软件持久地满足在用户的需要) 软件生存周期 软件定义:问题定义、可行性研究、需求分析 软件开发:总体设计、详细设计、编码、测试 运行维护:软件维护

23 软件工程的本质特征 软件工程关注与大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常重要 和谐的合作是关键
软件必须有效的支持其用户 还发着和使用者文化背景不同

24 软件工程的基本原理 用划分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代化的程序设计技术 结果应能清楚的审查
开发小组的人员应该少而精 承认不断改进软件工程时间的必要性

25 1.3 软件生存期模型 目前有若干软件生存期模型,各种模型有其不同的特点,并适用于不同的开发方法。
1.3 软件生存期模型 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。 目前有若干软件生存期模型,各种模型有其不同的特点,并适用于不同的开发方法。 瀑布模型 (Waterfall model) V模型 原型模型 (Prototype model) 增量模型 (Incremental model) 螺旋模型 (Spiral model) 喷泉模型 (Fountain model)

26 1、瀑布模型 问题定义 可行性研究 需求分析 设 计 编 码 测 试 运行与维护 (目标与范围说明书) 计划时期 (可行性论证论告)
(需求说明书) 设 计 (设计文档) 开发时期 编 码 (程序) 测 试 (测试报告) 运行时期 运行与维护 (维护报告) 瀑布模型

27 瀑布模型的特点 阶段间具有顺序性和依赖性 推迟实现的观点 质量保证的观点(文档、评审)

28 瀑布模型适合的项目 在项目开始前,项目的需求很明确 在项目开始前,解决方案也很明确 类似的项目如: 公司的财务系统 库存管理系统 短期项目

29 阶段 需求分析 软件设计 程序编码 单元测试 验收测试 维护 相对修复代价 0.1--0.2 0.5 1 2 5 20
错误发现阶段与修复代价间的关系 在20世纪70年代,GTE(通用电器公司),IBM(国际商用机器公司)等公司对此问题作了独立研究,坐后得到相似的结论。 阶段 需求分析 软件设计 程序编码 单元测试 验收测试 维护 相对修复代价 0.5 1 2 5 20

30 2、V模型

31 V模型适合的项目 在项目开始前,项目的需求很明确 在项目开始前,解决方案也很明确 对系统的性能安全很严格的项目 类似的项目如: 航天飞机等
公司的财务系统

32 3、快速原型模型 原型:是软件的一个早期的、可运行的版本。

33 原型模型适合的项目 在项目开始前,项目的需求不明确 需要减少项目需求的不确定性 类似的项目如: 确定显示界面 第一次开发的产品,验证可行性

34 4、增量模型(Incremental model)
增量模型是一种非整体开发的模型。根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。 该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。 增量模型和瀑布模型之间的本质区别是:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件。

35 增量模型(续) 定义概要 需求 把需求分配 给增量 设计系统 结构 开发系统 增量 验证 组装 系统 系统不完全 最终 增量模型

36 核心功能 1 2 3 第一增量 第二增量 第三增量 ……

37 增量模型适合的项目 项目开始,明确了需求的大部分,但是需求可能会发生变化 对于市场和用户把握不是很准,需要逐步了解
对于有庞大和复杂功能的系统进行功能改进,就需要一步一步实施的。

38 5、螺旋模型 对于大型软件,只开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。
5、螺旋模型 对于大型软件,只开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。 螺旋模型

39 螺旋模型 螺旋模型沿着螺线旋转,在四个象限上分别表达了四个方面的活动,即:
制定计划──确定软件目标,需求和选定实施方案,弄清项目开发的限制条件 风险分析──评估所选方案,考虑如何识别和消除风险 实施工程──实施软件开发,编码,测试等 客户评估──评价开发工作,提出修正建议,规划下期任务

40 螺旋模型适合的项目 风险是主要的制约因素 不确定因素和风险限制了项目进度 用户对自己的需求也不是很明确 需要对一些基本的概念进行验证
可能发生一些重大的变更 项目规模很大 项目中采用了新技术

41 6、喷泉模型   该模型是由B.H.Sollers和J.M.Edwards于1990年提出的一种新的开发模型。主要用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,喷泉模型使开发过程具有迭代性和无间隙性。 其特点如下: 1、开发过程有分析、系统设计、软件设计和实现4个阶段。 2、各阶段相互重叠,它反映了软件过程并行性的特点。 3、以分析为基础,资源消耗成塔型。 4、反映了软件过程迭代性的自然特性,从高层返回低层无资源消耗。 5、强调增量开发,整个过程是一个迭代的逐步提炼的过程。 分 析 系统 设计 软件 设计 实 现 图1.5 喷泉模型

42 7、Rational统一开发过程

43 8、敏捷过程与极限编程 敏捷过程 极限编程 个体交互胜过过程和工具 可以工作的软件胜过面面俱到的文档 客户合作胜过合同谈判
响应变化胜过遵循计划 极限编程 结对编程

44 9、微软过程 规划阶段 设计阶段 开发阶段 稳定阶段 发布阶段

45 选择生存期的步骤 熟悉各种生存期模型 评审、分析项目的特性 选择适合项目的生存期模型 标识生存期模型与项目不一致地方,并进行裁减

46 1.4 软件开发方法 软件开发的目标是要在规定的投资和时间内,开发出符合用户的需求,高质量的软件,为此需要有成功的开发方法。
1.4 软件开发方法   软件开发的目标是要在规定的投资和时间内,开发出符合用户的需求,高质量的软件,为此需要有成功的开发方法。 为了克服软件危机,从60年代末开始,一直在进行软件方法的研究与实践,提出了多种软件开发方法和技术,对软件产业的发展起着不可估量的作用。

47 1.4.1 软件工程方法   软件工程的内容包括技术和管理两方面,两方面又紧密结合。通常把在软件生命期中所使用的一整套技术的集合称为方法(methodology)或范型(paradigm ) 。   软件工程方法包括三要素:方法、工具和过程。  方法:完成软件开发各项任务的技术方法;  工具:为方法的运用提供自动或者半自动的支撑环境;  过程:为开发高质量软件所规定的各项任务的工作步骤。

48 特别要注意: 由于软件与程序是不同的概念,软件开发方法与程序设计方法是两个不同的概念。
  由于软件与程序是不同的概念,软件开发方法与程序设计方法是两个不同的概念。   软件开发方法可以是针对局部的,也可以是针对全局的。软件工程方法,更加强调和重点研究的是需求分析与软件设计的开发方法。 软件开发方法可分为几大类: 面向过程的开发方法(传统的) 面向对象的开发方法 基于构件的开发方法

49 1.4.2 传统的软件开发方法 也称为面向过程的软件开发方法,这类开发方法都典型地包含了分析、设计、实现、确认(测试)、演化(维护)等活动。
  也称为面向过程的软件开发方法,这类开发方法都典型地包含了分析、设计、实现、确认(测试)、演化(维护)等活动。  典型的传统软件开发方法有:   Jackson方法、结构化开发方法、原型化方法、HIPO法、IDEF法等。

50 一、结构化开发方法(Structured Developing Method)
是一种面向数据流的开发方法,是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。 结构化方法总的指导思想是自顶向下、逐步求精,以数据流,数据的封闭性准则来逐层分解的,它的基本原则是功能的分解与抽象。   结构化方法强调结构的合理性。提出了一组提高软件结构质量的准则,如功能的分解与抽象、模块独立性、信息屏蔽等。

51 二、Jackson方法   JACKSON方法是一种面向数据结构的设计方法。强调程序结构与问题结构相对应。   JACKSON方法由两部分构成:  1、JSP(Jackson structured Programming)  2、JSD (Jackson System Development)

52 三、原型化方法(Prototyping Method)
  原型是软件开发过程中,软件的一个早期可运行的版本,它反映了最终系统的部分重要特性。   原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习的机会,原型化方法又称速成原型法(Rapid Prototyping)。强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。将维护和修改阶段的工作尽早进行,使用户验收提前,从而使软件产品更加适用。

53 四、HIPO法(Hierarchy Plus Input—Process—Output)
  HIPO法(Hierarchy Plus Input—Process—Output),按功能层次结构分析法,74年由IBM公司推出的软件分析及设计方法,又称HIPO图。   HIPO图是以功能、功能完备性准则逐层分解的。   由直观目录表(H图),概要HIPO图,详细IPO图三部分组成。

54 面向对象方法 OOSD(Object-Oriented Software Development)法这是80年代推出的一种全新的软件开发方法。非常实用而强有力,被誉为90年代软件的核心技术之一。   其基本思想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程。面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。

55 面相对象方法学的要点 认为世界是由对象组成的。 把所有对象划分成类。 按照父类和子类的关系,把若干相关的类组成一个层次结构的系统。
对象间仅能通过发送消息互相联系。

56 本章作业 P.23 1,4,7

57 (1)软件产品质量低劣,甚至开发过程就夭折。 (2)软件生产率低,不能满足需要。
“软件危机”(Software crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力财力,而在开发过程中就夭折。 “软件危机”主要表现在两个方面: (1)软件产品质量低劣,甚至开发过程就夭折。 (2)软件生产率低,不能满足需要。

58 软件危机  IBM公司的 OS/360,共约100万条指令,花费了5000个人年;经费达数亿美圆,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。 OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“…像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。…” 1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序: DO 5 I=1,3 误写为:DO 5 I=1 . 3 1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。

59


Download ppt "软件工程 咸阳师范学院 信息工程学院."

Similar presentations


Ads by Google