软件工程课程设计.ppt_第1页
软件工程课程设计.ppt_第2页
软件工程课程设计.ppt_第3页
软件工程课程设计.ppt_第4页
软件工程课程设计.ppt_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程课程设计 Date1 软件工程软件工程 软件工程软件工程是一门研究用工程化方法构建和维护有效的、是一门研究用工程化方法构建和维护有效的、 实用的和高质量的实用的和高质量的软件软件的学科。的学科。 它涉及到它涉及到程序设计语言程序设计语言、数据库数据库、软件开发工具软件开发工具、系统系统 平台平台、标准、标准、设计模式设计模式等方面。等方面。 软件应用于多个方面。典型的软件比如有软件应用于多个方面。典型的软件比如有电子邮件电子邮件、嵌嵌 入式系统入式系统、人机界面人机界面、办公包办公包、操作系统操作系统、编译器编译器、数数 据库据库、游戏游戏等。同时,各个行业几乎都有计算机软件的等。同时,各个行业几乎都有计算机软件的 应用,比如应用,比如工业工业、农业农业、银行银行、航空航空、政府政府部门等。而部门等。而 这些应用促进了经济和社会的发展,提高人们的工作效这些应用促进了经济和社会的发展,提高人们的工作效 率,同时提升了生活质量。率,同时提升了生活质量。 软件工程师软件工程师是对应用软件创造软件的人们的统称,软件是对应用软件创造软件的人们的统称,软件 工程师按照所处的领域不同可以分为工程师按照所处的领域不同可以分为系统分析员系统分析员、软件软件 设计师设计师、系统架构师系统架构师、程序员程序员、测试员测试员等等。人们也常等等。人们也常 常用程序员来泛指各种软件工程师。常用程序员来泛指各种软件工程师。 Date2 软件工程的由来软件工程的由来 鉴于软件开发时所遭遇困境,鉴于软件开发时所遭遇困境,北大西洋公约组织北大西洋公约组织(NATONATO )在)在19681968年年举办了首次软件工程学术会议,并于会中提举办了首次软件工程学术会议,并于会中提 出出“软件工程软件工程”来界定软件开发所需相关知识,并建议来界定软件开发所需相关知识,并建议 “软件开发应该是类似工程的活动软件开发应该是类似工程的活动”。软件工程自。软件工程自19681968 年正式提出至今,这段时间累积了大量的年正式提出至今,这段时间累积了大量的研究研究成果,广成果,广 泛地进行大量的技术实践,借由泛地进行大量的技术实践,借由学术界学术界和产业界的共同和产业界的共同 努力,软件工程正逐渐发展成为一门专业努力,软件工程正逐渐发展成为一门专业学科学科。 Date3 软件工程的定义软件工程的定义 创立与使用健全的工程原则,以便经济地获得可靠且高效率的软件创立与使用健全的工程原则,以便经济地获得可靠且高效率的软件 。 应用系统化,遵从原则,可被计量的方法来发展、操作及维护软件应用系统化,遵从原则,可被计量的方法来发展、操作及维护软件 ;也就是把工程应用到软件上。;也就是把工程应用到软件上。 与开发、管理及更新软件产品有关的理论、方法及工具。与开发、管理及更新软件产品有关的理论、方法及工具。 一种知识或学科(一种知识或学科(disciplinediscipline),目标是生产品质良好、准时交货),目标是生产品质良好、准时交货 、符合预算,并满足用户所需的软件。、符合预算,并满足用户所需的软件。 实际应用科学知识在设计、建构电脑程序,与相伴而来所产生的文实际应用科学知识在设计、建构电脑程序,与相伴而来所产生的文 件,以及后续的操作和维护上。件,以及后续的操作和维护上。 使用与系统化生产和维护软件产品有关之技术与管理的知识,使软使用与系统化生产和维护软件产品有关之技术与管理的知识,使软 件开发与修改可在有限的时间与费用下进行。件开发与修改可在有限的时间与费用下进行。 建造由工程师团队所开发之大型软件系统有关的知识学科。建造由工程师团队所开发之大型软件系统有关的知识学科。 对软件分析、设计、实施及维护的一种系统化方法。对软件分析、设计、实施及维护的一种系统化方法。 系统化地应用工具和技术于开发以计算机为主的应用。系统化地应用工具和技术于开发以计算机为主的应用。 Date4 软件工程的内核知识(软件工程的内核知识(SWEBOKSWEBOK ) ACMACM 与与 IEEE Computer Society IEEE Computer Society 联合修定的联合修定的 SWEBOKSWEBOK(Software Software Engineering Body of KnowledgeEngineering Body of Knowledge)提到,软件工程领域中的内)提到,软件工程领域中的内 核知识包括:核知识包括: 软件需求(软件需求(Software requirementsSoftware requirements) 软件设计(软件设计(Software designSoftware design) 软件建构(软件建构(Software constructionSoftware construction) 软件测试软件测试(Software testSoftware test) 软件维护与更新(软件维护与更新(Software maintenanceSoftware maintenance) 软件构型管理(软件构型管理(Software Configuration Management, SCMSoftware Configuration Management, SCM) 软件工程管理(软件工程管理(Software Engineering ManagementSoftware Engineering Management) 软件开发过程(软件开发过程(Software Development ProcessSoftware Development Process) 软件工程工具与方法(软件工程工具与方法(Computer-Aided Software Engineering, Computer-Aided Software Engineering, CASECASE) 软件品质(软件品质(Software QualitySoftware Quality) Date5 软件工程与计算机科学软件工程与计算机科学 软件的开发到底是一门软件的开发到底是一门科学科学还是一门还是一门工程工程,这是一个被争,这是一个被争 论了很久的问题。实际上,软件开发兼有两者的特点。论了很久的问题。实际上,软件开发兼有两者的特点。 但是这并不意味着它们可以被互相混淆。很多人认为软但是这并不意味着它们可以被互相混淆。很多人认为软 件工程基于件工程基于计算机科学计算机科学和和信息科学信息科学就如传统意义上的工就如传统意义上的工 程学之于程学之于物理物理和和化学化学一样。在美国,大约一样。在美国,大约40%40%的的软件工软件工 程师程师具有计算机科学的学位。在世界其他地方,这个比具有计算机科学的学位。在世界其他地方,这个比 例也差不多。他们并不一定会每天使用计算机科学方面例也差不多。他们并不一定会每天使用计算机科学方面 的知识,但是他们每天都会使用软件工程方面的知识。的知识,但是他们每天都会使用软件工程方面的知识。 Date6 软件工程与计算机科学的差别11 软件工程计算机科学 目标 在时间、资源、人员这3个主要限制条件下构建满足用户需 求的软件系统。 探索正确的计算和建模方法,从而改进计算方法 本身。 产品软件(比如办公包和编译器)。 算法(比如希尔排序法)和抽象的问题(比如哲 学家进餐问题)。 进度与时 间表 软件项目都有特定的进度与时间表研究项目一般不具有设置的进度与时间表 关注点软件工程关注如何为用户实现价值。 软件理论关注的是软件本身运行的原理,比如时 间复杂度,空间复杂度,和算法的正确性。 变化程度 随着技术和用户需求的不断变化,软件开发人员必须时刻调 整自己的开发以适应当前的需求。同时软件工程本身也处于 不断的发展中。 对于某一种特定问题的正确解决方法将永远不会 改变。 需要的其 他知识 相关领域的知识。数学。 著名的探 索者和教 育家 Barry Boehm, David Parnas, and Frederick P. Brooks。 Edsger Dijkstra, 高德纳, Robert Tarjan, Peter Slater,艾伦图灵,姚期智。 著名的实 践者 John Backus, Dan Bricklin, 蒂姆伯纳斯-李, 林纳斯托瓦 兹, 理查德马修斯托曼。 无。 Date7 软件工程与计算机程序设计软件工程与计算机程序设计 软件工程存在于各种应用中,存在于软件开发的各个方软件工程存在于各种应用中,存在于软件开发的各个方 面。而面。而程序设计程序设计通常包含了程序设计和编码的反复迭代通常包含了程序设计和编码的反复迭代 的过程,它是软件开发的一个阶段。的过程,它是软件开发的一个阶段。 软件工程力图对软件项目的各个方面作出指导,从软件软件工程力图对软件项目的各个方面作出指导,从软件 的可行性分析直到软件完成以后的维护工作。软件工程的可行性分析直到软件完成以后的维护工作。软件工程 认为软件开发与各种市场活动密切相关。比如软件的认为软件开发与各种市场活动密切相关。比如软件的销销 售售,用户,用户培训培训,与之相关的软件和硬件安装等。软件工,与之相关的软件和硬件安装等。软件工 程的方法学认为一个独立的程的方法学认为一个独立的程序员程序员不应当脱离团队而进不应当脱离团队而进 行开发,同时程序的编写不能够脱离软件的需求,设计行开发,同时程序的编写不能够脱离软件的需求,设计 ,以及,以及客户客户的利益。的利益。 软件工程的发展是计算机程序设计工业化的体现。软件工程的发展是计算机程序设计工业化的体现。 Date8 软件危机软件危机 软件工程的兴起要根源于软件工程的兴起要根源于2020世纪世纪6060,7070和和8080年代的年代的软件危软件危 机机。在那个时代,很多的。在那个时代,很多的软件软件最后都得到了一个悲惨的结局最后都得到了一个悲惨的结局 。很多的。很多的软件软件项目开发时间大大超出了规划的时间表。一些项目开发时间大大超出了规划的时间表。一些 项目导致了财产的流失,甚至某些软件导致了人员伤亡。同项目导致了财产的流失,甚至某些软件导致了人员伤亡。同 时软件开发人员也发现软件开发的难度越来越大。时软件开发人员也发现软件开发的难度越来越大。 OS 360OS 360操作系统被认为是一个典型的案例。到现在为止,它操作系统被认为是一个典型的案例。到现在为止,它 仍然被使用在仍然被使用在IBMIBM360360系列主机中。这个经历了数十年,极系列主机中。这个经历了数十年,极 度复杂的软件项目甚至产生了一套不包括在原始设计方案之度复杂的软件项目甚至产生了一套不包括在原始设计方案之 中的工作系统。中的工作系统。OS 360OS 360是第一个超大型的软件项目,它使用是第一个超大型的软件项目,它使用 了了10001000人左右的程序员。人左右的程序员。Fred BrooksFred Brooks在随后他的大作在随后他的大作人人 月神话月神话(The Mythical Man-MonthThe Mythical Man-Month)中曾经承认,在他)中曾经承认,在他 管理这个项目的时候,他犯了一个价值数百万美元的错误。管理这个项目的时候,他犯了一个价值数百万美元的错误。 财产的损失:软件的错误可能导致巨大的财产损失。财产的损失:软件的错误可能导致巨大的财产损失。欧洲欧洲阿阿 里亚娜火箭里亚娜火箭的爆炸就是一个最为惨痛的教训。的爆炸就是一个最为惨痛的教训。 Date9 方法学方法学 软件工程的方法有很多方面的意义。包括项目管理,分软件工程的方法有很多方面的意义。包括项目管理,分 析,设计,程序的编写,测试和质量控制。析,设计,程序的编写,测试和质量控制。 软件设计软件设计方法可以区别为方法可以区别为重量级的方法重量级的方法和和轻量级的方法轻量级的方法 。重量级的方法中产生大量的正式。重量级的方法中产生大量的正式文档文档。 著名的重量级开发方法包括著名的重量级开发方法包括ISO 9000ISO 9000,CMMCMM,和,和统一统一 软件开发过程软件开发过程(RUPRUP)。)。 轻量级的开发过程没有对大量正式文档的要求。著名的轻量级的开发过程没有对大量正式文档的要求。著名的 轻量级开发方法包括轻量级开发方法包括极限编程极限编程(XPXP)和)和敏捷过程敏捷过程( Agile ProcessesAgile Processes)。)。 Date10 根据根据新方法学新方法学这篇文章的说法,这篇文章的说法,重量级方法重量级方法呈现的是一呈现的是一 种种“防御型防御型”的姿态。在应用的姿态。在应用“重量级方法重量级方法”的软件组织中的软件组织中 ,由于软件项目经理不参与或者很少参与程序设计,无法从,由于软件项目经理不参与或者很少参与程序设计,无法从 细节上把握项目进度,因而会对项目产生细节上把握项目进度,因而会对项目产生“恐惧感恐惧感”,不得,不得 不要求程序员不断撰写很多不要求程序员不断撰写很多“软件开发文档软件开发文档”。而。而轻量级方轻量级方 法法则呈现则呈现“进攻型进攻型”的姿态,这一点从的姿态,这一点从XPXP方法特别强调的四方法特别强调的四 个准则个准则“沟通、简单、反馈和勇气沟通、简单、反馈和勇气”上有所体现。目前有上有所体现。目前有 一些人认为,一些人认为,“重量级方法重量级方法”适合于大型的软件团队(数十适合于大型的软件团队(数十 人以上)使用,而人以上)使用,而“轻量级方法轻量级方法”适合小型的软件团队(几适合小型的软件团队(几 人、十几人)使用。当然,关于人、十几人)使用。当然,关于重量级方法重量级方法和和轻量级方法轻量级方法的的 优劣存在很多争论,而各种方法也在不断进化中。优劣存在很多争论,而各种方法也在不断进化中。 一些方法论者认为人们在开发中应当严格遵循并且实施这些一些方法论者认为人们在开发中应当严格遵循并且实施这些 方法。但是一些人并不具有实施这些方法的条件。实际上,方法。但是一些人并不具有实施这些方法的条件。实际上, 采用何种方法开发软件取决于很多因素,同时受到环境的制采用何种方法开发软件取决于很多因素,同时受到环境的制 约。约。 Date11 软件开发过程软件开发过程 软件开发过程是随着开发技术的演化而随之改进的。从软件开发过程是随着开发技术的演化而随之改进的。从 早期的瀑布式早期的瀑布式(Waterfall)(Waterfall)的开发模型到后来出现的螺旋的开发模型到后来出现的螺旋 式的迭代式的迭代(Spiral)(Spiral)开发,以致最近开始兴起的敏捷开发方开发,以致最近开始兴起的敏捷开发方 法法(Agile)(Agile),他们展示出了在不同的时代软件产业对于开,他们展示出了在不同的时代软件产业对于开 发过程的不同的认识,以及对于不同类型项目的理解方发过程的不同的认识,以及对于不同类型项目的理解方 法。法。 注意区分软件开发过程和软件过程改进之间的重要区别注意区分软件开发过程和软件过程改进之间的重要区别 。诸如像。诸如像ISO 15504, ISO 9000, CMM, CMMIISO 15504, ISO 9000, CMM, CMMI这样的这样的 名词阐述的是一些软件过程改进框架,他们提供了一系名词阐述的是一些软件过程改进框架,他们提供了一系 列的标准和策略来指导软件组织如何提升软件开发过程列的标准和策略来指导软件组织如何提升软件开发过程 的质量、软件组织的能力,而不是给出具体的开发过程的质量、软件组织的能力,而不是给出具体的开发过程 的定义。的定义。 Date12 软件工程的发展方向软件工程的发展方向 “敏捷开发敏捷开发”(Agile DevelopmentAgile Development)被认为是软件工)被认为是软件工 程的一个重要的发展。它强调软件开发应当是能够对未程的一个重要的发展。它强调软件开发应当是能够对未 来可能出现的变化和不确定性作出全面反应的。来可能出现的变化和不确定性作出全面反应的。 敏捷开发被认为是一种敏捷开发被认为是一种“轻量级轻量级”的方法。在轻量级方的方法。在轻量级方 法中最负盛名的应该是法中最负盛名的应该是“极限编程极限编程”(Extreme Extreme ProgrammingProgramming,简称为,简称为XPXP)。而与轻量级方法相对应)。而与轻量级方法相对应 的是的是“重量级方法重量级方法”的存在。重量级方法强调以开发过的存在。重量级方法强调以开发过 程为中心,而不是以人为中心。重量级方法的例子比如程为中心,而不是以人为中心。重量级方法的例子比如 CMM/PSP/TSPCMM/PSP/TSP。 面向方面的程序设计面向方面的程序设计(Aspect Oriented Aspect Oriented ProgrammingProgramming,简称,简称AOPAOP)被认为是近年来软件工程)被认为是近年来软件工程 的另外一个重要发展。这里的的另外一个重要发展。这里的方面方面指的是完成一个功能指的是完成一个功能 的对象和函数的集合。在这一方面相关的内容有的对象和函数的集合。在这一方面相关的内容有泛型编泛型编 程程(Generic ProgrammingGeneric Programming)和)和模板模板。 Date13 参考参考 F. L. Bauer, NATO Software Engineering Conference, 1968. F. L. Bauer, NATO Software Engineering Conference, 1968. IEEEIEEE标准电脑字典,标准电脑字典,610.12610.12,1990 1990 I. I. SommervilleSommerville, Software Engineering, 7th , Software Engineering, 7th ed.:Addisoned.:Addison-Wesley Longman -Wesley Longman Publishing Co., Inc. Boston, MA, USA, 2004. Publishing Co., Inc. Boston, MA, USA, 2004. S. R. S. R. SchachSchach, Software Engineering: , Software Engineering: AskenAsken Associates Pacific Palisades, CA, Associates Pacific Palisades, CA, USA, 1990. USA, 1990. B. W. Boehm, Software Engineering Economics: Prentice Hall PTR Upper B. W. Boehm, Software Engineering Economics: Prentice Hall PTR Upper Saddle River, NJ, USA, 1981. Saddle River, NJ, USA, 1981. R. R. FairleyFairley, Software Engineering Concepts: McGraw-Hill, In

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论