1、2023年6月26日星期一第第1章章 软件工程概述软件工程概述授课对象 软件学院本科 40 40学时学时 课程设计课程设计2 2周周(下学期下学期)高级语言程序设计、数据结构、高级语言程序设计、数据结构、数据库技术数据库技术等等等等 授课学时授课学时先修课程先修课程 计算机科学与软件工程计算机科学与软件工程Computer ScienceCustomerTheoriesComputerFunctionProblemSoftwareEngineeringTools and Techniques to Solve Problem初步了解初步了解 工程工程?硬件工程硬件工程?软件工程软件工程?计算机
2、工程计算机工程?n 计算机工程计算机工程 Computer Engineering Computer Engineeringn 硬件工程硬件工程 Hardware Engineering Hardware Engineering 研究硬件生产和硬件管理的工程学科研究硬件生产和硬件管理的工程学科.计算机硬件及网络分析、制定设计方案、计算机硬件及网络分析、制定设计方案、选型、配置、采购、验收、安装、调试、选型、配置、采购、验收、安装、调试、运行、培训、维护运行、培训、维护 软件工程软件工程 Software Engineering Software Engineering 研究软件开发、生产和管理
3、的研究软件开发、生产和管理的 工程学科工程学科 调研、调研、可行性论证、可行性论证、正式立项正式立项、需求需求分析、项目策划、设计、编程、测试、实施、试运行、产品发布、用户培训、产品复制、销售、系统维护、版本升级.采用科学的方法指导软件的开发与维护采用科学的方法指导软件的开发与维护!初步了解初步了解n软件开发模型软件开发模型n软件开发过程,方法与技术软件开发过程,方法与技术n软件开发环境与工具软件开发环境与工具n软件管理过程(度量、成本软件管理过程(度量、成本)n软件企业文化软件企业文化 现代软件工程研究的内容现代软件工程研究的内容:软软件件开开发发既既是是一一门门科科学学,又又是是一一门门工
4、工程程,也也是是一一门门艺艺术术导读导读 第第1章绪论章绪论-提出问题提出问题第第2章章 模型模型-全局观点全局观点第第3章章 项目计划项目计划-管理观点管理观点第第4、5章分析方法章分析方法,需求分析需求分析-开发第开发第1步最重要步最重要 第第6章章 软件设计软件设计-实现的前提实现的前提 第第7章章 实现实现-初始结果初始结果 第第8章章 测试测试 质量保证质量保证-得到可交付的结果得到可交付的结果 第第9章章 维护维护-延长软件生命期延长软件生命期软件工程教材丛书软件工程教材丛书需求分析系列需求分析系列设计系列设计系列实现系列实现系列测试与度量系列测试与度量系列项目管理系列项目管理系列
5、质量管理系列质量管理系列面向对象技术系列面向对象技术系列建模语言系列建模语言系列可用性与复用系列可用性与复用系列前沿论题系列前沿论题系列软件工程软件工程软件工程软件工程 方法与技术方法与技术软件项目管理软件项目管理软件过程系列软件过程系列&张海藩张海藩,软件工程软件工程,人民邮电出版社人民邮电出版社 2002 2002年年3 3月第一版月第一版&周之英周之英,现代软件工程(上、中、下)现代软件工程(上、中、下),科学出版社科学出版社 2001 2001年年4 4月第一版月第一版&陈明陈明,软件工程学教程软件工程学教程,科学出版社科学出版社 2002 2002年年3 3月第一版月第一版&郑人杰郑
6、人杰,软件工程软件工程,清华大学出版社清华大学出版社 中文参考书中文参考书英文参考书参考书&Software Engineering Theory Software Engineering Theory and Practice(Second Edition)and Practice(Second Edition)Author:Shari Lawrence Pfleeger Author:Shari Lawrence Pfleeger (软件工程(软件工程理论与实践理论与实践,高等教育出版社)高等教育出版社)&Software Engineering A Software Engineerin
7、g A Practitioners Approach Practitioners Approach Author:Rogers.Pressman Author:Rogers.Pressman(软件工程实践者的研究方法(软件工程实践者的研究方法 机械工业出版社)机械工业出版社)基本要求v 理解理解软件工程的思想和方法软件工程的思想和方法v 掌握掌握软件开发方法和工具软件开发方法和工具v 学会学会按照工程化的方法开发和维护软按照工程化的方法开发和维护软件件v 具有具有阅读软件工程方面资料的能力阅读软件工程方面资料的能力v 为为实践实践及未来的软件开发打基础及未来的软件开发打基础听课听课复习复习阅读
8、阅读讨论讨论练习,从知到会练习,从知到会实践实践,从会到通,从会到通 知识知识方法方法能力能力 课堂教学课堂教学复习复习作业作业参考资料参考资料实践实践渗渗 透透 考试课堂小考核课堂小考核,占成绩的占成绩的 10%完成一个小型软件系统的分析、设计完成一个小型软件系统的分析、设计文档文档,阶段性成果占成绩的阶段性成果占成绩的20%考试成绩占考试成绩占 70%实践作业实践作业分析和设计下列问题之一分析和设计下列问题之一,并写出文档并写出文档.1.教学管理软件教学管理软件2.2.教学网站教学网站3.3.网上售书网上售书,网上购物网上购物4.4.超市管理超市管理5.5.食堂管理食堂管理6.6.工寓管理
9、工寓管理7.7.自选自选 第1章 软件工程的概述 基本内容基本内容:1.1 1.1 软件软件 1.2 1.2 软件工程的软件工程的概念概念 1.3 1.3 软件工程的软件工程的作用作用 1.4 1.4 软件工程的软件工程的发展发展 1.5 1.5 软件工程软件工程三要素三要素 1.6 1.6 软件工程的软件工程的目标目标1.1 1.1 软件软件1.1.1 1.1.1 软件的定义软件的定义:2020世纪五十年代世纪五十年代 软件软件=程序程序 面向过程的程序面向过程的程序=算法算法+数据结构数据结构 2020世纪六十年代世纪六十年代 软件软件=程序程序+文档文档 2020世纪七十年代世纪七十年代
10、 软件软件=程序程序+文档文档+数据数据 面向对象的程序面向对象的程序=对象对象+消息消息 面向构件的程序面向构件的程序=构件构件+构架构架 1.1.2 1.1.2 软件的特征软件的特征:软件是一个信息变换器;软件是一个信息变换器;软件是产品交付使用的载体;软件是产品交付使用的载体;软件是是被开发或设计的,而不是被制造的;软件是是被开发或设计的,而不是被制造的;软件不会磨损软件不会磨损,但维护困难。但维护困难。1.1.3 软件的应用软件的应用 *系统软件系统软件 *应用软件应用软件 *商业软件商业软件 *工程和科学计算软件工程和科学计算软件 *嵌入式软件嵌入式软件 *个人计算机软件个人计算机软
11、件 *人工智能软件人工智能软件 *基于基于web软件软件 *工具包软件工具包软件1.2 1.2 软件工程的概念软件工程的概念1.2.1 1.2.1 软件工程的提出软件工程的提出软件开发失败的例子软件开发失败的例子n 19621962年年6 6月月,美国飞向金星的第美国飞向金星的第1 1个空间探测器个空间探测器 (水手水手1 1号号)飞行中偏移了航线飞行中偏移了航线,失败了失败了.原因原因:飞舱中的导航程序中的一个语句的语义飞舱中的导航程序中的一个语句的语义错错.n 世界上精心设计的并花费巨额投资的美国阿波世界上精心设计的并花费巨额投资的美国阿波 罗罗8 8号太空飞船登月飞行计划的软件的错误号太
12、空飞船登月飞行计划的软件的错误,使使 存储器一部分信息丢失存储器一部分信息丢失;阿波罗阿波罗1414号的飞行号的飞行1010天天 中中,出现出现1818个软件错误个软件错误.原因原因:软件的可靠性问题软件的可靠性问题1963196319661966年年IBMIBM开发开发OS/360OS/360操作系统,操作系统,投资几千万美元,工作量投资几千万美元,工作量50005000多人年,多人年,拖延几年拖延几年才交付使用,而且每年要发才交付使用,而且每年要发现现 近近100100个错误。个错误。美国肯尼迪发射的一枚美国肯尼迪发射的一枚“阿脱拉斯火箭阿脱拉斯火箭,当飞地面几十英里高空时当飞地面几十英里
13、高空时,翻转翻转.地面控地面控制中心被迫下令炸毁制中心被迫下令炸毁,结果损失结果损失18501850万万 美元美元 原因原因:飞行计划程序漏掉一个飞行计划程序漏掉一个“连连”接接字符字符通过比较,支持通过比较,支持“美国航天飞机美国航天飞机”的软件的软件由由3 3 百万行代码组成,包括地面控制发射和飞百万行代码组成,包括地面控制发射和飞行行 的计算机,航天飞机本身就需的计算机,航天飞机本身就需1010万行代码。万行代码。这样一个反导弹软件系统需要测试大这样一个反导弹软件系统需要测试大量量 的代码的代码.此外可靠性约束是不可能测试的。此外可靠性约束是不可能测试的。“安全临界安全临界”软件问题:安
14、全临界是指其软件问题:安全临界是指其可可 靠性至少达到靠性至少达到1010-9-9,也就说在工作,也就说在工作10109 9小时小时 内不能出现错误。为了观察可靠性程度,内不能出现错误。为了观察可靠性程度,就必须使系统至少运行就必须使系统至少运行10109 9小时不会失败。小时不会失败。但验证但验证10109 9小时不出错,需要测试小时不出错,需要测试114,000114,000 年,这实际上是不可能的。年,这实际上是不可能的。这是一种无法实现的计划。这是一种无法实现的计划。由上可看出由上可看出:n 软件需求量不断增大,复杂度越来越高,软件需求量不断增大,复杂度越来越高,软件可靠性无保障软件可
15、靠性无保障n 软件维护费用不断上升软件维护费用不断上升n 软件进度无法预测软件进度无法预测n 成本增长无法控制成本增长无法控制n 程序人员无限度地增加各个方面程序人员无限度地增加各个方面.上述原因导致了上述原因导致了60年代末的年代末的“软件危软件危机机.n一系列软件开发的失败引起人们的思考,一系列软件开发的失败引起人们的思考,n19681968年北大西洋公约组织年北大西洋公约组织(NATO)(NATO)的计算机的计算机 科学家在联邦德国的幕尼黑召开的一次计科学家在联邦德国的幕尼黑召开的一次计 算机软件国际会议上,对软件开发的方法、算机软件国际会议上,对软件开发的方法、技术进行了广泛的讨论技术
16、进行了广泛的讨论,首次提出了首次提出了“软件工程软件工程”的概念。的概念。1.2.2 1.2.2 软件工程的含义软件工程的含义 P.Wegner和和B.Boehm认为:认为:科学知识在设计和构造计算机程科学知识在设计和构造计算机程 序,序,以及开发、运作和维护这些程序所需求的以及开发、运作和维护这些程序所需求的有关文档编制中的实际应用。有关文档编制中的实际应用。IEEE(83)IEEE(83)指出:指出:软件工程是开发、运行、维护和软件工程是开发、运行、维护和修复软件的系统方法。修复软件的系统方法。IEEE(93)IEEE(93)指出:指出:软件工程是将系统化的、规范的、软件工程是将系统化的、
17、规范的、可度量的方法应用于软件的开发、运可度量的方法应用于软件的开发、运行和维护的过程,即将工程化的方法行和维护的过程,即将工程化的方法应用于软件开发中。应用于软件开发中。n 解决解决6060年代出现的软件危机年代出现的软件危机n 解决软件当前面临的技术问题解决软件当前面临的技术问题 软件可靠性、可用性、重用性、维护性等软件可靠性、可用性、重用性、维护性等等等n 告诉人们怎样去开发软件、管理软件告诉人们怎样去开发软件、管理软件 开发软件即需要开发软件即需要干哪些干哪些“活活”,”,对对“开发开发”两字做两字做 一解析一解析.如何干活如何干活,即有关开发模型和开发方法等,即有关开发模型和开发方法
18、等技技 术问题术问题.如何管理如何管理,即有关,即有关CMMCMM等管理问题等管理问题.n现代软件开发对人才的要求现代软件开发对人才的要求 系统分析人员、设计人员、软件架构师、系统分析人员、设计人员、软件架构师、软件集成人员、高层管理人员、软件集成人员、高层管理人员、中层项目经理、软件蓝领工人、中层项目经理、软件蓝领工人、实施和维护人员、实施和维护人员、软件售前人员、软件营销人员软件售前人员、软件营销人员 提高软件产品的质量提高软件产品的质量,降低软件开发的成本降低软件开发的成本.1.4 1.4 软件工程的发展软件工程的发展n 传统的软件工程时代传统的软件工程时代n 过程软件工程时代过程软件工
19、程时代n 对象软件工程时代对象软件工程时代n 构件软件工程时代构件软件工程时代n 发展方向发展方向:流水线装配软件工程的方向流水线装配软件工程的方向 发展(流水线生产,网络化,发展(流水线生产,网络化,服务化,全球化服务化,全球化)为屏蔽计为屏蔽计算机硬件算机硬件的异构性,的异构性,发展了操发展了操作系统作系统.NET/COMWeb ServicesJ2EE/EJBUNIXWindowsLinuxC/C+语言语言Java语言语言 为屏蔽操作为屏蔽操作系统和编程系统和编程语言的异构语言的异构性,发展了性,发展了支撑软件和支撑软件和中间件中间件为了屏蔽中间件之为了屏蔽中间件之间的异构性,出现间的异
20、构性,出现了了WebWeb技术。技术。Fortran语言语言为了祢补应为了祢补应用软件与现用软件与现实计算环境实计算环境之间的距离之间的距离 网网 络络 层层 综观综观 软件技术软件技术 的发展的发展应用系统应用系统操作系统操作系统支撑软件支撑软件中间件中间件 1)20世纪世纪60年代末至年代末至80年代初,围绕软件项目,年代初,围绕软件项目,开展了有关:开展了有关:软件开发风范软件开发风范 开发方法开发方法 支持工具的研究。支持工具的研究。20世纪世纪60年代末年代末 80年代初年代初 20世纪末世纪末主要特点主要特点强调技术强调技术 关注管理关注管理 “螺旋反复螺旋反复”发展阶段发展阶段2
21、)20世纪世纪80年代以来,随着软件系统规模的增大、年代以来,随着软件系统规模的增大、复杂性的提高以及在关键领域应用的开展,人复杂性的提高以及在关键领域应用的开展,人 们更加关注:们更加关注:软件生产技术的研究和实践软件生产技术的研究和实践 注重软件工程管理。注重软件工程管理。主要成果包括主要成果包括:(1)计算机辅助软件工程计算机辅助软件工程(CASE)(2)软件复用:如构件模型、复用机制等)软件复用:如构件模型、复用机制等 (3)软件过程概念以及能力成熟度模型()软件过程概念以及能力成熟度模型(CMM)1.5 1.5 软件工程三个要素:软件工程三个要素:工具工具质量焦点质量焦点 过程过程 Software engineering layers方法方法 工具工具 软件工程三个要素软件工程三个要素1.6 1.6 软件工程的目标软件工程的目标 低成本低成本 满足满足功能功能 满足满足性能性能 易于易于移植移植 维护费用维护费用低低 及时交付及时交付使用使用 简而言之,提高软件简而言之,提高软件质量质量,降低软件,降低软件 开发和维护开发和维护成本成本本章小结软件工程的概述软件工程的概述软件软件 软件工程软件工程的概念的概念软件工程软件工程的目标的目标软件工程软件工程三要素三要素方法方法 过程过程工具工具
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。