软件工程学概述

合集下载

软件工程概述

软件工程概述
2018/7/2 计算机科学与工程学院 22
3.克服危机的途径
1968年秋季,NATO(北约)的科技委员会召集了 近50名一流的编程人员、计算机科学家和工业界巨头, 讨论和制定摆脱“软件危机”的对策。由于认识到软 件的设计、实现、维护和传统的工程规则有相同的基 础,在那次会议上首次提出了“软件工程” (software engineering)这个概念。
计算机科学与工程学院
2018/7/2
27
软件工程方法:为软件开发提供“如何做”的技术。 它包括了项目计划、需求分析、系统设计、程序实现、 测试与维护等一系列的任务。 软件工程工具:为过程和方法提供自动的或半自动的 支持。这些软件工具被集成起来,建立起一个支持软 件开发的系统,称之为计算机辅助软件工程(CASE, Computer Aided Software Engineering)。CASE集成 了软件、硬件和一个存放开发过程信息的软件工程数 据库,形成了一个软件工程环境。
2018/7/2
计算机科学与工程学院
20
2.危机的原因
①用户对软件需求的描述不精确,可能有遗漏、有二 义性、有错误,甚至在软件开发过程中,用户还提出 修改软件功能、界面、支撑环境等方面的要求。 ②软件开发人员对用户需求的理解与用户的本来愿望 有差异,这种差异必然导致开发出来的软件产品与用 户要求不一致。 ③大型软件项目需要组织一定的人力共同完成,多数 管理人员缺乏开发大型软件系统的经验,而多数软件 开发人员又缺乏管理方面的经验。各类人员的信息交 流不及时、不准确、有时还会产生误解。
2018/7/2
计算机科学与工程学院
8
故 障 率
生命 初期 "磨损"后
故 障 率
实际曲线 修改

软件工程-张海藩 编著 复习提纲1-6章

软件工程-张海藩 编著  复习提纲1-6章

第一章软件工程学概述第一节软件危机1.为了消除软件危机,20世纪60年代后期形成了新学科:计算机软件工程学。

2.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

(这些问题不是不能运行的软件才仅仅具有的,几乎所有的软件都不同程度存在这些问题。

)3.软件危机包含两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。

2.如何维护数量不断膨胀的已有软件。

4.产生软件危机的原因(page4—图1.1)1.一方面与软件本身的特点有关2.另一方面也和软件开发与维护的方法不正确有关。

5.软件不同于一般程序,它的一个显著特点是:“规模庞大”。

6.软件开发流程:1. 问题定义:(确定要求解决的问题是什么)2. 可行性研究:(决定该问题是否存在一个可行的解决办法)3. 需求分析:(深入具体的了解用户需求)进入开发时期:对软件设计概要设计详细设计编写程序(全部工作量10%—20%)测试交付使用7.软件产品的配置:包括:程序、文档、数据8.软件危机的一些典型表现:1.对软件开发成本和进度的估计常常不准确2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住4.软件常常是不可维护的5.软件通常没有适当的文档资料。

6.软件成本在计算机系统总成本中所占的比例逐年上升。

7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

第二节软件工程1.软件工程定义软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2. 软件工程方法学包含3个要素:方法、工具和过程。

