软件开发与应用-第1章 软件工程学概述

合集下载

《软件工程》教学教案

《软件工程》教学教案

《软件工程》教学教案一、第一章:软件工程概述1. 教学目标了解软件工程的定义、目的和重要性,掌握软件开发的基本过程和原则。

2. 教学内容软件工程的定义和重要性;软件开发的基本过程;软件工程的原则和方法。

3. 教学方法采用讲授法,结合案例分析,让学生了解和掌握软件工程的基本概念和原则。

4. 教学资源教材、课件、案例分析。

5. 教学评价通过课堂提问和案例分析,评估学生对软件工程的理解和应用能力。

二、第二章:软件需求分析1. 教学目标掌握软件需求分析的基本概念、方法和过程,能够运用需求分析工具进行需求收集和分析。

2. 教学内容软件需求分析的基本概念;需求分析的方法和过程;需求分析工具的使用。

3. 教学方法采用讲授法和实例分析,让学生了解和掌握需求分析的方法和过程。

4. 教学资源教材、课件、实例分析。

5. 教学评价通过课堂提问和实例分析,评估学生对需求分析的理解和应用能力。

三、第三章:软件设计1. 教学目标掌握软件设计的基本概念、方法和过程,能够运用设计工具进行软件架构和详细设计。

2. 教学内容软件设计的基本概念;设计方法和过程;设计工具的使用。

3. 教学方法采用讲授法和实例分析,让学生了解和掌握软件设计的方法和过程。

4. 教学资源教材、课件、实例分析。

5. 教学评价通过课堂提问和实例分析,评估学生对软件设计的理解和应用能力。

四、第四章:软件实现1. 教学目标掌握软件实现的基本概念、方法和过程,能够运用编程语言进行软件编码和测试。

2. 教学内容软件实现的基本概念;实现方法和过程;编程语言和测试工具的使用。

3. 教学方法采用讲授法和编程实践,让学生了解和掌握软件实现的方法和过程。

4. 教学资源教材、课件、编程环境和测试工具。

5. 教学评价通过编程实践和测试结果,评估学生对软件实现的理解和应用能力。

五、第五章:软件维护1. 教学目标掌握软件维护的基本概念、方法和过程,能够进行软件维护和优化。

2. 教学内容软件维护的基本概念;维护方法和过程;软件优化技巧。

第一章软件工程学概述选择题

第一章软件工程学概述选择题

第一章软件工程学概述选择题1.软件是一种( )产品。

A.有形 B.逻辑C.物质 D.消耗2.软件工程学的目的应该是最终解决软件生产的( )问题。

A.提高软件的开发效率 B.使软件生产工程化C.消除软件的生产危机 D.加强软件的质量保证3.与计算机科学的理论研究不同,软件工程是一门( )学科。

A.理论性 B.工程性 C.原理性 D.心理性4.软件危机的主要原因有( )。

①软件本身的特点②用户使用不当③硬件可靠性差· ④对软件的错误认识⑤缺乏好的开发方法和手段A.③④ B.①②④C.①⑤ D.①③5.在计算机软件开发和维护中所产生的一系列严重的问题通常称为软件危机,这些问题中相对次要的因素是( )。

A.文档质量 B.开发效率C.软件功能 D.软件性能6.软件工程与计算机科学性质不同,软件工程着重于( )。

A.原理探讨 B.理论研究C.建造软件系统 D.原理的理论7.软件工程学科出现的主要原因是( )。

A.计算机的发展B.其他工程科学的影响C.软件危机的出现D. 程序设计方法学的影响8.软件工程方法学的研究内容包含软件开发技术和软件工程管理两个方面,其期望达到的最终目标是( )。

A.软件开发工程化B.消除软件危机C.实现软件可重用D.程序设计自动化9.由于软件生产的复杂性和高成本性,使大型软件的生存出现危机,软件危机的主要表现包括了下述( )方面。

①生产成本过高②需求增长难以满足③进度难以控制④质量难以保证A.①② B.②③ c.④ D.全部10.软件工程方法学中的软件工程管理是其中的一个重要内容,它包括软件管理学和软件工程经济学,它要达到的目标是( )。

A.管理开发人员,以开发良好的软件B.采用先进的软件开发工具,开发优秀的软件c.消除软件危机,达到软件生产的规模效益D.以基本的社会经济效益为基础,工程化生产软件11.软件工程方法学的目的是使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( )。

第1章软件工程和软件测试概述

