高级软件工程 第1章 软件工程概述
《软件工程实用教程》第1章软件工程引论
第1章 軟體工程引論
本章學習內容: 1.掌握軟體的定義與特點 2.軟體危機以及軟體危機產生的原因 3.掌握軟體工程的定義、目標和原則 4.瞭解軟體工程的研究內容與對象 5.理解學習軟體工程的意義
第1章 軟體工程引論
1. 1 軟體及軟體危機
1.1.1 軟體及其特性 1.軟體 :是由電腦程式的發展而形成的一 個概念。它是與電腦系統操作有關的程 式、規程、規則及其文檔和數據的統稱。
第1章 軟體工程引論
1. 3 軟體工程的基本原則
1 .採用分階段的生命週期計畫,以實現對專 案的嚴格管理 2.堅持進行階段評審,以確保軟體產品品質 3 .實行嚴格的產品控制,以適應軟體規格的 變更 4.採用現代程式設計技術 5.軟體結果應能清楚地審查 6.開發小組人員應該少而精 7.承認不斷改進軟體工程實踐的必要性
第1章 軟體工程引論
(2)軟體工具
工具類別
專案管理工具 軟體分析工具
舉例
專案規劃編輯器、用戶需求跟蹤器、 軟體版本管理器 數據字典管理器、分析建模編輯器
軟體設計工具
程式處理工具 軟體測試工具
用戶介面設計器、軟體結構設計器、 代碼框架生成器 程式編輯器、程式編譯器、程式解釋 器、程式分析器 測試數據生成器、根源程式調試器
第1章 軟體工程引論
2.軟體工程的目標 軟體開發成本較低; 軟體功能能夠滿足用戶的需求; 軟體性能較好; 軟體可靠性高; 軟體易於使用、維護和移植; 能按時完成開發任務,並及時交付使用。
第1章 軟體工程引論
3.軟體工程的研究內容與對象
第1章 軟體工程引論
4.軟體工程技術 (1)軟體工程方法 結構化方法 面向數據結構方法 原型化方法 面向對象的方法 形式化方法等
第1章软件工程和软件测试概述
1.1软件工程概述- 软件工程
• 1968年北大西洋公约组织的计算机科学家在联邦 德国召开国际会议,讨论软件危机问题,在这次 会议上正式提出并使用了“软件工程”这个名词。 • 软件工程是指导计算机软件开发和维护的一门工 程学科,它是采用工程的概念、原理、技术和方 法来开发与维护软件,把经过时间考验而证明正 确的管理技术和当前能够得到的最好的技术方法 结合起来,以经济地开发出高质量的软件并有效 地进行维护。
• 实际问题的复杂性 实际问题的复杂性 • 程序逻辑结构的复杂性 程序逻辑结构的复杂性
5
1.1软件工程概述- 软件的分类
• 按软件的功能进行划分: 按软件的功能进行划分:
– 系统软件
• • • • • • • • • 操作系统 数据库管理系统 设备驱动程序 通信处理程序等
– 支撑软件
文本编辑程序 文件格式化程序 磁盘向磁带向数据传输的程序 程序库系统 支持需求分析、设计、实现、 支持需求分析、设计、实现、测试和支持管理的软件
• 软件是计算机系统中与硬件相互依存的另一部
它是包括程序 及其相关文档 分,它是包括程序,数据及其相关文档的完整集 它是包括程序,数据及其相关文档的完整集 其中: 合。其中:
– 程序 程序(instructions)是按事先设计的功能和性能要求 是按事先设计的功能和性能要求 执行的指令序列 – 数据 数据(data)是使程序能正常操纵信息的数据结构 是使程序能正常操纵信息的数据结构 – 文档 文档(documents)是与程序开发,维护和使用有关的 是与程序开发, 是与程序开发 图文材料
– 问题定义 – 可行性研究 – 需求分析
18
1.1软件工程概述-软件开发时期
• 开发时期具体设计和实现在前一个时期定 义的软件,它通常由下述4个阶段组成
电子科大软件工程作业汇总(附答案)
一、第1章软件工程概述1. Software deteriorates rather than wears out because(软件通常是变坏而不是磨损的原因是)A:Software suffers from exposure to hostile environments(软件暴露在不利的环境中)B:Defects are more likely to arise after software has been used often(软件错误更容易在使用后被发现)C:Multiple change requests introduce errors in component interactions(在组件交互中需求发生变化导致错误)D:Software spare parts become harder to order(软件的备用部分不易组织)2. Today the increased power of the personal computer has brought about an abandonment of the practice of team development of software.(如今个人电脑性能的提升导致遗弃了采用小组开发软件的方式。
)A:True(真)B:False (假)3. Which question no longer concerns the modern software engineer?(现如今的软件工程师不再考虑以下哪个问题?)A:Why does computer hardware cost so much?(计算机硬件为什么如此昂贵?)B:Why does software take a long time to finish?(软件为什么开发时间很长?)C:Why does it cost so much to develop a piece of software?(开发一项软件的开销为什么这么大?)D:Why cann't software errors be removed from products prior to delivery? (软件错误为什么不能在产品发布之前被找出?)4. In general software only succeeds if its behavior is consistent with the objectives of its designers.(通常意义上,只有表现得和设计目标一致的软件才是成功的软件。
软件工程导论复习
第1章软件工程概述1、什么是软件工程?为什么会出现软件工程?软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
软件工作者在20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成了一门新兴的工程学科——计算机软件工程学(通常简称为软件工程)。
2、软件工程的主要目标是什么?基本目标是什么?软件工程的目标:从管理和技术两个方面开发和维护计算机软件,用低成本,开发出达标、高性能、易于移植、可靠性高的软件。
软件工程的基本目标是:优质、高产。
3、什么是软件工程方法学?软件工程的3要素(软件工程方法学的3要素)是什么?分别包含什么内容?软件工程方法学:软件生命周期全过程中使用的一整套技术方法的集合软件工程方法学包含3个要素:方法、工具和过程。
方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。
4、什么是软件过程?什么是软件周期?常见软件生命周期模型(课件中的前5类)的特点有哪些?软件过程:它是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件生命周期:由软件定义、软件开发和运行维护(也称之为软件维护)3个时期组成①瀑布模型定义:传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。
瀑布模型的特点:1.阶段间具有顺序性和依赖性;2.推迟实现的观点;3.质量保证的观点。
瀑布模型的成功在很大程序上是由于它基本上是一种文档驱动的模型。
瀑布模型的主要优点:a.可强迫开发人员采用规范的技术方法;b.严格地规定了每个阶段必须提交的文档;c.每个阶段结束前必须正式进行严格的技术审查和管理复审。
第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.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章 软件工程综述
4. 按服务对象划分:通用软件、定制软件。
软件发展历程
1. 程序设计时代(20世纪50年代):软件发展早 期, 计算机主要用于科学或工程计算,软件则是 为某种特定型号的计算机而专门配置的程序。
2. 程序系统时代(20世纪60年代):由于软件需 求不断增长, “软件作坊”在这个时期出现了, 伴随着“软件作坊”还产生出了具有一定通用性 的软件产品。
软件工程基本原则
围绕工程设计、工程支持以及工程管理已提出了 以下四条基本原则:1、选取适宜的开发模型;2、 采用合适的设计方法;3、提供高质量的工程支 撑;4、重视软件工程的管理。
美国著名软件工程专家勃姆(B.W.Boehm)经过总结, 提出了以下7条软件工程的基本原理,即:(1) 采用分阶段的生命周期计划严格管理,(2)坚 持进行阶段评审,(3)实行严格的产品控制; (4)采用现代程序设计的技术;(5)结果应能 够清楚地审查;(6)开发队伍应该少而精;(7) 承认不断改进软件工程实践的必要性。
对象彼此间仅能通过发送消息互相联系。
面向对象方法学基本原则
尽量模拟人类习惯的思维方式,使开发软件的 方法与过程尽可能接近人类认识世界、解决问 题的方法与过程,从而使描述问题的问题空间 (也称为问题域)与实现解法的解空间(也称为求解 域)在结构上尽可能一致。
面向对象方法学
优点: 降低了软件产品的复杂性,提高了软件的可
采用生命周期方法学可以大大提高软件开发的成功率,软 件开发的生产率也能明显提高。
目前,传统方法学仍然是人们在开发软件时使用得十分广 泛的软件工程方法学。
5. 主流工程方法学
面向对象方法学则是目前的主流方法学,包括面 向对象分析(OOA)、面向对象设计(OOD)与 面向对象实现(OOA),可对整个软件生命周期 提供方法学支持。其以实体为基本元素,如:类 体、对象,并可使程序系统基于现实实体构建, 更加接近现实环境。
软件工程课件(全)ppt
第1章 1.2软件工程
1.2.1 软件工程的定义和目标
为了克服软件危机,1968年10月在北大西洋公约组织(NATO)召开的计 算机科学会议上,Fritz Bauer首次提出“软件工程”的概念。
按工程化的原则和方法组织软件开发工作是有效的,是摆脱软件危机的一 条主要出路。
软件工程的主要思想是强调软件开发过程中应用工程化原则的重要性。软 件工程的目标是实现软件的优质高产。软件工程的目的是在经费的预算范围内, 按期交付出用户满意的、质量合格的软件产品。
第1章 1.1软件与软件危机
1.1.3 软件危机
2. 软件危机产生的原因
(1)忽视软件开发前期的调研和需求分析工作。 (2)缺乏软件开发的经验和有关软件开发数据的积累,使得开发计划很难制定。 (3)开发过程缺乏统一的、规范化的方法论指导。 (4)忽视与用户、开发组成员间的及时有效的沟通。 (5)文档资料不规范或不准确。导致开发者失去工作的基础,管理者失去管理的依据。 (6)没有完善的质量保证体系。
第1章 1.1软件与软件危机
1.1.1 软件的定义及其特点
2.软件具有下列特点:
比硬件发展慢
是逻辑产品
软件
生产与硬件不同 不会磨损和老化
成本高、风险高
手工开发为主
依赖硬件
第1章 1.1软件与软件危机
1.1.2 软件的发展及其分类
1.软件技术的发展
程序设计
程序系统
软件工程
第1章 1.1软件与软件危机
第1章 1.1软件与软件危机
1.1.3 软件危机
3. 软件危机解决途径
要解决软件危机问题,需要采取以下措施: (1)使用好的软件开发技术和方法。 (2)使用好的软件开发工具,提高软件生产率。 (3)有良好的组织、严密的管理,各方面人员相互配合共同完成任务。 为了解决软件危机,既要有技术措施(好的方法和工具),也要有组织管理措施。软件工 程正是从技术和管理两方面来研究如何更好地开发和维护计算机软件的。
第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章软件工程学概述 (3)1.1 软件危机 (3)1.2 软件工程 (3)1.3 软件生命周期 (3)1.4 软件过程 (3)第2章可行性研究 (4)2.1 可行性研究的任务 (4)2.2 可行性研究过程 (4)2.3 系统流程图 (4)2.4 数据流图 (4)2.5 数据字典 (5)2.6 成本/效益分析 (5)第3章需求分析 (5)3.1 需求分析的任务 (5)3.2 与用户沟通获取需求的方法 (5)3.3 分析建模与规格说明 (5)3.4 实体-联系图 (5)3.5 数据规范化 (5)3.6 状态转换图 (6)3.7 其他图形工具 (6)3.8 验证软件需求 (6)第4章形式化说明技术 (6)第5章总体设计 (6)5.1 设计过程 (6)5.2 设计原理 (7)5.3 启发规则 (7)5.4 描绘软件结构的图形工具 (7)5.5 面向数据流的设计方法 (8)第6章详细设计 (8)6.1 结构程序设计 (8)6.2 人机界面设计 (8)6.3 过程设计的工具 (8)6.4 面向数据结构的设计方法 (8)6.5 程序复杂程度的定量度量 (8)第7章实现 (9)7.1 编码 (9)7.2 软件测试基础 (9)7.3 单元测试(模块测试) (10)7.4 集成测试(子系统测试和系统测试) (10)7.5 确认测试(验收测试) (10)7.6 白盒测试技术 (10)7.7 黑盒测试技术 (11)7.8 调试(修改测试发现的错误) (11)7.9 软件可靠性 (11)第8章维护 (11)8.1 软件维护的定义 (11)8.2 软件维护的特点 (11)8.3 软件维护过程 (12)8.4 软件的可维护性 (12)8.5 预防性维护 (12)8.6 软件再工程过程 (12)参考书目 (12)第1章软件工程学概述1.1 软件危机1. 软件危机的定义、表现、产生原因2. 消除软件危机的途径3. 软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。
软件工程习题答案
软件⼯程习题答案第1章软件⼯程概述参考答案⼀. 选择题1. B2. A3. B4. B5. D6. B7. D8. A9. D⼆. 填空题1. 设计编码测试2. 软件费⽤可靠性可维护性可重⽤性及⽣产率等3. 计算机软件开发和维护4. 分解抽象和信息隐蔽⼀致性确定性5. 软件的总⽬标待开发软件的需求6. ⼆三7. 计划阶段开发阶段维护阶段8. 软件需求明确9. 制定计划风险分析开发实施⽤户评估三. 名词解释1. 软件的定义如下:在运⾏中能提供所希望的功能和性能的指令集,使程序能正确运⾏的数据结构,描述程序研制过程和⽅法所⽤的⽂档。
2. 软件⼯程是指导计算机软件开发和维护的⼀门学科。
3. 软件危机指的是软件开发和维护过程中遇到的⼀系列严重问题。
4. 就是从提出软件产品开始,直到该软件产品被淘汰的全过程。
5. 瀑布模型⼜称⽣存周期模型,由B.M.Boehm提出,是软件⼯程的基础模型。
其核⼼思想是按⼯序将问题化简,将功能的实现与设计分开,便于分⼯协作。
6. 螺旋模型将瀑布模型与演化模型结合起来,并且加⼊两种模型均忽略了的风险分析,弥补了两者的不⾜。
四. 简答题1. 软件既是知识产品,⼜是与汽车,建筑物⼀样的⼯业产品,此外,软件还具有类似艺术,学术那样的知识性创造和特点,软件的特点如下:软件是⼀种逻辑实体,⽽不是具体的物理实体,因⽽它具有抽象性;软件是通过⼈们的智⼒活动,把知识与技术转化成信息的⼀种产品,是在研制、开发中被创造出来的;在软件的运⾏和使⽤期间,没有硬件那样的机械磨损、⽼化问题;软件的开发和运⾏经常受到计算机系统的限制,对计算机系统有着不同程度的依赖关系;软件的开发尚未完全摆脱⼿⼯的开发⽅式;软件的开发费⽤越来越⾼,成本相当昂贵;软件的开发是⼀个复杂的过程,因⽽管理是软件开发过程中必不可少的內容。
2. 软件危机主要表现如下:产品不符合⽤户的实际需要;软件开发⽣产率提⾼的速度远远不能满⾜客观需要,软件的⽣产率远远低于硬件⽣产率和计算机应⽤的增长速度,使⼈们不能充分利⽤现代计算机硬件提供的巨⼤潜⼒;软件产品的质量差;对软件开发成本和进度的估计常常不准确;软件的可维护性差;软件⽂档资料通常既不完整也不合格;软件的价格昂贵,软件成本在计算机系统总成本中所占的⽐例逐年上升。
软件工程概述
第1章 软件工程概述
二、软件危机
20世纪60年代末70年代初,西方工业发达国 家经历了一场“软件危机”。这场软件危机表现 在:一方面软件十分复杂,价格昂贵,供需差日 益增大,另一方面软件开发时又常常受挫,质量 差,指定的进度表和完成日期很少能按时实现, 研制过程很难管理,即软件的研制往往失去控制。 我们称软件开发和维护过程中所中遇到的这一系 列严重问题为软件危机。
1.2 软件的发展和软件危机
一、计算机系统的发展历程 第一代(20世纪60年代中期以前):程序设计阶段。 第二代(从20世纪60年代中期到70年代中期):程
序系统阶段——“软件工程” 学科诞生。 第三代(从20世70年代中期到80年代中期):软
件工程阶段。 第四代(从20世纪80年代中期至今):软件产业在
第1章 软件工程概述
二、软件开发模型
1.瀑布模型:将软件生存周期的各项活动规定为依 照固定顺序连接的若干阶段工作,形如瀑布流水, 最终得到软件产品。
如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,一般称之为计算机软件的生存期。
第1章 第1章
软软软件件件工工程程概概工述述 程下的定义为:软件工程是开发、运
行、维护和修复软件的系统方法,其中“软
件”的定义为:计算机程序、方法、规则、
相关的文档资料以及在计事机上运行时所必
第1章 软件工程概述
(2)可行性研究:任务是为前一阶段提出的问 题寻求一种至数种在技术上可行、且在经济上有 较高效益的解决方案。
第1章 软件工程概述
2.软件开发时期
(1)需求分析:弄清用户对软件系统的全部需求, 主要是确定目标系统必须具备哪些功能。
《软件详细设计教程》课件第1章
第1章 软件工程概述
(3) 第三阶段:20世纪80年代。微处理器的出现与应用 使计算机真正成为大众化的东西,而软件系统的规模、复杂 性以及在关键领域的广泛应用,促进了软件开发过程的管理 及工程化开发。在这一时期,软件工程开发环境CASE及其 相应的集成工具大量涌现,软件开发技术中的度量问题受到 重视,出现了著名的软件工作量估计COCOMO模型、软件 过程改进模型CMM等。20世纪80年代后期,以Smalltalk、 C++等为代表的面向对象技术重新崛起,传统的结构化技术 受到了严峻的考验。
第1章 软件工程概述
在著名的《没有银弹:软件工程中的根本和次要问题》 一文中,Fred Brooks认为正是软件固有的复杂性造成了软件 开发的诸多问题。由于复杂性,人们难以全面理解问题,团 队成员之间的沟通也变得非常困难,从而导致了产品缺陷、 成本超支和进度拖延;由于复杂性,描述和理解软件系统所 有可能的状态是极其困难的,影响了产品的可靠性;由于软 件结构及其依赖关系的复杂性,软件的任何更改和扩充都有 可能带来灾难性的后果,形成所谓的“雪崩效应”。
第1章 软件工程概述
(3) 软件是不断变化的。软件是纯粹思维活动的产物, 它不会像硬件一样发生磨损,而是需要随着应用、硬件、用 户和社会等各种因素的变化不断地被修改和扩展。由于软件 是人类思维和智能的一种延伸,因此当软件被真正应用之后, 人们往往希望超越原有的应用边界进行软件功能的提升或扩 展;另外,由于软件必须依附于硬件平台,因此需要随着硬 件设备的更新和接口的不同而变化。
第1章 软件工程概述 图1.3 软件成本在系统总成本中所占比例
第1章 软件工程概述
(4) 软件维护极其困难,而且很难适应不断变化的用户 需求和使用环境。在软件交付使用的初期,需要识别和纠正 软件的错误,改正软件性能上的缺陷,避免实施中的错误使 用。即使软件进入了正常的使用期,由于计算机新技术的出 现和用户新需求的提出,也需要修改和改进软件。然而,软 件维护依然是一件非常困难的工作,常常出现诸如错误难以 修改或者修改又带来新的错误等现象,长期不断的修改也引 起了软件的退化。
软件工程ppt课件
常州大学信息科学与工程学院 卢 莹
(1)使用先进的开发技术(方法和工具)
l 推广使用成功的技术和方法,并且研究探索更好更有 效的技术和方法。
l开发和使用更好的软件工具(软件工程支撑环境)
(2)对软件开发过程和产品进行严格的管理
l软件开发应该是一种组织良好、管理严密、各类人员 协同配合、共同完成的工程项目
任务的框架,它规定了完成各项任务的工作 步骤
莹
(3)使用最广泛的软件工程方法学:
①传统方法学(生命周期方法、结构化方法): ●从时间角度对软件问题进行分解,将软件开发维护
过程划分成若干阶段。 ②面向对象方法学:
●面向对象方法学的出发点和基本原则: 尽量模拟人类习惯的思维方式,使开发软件的方法与 过程尽可能接近人类认识世界解决问题的方法与过程, 使问题空间与实现空间在结构上尽可能一致。
如何消除软件危机
软件工程概论教程
常州大学信息科学与工程学院 卢 莹
软件工程概论教程
常州大学信息科学与工程学院 卢 莹
(2)软件发展的四个阶段: ①60年代中期以前(程序设计阶段):
●软件开发环境个体化; ●没有系统化的软件开发和管理方法; ●软件即程序、无文档; ●软件规模小、生产率低。
②60年代中期到70年代中期(程序系统阶段):
●“软件作坊”出现,广泛使用产品软件; ●缺乏系统化的软件开发和管理方法; ●软件规模稍大;程序有说明书、无开发文档
软件工程概论教程
常州大学信息科学与工程学院 卢 莹
1.2.1 软件工程的内容 1.2.2 软件工程的基本原理 1.2.3 软件工程包含的领域
软件工程概论教程
常州大学信息科学与工程学院 卢 莹
(1)软件工程定义:
软件工程知识点
第一章软件工程概述一、软件的定义和特性(P2—P3)定义:软件=程序+数据+文档程序:按照事先设计的功能和性能要求执行的指令或语句序列数据:程序能正常操纵信息的数据结构文档:描述程序操作和使用的文档特性:(1)软件是一种逻辑实体,具有抽象性,不是一般的物理实体;(2)软件的成产与硬件存在某些相同点,但有根本上的不同,软件开发是人的智力的高度发挥,而不是传统意义上的制造,它更依赖于开发人员的素质,智力,人员和组合,合作和管理;(3)软件维护与硬件维修有着本质的差别,软件维护没有硬件维护那样有可替换的标准零件;(4)软件在运行和使用期间没有硬件那样的机械磨损,老化问题,但存在退化问题;(5)基于构件的开发方法由于其自身的特点越来越受到人们的重视,这些技术可以减少开发时间、提高质量,并提高复用水平。
* 掌握P4图1-2(b)软件失效率曲线二、计算机软件的发展经历了几个阶段?各有何特征?(P1—P2)共经历了四个阶段特征:第一阶段——程序规模小且主要采用个体工作方式,开发的系统大多采用批处理技术第二阶段——引入人机交互的概念,实时系统出现,产生了第一代数据库管理系统,程序编制采用了合作的工作方式,出现了早期的软件危机第三阶段——分布式系统出现,嵌入式系统得到广泛应用,低成本硬件第四阶段——强大的桌面系统和计算机网络迅速发展时期,面向对象技术得到广泛应用,人工智能技术和专家系统开始应用于软件。
三、什么是软件危机?其产生的原因是什么?定义:软件危机是指由于落后的软件生产方式无法满足迅速增长的计算机软件应用需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
(P4)原因:(P5)(1)用户对软件需求的描述不准确、不全面,甚至有错误,以及在开发过程中,不断提出或者修改需求;(2)用户和开发人员对软件需求的理解存在差异,导致所开发的软件产品和用户需求不一致;(3)大型软件项目需要组织一定的人力共同完成,各类人员的信息交流不及时、不准确,有时还可能产生误解,软件开发人员对大型软件缺少开发经验,管理人员缺少相应的管理经验;(4)软件开发人员不能有、独立自主的处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误;(5)开发技术落后,缺乏有效的方法学和工具方面的支持,过分依赖程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化(6)软件产品的特殊性和人类智力的局限性,导致人们无法处理“复杂问题”,因为软件是逻辑产品,软件开发进展情况较难衡量、软件开发质量难以评价、管理和控制软件开发过程相当困难。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 软件及其发展 • 软件工程的概念 • 软件工程的目标 • 软件工程方法学 • 软件工程知识体及知识域
1
1.1 软件及其发展
• 什么是软件?
软件是计算机系统中与硬件相互依存的另一部 分,它是包括程序、数据及相关的文档。 ➢ 程序是按事先设计的功能和性能要求执行的指 令序列。 ➢ 数据是使程序能正常操纵信息的数据结构。 ➢ 文档是与程序开发,维护和使用有关的图文材 料。
• 软件工程知识体
➢ 软件工程已从计算机科学与技术中脱离出来,逐 渐形成了一门独立的学科。对其知识体系的研究 从20世纪90年代初就开始了。
➢ 标志是美国Embry-Riddle航空大学计算与数学 系Thomas B.Hilburn教授的“软件工程知识体 系指南”(Guide to Software Engineering Body of Knowledge,SWEBOK)研究项目。
13
1.4 软件工程方法学
面向对象方法学
➢ 是将数据和对数据的操作紧密地结合起来的方法。 ➢ 软件开发过程是多次反复迭代的演化过程。 ➢ 面向对象方法在概念和表示方法上的一致性,保
证了各项开发活动之间的平滑过渡。 ➢ 对于大型、复杂及交互性比较强的系统,使用面
向对象方法学更有优势。
14
1.5 软件工程知识体系及知识域介绍
➢ 软件工程方法与技术为软件开发提供了 “如何做” 的策略和技术;
➢ 软件工程工具与环境为软件工程方法提供了自动 的或半自动的软件支撑环境;
11Biblioteka 1.4 软件工程方法学➢ 软件工程管理与控制是将软件工程的方法和工具综 合起来,达到合理、及时地进行软件开发的目的。 管理与控制主要包括项目、配置、文档、质量、经 费、人员与进度等方面的内容。
➢ 通常将软件开发全过程中使用的一整套技术方法 的集合称为方法学(methedology),也称为范型 (paradigm)。
➢ 目前使用最广泛的软件工程方法学:传统方法学 (结构化方法学),面向对象方法学。
10
1.4 软件工程方法学
• 软件工程主要包括四个要素:方法与技术、 工具与环境、管理与控制、标准与规范。
8
1.3 软件工程的目标
• 软件工程的目标是运用先进的软件开发技术和 管理方法来提高软件的质量和生产率,也就是 要以较短的周期、较低的成本生产出高质量的 软件产品,并最终实现软件的工业化生产。
9
1.4 软件工程方法学
• 概念
➢ 软件工程包含技术和管理两方面的内容,是技术 和管理紧密结合所形成的工程学科。
6
1.2 软件工程的概念
• 1993年IEEE给出的定义: “软件工程是:① 把系统的、规范的、可 度量的途径应用于软件开发、运行和维护过 程,也就是把工程应用于软件;② 研究① 中提到的途径。”。
7
1.2 软件工程的概念
• GB/T11457—2006《软件工程术语》中 “软件工程”定义为“软件开发、运行、 维护和引退的系统方法”
➢ 软件工程标准与规范是为软件开发和管理的过程以 及软件产品规定的共同准则。
12
1.4 软件工程方法学
• 结构化方法学
也称为生命周期方法学或结构化范型。将软件生命 周期的全过程依次划分为若干个阶段,采用结构 化技术来完成每个阶段的任务。 特点: (1) 强调自顶向下顺序地完成软件开发的各阶段 任务; (2) 结构化方法要么面向行为,要么面向数据,缺 乏使两者有机结合的机制。
(1) 将原来的“软件工程工具与方法”改为“软件 工程模型与方法”。
(2) 在原来10个知识域基础上,增加了以下五个知 识域: 软件工程职业实践;软件工程经济学; 计算基础;数学基础;工程基础。
20
21
17
1.5 软件工程知识体系及知识域介绍
• 软件工程知识体系指南的内容
18
1.5 软件工程知识体系及知识域介绍
• 每个知识域又可分解为若干子知识域,如表所示。
19
1.5 软件工程知识体系及知识域介绍
• 软件工程知识体系指南的内容
➢ 2013年发布了SWEBOKV3.0版本,此版本的变 化如下:
15
1.5 软件工程知识体系及知识域介绍
• 软件工程知识体系指南的目标
(1) 促使软件工程本体知识成为世界范围的共识。 (2) 澄清软件工程与其他相关学科,如与计算机科
学、项目管理、计算机工程以及计算机数学之间 的关系,并且确定软件工程学科的范围。 (3) 反映软件工程学科内容的特征。 (4) 确定软件工程本体知识的各个专题。 (5) 为相应的课程和职业资格认证材料的编写奠定 基础。
2
1.1 软件及其发展
• 软件的发展
3
1.1 软件及其发展
• 软件的分类
➢ 系统软件 ➢ 应用软件 ➢ 工程/科学计算软件 ➢ 嵌入式软件 ➢ 产品线软件 ➢ Web应用软件 ➢ 人工智能软件
4
1.1 软件及其发展
• 软件的新范畴
➢ 开放计算—分布式计算、云计算 ➢ 普适计算—无线网络 ➢ 网络信息源—基于WEB网页的引擎 ➢ 开放源码—”免费” 开放源代码 ➢ 其他
16
1.5 软件工程知识体系及知识域介绍
• 软件工程知识体系指南的内容
➢ SWEBOK指南将软件工程知识体系划分为10个 知识域(knowledge areas,KA),分为两类 过程。
➢ 一类是开发与维护过程,包括软件需求、软件设 计、软件构造、软件测试和软件维护;
➢ 另一类是支持和组织过程,包括软件配置管理、 软件工程管理、软件工程过程、软件工程工具与 方法和软件质量。每个知识域还可进一步分解为 若干论题。
✓ 数据挖掘 ✓ 网格计算 ✓ 认知机 ✓ ……
5
1.2 软件工程的概念
• 1968年10月在北大西洋公约组织(NATO)召开 的计算机科学会议上,Fritz Bauer首次提出“软 件工程”的概念,试图将工程化方法应用于软件 开发。
• 在NATO会议上,Fritz Bauer对软件工程的定义 是:“软件工程就是为了经济地获得可靠的且能 在实际机器上有效地运行的软件,而建立和使用 完善的工程原理。”