




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级软件工程
AdvancedSoftwareEngineeringE-mail:weiyan@主要教材:古天龙,软件开发的形式化方法,高等教育出版社,2005杨文龙、古天龙,软件工程(第2版),电子工业出版社,2004齐治昌,谭庆平等,软件工程(第2版),高等教育出版社,2004
CarloGhezzi,etal.软件工程基础(第2版),施平安译,清华大学出版社,2003参考教材
SoftwareEngineering,TheoryandPractice,
ShariLawrencePfleeger,Prentice-Hall,Inc.1998
陈松乔等,现代软件工程,清华大学出版社,2004
张海藩,软件工程导论(第五版),清华大学出版社,2008本章主要介绍软件、软件开发的历史、软件危机、软件工程的诞生、定义、主要研究内容,软件工程模式以及软件工程与其他学科领域的关系。第1章软件及其开发概述1.1软件开发的历史1、软件的概念
计算机世界的软件软件是能够完成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档。
软件=程序+数据+文档程序=算法+数据结构软件是计算机系统的重要组成部分;软件是逻辑产品,需要计算机硬件和系统软件的支撑;软件是计算机控制系统的指挥中枢;软件是信息转换器,它能对信息进行加工、处理或变换;软件是工具,在人们的生活、工作、休闲,在社会的经济、军事、政治、文化、科学技术、教育中发挥具大作用。2、软件的特点
软件是一种逻辑实体,具有抽象性。
软件的生产与硬件不同。
在软件的运行使用期间,没有磨损,老化问题。
软件产品不允许有误差,虽然实际上不可能没有缺陷。
软件的开发运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。
软件的开发至今尚未完全摆脱手工艺的开发方式。3、软件开发
所谓软件开发,实际上就是把现实世界的需求反映成软件的模型化并予以实现的过程。
在计算机发展的不同时期,人们对软件的认识不同,相应地,所进行的软件开发也具有不同的特点。1.2软件危机(SoftwareCrisis)软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重的问题。这些问题不仅仅是不能正常运行的软件才具有,事实上几乎所有软件都不同程度地存在这些问题。概括说,软件危机包含两方面的问题:如何开发软件,以满足不断增长、日趋复杂的需求。如何维护数量不断膨胀的软件产品。1、软件危机的主要问题2、软件危机的主要表现软件成本日益增长硬件和软件所占费用的比例图1968年,美国花费于软件的投资高达60亿美元,有些系统,特别是军用系统,软件费用要高出硬件费用好几倍,例如美国全球军事指挥控制系统的计算机硬件费用为1亿美元,而软件费用高达7.2亿美元。1980年美国政府的财政年度当中,计算机系统方面(软、硬件与服务)共耗资达570亿美元,其中320亿美元(占总数的56%)用于计算机软件方面(与同年的美国汽车行业进行简单的比较,美国是当时的世界第一汽车生产大国,汽车的年销售量为900万辆,总的销售额仅为720亿美元)。技术的进步使得计算机硬件的成本持续降低,而软件成本则不断增长,软件成本在计算机系统总成本中所占的比例呈现日益扩大的趋势.来自美国空军计算机系统的数据表明,1970年,软件费用约占总费用的60%,1975年达到72%,1980年达到80%,1985年计达到85%。这种增长的速度是惊人的。(1979年,美国的国防预算为1258亿美元,其中9%用于计算机领域,约113亿美元。在这113亿美元当中,91亿美元(约占80%)用于软件投资,仅有22亿美元用于硬件设备)。难于控制开发进度
在研究大型系统时,遇到越来越多的困难。有的系统干脆失败了,损失了大量金钱和人力;有的系统虽然完成了,但性能不理想,或推迟了许多年,经费大大超过预算。如一个大项目负责人所说:“软件人员太像皇帝新衣故事中的裁缝了。当我来检查软件开发工作时,所得到的回答好像对我说我们正忙于编织这件带有魔法的织物,只要等一会儿,你就会看到这件织物是极其美丽的。但是我什么也看不到,什么也摸不到,也说不出任何一个有关的数字;没有任何办法得到一些信息说明事情确实进行得非常顺利,而且我已经知道许多人最终已经编织了一大堆昂贵的废物而离去,还有不少人最终什么也没有作出来。”为软件开发制定进度是很困难的事情:通常我们对一个任务根据其复杂性、工作量及进度要求安排人力。如有10人月的工作量,则由一个人完成需要10个月,由10个入完成则需要一个月。但这种工作量估计方式仅对各部分工作互不干扰的情况下才适用,例如当各部分工作尚能很好地划分时,安排由不同人完成不同部分的工作。但作为整体,尚需讨论合作,这种讨论交流活动就增加了工作量。软件系统的结构很复杂,各部分附加联系极大。增加更多人工作,往往不是缩短时间进度,而是会延缓进度。
一个软件项目估计需要12人月工作量。指定由3个人,在4个月内完成。假定第1个月的任务花了两个月才完成,如仍需按时完成该怎么办呢?(1)假定此任务只有第一个月的工作量是估计错了,则到第二个工作月结束时,尚有9个人月工作量必需在两个月内完成,则需用4.5个人。需要增加2个人来进行这项工作;(2)假定此任务的工作量在每个月都是估计低了。第二月后,尚有18个人月的工作量要在两个月内完成,则需要9个人工作,即应增加6个人。一个例子:
增加人力的结果如何呢?在第一种情况下,不论新增加的人的适应能力有多强,总需要有人去帮助他了解熟悉情况。如果这些工作占用了一个月的时间,这样又有2个人月工作量是在新的计划外。同时,为了由5人共同完成工作,又需要花时间把任务重新划分成五个部。这样,又可能损失一部分已经完成的工作,所以到第三个月结束时实际上虽有5人在工作,而余留下也许至少是7个人月的工作量,使任务仍不能按时完成。如果你仍想按时完成任务,用投入更多人力的方法可能造成更坏的后果。对于一项复杂的任务,通常难于通过增加人力来缩短开发时间。Brook提出的法则“在已拖延的软件项目上增加人力只会使其更难按期完成”。这对于一般的工业产品来说是难于想象的!软件质量无法保证1985年11月21日,由于计算机软件的错误,造成纽约银行与美联储电子结算系统收支失衡,发生了超额支付,而这个问题一直到晚上才被发现,纽约银行当日帐务出现了230亿的短款。Therac-25是加拿大原子能公司AECL和一家法国公司CGR联合开发的一种医疗设备,它产生的高能光束或电子流能够杀死人体毒瘤而不会伤害毒瘤附近的人体健康组织。该设备于1982年正式投入生产和使用,在1985年6月到1987年1月的不到两年的时间里,因为软件缺陷引发了6起由于电子流或X-光束的过量使用的医疗事故,造成4人死亡、2人重伤的严重后果。美国Florida州的福利救济系统用于处理数百万受抚养儿童、食品券、医疗援助等受资助家庭接受者的资格认证,其基于巨型机系统,支持84个数据库、1390个程序、12000多个终端和个人计算机。1992年,该系统的错误使得成千上万的人收到了他们无权收到的救济,而其他成千上万急需食品券的人却排着长队等待了好几天。据后来统计,该错误导致了多支付2.6亿美元以及少支付5800万美元医疗补助的后果。1996年,欧洲航天局阿丽亚娜5型(Ariane5)火箭在发射后40秒钟后发生爆炸,发射基地上2名法国士兵当场死亡,损耗资产达10亿美元之巨,历时9年的航天计划因此严重受挫。事后专家的调查分析报告指出,爆炸原因在于惯性导航系统软件技术要求和设计的错误。
2003年5月4日,搭乘俄罗斯“联盟—TMA1”载人飞船的国际空间站第七长期考察团的宇航员们返回了地球,但在返回途中,飞船偏离了降落目标地点约460公里。据来自美国国家航空航天局的消息称,这是由飞船的导航计算机软件设计中的错误引起的。2002年6月28日,美国商务部的国家标准技术研究所(NIST:NationalInstituteofStandardsandTechnology)发表了有关软件缺陷的损失调查报告。报告表示,“据推测,由于软件缺陷而引起的损失额每年高达595亿美元。这一数字相当于美国国内生产总值的0.6%”。对于一些安全悠关的系统,软件的缺陷更是造成了灾难性的后果。随着软件在社会生活中的广泛应用,特别是各种嵌入式软件在各种智能电器中的应用,软件缺陷造成的损失将会更大。软件修改、维护困难软件的维护任务特别重。事实上,正式投入使用的商用软件,总是存在着一定数量的错误。随着时间的延伸,在不同的运行条件下,软件就会出现故障,就需要维护。这种维护与通常意义下的设备(硬件)维护是完全不同的。因为软件是逻辑元件,不是一种实物。软件故障是软件中的逻辑故障所造成的,不是硬件的“用旧”、“磨损”之类问题。软件维护不是更换某种部件,而是要纠正逻辑缺陷。当软件系统变得庞大,问题变得复杂时,常常会发生“纠正一个错误带来更多新的错误!”的问题。
BEGINNumber=0Totaltime=0Message=1WHILEMessageGETstatusIFstatus=S Totaltime=Totaltime
Current-time Number=Number+1ELSETotaltime=Totaltime+Current-time ENDIFGETMessage/”1-startthestream;0-endofthestream”ENDWHILEPRINTNumber,Totaltime/Number END软件并不像人们想象的那么易于修改!3、造成软件危机的原因规模的复杂性结构的复杂性环境的复杂性领域的复杂性交流的复杂性软件规模的复杂性
随着计算机应用的日益广泛,需要开发的软件规模越来越庞大。以美国宇航局的软件系统为例:1963年,水星计划的软件系统约有200万条指令;1967年,双子星座计划系统约为400万条指令;1973年,阿波罗计划系统达到1000万条指令;1979年,哥伦比亚航天飞机系统更是达到了4000万条指令。软件庞大的规模是引起技术上和心理上挫折的一个重要因素;此外,规模的复杂性引起了大量学习和理解上的负担。由于在需求分析及生成规格的阶段需要搜集和分析的信息数量非常巨大,从而可能会使得信息不正确或不完整,并且在审查阶段也未能检查出来。正如Leveson所认为的:几乎所有与计算机过程控制系统有关的事故都是源于这类由软件规模因素所引起的错误。软件结构的复杂性
结构复杂性体现在管理和技术两个方面。在管理方面,开发小组用来组织和管理开发活动时所采用的层次的宽度和深度,决定了用来管理系统的结构的复杂性;此外,软件开发机构内部的惯例和制度可能会改变各小组之间的信息流动,从而增加了结构复杂性。在技术方面,软件系统的模块结构愈加复杂,模块之间复杂的调用关系以及接口信息往往超过了人们所能接受的程度。这种结构的复杂性可以用模块之间的耦合度来衡量,耦合度反映了在需求变化的情况下,相应所需修改的模块的数量。
环境的复杂性
首先,运行中的软件总是受其所处环境的影响,在接收到外界环境的触发事件时,软件应该做出正确的响应。为了保证软件的可靠性,原则上必须对其所处环境有很好的理解,对外界环境可能产生的所有事件进行考虑,但这往往是难以办到的。其次,对于许多软件系统来说,人们往往缺乏对其所运行的环境特性的认识。许多系统只有当成功地运行于其环境时,才能对其环境进行很好的理解。再次,软件运行环境的多样性和异构性给软件开发者带来了更大的挑战。
领域的复杂性
软件中所操作的对象仅仅是对应用领域真实对象的模拟,因而软件开发者需要从现实世界中抽象出软件模型所需的部分,并以其为基础构建软件。但是对于有的应用领域来说,这些模拟只能是近似的。其原因可能是由于对应用领域对象的认识不完全,或者是由于该模型所具有的苛刻条件限制,或者两者兼而有之。对于一个应用工程来说,其中所使用的模型应该是具有合理的科学理论支持,并且经过良好测试的。然而在某些软件应用领域中,并不存在可以认知的模型,或者没有准确的模型来描绘相应的物理对象的几何、拓扑以及其它特征。在这种缺少准确认识的情况下,应用领域的某些方面很可能在软件中不能体现出来。同时,由于有的软件是根据近似的模型来构建的,因而这些模型不一定能反映事实情况。
交流的复杂性
由于软件庞大的规模、大量的内部结构、以及应用领域的不同属性等因素,在开发一个大型软件系统时所参与的不仅仅是单个的人,而是一个团队。该团队里的每个人参与开发过程中的一个或多个活动。此时,对于参与不同开发阶段的人来说,彼此之间明确的交流非常重要。但是,一方面,由于结构的复杂性以及开发团队的庞大等原因,团队成员之间的交流非常困难;另一方面,成员之间在进行交流时使用的媒介往往是自然语言、图、表等非形式化的方式,这些媒介很难准确地描述出所开发的产品的基本属性,并且,由于这些媒介本身所具有的二义性,往往会使开发人员产生错误的理解,这种错误将会随着开发过程的进行而逐渐蔓延开来,最终导致灾难性的后果。4、解决软件危机的途径采用工程的方法来组织和管理软件开发。导致软件工程的诞生的发展从理论上探讨程序正确性和可靠性问题。推动形式化方法的深入研究软件危机仍在继续
---影响软件质量的糊涂认识在项目的初始阶段对系统若明若暗就开始写程序认为软件是灵活的容易修改,对软件需求的改变不以为然程序调试成功标志着工作的结束程序运行前无法评价程序的质量一个软件项目给客户提交的主要是程序,而软件文档则认为可有可无、可多可少等等。虽然发布了软件标准和规范,但在实践中执行需要额外的开销,划不来虽然开发了许多软件工具,但很多开发者对使用这些工具兴趣不大为了开发软件人们不惜用重金购买最新型号的主机和工作站而不愿意购买软件工具在软件开发过程中,进度迟后就增派更多的程序员突击,赶进度………1.3软件工程1、软件工程定义“软件工程是为了以经济的手段获得能在实际机器上有效运行的、可靠的软件而确立和使用的健全的工程原理和方法”。——FritzBauer“软件工程是开发,运行,维护和修复软件的系统的方法”。—IEEE83“应用系统的、规范的和可量化的方法去开发、运行和维护软件,以及对这些方法的研究”。——IEEE93“运用现代科学技术知识来设计并构造计算机程序设计及为开发,运行和维护这些程序所必须的相关文件资料”。——Boehm“软件工程学是为在成本限额以内按时完成开发和修改软件产品所需的系统生产和维护的技术和管理的学科”。——Fairely软件工程是以借鉴传统工程的原则、方法,以提高质量,降低成本为目的指导计算机软件开发和维护的工程学科。软件工程包括四个要素:方法、工具、过程和语言
方法
是完成软件开发的各项任务的技术方法。工具是为运用方法而提供的自动或半自动的支撑环境。过程是为获得高质量的软件所需要完成的以一系列任务的框架。语言用以支持软件的分析、设计和实现。软件工程的要素
付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发工作,及时交付使用软件工程的基本目标软件工程目标之间的相互关系图低开发成本易于维护按时交付高可靠性高性能互斥关系互补关系2软件工程发展简史20世纪60年代:开发方法--“功能性程序设计”,编程无章法,随意性很大类似于智力游戏,依赖于才智与技巧。软件开发远远满足不了社会发展的需求,出现了一场“软件危机”。在理论上--1968年10月北大西洋公约组织(NATO)的科学委员会提出了软件危机问题,认为这将是影响计算机应用发展的瓶颈,从而提出“软件工程”问题。技术的目标--如何扩大程序系统的规模,以适应更复杂的应用。20世纪70年代:开发技术:1)从程序中分离出数据结构与算法。2)进一步把结构化程序设计方法发展成结构化开发方法,包括结构化分析方法及结构化设计方法。在理论上:1)数据结构,算法理论。2)形式方法——用推理及逻辑断言等对程序正确性进行验证。3)软件工程方法:开始提出软件开发模型——瀑布模型及相应的结构化分析、设计、编程及测试方法。技术的目标:要解决软件危机。要求在时间、费用、质量三要素的工程要求下有序地完成项目。20世纪80年代:开发方法:由单纯的编程技术转向构造系统的方法。提出一套记号表示法及步骤来描述、定义、分析、验证系统的结构。而管理复杂的文档资料及规格说明成为管理系统结构的主要手段。理论成就:关系数据库的关系理论。此外,软件开发技术中的度量问题受到重视。最著名的有软件工作量估计COCOMO,软件过程改进模型CMM(软件过程能力成熟度模型)等。技术的目标:要求大幅度提高个人的生产率(Windows所提供的能力);提倡发展软件复用;面向对象技术的重新崛起。20世纪90年代:开发方法:基于部件的开发方法;Internet是遍布全世界的一个巨大的计算机网络,Java语言的诞生正是应允了这个要求。Java语言有着很好的网上移植性、安全性、并且在编程难度上,也较C,C++语言简单。基于Internet/web技术的软件开发成为这一时期的最主要特点。开发技术的研究焦点是部件的互连及集成问题。因此,研究软件体系结构、软件设计模式、标准化问题、协议、集成等,已成为焦点。理论成就:以研究封闭的系统转向一个开放的不断进化的系统。提出了一类“交互模型”作为计算的基础。目标--JUSTINTIMEINFORMATION。即要在正确的时刻,把正确的信息,安全地送到正需要信息的人处。可以预料软件工程的重要性还要继续增加:经济原因:全球的软件开销已经从1985年的1400亿美元上升到2000年的8000亿美元。软件渗透到整个社会中,越来越多的软件用于控制各种机器(如飞机、医疗设备等)的关键功能,支持全球范围的关键功能(如电子商务等),这一事实保证了社会越来越对可靠的软件感兴趣。毫无疑问,如何更好地构造更加完美的软件仍然是一个重要的问题。3软件工程基本原理1983年,B.W.Boehm总结出七条基本原理:用分阶段的生命周期计划严格管理。坚持进行阶段评审。实施严格的产品控制。采用现代程序设计技术。结果应能清楚地审查。开发小组的成员应该少而精。承认不断的改进软件工程实践的必要性。4软件工程的主要内容软件开发模型软件开发方法软件工程过程软件工具软件开发环境软件工程标准软件工程经济学软件开发模型模型是软件开发全部过程、活动和任务的结构框架。例如软件开发方法瀑布模型、进化模型、螺旋模型及喷泉模型等。
方法是软件开发过程所遵循的办法和步骤。开发过程一般包括需求、设计、实现、确认等活动。目前,主要针对需求和设计,提出了各种方法,其中典型的有:结构化方法、面向数据结构方法、面向对象方法等。软件开发方法软件工程过程软件生存周期所涉及的一系列相关过程。软件过程主要针对软件生产和管理进行研究。软件过程可概括为三类:基本过程类---基本过程类包括获取过程、开发过程、运作过程、维护过程和管理过程。支持过程类---支持过程类包括文档过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审计过程以及问题解决过程。组织过程类---基础设施过程、改进过程以及培训过程。软件工具用来辅助软件开发、维护和管理的软件。项目管理工具:支持项目管理活动的工具。配置管理工具:支持完成配置项标识、版本控制、变化控制、审计和状态统计等任务的工具。分析和设计工具:辅助建立软件的系统模型和设计的工具。程序设计工具:包括常规的编码工具。测试工具:可以分为数据获取工具、静态分析工具、动态分析工具、模拟工具以及测试管理工具等。维护工具:支持软件维护的工具。软件开发环境
支持软件产品生产的软件系统。该环境由集成机制和工具集组成。集成机制主要实现工具的集成,使之能够系统、有效地支持软件开发。集成机构---由环境信息库、过程控制和消息服务器、用户界面组成。工具集---包括支持软件开发模型和方法的工具,如支持瀑布模型和结构化方法的分析工具、设计工具、编码工具、测试工具等,还可包括一些工程管理和工程支持的工具。软件工程标准根据软件工程标准制订的机构和标准适用的范围有所不同,它可分为五个级别:国际标准国家标准行业标准企业(机构)标准项目(课题)标准国际标准
由国际联合机构制订和公布,提供各国参考的标准。例如,国际标准化组织ISO(InternationalStandardsOrganization)。国家标准
由政府或国家级的机构制订或批准,适用于全国范围的标准,如:GB—“国标”;ANSI(AmericanNationalStandardsInstitute)—美国国家标准协会);FIPS(NBS)[FederalInformationProcessingStandards(NationalBureauofStandards)]—美国商务部国家标准局联邦信息处理标准。BS(BritishStandard)—英国国家标准。JIS(JapaneseIndustrialStandard)—日本工业标准。行业标准
由行业机构、学术团体或国防机构制订,并适用于某个业务领域的标准。例如,美国电气和电子工程师学会IEEE(InstituteofElectricalandElectronicsEngineers)软件工程经济学从经济学的观点来研究、分析如何有效地开发、发布软件产品和支持用户使用。成本估算技术与成本估算模型的建立和使用软件工程中不同决策的成本-效益分析多目标决策分析不确定性的处理和风险分析工期估计和控制文档要使软件开发过程工程化,有计划、有组织地管理和实施质量保证,必须靠文档化的控制管理和检测标准,文档起到十分关键的作用,它是其规范的体现和指南,也是软件开发过程的主要软件配置之一。按照规范要求生成一套完整的文档,就是按照软件开发规范完成一个软件质量保证的过程。在软件的开发过程中的文档有可行性研究报告;项目开发计划;软件需求说明书;数据要求说明书;概要设计说明书;详细设计说明书;用户手册;操作手册;测试计划;测试分析报告;开发进度月报;项目开发总结报告;维护修改建议等。软件文档的作用提高软件开发过程的能见度。提高开发效率。作为开发人员在一定阶段的工作成果和结束标志。记录开发过程中的有关信息,便于协调以后的软件、开发、使用和维护。提供对软件的运行、维护和培训的有关信息,便于管理人员、开发人员、操作人员、用户之间的协作、交流和了解。便于潜在用户了解软件的功能、性能等各项指标,为他们选购符合自己需要的软件提供依据。文档在各类人员、计算机之间的多种桥梁作用软件开发管理人员软件开发人员维护人员用户计算机测试人员1.4软件工程模式(生存周期模型)软件生存周期软件生存周期模型1、软件生存周期软件生存周期是指软件产品或软件系统从定义、开发、使用、维护直到最终被淘汰的整个全过程。需求:包括问题分析和需求分析,问题分析获取需求规程说明,需求分析生成功能规格说明;设计:包括概要设计和详细设计,概要设计建立整个软件体系结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义;详细设计产生程序员可用的模块说明,即数据结构说明及加工描述;实现:是把设计结果转换为可执行的程序代码;测试:包括单元测试、集成测试和确认测试,这些测试活动的目的就是使软件系统达到需求阶段提出的各项要求;维护:是对投入运行的软件进行修改,使软件系统能适应外界环境的变化、实现功能扩充和质量改善。2、软件工程模式软件工程模式:是为了获得高质量软件所需要完成的一系列任务的框架,规定了完成各项任务的工作步骤。又称为软件生存期模型、软件过程等。软件工程模式具有双重作用:在一个项目中在应当实现的各种技术活动方面为软件工程师提供指南。为软件开发和维护的管理提供了一个框架,为保证软件质量和协调软件变化必须采取的管理措施,标志完成相应开发活动的里程碑。瀑布模型维护开发定义DefinitionFeasibilityStudyRequirementsAnalysisProgramDesignCoding&ModuleTestingIntegration&SystemTestingDelivery&MaintenanceSystemDesign瀑布模型需求分析验证规格说明验证设计验证编码测试综合测试维护变化的需求验证
实际的瀑布模型原型开发模型快速原型验证规格说明验证设计验证编码测试综合测试维护变化的需求验证
原型系统是软件开发人员与用户沟通强有力的工具螺旋模型原型1原型2原型3可运行原型需求计划生存期计划开发计划集成与测试软件需求需求确认设计确认与验证软件产品设计详细设计风险分析风险分析风险分析验收测试实现集成与测试单元测试编码开发、验证下一产品实施工程提交线评审累计成本风险分析评价方案,识别风险、消除风险制订计划决定目标方案和限制客户评估增量模型需求分析验证规格说明验证总体设计验证针对每个构件,完成详细设计、编码和集成,经测试后交付给用户维护
把软件产品作为一系列增量构件来设计、编码、集成和测试。每个构件由若干相互协作的模块构成,并且能够完成相对独立的功能。四代技术(4GT)需求分析设计策略用4GT实现测试混合模型可以将几种不同的模型组合成为一种混合的模型,因而允许一个项目沿着最有效的路径发展。在混合模型中,多种开发模式提供了一种适用于各种具体系统、环境或机构的灵活结构,使每个模式的长处得以发挥。混合模型将若干开发模式的组合方式有若干种。面向对象的生存期模型进一步开发运行状态集成和测试阶段编码阶段面向对象设计阶段面向对象分析阶段陈述需求阶段维护期喷泉模型是典型的面向对象生命周期模型,充分体现了面向对象软件开发过程迭代和平滑过渡的特性。统一软件开发过程(UnifiedProcess)初始阶段细化阶段构造阶段移交阶段产品版本时间周期1消亡周期2周期n诞生产品版本时间基于构件的软件开发(CBD)
CBD是面向结构的,在软件重用和面向对象技术基础上发展起来的。即使用可重用的软件构件来设计和构造基于计算机的软件系统。重用又称复用,是利用已有的技术模块不作修改或稍加改动,重新组装形成新的软件系统。软件重用的内容:
软件开发方法论、软件需求规格说明和设计、源代码模块和操作、文档、分析数据、测试方案、测试用例、维护信息、软件开发环境等。实现软件重用,一般要解决如下问题:
重用软件(构件)的开发
应用系统如何构造和组装软件重用的级别:
重用数据、重用模块代码、重用设计、重用规格说明1.5软件工程与其他学科领域的关系
软件工程作为一门独立的学科,已经发展成为计算机科学的一个重要的领域(按市场需求将计算机学科划分为4个分支:计算机科学、计算机工程、软件工程和信息系统)。软件工程与计算机科学及很多其它领域之间确实存在相互促进的关系,这些领域既影响软件工程,又受软件工程的影响。程序设计语言是软件开发时所用的主要工具,因此对于我们能够多好地实现软件工程目标有着深远的影响,反之这些目标又影响着程序设计语言的开发。软件工程对程序设计语言的影响:如程序设计语言加入了模块化特征、独立的且互不依赖的编译、规范与实现的分离等。程序设计语言对软件工程的影响:如精确地描述需求和设计思想需要语言进行严格描述、为语言处理所开发的实现技术。软件工程与程序设计语言的关系操作系统对软件工程的影响非常巨大,因为操作系统是建立的第一个真正的大型系统,很多最初的软件设计思想起源于早期建造操作系统的尝试。虚拟机、抽象层以及策略与机制的分离都是操作系统领域开发的概念,普遍适用于任何大型软件系统。软件工程技术对操作系统结构的影响可以从可移植的操作系统中体现出来,操作系统按结构化进行组织,它包含一部分小型的“受保护的”微内核,提供了与硬件交互的最低限度的功能,还包含一部分“未受保护的”内核,提供了先前与操作系统关联的大部分功能。软件工程与操作系统的关系数据库领域对软件工程的最重要的影响在于“数据独立”概念,数据库允许应用程序在使用数据时不必考虑基本数据表示;允许数据库系统被用作大型软件系统的组件。软件工程对数据库技术的影响源于最初尝试用数据库来支持软件开发环境,软件工程需要非常长的事务,促进了数据库领域的进步,涉及到从新的数据库和事务模型到适应最新的模型。软件工程与数据库的关系在人工智能研究领域中建造的很多软件系统都是大型复杂系统。软件工程技术一直用于专家系统和人工智能系统,这些系统按模块化进行组织,在系统“已知”的事实和系统处理事实所用的规则之间进行明确的分离。人工智能提出的技术包括在软件规范和程序设计语言中使用逻辑。以人工智能技术来改进软件工程任务,如“编程助手”。通过自然语言建立用户接口的认知模型影响了软件工程的用户接口设计。软件工程与人工智能的关系理论计算机科学开发了许多模型,已经成为软件工程中有用的工具。如有穷自动机、下推自动机、Petri网、数理逻辑等。软件工程影响了计算机科学理论。代数规范和抽象数据类型理论都是在软件工程的需求推动下形成的。如在规范领域,理论家更关心一阶逻辑理论而不关心高阶逻辑理论,软件工程师即对理论功能感兴趣,也对理论的表达力感兴趣,由于软件工程的需要,点燃了理论家们对高阶逻辑理论的兴趣。软件工程与理论模型的关系与任何一种大型的、多人进行的工作一样,软件开发需要做项目预算、制定项目进度、人力资源规划、任务分解分配及项目跟踪等工作,管理科学正好研究这些问题,可以借鉴管理科学的研究成果。软件工程为管理科学提供了一个新的领域,以测试管理理论和模型。软件工程与管理科学的关系系统工程领域涉及到研究复杂系统。复杂系统是由许多相互有复杂关系的组件组成的,系统工程试图发现适用于不同系统的公共主题。软件通常是一个更大的系统的一个组件,系统工程技术可以应用于这种系统的研究,对于一个上千个模块组成的软件系统,可以认为它是一个遵循系统工程规律的候补复杂系统。另一方面,通过扩展系统工程的分析模型集,系统工程的研究内容更丰富了。软件工程与系统工程的关系第一节活塞式空压机的工作原理第二节活塞式空压机的结构和自动控制第三节活塞式空压机的管理复习思考题单击此处输入你的副标题,文字是您思想的提炼,为了最终演示发布的良好效果,请尽量言简意赅的阐述观点。第六章活塞式空气压缩机
piston-aircompressor压缩空气在船舶上的应用:
1.主机的启动、换向;
2.辅机的启动;
3.为气动装置提供气源;
4.为气动工具提供气源;
5.吹洗零部件和滤器。
排气量:单位时间内所排送的相当第一级吸气状态的空气体积。单位:m3/s、m3/min、m3/h第六章活塞式空气压缩机
piston-aircompressor空压机分类:按排气压力分:低压0.2~1.0MPa;中压1~10MPa;高压10~100MPa。按排气量分:微型<1m3/min;小型1~10m3/min;中型10~100m3/min;大型>100m3/min。第六章活塞式空气压缩机
piston-aircompressor第一节活塞式空压机的工作原理容积式压缩机按结构分为两大类:往复式与旋转式两级活塞式压缩机单级活塞压缩机活塞式压缩机膜片式压缩机旋转叶片式压缩机最长的使用寿命-
----低转速(1460RPM),动件少(轴承与滑片),润滑油在机件间形成保护膜,防止磨损及泄漏,使空压机能够安静有效运作;平时有按规定做例行保养的JAGUAR滑片式空压机,至今使用十万小时以上,依然完好如初,按十万小时相当于每日以十小时运作计算,可长达33年之久。因此,将滑片式空压机比喻为一部终身机器实不为过。滑(叶)片式空压机可以365天连续运转并保证60000小时以上安全运转的空气压缩机1.进气2.开始压缩3.压缩中4.排气1.转子及机壳间成为压缩空间,当转子开始转动时,空气由机体进气端进入。2.转子转动使被吸入的空气转至机壳与转子间气密范围,同时停止进气。3.转子不断转动,气密范围变小,空气被压缩。4.被压缩的空气压力升高达到额定的压力后由排气端排出进入油气分离器内。4.被压缩的空气压力升高达到额定的压力后由排气端排出进入油气分离器内。1.进气2.开始压缩3.压缩中4.排气1.凸凹转子及机壳间成为压缩空间,当转子开始转动时,空气由机体进气端进入。2.转子转动使被吸入的空气转至机壳与转子间气密范围,同时停止进气。3.转子不断转动,气密范围变小,空气被压缩。螺杆式气体压缩机是世界上最先进、紧凑型、坚实、运行平稳,噪音低,是值得信赖的气体压缩机。螺杆式压缩机气路系统:
A
进气过滤器
B
空气进气阀
C
压缩机主机
D
单向阀
E
空气/油分离器
F
最小压力阀
G
后冷却器
H
带自动疏水器的水分离器油路系统:
J
油箱
K
恒温旁通阀
L
油冷却器
M
油过滤器
N
回油阀
O
断油阀冷冻系统:
P
冷冻压缩机
Q
冷凝器
R
热交换器
S
旁通系统
T
空气出口过滤器螺杆式压缩机涡旋式压缩机
涡旋式压缩机是20世纪90年代末期开发并问世的高科技压缩机,由于结构简单、零件少、效率高、可靠性好,尤其是其低噪声、长寿命等诸方面大大优于其它型式的压缩机,已经得到压缩机行业的关注和公认。被誉为“环保型压缩机”。由于涡旋式压缩机的独特设计,使其成为当今世界最节能压缩机。涡旋式压缩机主要运动件涡卷付,只有磨合没有磨损,因而寿命更长,被誉为免维修压缩机。
由于涡旋式压缩机运行平稳、振动小、工作环境安静,又被誉为“超静压缩机”。
涡旋式压缩机零部件少,只有四个运动部件,压缩机工作腔由相运动涡卷付形成多个相互封闭的镰形工作腔,当动涡卷作平动运动时,使镰形工作腔由大变小而达到压缩和排出压缩空气的目的。活塞式空气压缩机的外形第一节活塞式空压机的工作原理一、理论工作循环(单级压缩)工作循环:4—1—2—34—1吸气过程
1—2压缩过程
2—3排气过程第一节活塞式空压机的工作原理一、理论工作循环(单级压缩)
压缩分类:绝热压缩:1—2耗功最大等温压缩:1—2''耗功最小多变压缩:1—2'耗功居中功=P×V(PV图上的面积)加强对气缸的冷却,省功、对气缸润滑有益。二、实际工作循环(单级压缩)1.不存在假设条件2.与理论循环不同的原因:1)余隙容积Vc的影响Vc不利的影响—残存的气体在活塞回行时,发生膨胀,使实际吸气行程(容积)减小。Vc有利的好处—
(1)形成气垫,利于活塞回行;(2)避免“液击”(空气结露);(3)避免活塞、连杆热膨胀,松动发生相撞。第一节活塞式空压机的工作原理表征Vc的参数—相对容积C、容积系数λv合适的C:低压0.07-0.12
中压0.09-0.14
高压0.11-0.16
λv=0.65—0.901)余隙容积Vc的影响C越大或压力比越高,则λv越小。保证Vc正常的措施:余隙高度见表6-1压铅
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论