第1章软件工程和软件测试概述
9
1.1软件工程概述- 软件工程
• 1968年北大西洋公约组织的计算机科学家在联邦 德国召开国际会议,讨论软件危机问题,在这次 会议上正式提出并使用了“软件工程”这个名词。 • 软件工程是指导计算机软件开发和维护的一门工 程学科,它是采用工程的概念、原理、技术和方 法来开发与维护软件,把经过时间考验而证明正 确的管理技术和当前能够得到的最好的技术方法 结合起来,以经济地开发出高质量的软件并有效 地进行维护。
• 实际问题的复杂性 实际问题的复杂性 • 程序逻辑结构的复杂性 程序逻辑结构的复杂性
5
1.1软件工程概述- 软件的分类
• 按软件的功能进行划分: 按软件的功能进行划分:
– 系统软件
• • • • • • • • • 操作系统 数据库管理系统 设备驱动程序 通信处理程序等
– 支撑软件
文本编辑程序 文件格式化程序 磁盘向磁带向数据传输的程序 程序库系统 支持需求分析、设计、实现、 支持需求分析、设计、实现、测试和支持管理的软件
• 软件是计算机系统中与硬件相互依存的另一部
它是包括程序 及其相关文档 分,它是包括程序,数据及其相关文档的完整集 它是包括程序,数据及其相关文档的完整集 其中: 合。其中:
– 程序 程序(instructions)是按事先设计的功能和性能要求 是按事先设计的功能和性能要求 执行的指令序列 – 数据 数据(data)是使程序能正常操纵信息的数据结构 是使程序能正常操纵信息的数据结构 – 文档 文档(documents)是与程序开发,维护和使用有关的 是与程序开发, 是与程序开发 图文材料
– 问题定义 – 可行性研究 – 需求分析
18
1.1软件工程概述-软件开发时期
• 开发时期具体设计和实现在前一个时期定 义的软件,它通常由下述4个阶段组成

第1章-软件工程学概述1-1

第1章-软件工程学概述1-1

• 软件用后不磨损
• 随着时间的推移,应用程序
的某些部分可能会变得不再 相关(例如,需求改变时), 而需要修改
• 但是,没有备件的概念
1.1、软件的定义
硬件和软件故障率曲线
由于副作用造成 故障率的提高 原来的软件已经面目全非了!
故障率

磨损后
生命初期
修改
硬件的故障率曲线 实际曲线
软件故障率的理想曲线
1.2、软件危机
软件危机案例
3 . 软件产品的质量靠不住 [案例]:
ARIANE 5 火箭 1996 年6 月,耗资70 亿美元,发射
本章内容
1.1、软件的定义 1.2、软件危机 1.3、软件工程 1.4、软件生存期 1.5、软件过程
1.2、软件危机
软件危机
Crisis!
“软件危机”(Software crisis) 的出现是由于软件的规模越来越大,复杂 度不断增加,软件需求量增大。而软件开 发过程是一种高密集度的脑力劳动,软件 开发的模式及技术不能适应软件发展的需 要。致使大量质量低劣的软件涌向市场, 有的花费大量人力财力,而在开发过程中 就夭折。
时间
1.1、软件的定义
硬件和软件故障率曲线的比较
软件不会用坏(wear out).
软件会退化( deteriorate)!
1.1、软件的定义
软件的特点-7
要求

软件产品不允许误差
软件产品的高质量取决于好的设计( High quality is achieved through) 依赖于人(Depend on people) 需要对产品进行构造(Require the construction of a “product”)

第1章软件工程学概述

第1章软件工程学概述
36
(3)软件经常变化 (4)开发软件的效率非常重要 (5.) 和谐地合作是开发软件的关键 (6.) 软件必须有效地支持它的用户 开发软件的目的就是支持用户的工作,满足 用户对软件的需求 (7. )在软件工程领域中通常由具有一种文 化背景的人替具有另一种文化背景的人创 造产品
37
软件工程的研究内容
软件是计算机系统中与硬件(hardware)相互依存 的另一部分,与硬件合为一体完成系统功能。 软件定义包括如下几点: (1)功能和性能的指令集(即程序); (2)程序能正常操纵信息的数据结构(即相关数 据); (3)与程序开发维护和使用有关的各种图文数据 (即说明文档)。
16
软件=程序+数据+相关文档
软件的发展主要经历了以下3个发展阶段:
第一阶段(20世纪50年代初期至20世纪60年 代中期) 特点:(1)称为程序设计阶段 (2)软件生产以个体化为主 (3)编写程序的工具只有低级语言 (4)软件规模小,几乎没有系统化的 标准可循
11
(5)软件由软件使用者自己开发和编写,适 合个人应用 (6)没有“软件”概念,对于程序有关的文 档的重要性认识不足,开发主要围绕硬件 进行 (7)工程规模小,使用工具单一,开发者之 间没有明确分工 第二阶段(20世纪60年代中期至70年代末期) 称程序系统阶段
7
ENIAC诞生于二战时期,最初是作为辅助炮兵计 算炮弹轨迹的工具,在盟军登陆西欧前一年开始 制造,但直到1945年停火时还没完成。在冷战初 期军方就发现了ENIAC的大量用途,它的17468 根真空管被用来测试氢弹的早期设计的可行性。 这台计算机每秒能执行5000条指令,在当时的情 况下它的运算速度比电动式计算机快1000倍。当 然,现在iPhone 6每秒能响应250亿条指令。