3. 软件工程方法学: 1. 传统方法学2. 面向对象方法学4. 面向对象方法学的4个特点:(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。

(2)把所有的对象都划分成类(class)。

(3)按照父类(基类)与子类(派生类)的关系,把若干个相关类组成一个层次结构的系统(也成为类的等级)。

(完整word版)软件工程导论(第6版)

(完整word版)软件工程导论(第6版)

第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。

2.如何维护数量不断膨胀的已有软件。

具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。

2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。

4.软件常常是不可维护的。

5.软件通常没有适当的文档材料。

6.软件成本在计算机系统总成本中所占的比例逐年上升。

7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。

软件配置:程序、文档和数据。

软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。

软件:是程序、数据及相关文档的集合。

程序:是能够完成预定功能和性能的可执行的指令序列。

数据:是使程序能够适当地处理信息的数据结构。

文档:是开发、使用和维护程序所需要的图文资料。

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

软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。

2.软件工程的中心课题是控制复杂性。

3.软件经常变化。

4.开发软件的效率非常重要。

5.和谐地合作是开发软件的关键。

6.软件必须有效地支持它的用户。

7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。

软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。

2.坚持进行阶段评审。

3.实行严格的产品控制4.采用现代程序设计技术。

5.结构应能清楚的审查。

6.开发小组的人员应该少而精。

7.承认不断改进软件工程实践的必要性。

软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。

通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。

第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.2 技能要求软件工程专业要求学生具备良好的逻辑思维能力、系统分析与设计能力、编程实现能力、问题解决与调试能力、团队合作精神以及不断学习和创新的能力。

此外,沟通能力和项目管理能力也是软件工程师需具备的重要素质。

二、软件工程专业的就业方向2.1 软件开发工程师软件开发工程师是软件工程专业毕业生最常见的就业方向之一。

软件开发工程师主要负责软件系统的设计、编码、调试与测试工作。

他们熟悉各种编程语言和开发工具,能够按照客户需求进行软件开发并保证软件的质量。

2.2 系统分析师系统分析师负责对软件开发项目进行需求分析和系统设计。

他们与客户沟通,了解并明确客户需求,将其转化为具体的功能要求和系统设计方案。

系统分析师需要具备较强的业务分析能力和沟通能力,能够有效地协调各方利益,实现项目的顺利进行。

2.3 软件测试工程师软件测试工程师负责对软件产品进行全面而系统的测试,确保软件的质量和稳定性。

他们需要编写测试用例、执行测试计划并进行缺陷管理。

软件测试工程师需要具备优秀的问题解决能力和分析能力,能够快速定位和解决软件缺陷问题。

2.4 项目经理项目经理负责软件开发项目的规划、组织和管理以及与客户的沟通。

他们需要协调项目团队成员,合理分配任务和资源,并确保项目按时交付和达到客户要求。

项目经理需要具备较强的组织和协调能力,能够在项目管控过程中避免和解决各种问题。

第一章软件工程概述

第一章软件工程概述

第一章软件工程概述第一章软件工程概述1.1软件危机1.1.1软件危机的介绍1)软件危机在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机的典型表现:(2)用户对“已完成的”软件系统不满意的现象经常发生。

(3)软件产品的质量往往靠不住。

(4)软件常常是不可维护的。

(5)软件通常没有适当的文档资料。

(6)软件成本在计算机系统总成本中所占的比例逐年上升。

