首页 软件工程 清华 刘强

软件工程 清华 刘强

举报
开通vip

软件工程 清华 刘强清华大学软件学院刘强软件工程概述2引言Softwareengineerscanberightlyproudoftheirachievements.Withoutcomplexsoftwarewecouldnothaveexploredspace,wouldnothavetheInternetandmoderntelecommunications,andallformsoftravelwouldbemoredangerousandexpensive.Softwareengineeringhascontributeda...

软件工程 清华 刘强
清华大学软件学院刘强软件工程概述2引言Softwareengineerscanberightlyproudoftheirachievements.Withoutcomplexsoftwarewecouldnothaveexploredspace,wouldnothavetheInternetandmoderntelecommunications,andallformsoftravelwouldbemoredangerousandexpensive.Softwareengineeringhascontributedagreatdeal,andIamconvincedthat,atthedisciplinematures,itscontributionsin21stcenturywillbeevengreater.——IanSommerville3引言什么是软件?什么是软件危机?如何评价软件的质量?什么是软件工程?什么是软件过程?什么是软件工程方法?什么是软件工程工具?当前软件工程面临什么挑战?软件工程学科与哪些学科相关?4内容概要软件软件的定义与发展软件危机引起的思考软件工程软件的质量属性软件工程的基本要素软件工程的发展与挑战软件工程学科软件工程知识体系软件工程职业道德 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 5什么是软件?软件的定义软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。软件=程序+数据+文档软件的本质软件是客观世界中问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 域与求解域的具体描述,它实质上是客观事物的一种反映,是知识的“提炼”和“固化”。软件=知识+程序+数据+文档6软件的发展独立编程服务•代表:CSC•特点:为单个客户提供定制软件,包括技术咨询、软件编程和维护;软件销售是一次性的。软件产品•代表:Informatics•特点:保护知识产权,以许可证方式销售软件产品。企业解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 •代表:Oracle•特点:面向领域,以企业解决方案供应商的面目出现。面向大众的成套软件•代表:Microsoft•特点:基于个人计算,服务大众市场。网络增值服务•代表:Google•特点:向端用户收小头,向寄生在服务上的广告商要大头。软件的发展软件业务模式通用软件:Microsoft,Oracle水平应用软件:SAP,Siebel;用友、金蝶、神州数码垂直应用软件:神州数码、亚信及东软定制软件:系统集成软件行业规律通用性越高的软件,其集约效应越强,具有“胜者通吃”的特点;通用性越弱、定制性越强的软件,其垄断性、集约性就越小。桌面操作系统:微软第一占87%市场,Apple第二仅有4%份额ERP软件:排名第一的SAP和排名第二的仁科之间竞争非常激烈78软件危机软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。软件危机的具体表现软件延迟交付甚至取消项目软件开发成本超支软件错误多、性能低、不可靠、不安全软件维护十分困难……9软件危机10举例1:ARIANE5火箭1996年6月4日,Ariane5火箭在发射37秒之后偏离其飞行路径并突然发生爆炸,当时火箭上载有价值5亿美元的通信卫星。事故原因在于软件的缺陷程序中试图将64位浮点数转换成16位整数时产生溢出缺少错误处理程序对数据溢出进行管理备份软件通过复制而成11举例2:WindowsVista系统该系统从2001年开始研发,整个过程历时5年,先后有9000位开发人员投入其中,耗资60亿美元,代码规模超过5000万行。按照微软公司最初的 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 ,该系统面世时间应该在2003年,之后推迟到2004年下半年再到2005年初,最终在取消一些高级功能后于2006年11月正式发布。从VistaBeta1进入公开测试以来,程序错误总数已经超过2万个,这其中还不包括微软内部未公开的一些错误。12举例3:Therac25放射治疗仪20世纪80年代中期,Therac25放射治疗仪在美国和加拿大发生了多次医疗事故,5名患者治疗后死亡,其余患者则受到了超剂量辐射而严重灼伤。事故原因在于操作员的失误和软件的缺陷当操作员熟练操作之后,发现输入错误而马上纠正,系统则显示错误信息,操作员不得不重新启动机器。在启动机器时,计算机控制软件并没有切断X光束,病人一直在治疗台上接受着过量的X光照射。13举例4:网络蠕虫病毒1988年,美国康奈尔大学研究生莫里斯编写的蠕虫病毒,造成了数千台计算机停机。2003年1月26日,一种“2003蠕虫王”病毒横扫全球,造成网络严重堵塞、域名服务器瘫痪、网络访问迟缓、电子邮件故障、银行自动提款机停止服务、网络订票及信用卡等系统不能正常运行,直接经济损失超过12亿美元。2003年8月11日,出现所谓冲击波的网络蠕虫病毒,它以大约每小时感染2500台计算机的速度在网络中快速传播,仅两天时间感染的计算机数量就高达22.8万台。软件系统存在漏洞是造成安全隐患的主要原因。14举例5:丹佛国际机场丹佛新国际机场希望被建成现代的机场,它将拥有计算机控制的自动化行李处理系统,而且还有5300英里长的光纤网络。不幸的是,系统存在一个严重的程序缺陷,导致行李箱被绞碎,居然还开着自动行李车往墙里面钻。机场启用推迟16个月,预算超过32亿美元,并且废弃了这个自动化的行李处理系统,使用手工处理行李。15一个值得思考的问题为什么一个看似简单的东西,却很有可能变成一个落后进度、超出预算、存在大量缺陷的怪物?软件是复杂的Linux全局内核函数网络图16Linux内核有630个函数,存在1814个函数调用。图中将函数表示为节点,调用关系表示为边。软件是复杂的应用服务器支撑软件Tomcat17该软件含1019个类,类与类之间有2109个继承或聚合关系。图中将类表示为节点,关系表示为边。85年87年90年95年98年00年01年06年MS-DOS升级版本软件是演化的18“安全优先”的设计理念,引入许多新的安全机制和技术,提高用户终端的安全性…Vista改进界面、内存管理添加声音I/O的基本多媒体支持、TrueType字体…Windows3.*通过IE给系统桌面提供HTML支持…Windows95改良对硬件 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的支持并整合到桌面上…Windows98整合许多的第三方软件…WindowsXPWindows2.0借鉴MacOS…Windows2000面向商业,包含NTFS文件系统、EFS文件加密、增强硬件支持等…用户图形界面…Windows1.0Windows的功能演化软件是演化的19时间90年93年95年96年99年00年02年03年05年版本升级V1图层、色彩平衡饱和度调节V2路径…调色板标签矢量编辑…V3多次撤销色彩管理…V4V5历史概念吸取矢量图像…V6溶解滤镜图层控制+矢量编辑+…V7文字矢量化修复刷子新绘画引擎支持相机RAW1.*…RAW2.*阴影、高光颜色匹配镜头模糊滤镜实时柱状图…VCS1VCS2RAW3.*图像扭曲点恢复笔刷红眼工具镜头校正滤镜智能锐化…system7Windows3.1Windows95Windows2000/98WindowsXP/2000Photoshop软件的演化20软件是演化的软件修改对质量的冲击人们总是认为软件是容易修改的,但忽视了修改所带来的副作用不断的修改最终导致软件的退化,从而结束其生命周期理想曲线修改实际曲线失效率时间由于修改造成失效率的提高软件的失效率曲线软件是不可见的软件人员太像“皇帝的新衣”故事中的裁缝了。当我来检查软件开发工作时,所得到的回答好象对我说:我们正忙于编织这件带有魔法的织物。只要等一会儿,你就会看到这件织物是及其美丽的。但是我什么也看不到,什么也摸不到,也说不出任何一个有关的数字,没有任何办法得到一些信息说明事情确实进行得非常顺利,而且我已经知道许多人最终已经编织了一大堆昂贵的废物而离去,还有不少人最终什么也没有做出来。——F.D.Brooks,ManagerofOS/360“TheMythicalMan-Month”,19742122内容概要软件软件的定义与发展软件危机引起的思考软件工程软件的质量属性软件工程的基本要素软件工程的发展与挑战软件工程学科软件工程知识体系软件工程职业道德规范23如何评价软件质量?质量模型McCall24如何评价软件质量?良好的文档可读的代码良好的设计可重用性可靠性正确性有效性降低成本可移植性增强产品性功能性易使用易学习维护人员最终用户客户25如何评价软件质量?举例:某学生使用JAVA语言开发了一个计算器程序,可以实现加、减、乘、除四种操作。请阅读和分析该程序,并完成以下内容:(1)结合软件质量属性,综合评价该程序的质量。(2)根据以上分析,重新设计出更好的计算器程序。(3)通过这个事例,总结所获得的启示和体会。程序代码:26什么是软件工程?[Bauer,1972]软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则。[CMU,1990]软件工程是以工程的形式应用计算机科学和数学原理,从而经济有效地解决软件问题。[IEEE,1993]软件工程是①将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;②对①中所述方法的研究。27什么是软件工程?软件工程是一种解决问题的工程活动分析:将复杂的问题分解成可理解并能够处理的若干小问题进行研究和分析。合成:在分析的基础上,针对各个不同部分给出解决方案,并将这些小的构造块组合成一个大的系统。28软件工程的目标软件工程的目标在规定的时间和规定的预算内开发出高质量的软件提高软件的质量与生产率,最终实现软件的工业化生产软件工程的基本要素过程:支持软件生命周期的所有活动方法:为软件开发过程提供“如何做”的技术工具:为软件开发方法提供自动的或半自动的软件支撑环境质量方法工具过程29软件过程开发过程产品用户需求产品用户需求反馈开发过程30软件过程软件过程是一个为建造高质量软件所需完成的任务框架问题定义需求开发软件设计软件实现软件测试构想文档用例模型分析模型软件需求规格说明设计模型软件体系结构文档软件详细设计文档源程序目标代码可执行构件测试规程测试用例测试报告软件开发管理(软件项目管理计划、软件配置管理计划、软件质量保证计划、评审记录……)31软件建模分析软件工程关注系统建模求解域模型问题域模型软件建模分析举例:USB协议32抽象与规范实例化软件:USB2.0接口驱动程序本体模型:USB协议软件设计方法面向过程的设计方法:以C语言为典型代表以算法作为基本构造单元,强调自顶向下的功能分解,将功能和数据进行了一定程度的分离。面向对象的设计方法:以JAVA语言为典型代表以“类”为基本程序单元,对象是“类”的实例化,对象之间以消息传递为基本手段,封装、继承、多态成为三个重要特征。面向构件的设计方法:以XML语言为典型代表寻求比“类”的粒度更大、易于复用的“构件”,期望实现软件的再工程。3334软件开发管理软件开发团队的分工协作35软件开发管理软件开发过程的控制与管理36软件工程工具软件工程工具为软件工程方法提供了自动的或半自动的软件支撑环境,辅助软件开发任务的完成。计算机辅助软件工程(CASE)CASE是一种集成化的软件工程开发环境,覆盖了从需求分析、系统建模、代码生成、程序调试和软件测试等活动。CASE工具:只支持软件开发的某一个方面的软件产品CASE平台:一些工具的集合,共同支持一个阶段的若干开发活动CASE环境:支持整个或者大部分的软件开发过程37CASE的层次软件开发过程与管理总体设计详细设计软件测试需求分析编程问题定义软件维护分析设计工作台程序设计工作台集成化环境测试工作台CASE工具CASE工作台CASE环境38CASE工具IBMRational公司产品(http://www.rational.com/)开发过程管理:RUP需求管理:RequisitePro可视化建模:Rose自动测试:Robot,TestRealtime,TestManager,XDETester项目管理:ProjectConsole配置管理:ClearCase,ClearQuest开源CASE工具(http://sourceforge.net/)CVS,Subversion:应用广泛的版本管理工具UMLModeler:UML模型图形编辑工具UML2EJB:将XML表示的UML模型转换成EJB代码的转换器39软件工程的发展计算机60年:计算机科学从电子学中脱颖而出软件工程40年:软件工程从计算机体系结构中脱颖而出软件附属于硬件软件作为单独产品,催生软件工程面向过程面向对象面向构件面向领域面向大众50年代60年代70年代80年代90年代现在复杂系统复杂网络40软件工程面临的挑战挑战:软件在网络环境下工作用户严重依赖网络资源通过网络聚合,并提供服务软件产品的开发与演化离不开网络广大用户越来越把软件视作网络环境中的软件网络时代迫使人们软件工程寻找新的解决办法从集中的软件到分散的软件从单体软件到群体软件的交互与协同从为我所有的软件到为我所用的软件41软件工程面临的挑战挑战:需求的复杂性导致系统资源交互、建模和应用的复杂性软件工程的重点向需求转移用户主导、面向领域的需求建模偏好依附生长的模型演化机理多粒度的需求验证与优化软件间交互与协同行为网络环境下基于语义的软件资源聚合42软件工程面临的挑战60-70年代80年代90年代本世纪初面向过程面向对象面向构件面向网络服务OODOMTUMLCORBADCOMJ2EEXMLSOAPHTTPOWLUDDI时间WSDL关注域SASDSASDStructureAnalysis,Structuredesign结构化设计方法OODObject-OrientedProgramming面向对象设计UMLUnifiedModelingLanguage统一建模语言OMTObjectModelingTechnology对象建模方法CORBACommonObjectRequestBrokerArchitecture公共对象请求代理体系结构DCOMDistributeComponentObjectModel分布式组件对象模型J2EEJava2PlatformEnterpriseEditionJAVA平台企业版HTTPHypertextTransferProtocol超文本传输协议XMLExtensibleMarkupLanguage可扩展标记语言UDDIUniversalDescription,DiscoveryandIntegration统一描述、发现和集成OWLOntologyWebLanguage本体Web语言SOAPSimpleObjectAccessProtocol简单对象访问协议WSDLWebServiceDescribeLanguage网络服务描述语言43软件工程面临的挑战挑战:软件在演化中生长完善软件的正确性、可靠性、安全性、时效性、可信性、生存性等是在使用中竞争出来的,不是在工厂中一次性生产和测试出来的高可信软件开发的要求在软件的开发和运行中应保证其具有高可信的性质软件工程既要考虑单个软件单元的正确性、时效性、可靠性、可维护性、安全性,也要考虑软件单元之间的相互作用考虑复杂软件自身演化过程中的生长性,在生长过程中的偏好依附性,以及软件单元之间的聚积性44软件工程面临的挑战挑战:软件服务的兴起万维网已经迅速发展成为一个计算引擎和内容提供平台如何构建一个简单而智能的应用程序为全世界用户提供服务挑战:开源软件的模式开源软件是将系统程序源代码开放,允许用户自行修改开发某种技术使软件的局部修改更加容易和可靠45内容概要软件软件的定义与发展软件危机引起的思考软件工程软件的质量属性软件工程的基本要素软件工程的发展与挑战软件工程学科软件工程知识体系软件工程职业道德规范46软件工程知识体系(SWEBOK)47软件工程教育知识体系(SEEK)软件工程及其相关学科计算机科学和数学用于构造软件的模型与算法;软件工程设计的关键是工程设计决策,工程学将用于软件抽象的各个层次;管理学用于计划、资源、质量、成本等管理;经济学用于软件成本估算和软件过程审计;系统工程用于统筹规划和管理软件开发过程中各种资源,以期达到效率优化。48软件工程工程学系统工程管理学数学经济学计算机科学软件工程及其相关学科软件工程与计算机科学的关系计算机科学研究构成计算机和软件系统基础的有关理论和方法;软件工程将计算机作为问题求解的工具,将计算机科学、数学、工程学与管理学等基本原理应用在软件开发与维护中。4950软件工程职业道德规范软件工程不仅是技术的应用,还包括许多责任。你如何看待下面的一些行为?将公司的软件代码随意复制给其他人为了个人的利益作出不切实际的承诺使用盗版软件迫于时间压力交付缺乏严格测试的代码未经允许就在别人的机器上玩游戏和上网你的主管因为上市时间紧迫而降低了系统检验的标准你工作的单位是从事军事系统或者核武器系统的开发51IEEE/ACM职业道德准则1.公众:软件工程人员应始终与公众利益保持一致。2.客户和雇主:在与公众利益保持一致的原则下,软件工程人员应满足客户和雇主的最大利益。3.产品:软件工程人员应当确保他们的产品及其改进符合尽可能高的专业标准。4.判断:软件工程人员应当具备公正和独立的职业判断力。5.管理:软件工程管理者和领导者应拥护和倡导合乎道德的有关软件开发和维护的管理方法。6.职业:在与公众利益一致的原则下,软件工程人员应当提高职业的信誉。7.同行:软件工程人员对其同行应持平等和支持的态度。8.自我:软件工程人员应当终身学习专业知识,促进合乎道德的职业实践方法。52软件工程职业道德规范53中国软件产业的需要基础软件产业化能力差,国外品牌占主导“软件产品中国造”缺乏规范化、工程化发展模式技术创新能力不足,管理水平相对落后软件知识产权保护力度不够020406080100系统软件支撑软件应用软件国内品牌国外品牌中国软件市场构成(2005年)全球软件产业(2005年):8000亿美元中国美国西欧日本韩国印度其它2.1%中国软件产业的需要54产业的融合升级国家信息化深入生产工业化产业服务化应用简单化系统复杂化计算机系统发展软件产业结构的变化软件企业人才结构设计人员项目经理……编程人员测试人员……软件架构师方案设计师……中国软件产业的需要55软件人才是软件企业最宝贵的财富,其工作特点是创新软件人才职业要求良好的思想政治素质恪守伦理和工程职业道德掌握数学、自然科学和工程科学知识具备解决复杂工程问题的能力解决与工程有关经济、环境与社会问题良好的人际交流与合作能力具备国际视角和跨文化竞争与合作能力软件人才素质要求既要:细致、严谨、认真、甘于寂寞、乐于奉献、责任感强又要:兴趣广泛、开阔思路、善于观察自然和社会、有创新创业精神喻为:动静结合还要:过硬的技术、良好的文化底蕴和艺术素养面对软件技术的迅猛发展,软件人员要不断学习才能保持持续创新,适应工作需要和软件技术发展的势态56总结软件是客观世界中问题空间与解空间的具体描述,它追求的是表达能力强、更符合人类思维模式,具有复杂性、不可见性和可变性等本质特性。软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按照规定的预算和进度实现满足用户要求的软件产品的定义、开发、发布和维护的工程,或以之为研究对象的学科。软件工程的基本要素包括过程、方法和工具。软件工程师应该具备软件工程的基础知识和技术能力,应当对整个社会承担重要的责任,遵循本行业的职业道德规范,为软件产业的发展做出贡献。57Questions???? 软件工程概述 引言 引言 内容概要 什么是软件? 软件的发展 软件的发展 软件危机 软件危机 举例1:ARIANE5火箭 举例2:WindowsVista系统 举例3:Therac25放射治疗仪 举例4:网络蠕虫病毒 举例5:丹佛国际机场 一个值得思考的问题 软件是复杂的 软件是复杂的 软件是演化的 软件是演化的 软件是演化的 软件是不可见的 内容概要 如何评价软件质量? 如何评价软件质量? 如何评价软件质量? 什么是软件工程? 什么是软件工程? 软件工程的目标 软件过程 软件过程 软件建模分析 软件建模分析 软件设计方法 软件开发管理 软件开发管理 软件工程工具 CASE的层次 CASE工具 软件工程的发展 软件工程面临的挑战 软件工程面临的挑战 软件工程面临的挑战 软件工程面临的挑战 软件工程面临的挑战 内容概要 软件工程知识体系(SWEBOK) 软件工程教育知识体系(SEEK) 软件工程及其相关学科 软件工程及其相关学科 软件工程职业道德规范 IEEE/ACM职业道德准则 软件工程职业道德规范 中国软件产业的需要 中国软件产业的需要 中国软件产业的需要 总结 Questions?
本文档为【软件工程 清华 刘强】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
奎林
人民老师
格式:pdf
大小:2MB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2019-08-15
浏览量:2