软件工程导论第1章 软件工程概述

软件工程导论第1章 软件工程概述

1.3 续
• 软件生命周期阶段的划分
问题定义 可行性研究 定义时期 需求分析 总体设计 详细设计 开发时期 编码和单元测试 综合测试 软件维护 维护时期 退役
1.3 续
• ⒈软件定义时期
– 软件定义时期的任务是:确定软件开发工程必须
完成的总目标;确定工程的可行性;导出实现工 程目标应该采用的策略及系统必须完成的功能; 估计完成该项工程需要的资源和成本,并且制定 工程进度表。
目标和完成期限,规定开发小组的责任和产品标 准,以便结果的审查。
1.2 续
• ⑹开发小组的人员应该少而精
– 软件开发小组人员素质和数量是影响软件质量和
开发效率的重要因素。
– 素质高的人员开发效率高,错误率低。 – 开发小组的成员之间要交流情况、讨论问题,随
着人数的增加,通信开销将急剧增加。
– 人员数:N
– 由系统分析员完成该阶段的系统分析工作。 – 软件定义时期可通过软件系统的问题定义、可行
性研究和需求分析三个阶段来完成。
1.3 续
• ⑴问题定义阶段
– 问题定义阶段必须回答的关键问题是:“要解决
的问题是什么?”。
– 问题定义阶段的任务是:确定软件系统的工程需
求,也就是要搞清“做什么?”。
– 通过对客户的访问调查,系统分析员扼要地写出
件工程支撑环境;
– 过程是为了获得高质量的软件所需要完成的一系
列任务的框架,它规定了完成各项任务的工作步 骤。
1.2 续
• 传统方法学
– 又称生命周期方法学,或结构化范型。 – 采用结构化技术来完成软件开发的各项任务,并
使用适当的软件工具或软件工程环境来支持结构 化技术的运用。
– 把软件生命周期的全过程依次划分为若干个阶段,

第1章 软件工程学概述

第1章 软件工程学概述
上海大学计算机学院
Robert Martin Arie van Bennekun Alistair Cockburn Ward Cunningham Martin Fowler
31
软件过程:敏捷开发
开发原则
尽早地、持续地交付有价值的软件来使客户满意。
即使到了开发后期,也欢迎改变需求。敏捷过程利用变化来为客户创造 竞争优势。 经常交付可工作的软件,其时间间隔可以是几周到几个月。 开发期间,业务人员和开发人员必须天天在一起工作。 最有效果的、最有效率的传递信息的方法,就是面对面的交谈。 首要的进度度量标准是工作的软件。 简单是根本的 ……
2013-7-16
重构:建造产品的过程中不断地调整设计 上海大学计算机学院
33
各种生命周期模型的比较
第1章 软件工程学概述
软件危机
软件工程
软件生命周期
软件过程
2013-7-16
上海大学计算机学院
1
软件危机
软件发展的四个阶段
1. 1950’s~1960’s中
规模较小,个体开发
2. 1960’s中~1970’中
软件作坊,产品软件 “软件危机” 出现,“软件工程” 学科诞生(1968年)
3. 1970’中 ~1980’s
方法
2013-7-16
上海大学计算机学院
10
软件工程
传统方法学
也称为生命周期方法学或结构化范型
采用结构化技术(结构化分析、设计和实现) 结构化范型要么面向行为,要么面向数据
面向对象方法学
把数据和行为看成同等重要,以数据为主线, 把数据和对数据的操作紧密地结合
4个要点
面向对象方法=对象+类+继承+用消息通信

软件工程导论复习重点总结很全(第六版)

软件工程导论复习重点总结很全(第六版)

