软件工程课程设计精.ppt
《软件工程课程设计精.ppt》由会员分享,可在线阅读,更多相关《软件工程课程设计精.ppt(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程课程设计第1页,本讲稿共14页软件工程 软件工程软件工程软件工程软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质是一门研究用工程化方法构建和维护有效的、实用的和高质量的量的软件软件的学科。的学科。它涉及到它涉及到程序设计语言程序设计语言程序设计语言程序设计语言、数据库数据库、软件开发工具软件开发工具、系统平台系统平台、标、标准、准、设计模式设计模式设计模式设计模式等方面。等方面。软件应用于多个方面。典型的软件比如有软件应用于多个方面。典型的软件比如有电子邮件电子邮件、嵌入式系统嵌入式系统、人人人人机界面机界面机界面机界面、办公包办公包办公包办公包、操作系统操作系统、编译器编
2、译器编译器编译器、数据库数据库、游戏游戏等。同时,等。同时,各个行业几乎都有计算机软件的应用,比如各个行业几乎都有计算机软件的应用,比如工业工业工业工业、农业农业、银行银行银行银行、航空航空、政府政府部门等。而这些应用促进了经济和社会的发展,提高部门等。而这些应用促进了经济和社会的发展,提高人们的工作效率,同时提升了生活质量。人们的工作效率,同时提升了生活质量。软件工程师软件工程师是对应用软件创造软件的人们的统称,软件工程师按照是对应用软件创造软件的人们的统称,软件工程师按照所处的领域不同可以分为所处的领域不同可以分为系统分析员系统分析员、软件设计师软件设计师、系统架构师系统架构师系统架构师系
3、统架构师、程序员程序员、测试员测试员测试员测试员等等。人们也常常用程序员来泛指各种软件工程师。等等。人们也常常用程序员来泛指各种软件工程师。2022/12/52第2页,本讲稿共14页软件工程的由来 鉴于软件开发时所遭遇困境,鉴于软件开发时所遭遇困境,北大西洋公约组织北大西洋公约组织北大西洋公约组织北大西洋公约组织(NATONATO)在)在19681968年年举办了首次软件工程学术会议,并于会中提出举办了首次软件工程学术会议,并于会中提出“软件工程软件工程”来界定软来界定软件开发所需相关知识,并建议件开发所需相关知识,并建议“软件开发应该是类似工程的活动软件开发应该是类似工程的活动”。软件工程自
4、软件工程自19681968年正式提出至今,这段时间累积了大量的年正式提出至今,这段时间累积了大量的研究研究成成果,广泛地进行大量的技术实践,借由果,广泛地进行大量的技术实践,借由学术界学术界学术界学术界和产业界的共同努和产业界的共同努力,软件工程正逐渐发展成为一门专业力,软件工程正逐渐发展成为一门专业学科学科学科学科。2022/12/53第3页,本讲稿共14页软件工程的定义 创立与使用健全的工程原则,以便经济地获得可靠且高效率的软件。创立与使用健全的工程原则,以便经济地获得可靠且高效率的软件。应用系统化,遵从原则,可被计量的方法来发展、操作及维护软件;也就是把工程应用应用系统化,遵从原则,可被
5、计量的方法来发展、操作及维护软件;也就是把工程应用到软件上。到软件上。与开发、管理及更新软件产品有关的理论、方法及工具。与开发、管理及更新软件产品有关的理论、方法及工具。一种知识或学科(一种知识或学科(disciplinediscipline),目标是生产品质良好、准时交货、符合预算,),目标是生产品质良好、准时交货、符合预算,并满足用户所需的软件。并满足用户所需的软件。实际应用科学知识在设计、建构电脑程序,与相伴而来所产生的文件,以及后实际应用科学知识在设计、建构电脑程序,与相伴而来所产生的文件,以及后续的操作和维护上。续的操作和维护上。使用与系统化生产和维护软件产品有关之技术与管理的知识,
6、使软件开发与修改可在有使用与系统化生产和维护软件产品有关之技术与管理的知识,使软件开发与修改可在有限的时间与费用下进行。限的时间与费用下进行。建造由工程师团队所开发之大型软件系统有关的知识学科。建造由工程师团队所开发之大型软件系统有关的知识学科。对软件分析、设计、实施及维护的一种系统化方法。对软件分析、设计、实施及维护的一种系统化方法。系统化地应用工具和技术于开发以计算机为主的应用。系统化地应用工具和技术于开发以计算机为主的应用。2022/12/54第4页,本讲稿共14页软件工程的内核知识(SWEBOK)ACMACM 与与 IEEE Computer Society IEEE Computer
7、 Society 联合修定的联合修定的 SWEBOKSWEBOK(Software Engineering Body Software Engineering Body of Knowledgeof Knowledge)提到,软件工程领域中的内核知识包括:)提到,软件工程领域中的内核知识包括:软件需求(软件需求(Software requirementsSoftware requirements)软件设计(软件设计(Software designSoftware design)软件建构(软件建构(Software constructionSoftware construction)软件测试软件
8、测试软件测试软件测试(Software testSoftware test)软件维护与更新(软件维护与更新(Software maintenanceSoftware maintenance)软件构型管理(软件构型管理(Software Configuration Management,SCMSoftware Configuration Management,SCM)软件工程管理(软件工程管理(Software Engineering ManagementSoftware Engineering Management)软件开发过程(软件开发过程(Software Development Proc
9、essSoftware Development Process)软件工程工具与方法(软件工程工具与方法(Computer-Aided Software Engineering,CASEComputer-Aided Software Engineering,CASE)软件品质(软件品质(Software QualitySoftware Quality)2022/12/55第5页,本讲稿共14页软件工程与计算机科学 软件的开发到底是一门软件的开发到底是一门科学科学还是一门还是一门工程工程,这是一个被争论了很久的,这是一个被争论了很久的问题。实际上,软件开发兼有两者的特点。但是这并不意味着它们可以问
10、题。实际上,软件开发兼有两者的特点。但是这并不意味着它们可以被互相混淆。很多人认为软件工程基于被互相混淆。很多人认为软件工程基于计算机科学计算机科学和和信息科学信息科学信息科学信息科学就如传就如传统意义上的工程学之于统意义上的工程学之于物理物理和和化学化学一样。在美国,大约一样。在美国,大约40%40%的的软件工软件工程师程师具有计算机科学的学位。在世界其他地方,这个比例也差不具有计算机科学的学位。在世界其他地方,这个比例也差不多。他们并不一定会每天使用计算机科学方面的知识,但是他们多。他们并不一定会每天使用计算机科学方面的知识,但是他们每天都会使用软件工程方面的知识。每天都会使用软件工程方面
11、的知识。2022/12/56第6页,本讲稿共14页软件工程与计算机科学的差别软件工程与计算机科学的差别11软件工程软件工程计算机科学计算机科学目标在时间、资源、人员这3个主要限制条件下构建满足用户需求的软件系统。探索正确的计算和建模方法,从而改进计算方法本身。产品软件(比如办公包和编译器)。算法(比如希尔排序法)和抽象的问题(比如哲学家进餐问题)。进度与时间表软件项目都有特定的进度与时间表研究项目一般不具有设置的进度与时间表关注点软件工程关注如何为用户实现价值。软件理论关注的是软件本身运行的原理,比如时间复杂度,空间复杂度,和算法的正确性。变化程度随着技术和用户需求的不断变化,软件开发人员必须
12、时刻调整自己的开发以适应当前的需求。同时软件工程本身也处于不断的发展中。对于某一种特定问题的正确解决方法将永远不会改变。需要的其他知识相关领域的知识。数学。著名的探索者和教育家Barry Boehm,David Parnas,and Frederick P.Brooks。Edsger Dijkstra,高德纳,Robert Tarjan,Peter Slater,艾伦图灵,姚期智。著名的实践者John Backus,Dan Bricklin,蒂姆伯纳斯-李,林纳斯托瓦兹,理查德马修斯托曼。无。2022/12/57第7页,本讲稿共14页软件工程与计算机程序设计 软件工程存在于各种应用中,存在于软
13、件开发的各个方面。而软件工程存在于各种应用中,存在于软件开发的各个方面。而程序设计程序设计通常包含了程序设计和编码的反复迭代的过程,它是软件开通常包含了程序设计和编码的反复迭代的过程,它是软件开发的一个阶段。发的一个阶段。软件工程力图对软件项目的各个方面作出指导,从软件的可行性分析软件工程力图对软件项目的各个方面作出指导,从软件的可行性分析直到软件完成以后的维护工作。软件工程认为软件开发与各种市场活直到软件完成以后的维护工作。软件工程认为软件开发与各种市场活动密切相关。比如软件的动密切相关。比如软件的销售销售,用户,用户培训培训,与之相关的软件和硬件,与之相关的软件和硬件安装等。软件工程的方法
14、学认为一个独立的安装等。软件工程的方法学认为一个独立的程序员程序员不应当脱离团队不应当脱离团队而进行开发,同时程序的编写不能够脱离软件的需求,设计,而进行开发,同时程序的编写不能够脱离软件的需求,设计,以及以及客户客户的利益。的利益。软件工程的发展是计算机程序设计工业化的体现。软件工程的发展是计算机程序设计工业化的体现。2022/12/58第8页,本讲稿共14页软件危机 软件工程的兴起要根源于软件工程的兴起要根源于2020世纪世纪6060,7070和和8080年代的年代的软件危机软件危机。在那个时代,。在那个时代,很多的很多的软件软件最后都得到了一个悲惨的结局。很多的最后都得到了一个悲惨的结局
15、。很多的软件软件项目开发时间项目开发时间大大超出了规划的时间表。一些项目导致了财产的流失,甚至某些软件导致大大超出了规划的时间表。一些项目导致了财产的流失,甚至某些软件导致了人员伤亡。同时软件开发人员也发现软件开发的难度越来越大。了人员伤亡。同时软件开发人员也发现软件开发的难度越来越大。OS 360OS 360操作系统被认为是一个典型的案例。到现在为止,它仍然被操作系统被认为是一个典型的案例。到现在为止,它仍然被使用在使用在IBMIBM360360系列主机中。这个经历了数十年,极度复杂的软件项系列主机中。这个经历了数十年,极度复杂的软件项目甚至产生了一套不包括在原始设计方案之中的工作系统。目甚
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课程设计
限制150内