您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程-清华-刘强
清华大学软件学院刘强软件工程概述2引言Softwareengineerscanberightlyproudoftheirachievements.Withoutcomplexsoftwarewecouldnothaveexploredspace,wouldnothavetheInternetandmoderntelecommunications,andallformsoftravelwouldbemoredangerousandexpensive.Softwareengineeringhascontributedagreatdeal,andIamconvincedthat,atthedisciplinematures,itscontributionsin21stcenturywillbeevengreater.——IanSommerville3引言什么是软件?什么是软件危机?如何评价软件的质量?什么是软件工程?什么是软件过程?什么是软件工程方法?什么是软件工程工具?当前软件工程面临什么挑战?软件工程学科与哪些学科相关?4内容概要软件软件的定义与发展软件危机引起的思考软件工程软件的质量属性软件工程的基本要素软件工程的发展与挑战软件工程学科软件工程知识体系软件工程职业道德规范5什么是软件?软件的定义软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。软件=程序+数据+文档软件的本质软件是客观世界中问题域与求解域的具体描述,它实质上是客观事物的一种反映,是知识的“提炼”和“固化”。软件=知识+程序+数据+文档6软件的发展独立编程服务•代表:CSC•特点:为单个客户提供定制软件,包括技术咨询、软件编程和维护;软件销售是一次性的。软件产品•代表:Informatics•特点:保护知识产权,以许可证方式销售软件产品。企业解决方案•代表: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改良对硬件标准的支持并整合到桌面上…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公司产品()开发过程管理:RUP需求管理:RequisitePro
本文标题:软件工程-清华-刘强
链接地址:https://www.777doc.com/doc-4720891 .html