软件工程导论复习重点总结很全(第六版)第1章软件工程学概述1.1软件危机1.1.1软件危机的介绍软件危机(软件萧条、软件困扰:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机包含下述两方面的问题:如何开发软件,满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机的典型表现:1对软件开发成本和进度的估计常常很不准确;2用户对“已完成的”软件系统不满意的现象经常发生;3软件产品的质量往往靠不住;4软件常常是不可维护的;5软件通常没有适当的文档资料;6软件成本在计算机系统总成本中所占的比例逐年上升;7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

1.1.2产生软件危机的缘故原由1与软件本身的特点有关2与软件开发与维护的方法不正确有关1.1.3消除软件危机的途径对计算机软件有正确的认识。

认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。

应该开发和使用更好的软件工具。

总之,为了解决软件危机,既要有技术措施(方法和工具,又要有必要的组织管理措施。

1.21.2.1软件工程的介绍软件工程:是指导计算机软件开发和维护的一门工程学科。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

(期中考软件工程的本质特性:软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开辟软件的效率非常重要和谐地合作是开辟软件的枢纽软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品1.2.2软件工程的基本原理用分阶段的生命周期计划严格管理保持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开辟小组的人员应该少而精承认不竭改良软件工程实践的必要性1.2.3软件工程方法学软件工程包括技术和管理两方面的内容。

第一章软件工程学概述填空题

第一章软件工程学概述填空题

第一章软件工程学概述填空题1.软件工程需要解决的问题,有( )、( )、( )、( )、( )。

2.到目前为止,软件生产的发展经过了三个阶段,即( )、( )、( )。

3.计算机科学中的研究成果均可用于软件工程,但计算机科学侧重于( ),而软件工程侧重于( )。

4.软件工程要用管理科学的方法和原理进行( )。

5.软件工程是用科学知识和技术原理来( )、( )、( )软件的一门学科。

6.软件工程研究的主要内容包括软件开发技术和软件开发管理两个方面。

在软件开发技术方面,主要是研究( )、( )、( )。

在软件开发管理方面,主要是研究( )、( )、( )。

7.作为一门交叉学科,软件工程具有很强的综合性,它涉及( )、( )、( )、( )等领域。

8.软件工程要用工程科学中的观点来进行( )、( )、( )。

9.计算机程序及其说明程序的各种文档称为。

计算任务的处理对象和处理规则的描述称为( )。

有关计算机程序功能、设计、编制、使用的文字或图形资料称为( )。

10.软件工程要用( )的方法建立软件开发中的各种模型和各种算法,如可靠性模型,说明用户需求的形式化模型等。

11.软件生存周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。

通常,软件生存周期包括( )、( )、( )、( ) 、( )、( )、( )等活动,可以将这些活动以适当方式分配到不同阶段去完成。

12.开发软件工具的主要目的是为了提高软件生产率和改善( )。

13.一个组织中的CASE系统遵循从初始需求到完全废弃这一生存期,CASE生存期各步骤如下:(1)CASE( );(2)CASE( )(3)CASE( )(4)CASE( );(5)CASE( );(6)( )。

14.软件开发环境是相关的一组( )的集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成的。

15.环境集成主要有( )、界面集成、控制集成、( )、过程集成。

第1章 软件工程概述

第1章 软件工程概述

因而软件成本相当昂贵;
(6)相当多的软件开发涉及到社会因素。
2017/10/26 第4页 软件工程
3、软件的分类:
(1)按功能分类 a、系统软件:支持计算机系统各个部件、相关的软件
和数据协调、高效地工作的软件。如:OS、DBMS、
DRIVER、COMMUNICATION-SYSTEM。 b、支撑软件:协助用户开发软件的工具性软件,文本 编辑软件。如:PSL/PSA(问题描述语言、问题描述分析 器)、图形软件包、预编译程序、静态分析程序。
是批处理还是人机交互,信息存储是采用文件系统还是数据库?),方案的级
别有:低、中、高等级,每种方案都用系统流程图或其它工具加以描述。推荐 一种方案。最后确定一种方案。 (4)完成的任务:可能的解法(每种解法的系统流程图和成本效益分析),推 荐的系统结构(层次图或结构图)。 总体设计结束的标志是提交总体设计说明书、数据库或数据结构说明书和 集成测试计划等文件。
软件工程
2017/10/26
第1页
软件工程
第一章 软件工程概述
软件 软件危机 软件工程
2017/10/26
第2页
软件工程
1.1 软
1、什么叫软件?

(1)广义软件:相对于有形物理实体,把技术条件、管理法
规以及人员素质等无形因素称为软件。 (2)计算机软件:是与计算机硬件相对应的计算机组成部分, 包括程序、数据及其相关文档的完整集合。 Boehm:“软件是程序以及开发、使用和维护程序所需的所有
2017/10/26
第6页
软件工程
(4)按功能软件服务对象分类 a、项目软件:受特定客户委托由一个或多个软件 开发机构在合同的约束下开发出来的软件。 b、产品软件:提供给市场的商品。

软件工程软件第1章

软件工程软件第1章
1. 软件工程关注于大型程序的构造
“大”与“小”的分界线并不十分清晰。通常 把一个人在较短时间内写出的程序称为小型程序, 而把多人合作用时半年以上才写出的程序称为大型 程序。传统的程序设计技术和工具是支持小型程序 设计的,不能简单地把这些技术和工具用于开发大 型程序。
事实上,在此处使用术语“程序”并不十分恰当, 现在的软件开发项目通常构造出包含若干个相关程发和维护还有 不少糊涂观念,在实践过程中或多或少地采用了错 误的方法和技术,这可能是使软件问题发展成软件 危机的主要原因。
一个软件从定义、开发、使用和维护,直到最 终被废弃,要经历一个漫长的时期,这就如同一个 人要经过胎儿、儿童、青年、中年和老年,直到最 终死亡的漫长时期一样。通常把软件经历的这个漫 长的时期称为生命周期。软件开发最初的工作应是 问题定义,也就是确定要求解决的问题是什么;然 后要进行可行性研究,决定该问题是否存在一个可 行的解决办法;接下来应该进行需求分析,也就是 深入具体地了解用户的要求,在所要开发的系统 (不妨称之为目标系统)必须做什么这个问题上和用 户取得完全一致的看法。
严重的问题是,在软件开发的不同阶段进行修 改需要付出的代价是很不相同的,在早期引入变动, 涉及的面较少,因而代价也比较低;而在开发的中 期软件配置的许多成分已经完成,引入一个变动要 对所有已完成的配置成分都做相应的修改,不仅工 作量大,而且逻辑上也更复杂,因此付出的代价剧 增;在软件“已经完成”时再引入变动,当然需要 付出更高的代价。根据美国一些软件公司的统计资 料,在后期引入一个变动比在早期引入相同变动所 需付出的代价高2~3个数量级。图1.1定性地描绘 了在不同时期引入一个变动需要付出的代价的变化 趋势。
这7条原理是互相独立的,其中任意6条原理的组合 都不能代替另一条原理,因此,它们是缺一不可的 最小集合,然而这7条原理又是相当完备的,人们 虽然不能用数学方法严格证明它们是一个完备的集 合,但是,可以证明在此之前已经提出的100多条 软件工程原理都可以由这7条原理的任意组合蕴含 或派生。

《软件详细设计教程》课件第1章

《软件详细设计教程》课件第1章

第1章 软件工程概述
(3) 第三阶段:20世纪80年代。微处理器的出现与应用 使计算机真正成为大众化的东西,而软件系统的规模、复杂 性以及在关键领域的广泛应用,促进了软件开发过程的管理 及工程化开发。在这一时期,软件工程开发环境CASE及其 相应的集成工具大量涌现,软件开发技术中的度量问题受到 重视,出现了著名的软件工作量估计COCOMO模型、软件 过程改进模型CMM等。20世纪80年代后期,以Smalltalk、 C++等为代表的面向对象技术重新崛起,传统的结构化技术 受到了严峻的考验。
第1章 软件工程概述
在著名的《没有银弹:软件工程中的根本和次要问题》 一文中,Fred Brooks认为正是软件固有的复杂性造成了软件 开发的诸多问题。由于复杂性,人们难以全面理解问题,团 队成员之间的沟通也变得非常困难,从而导致了产品缺陷、 成本超支和进度拖延;由于复杂性,描述和理解软件系统所 有可能的状态是极其困难的,影响了产品的可靠性;由于软 件结构及其依赖关系的复杂性,软件的任何更改和扩充都有 可能带来灾难性的后果,形成所谓的“雪崩效应”。
第1章 软件工程概述
(3) 软件是不断变化的。软件是纯粹思维活动的产物, 它不会像硬件一样发生磨损,而是需要随着应用、硬件、用 户和社会等各种因素的变化不断地被修改和扩展。由于软件 是人类思维和智能的一种延伸,因此当软件被真正应用之后, 人们往往希望超越原有的应用边界进行软件功能的提升或扩 展;另外,由于软件必须依附于硬件平台,因此需要随着硬 件设备的更新和接口的不同而变化。
第1章 软件工程概述 图1.3 软件成本在系统总成本中所占比例
第1章 软件工程概述
(4) 软件维护极其困难,而且很难适应不断变化的用户 需求和使用环境。在软件交付使用的初期,需要识别和纠正 软件的错误,改正软件性能上的缺陷,避免实施中的错误使 用。即使软件进入了正常的使用期,由于计算机新技术的出 现和用户新需求的提出,也需要修改和改进软件。然而,软 件维护依然是一件非常困难的工作,常常出现诸如错误难以 修改或者修改又带来新的错误等现象,长期不断的修改也引 起了软件的退化。

软件工程导论全套精品课件(第六版)(张海潘编著)

软件工程导论全套精品课件(第六版)(张海潘编著)

2
第1章 软件工程学概述
引言
3
主要内容
1.1 软件危机 1.2 软件工程 1.3 软件生命周期
1.4 软件过程
第1章 软件工程学概述
主要内容
4
主要内容
1.1 软件危机 1.2 软件工程 1.3 软件生命周期
1.4 软件过程
第1章 软件工程学概述
1.1 软件危机
1.1 软件危机
1.1.1 软件危机的介绍
14
件,把经过时间考验而证明正确的管理技术和当前能够得 到的最好的技术方法结合起来,以经济地开发出高质量的 软件并有效地维护它,这就是软件工程。
第1章 软件工程学概述
1.2.1
软件工程的介绍
软件工程
1968年在第一届NATO会议上曾经给出了软件工程的一个
15
早期定义:“软件工程就是为了经济地获得可靠的且能在 实际机器上有效地运行的软件,而建立和使用完善的工程 原理。” 1993年IEEE进一步给出了一个更全面更具体的定义: “软件工程是: ①把系统的、规范的、可度量的途径应用 于软件开发、运行和维护过程,也就是把工程应用于软件; ②研究①中提到的途径。
与软件本身特点有关
软件不同于硬件, 1管理和控制软件 开发过程相当困 难。 软件在运行过程 2中不会因为使用 时间过长而被 “用坏 “如果运 行中发现了错误, 很可能是遇到了 一个在开发时期 引入的在测试阶 段没能检测出来 的错误。 软件不同于一般 3程序 ,它的一个 显著特点是规模 庞大 ,而且程序 复杂性将随着程 序规模的增加而 呈指数上升。
9
错误的认识和做法 6主要表现为忽视软 件需求分析的重要 性,认为软件开发 就是写程序并设法 使之运行,轻视软 件维护等

软件工程学概述

软件工程学概述

3. 实行严格的产品控制 基线配置管理(变动控制)
4. 采用现代程序设计技术 结构化分析、设计技术、结构化程序设计技术,面向对
象分析和设计技术。
实践表明,采用先进的技术不仅可以提高软件开发和 维护的效率,而且可以提高软件产品的质量。
5. 结果应该能够清楚地审查 依据开发项目的总目标和完成期限,规定开发小组的
易地改动。”
◦ “软件投入生产性运行以后需要的维护工作并不多,而且维护是一 种很容易做的简单工作。”软件维护的费用占软件总费用的55%- 70%
◦ 不完善的系统定义往往是导致软件项目失败的主要原因。 ◦ 只有质量差的软件产品才需要维护。
◦ 在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误 所花费的代价就会降低。
不全,坚持认为软件开发就是写程序、运行程序; (c)轻视软件维护。
不同阶段修改软件需付出的代价很不相同:
代价



早期 中期 后期 软件开发时期
引入同一修改的代价随时间变化的趋势
关于软件开发的常见观点:√ or X
◦ “有一个对目标的概括描述就足以着手编写程序了,许多细节可以 在以后再补充。”
◦ “所谓软件开发就是编写程序并设法使它运行。” ◦ “用户对软件的要求不断变化,然而软件是柔软而灵活的,可以轻
5. 详细设计 任务:怎样具体实现该系统 ◦ 详细地设计每个模块,确定实现模块功能所需要的算法和数 据结构。
结果: ◦ 每个模块的算法和数据结构(程序流程图、 N-S图、 PAD图
等)。
6. 编码和单元测试 任务:得到正确的程序模块 ◦ 选取一种适当的高级程序设计语言(必要时用汇编语言),把 详细设计的结果翻译成用选定的语言书写的程序; ◦ 并且仔细测试编写出的每一个模块。 结果: ◦ 代码和测试报告
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件开发与应用
胡俊敏
Email:wingoner@ 2009.2
集美大学工商管理学院信息管理与信息系统系
课程总体安排
第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 第十章 第十一章 第十二章 第十三章 软件工程学概述 可行性研究 需求分析 形式化说明技术 总体设计 详细设计 实现 维护 面向对象方法学引论 面向对象分析 面向对象设计 面向对象实现 软件项目管理
软件工程——一种层次化技术
软件工程的定义
• 1968年第一届NATO会议:“软件工程就是为了经济
地获得可靠的且能在实际机器上有效地运行的软件, 而建立和使用完善的工程原理。” • 1993年IEEE:“软件工程是:①把系统的、规范 的、可度量的途径应用于软件开发、运行和维护过 程,也就是把工程应用于软件;②研究①中提到的 途径。” • 概括来说,软件工程就是:采用工程的概念、原理、 技术和方法来开发与维护软件,把经过时间考验证 明正确的管理技术和当前能够得到的最好的技术方 法结合起来,以经济地开发出高质量的软件并有效 地维护它。
软件危机
软件危机原因
• 软件的规模加大、复杂性提高、性能增强;
• 软件是逻辑产品, 尚未完全认识其本质和特点; • 缺乏有效的、系统的开发、维护大型软件项
目的技术手段和管理方法;
软件危机
软件危机原因
• 用户对软件需求的描述和软件开发人员对
需求的理解往往存在差异,用户经常要求 修改需求,开发人员很难适应;
“软件开发与应用”课程教学的目标 转变对软件的认识: 上升
程序 系统
转变思维定式: 上升
程序员 工程化训练 系统工程师 (系统分析员)
第1章 软件工程学概念
软件危机 软件工程 软件生命周期
软件的发展过程 软件危机的表现 软件危机产生的原因 消除软件危机途径
软件过程
小结
• 若干年前开发的应用软件经过几十次修改已无人
认识它的内部结构,己经不可维护。(遗留软件)
• 由于经济原因,嵌入式系统存在许多怪现象,企业
不愿意投入资源再生产,而采取打补丁+时髦界 面的方法。
软件
软件是计算机系统的重要组成部分; 软件是逻辑产品,需要计算机硬件和系统软 件的支撑; 软件是计算机控制系统的指挥中枢; 软件是信息转换器,它能对信息进行加工、 处理或变换; 软件是工具,在人们的生活、工作、休闲, 在社会的经济、军事、政治、文化、科学技 术、教育中发挥具大作用;
软件的发展
软件发展的四个阶段
1950---1965
没有系统的软件开发方法和管理机制、自定义软件、 批处理、有限分布。
1965---1975
产生人机交互的新概念、新技术软件产品、多用户、 实时、数据库。
软件的发展
软件发展的四个阶段
1973---1988
微处理器的出现并广泛应用 分布式系统、嵌入智能、低成本硬件、消 费者的影响。 1986---2000
这么容易, 没问题!
你们到底做 过没,会不 会做啊?
你看你们 都怎么做 的?
一个屋顶 搞得坑坑 洼洼!!!
这个,要有个工 序,不是光有力 气就可以的. 钱,不给了!
之前没做过,不 过这个有把子力 气不是就可以?
干这么辛苦 竟然没有钱!
讨论问题
一.应该给工人工钱么?
二.这个工程为什么失败了? 三.你能从中得到什么样的经验?
软件工程——一种层次化技术
软件工程的基本原理--坚持进行阶段评审
• 据统计,在软件生存周期各阶段中,编码阶段之
前的错误约占63%,而编码错误仅占37%。另外, 错误发现并改正得越晚,所花费的代价越高。坚 持在每个阶段结束前进行严格的评审,就可以尽 早发现错误,从而可以最小的代价改正错误。因 此,这是一条必须坚持的重要原理。
软件工程——一种层次化技术
软件工程的基本原理 --结果应能清楚地审 查

软件产品是一种看不见、摸不着的逻辑产品。因 此,软件开发小组的工作进展情况可见性差,难 于评价和管理。为了更好地进行评价与管理,应 根据软件开发的总目标和完成期限,尽量明确地 规定软件开发小组的责任和产品标准,从而使所 得到的结果能清楚地审查。
• 软件开发的技术人员和管理人员缺乏软件
工程化的素质和要求,对工程化的开销认 识不足;
软件危机
软件危机仍在继续 ---影响软件质量的糊 涂认识
• 在项目的初始阶段对系统若明若暗就开
始写程序;
• 认为软件是灵活的容易修改,对软件需
求的改变不以为然;
• 程序调试成功标志着工作的结束;
软件危机
软件危机仍在继续 ---影响软件质量的糊涂 认识
软件工程——一种层次化技术
软件工程的基本原理 --用分阶段的生存周期计划严格管理
• 这条基本原理是应该把软件生存周期划分成若
干个阶段,并相应地制定出切实可行的计划, 然后严格按照计划对软件开发与维护工作进行 管理。应该制定的计划有项目概要计划、里程 碑计划、项目控制计划、产品控制计划、验证 计划和运行维护计划等。各级管理人员都必须 严格按照计划对软件开发和维护工作进行管理。 据统计,不成功的软件项目中,有一半左右是 由于计划不周造成的。
软件工程——一种层次化技术
软件工程的基本原理--实行严格的产品控制
• 决不能随意改变需求,只能依靠科学的产品控制技术来顺应
用户提出的改变需求的要求。为了保持软件各个配臵成分的 一致性,必须实行严格的产品控制。其中主要是实行基准配 臵管理(又称为变动控制),即凡是修改软件的建议,尤其 是涉及基本配臵的修改建议,都必须按规程进行严格的评审, 评审通过后才能实施。
软件危机
例如1:Therac-25事件(1985-87 年)
带有软件控制器的放射线疗法仪器抛弃了硬件 互锁,但软件没有互锁。 由于程序员对并发编 程没有经验,软件不能维持必要的不变量,电 子束模或是强烈的光线和金属板干扰,产生X 射线。因为灼伤导致了几起死亡。
例如2: 1996年Atlantic奥运会,IBM赞助的
名为Info’96网络,由于数据传输只有9600位/ 秒,经常因为设计时的考虑不周而使下图“大 塞车”,造成比赛中断。
软件危机
软件危机的典型表现




对软件开发成本、进度以及工作量的估计常常很不 准确 用户对“已完成的”软件系统不满意的现象经常发 生 软件产品的质量往往靠不住 软件常常是不可维护的 软件通常没有适当的文档资料 软件成本在计算机系统总成本中所占的比例逐年上 升 软件开发生产率提高的速度远远跟不上计算机应用 迅速普及深入的趋势
支撑软件 应用软件 微型、小型、中型、大型等 分时处理、实时处理、 批处理、交互处理
按规模划分
按工作方式划分 按服务对象划分
项目软件和产品软件
软件
关于软件的几个认识问题
你同意以下几种说法么?
需求分析和写需求文档不重要,可以程序都写好了,再回头
补充。 既然需求分析很困难,不管三七二十一先把软件做了再 说,反正软件是灵活的,随时可以修改。 软件编写完成以后就万事大吉了。 如果我们落后于计划,可以增加更多的程序员来解决。
软件
计算机世界的软件
软件是能够完成预定功能和性能,并对相应 数据进行加工的程序和描述程序及其操作的 文档。 软件 = 程序+数据+文档 程序 = 算法+数据结构
思考:软件= 程序 ?
软件
软件与硬件的相比的特点
软件 硬件
展现形状
失效率 制造过程 质量控制
逻辑实体
与开发阶段相关 设计、编写程序 设计各环节
《人月神话》开篇
史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场 面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣 扎。它们挣扎得越是猛烈,油纠缠得越紧,没有任何猛兽足够 强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑 底。 过去几十年的大型系统开发就犹如这样一个焦坑,很多大 型和强壮的动物在其中剧烈地挣扎。他们中大多数开发出了可 运行的系统——不过,其中只有非常少数的项目满足了目标、 时间进度和预算的要求。各种团队,大型的和小型的,庞杂的 和精干的,一个接一个淹没在了焦油坑中。表面上看起来好像 没有任何一个单独的问题会导致困难,每个都能被解决,但是 当它们相互纠缠和累积在一起的时候,团队的行动就会变得越 来越慢。对问题的麻烦程度,每个人似乎都会感到惊讶,并且 很难看清问题的本质。不过,如果我们想解决问题,就必须试
软件工程——一种层次化技术
软件工程的本质


以工程化的思想来约束软件本身特点所带来的不规范. 两个基本点: 控制 变化性 复杂性 协调 效率
产品
团队
用户
软件工程——一种层次化技术
软件工程的基本原理
著名的软件工程专家B. W. Boehm于1983年综 合了软件工程专家学者们的意见并总结了开发软 件的经验,提出了软件工程的7条基本原理。这7 条原理被认为是确保软件产品质量和开发效率的 原理的最小集合,又是相互独立、缺一不可、相 当完备的最小集合。
• 这里的“基准配臵”是指经过阶段评审后的软件配臵成分,
即各阶段产生的文档或程序代码等。
软件工程——一种层次化技术
软件工程的基本原理--采用现代程序设计 技术

实践表明,采用先进的程序设计技术既可以提高 软件开发与维护的效率,又可以提高软件的质量。 多年来,人们一直致力于研究新的“程序设计技 术”。比如,20世纪60年代末提出的结构程序设 计技术;后来又发展出各种结构分析(SA)和结 构设计(SD)技术;之后又出现了面向对象分析 (OOA)和面向对象设计(OOD)技术等等。
相关文档
最新文档