(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入趋势。

1.1.2产生软件危机的原因软件本身特点:缺乏可见性,在运行之前往往难以衡量,质量也难以评价不会因为长期使用而用坏,软件维护通常意味着修正或修改原来的设计,较难维护。

规模庞大,需分工合作,如何保证每个人的工作合在一起是极端复杂的问题。

软件开发与维护的方法不正确产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。

软件生命周期:一个软件从定义、开发、使用和维护直到最早被废弃。

软件产品必须由一个完整的配置组成(程序、文档、数据)1.1.3消除软件危机的途径正确认识计算机软件认识到软件开发是一个协同配合、共同完成的工程项目并吸取经验。

推广使用已总结的开发软件成功的技术和方法开发使用更好的软件工具1.2软件工程的介绍软件工程是指导计算机软件开发和维护的一门工程学科。

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

软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。

软件工程知识点归纳

软件工程知识点归纳

软件工程知识点归纳第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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3. 郑人杰等. 实用软件工程(第二版). 北京:清华大学出版社, 1997,4
4. 周之英. 现代软件工程 . 北京:科学出版社,1999 5.《敏捷开发方法—原则、模式与实践》 Robert C. Martin著
清华大学出版社 6.《人月神话》 弗雷德里克·布鲁克斯著 清华大学出版社
学习《软件工程》对我有什么用?
代价



早期 中期 后期 软件开发时期
引入同一修改的代价随时间变化的趋势
关于软件开发,常见的一些观点,我们看 看是否正确:
“有一个对目标的概括描述就足以着手编写程序了, 许多细节可以在以后再补充。”
“所谓软件开发就是编写程序并设法使它运行。”
“用户对软件的要求不断变化,然而软件是柔软而灵 活的,可以轻易地改动。”
迅速普及深入的发展趋势:软件产品“供不应求”。
❖ 1.1.2 产生软件危机的原因
1)软件本身特点造成; 2)软件开发与维护的方法不正确。
主要表现:
(a)忽视软件需求分析; (b)开发过程没有统一、规范的方法论的指导,文档
资料不齐全,认为软件开发就是写程序并使之运 行; (c)轻视软件维护。
❖ 在软件开发的不同阶段进行修改需要付出 其正常运行,我们的工作就结 束了。
我们拥有一套讲述如何开发软件的书籍,书中充满了标 准与示例,可以帮助我们解决软件开发中遇到的任何问 题。
在项目计划发生延迟的情况下,增加更多的程序员一定 会加快进度。
文档是软件产品的一部分,没有文档的软件就不称其为 软件。
一个成功的项目唯一提交的就是运行程序。
软件危机的典型表现:
❖ 1)对软件开发成本和进度的估计 常常很不准确:实际成本比估计 成本高出几倍甚至十几倍,实际进 度比预期进度拖延几个月甚至几年 的现象并不罕见。
❖ 2)用户对完成的软件系统不满意 的现象经常发生:软件开发人员 与用户的信息交流不充分。
❖ 3)软件产品的质量往往靠不住: 软件质量保证技术的不完善和未全 面推广。
❖软件工程时代:为了克服软件危机,适应软件发展的需要,而采用 “工程化的生产” 方式。将工程学的某些原理和方法应用在软件的设计 和开发中来,最终出现软件工程。
软件危机的最突出的爆发:
60年代美国IBM公司开发IBM360机的操作系统, 化了5000人年的工作量,完成时间一再推迟,结 果却不理想。
软件工程
张海藩 主编
➢主讲:赵春霞 电话:13937182207 Email:springshiner@
➢课程性质:考试课 学时:共72学时 实验18学时,分组进行
➢课程成绩构成:形成性成绩:40%(考勤: 10分;实验项目:20分;实验报告:10分) 终结性考核:60%
建议参考书目
“软件投入生产性运行以后需要的维护工作并不多, 而且维护是一种很容易做的简单工作。”
❖软件维护的费用占软件总费用的55%-70%
不完善的系统定义往往是导致软件项目失败的主要原因。
只有质量差的软件产品才需要维护。
在软件开发的过程中,若能推迟暴露其中的错误,则为 修复和改正错误所花费的代价就会降低。
1.(美)Shari Lawrence Pfleeger .Sofeware Engineering Theory and Practice(Second Edition).吴丹,史争印,唐 忆译. 北京:清华大学出版社,2003,8
2. (英) Ian Sommerville .Sofeware Engineering (6th Edition). 程成等译. 北京:机械工业出版社,2003,1
1.1 软件危机
软件发展的历程: ❖60年代中期以前:通用硬件相当普遍,软件却是为某个具体的应用而 编写的。采用“个体生产方式” ❖ 60年代中到70年代中:软件作坊。随着软件规模的扩大,个体生产已 经不能够满足软件生产的需要,一个软件需要由几个人协同完成,采用 “生产作坊方式” ,随着软件需求量、规模及复杂度的增大,生产作坊 的方式已经不能够适应软件生产的需要,出现所谓“软件危机”。
什么是软件?
❖ 软件是计算机系统中与硬件相互依存的 另一部分,它是包括程序,数据及其相 关文档的完整集合。
❖ 程序是按事先设计的功能和性能要求执 行的指令序列。
长远看:…… 近期:帮助你完成毕业设计及毕业论文的撰写。
思考:假如你的毕业设计是关于一个软件的设计与开发, 拿到这个题目之后,你打算怎么开展工作?
到底什么是软件工程?
第1章 软件工程学概述
❖ 1.1 软件危机 ❖ 1.2 软件工程 ❖ 1.3 软件生命周期 ❖ 1.4 软件过程 ❖ 1.5 问题定义
项目负责人Brook后来对整个过程反思,总结经验 和教训,写成了《人月神话》,被称为程序员的 “圣经”。
1968年北大西洋公约组织的计算机科学家在联邦 德国召开国际会议,讨论软件危机问题,在这次 会议上正式提出并使用了“软件工程”一词,软 件工程学由此开始研究。
1.1.1 软件危机的介绍
软件危机:计算机软件的开发和维护过程中所遇 到的一系列严重问题。(正常、不正常运行软件都 具有这种问题)
1.1.3 解决软件危机的途径
❖ 1)正确认识软件的概念。 ❖ 2)充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组
织良好、管理严密、各类人员协同配合共同完成的工程项目。 ❖ 3)充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的
原理、概念、技术和方法,特别要吸取几十年来人类从事计算机软硬件 研究和开发的经验教训。 ❖ 4)推广使用在实践中总结出来的开发软件的成功技术和方法,并研究探 索更有效的技术和方法; ❖ 5)开发和使用更好的软件工具; ❖ 6)良好的组织管理措施。
❖ 4)软件常常是不可维护的:很多程序中的错误都非常难 以改正。“可重用的软件”的目标很难实现。
❖ 5)软件通常没有适当的文档资料:缺乏必要的文档资料 或者文档资料不合格,必然给软件开发和维护带来许多严 重的困难和问题。
❖ 6)软件成本在计算机系统总成本中所占的比例逐年上升; ❖ 7)软件开发生产率提高的速度,远远跟不上计算机应用
相关文档
最新文档