首页> 外文OA文献 >Mechanically supported design of self-stabilizing algorithms
【2h】

Mechanically supported design of self-stabilizing algorithms

机译:机械支持的设计或自稳定算法

代理获取
本网站仅为用户提供外文OA文献查询和代理获取服务,本网站没有原文。下单后我们将采用程序或人工为您竭诚获取高质量的原文,但由于OA文献来源多样且变更频繁,仍可能出现获取不到、文献不完整或与标题不符等情况,如果获取不到我们将提供退款服务。请知悉。

摘要

Het schrijven van een programma is vaak veel gemakkelijker dan te bewijzen datudeen programma doet wat het moet doen. Daarbij wordt onze samenleving steedsudafhankelijker van computers; men denke daarbij aan complexe programmatuuruddie de verkeersleiding van treinen of vliegtuigen regelt, die de administratie van deudeectenhandel bijhoudt of die besluit of de stormvloedkering al dan niet neergelatenudmoet worden.udOm de kwaliteit van programmatuur te kunnen garanderen, wordt ze uitgebreidudgetest. Dit wordt meestal gedaan met de probeer-en-faal methode, waarbij een pro-udgramma op testinvoer wordt losgelaten en er vervolgens wordt gekeken of het aan deudverwachtingen van de programmeur en klant voldoet. Deze manier van testen elimi-udneert helaas niet alle fouten. We horen dan ook vaak mensen over bugs in programma'sudpraten. Softwarefabrikanten komen regelmatig met nieuwe versies van hun produktenuddie de bugs van de vorige versie niet meer bevatten. Dat klopt vaak wel, maar helaas isudhet eerder regel dan uitzondering dat de nieuwere versie nieuwe bugs bevat. Kortom,udbugs lijken als een soort onvermijdbare erfenis in programma's voor te komen. Voorudeen programma zoals een tekstverwerking kunnen we best wel met een bug of tweeudleven, maar van een studenten-administratiesyteem verwachten we toch dat het pro-udgramma niet onbedoeld met de cijfers van de studenten omgaat. We verwachten ook,udom een paar andere voorbeelden te noemen, dat onze prive brieven die elektronischudvia het Internet worden verzonden niet per ongeluk aan het verkeerde adres wordenudafgeleverd, of dat een elektronisch besturingsysteem van een vliegtuig niet plotselingudweigert. Met de genoemde probeer-en-faal testmethode kunnen wij slechts constaterenuddat tijdens een test alles goed ging. Helaas is het veelal onmogelijk alle toestandenudwaarin een computersysteem zich kan bevinden na gaan met een test. Dat zou veeludte veel tijd kosten of is soms zelfs theoretisch nietuitvoerbaar, nog daargelaten of hetudcommercieel acceptabel zou zijn.udEen andere methode die tot een betere softwarekwaliteit kan leiden is de volledigudformele aanpak; hierbij is een programmeur verplicht om een wiskundig bewijs vanudde correctheid van zijn programma te leveren. Meestal wordt een programma hierbijudontworpen tegelijkertijd met het construeren van een bewijs dat het programma aanudde specicatie voldoet. Er wordt gebruik gemaakt van een speciaal soort wiskundeud(vaak programma-logica genoemd) voor het redeneren over eigenschappen van een pro-udgramma. Met deze methode kan men bewijzen dat een programma qua ontwerp fout-udloos is, zonder dat men het programma zelf hoeft te testen. Dit betekent nog niet datudin de praktijk het geproduceerde programma echt foutloos zal zijn, want het ontwerpudis maar een van de vele stadia |alhoewel een van de belangrijkste| in het producerenudvan software. Wel kunnen wij zeggen dat het resultaat betrouwbaarder zal zijn.udNet zoals dat wij fouten kunnen maken bij het schrijven van een programma, kun-udnen wij helaas ook fouten maken bij het geven van een bewijs. Een gecompliceerd?Page 236udprogramma vraagt meestaal ook een gecompliceerd bewijs. De kans om fouten teudmaken zal toenemen, en het is niet onwaarschijnlijk dat een denkfout die gemaaktudwordt bij het ontwerpen van een programma ook gemaakt wordt bij het construerenudvan een correctheidsbewijs voor dat programma.udParallel met het ontwikkelen van formele methoden, is ook de technologie om bewi-udjzen te kunnen veri?eren met de computer ge?evolueerd. Deze technologie noemen weudmechanisch vericatie en het computerprogramma die dat doet noemen we (niet echtudpassend) een stellingbewijzer. Een stellingbewijzer wordt gebaseerd op een handvoludaxiomas en bewijsregels. De consistentie en zinvolheid van deze axiomas en bewijs-udregels zijn veelal al uitgebreid bestudeerd en er bestaat consensus over hun consis-udtentie. Het bewijs van een nieuwe stelling kan alleen worden geconstrueerd door hetudherhaaldelijk toepassing van de bewijsregels, uitgaande van de axiomas. De juistheidudvan deze nieuwe stellingen wordt dus afgedwongen door de manier waarop ze wor-udden gebouwd. In veel stellingbewijzers kan men ook nieuwe bewijsregels denieren inudtermen van reeds bestaande (primitieve) bewijsregels. Deze nieuwe stellingen en bewi-udjstactieken zijn vaak krachtiger dan de ingebouwde en kunnen dus leiden tot kortereuden meer inzichtelijke bewijzen.udIn dit proefschrift wordt speciaal aandacht besteed aan zogenaamde gedistribueerdeudprogramma's. Een gedistribueerd programma is een programma dat bestaat uit samen-udwerkende componenten |elke component heeft meestal een eigen processor. Zulke pro-udgramma's worden heel veel gebruikt, bijvoorbeeld in het Internet waarbij computersuduit de hele wereld in een groot elektronisch netwerk worden verbonden. Boodschappenudvan de ene computer moeten, via tussen-computers, worden verstuurd naar de bestem-udmingscomputer. Op elk van deze tussen-computers draait een component van eenudrouteringsprogramma. Deze routeringsprogramma's hebben kennis van (een gedeelte)udvan de structuur van het netwerk. Omdat het netwerk voortdurend van vorm veran-uddert (er kunnen verbindingen bijkomen of wegvallen, en er kunnen tussen-computersudaangezet en uitgezet worden) moeten deze computers het netwerk zelf gebruiken omudsamen uit te vinden hoe de globale structuur is. Zo'n routeringsprogramma is eenudvoorbeeld van een gedistribueerd programma.udOmdat het vaak om veel componenten gaat die over, tussen, met en door elkaarudwerken, is het redeneren over een gedistribueerd programma moeilijk. In dit proefschriftudbestuderen we de programma-logica UNITY die speciaal ontworpen is omte redenerenudover eigenschappen van gedistribueerde programma's [CM88]. UNITY is klein en sim-udpel, en daarom aantrekkelijk. Toch is programma's ontwerpen met UNITY, in onzeudervaring, vaak erg lastig. Er ontbreekt een systematische ontwerpmethodologie, enudsommige ontwerptechnieken bleken niet ondersteund te (kunnen) worden. We hebbenuddus UNITY uitgebreid, vooral om technieken rond het opsplitsen van programma inudparallel werkende componenten beter te ondersteunen. Er worden voorbeelden gegevenudom te laten zien hoe we de specicatie van een probleem kunnen vereenvoudigen doorudeen geschikte opsplitsing te kiezen.udWe besteden daarbij vooral aandacht aan zogenaamde zelf-stabiliserende, gedis-udtribueerde programma's. Een zelf-stabiliserend programma is een programma dat hetudsysteem weer in een gewenste toestand kan brengen als het daar, door een externe?Page 237udverstoring, uit geraakt is. Ook als er tijdens dit herstellen weer nieuwe verstoringenudoptreden is dat geen probleem voor dergelijke systemen. We hebben UNITY uitge-udbreid met een reeks van stellingen om over zulke programma's te kunen redeneren. Weudbehandelen een groot voorbeeld, het zogenaamde Eerlijk en Herhaaldelijk Toepassingud(EHT) programma. Het EHT programma is een gedistribueerd programma dat eenudbepaalde klasse van problemen zelf-stabiliserend kan oplossen (uitrekenen).udDit boek is uniek omdat het niet alleen over formele methoden of over het bewi-udjzen van een of ander moeilijk programma gaat, maar omdat vrijwel alle resultatenudmechanisch geverieerd zijn met een stellingbewijzer! Onze ervaring met mechanischudvericatie wordt ook in dit boek beschreven. Mensen die ook met mechanisch veri-udcatie van gedistribueerde programma's willen beginnen zullen veel onderwerpen in ditudboek interessant vinden.udTot slot willen we benadrukken dat het beoefenen van formele methoden vereist datudprogrammeurs een goed ontwikkelde wiskundige handvaardigheid hebben. Het eectiefudopereren met een stellingbewijzer is tot nu toe, helaas, slechts voorbehouden aan eenudhandjevol specialisten. Het is begrijpelijk dat de industrie twijfelt aan de economischudwaarde van formele methoden. Toch zullen mensen vroeg of laat, naar mate wij steedsudafhankelijker worden van computers, ontdekken hoe kwetsbaar ze zijn als er foutenudin computers optreden. In de toekomst zullen mensen dus gedwongen zijn om naarudstellingbewijzers te kijken. Investeren in de technologie van mechanisch vericatie enudin het opleiden van 'formele' programmeurs, is daarom, naar onze mening, geen wegudgegooide moeite.?
机译:编写程序通常比证明程序已完成应做的工作容易得多。另外,我们的社会越来越依赖计算机。其中包括复杂的软件,该软件可调节火车或飞机的交通控制,保持证券交易的管理或决定是否应降低风暴潮的屏障。经过广泛测试。这通常通过尝试-失败方法完成,该方法包括在测试输入上发布程序,然后检查程序是否满足程序员和客户的期望。不幸的是,这种测试方式无法消除所有错误。我们经常听到人们谈论程序中的错误。软件制造商会定期发布其产品的新版本 ud,该版本不再包含以前版本的错误。这通常是正确的,但不幸的是,规则而不是例外是新版本包含新错误。简而言之, udbug似乎是程序中不可避免的遗产。对于文字处理之类的程序,我们可以忍受一两个错误,但是从学生管理系统来看,我们仍然希望该程序不会无意间处理学生的成绩。我们还希望提及其他一些例子,这些例子是:通过互联网以电子方式发送的私人信件不会被意外地发送到错误的地址,或者飞机电子控制系统不会突然失效。使用前面提到的“尝试-失败”测试方法,我们只能确定在测试过程中一切正常。不幸的是,通常不可能检查计算机系统可能处于测试中的所有状态。这将花费大量时间,或者有时甚至在理论上是不可行的,更不用说它是否在商业上可以接受。程序员需要提供其程序正确性的数学证明。通常,在构造证明程序符合规范的证据的同时设计程序。一种特殊的数学 ud(通常称为程序逻辑)用于推理程序属性。使用这种方法,您可以证明程序在设计上是完美无缺的,而不必自己测试程序。这并不意味着在实践中产生的程序将是真正完美的,因为设计只是许多阶段中的一个,尽管最重要的阶段之一是。在生产软件。 Ud正如我们在编写程序时可能会犯错误一样,不幸的是,在给出证明时我们也会犯错误。复杂的程序通常也需要复杂的证据。犯错误的可能性会增加,并且在为程序设计正确性证明时,也不太可能会在设计程序时犯下谬误。同样,能够通过计算机验证编辑的技术也在不断发展。我们称此技术为机械验证,并且进行该验证的计算机程序是(实际上不适合)一个定理。位置指针基于少量的udaxioma和证据规则。这些公理和证据规则的一致性和含义经常被广泛研究,并且对其一致性也有共识。新定理的证明只能通过从公理开始反复应用证据规则来构造。这些新主张的正确性因此通过其构建方式得到了加强。在许多定理中,也可以根据已经存在的(原始)证据规则否认新的证据规则。这些新的命题和策略通常比内置的命题和策略更强大,因此可以导致更短,更有见地的证据,因此本文特别关注所谓的分布式程序。分布式程序是由协作组件组成的程序|每个组件通常都有自己的处理器。这样的程序被广泛使用,例如在因特网中,其中来自世界各地的计算机通过大型电子网络连接。来自一台计算机的消息 ud必须通过中间计算机被发送到目标计算机。 路由程序的组件在这些中间计算机中的每一个上运行。这些路由程序具有网络结构(的一部分)的知识。由于网络的形状不断变化(连接可能丢失或丢失,并且中间计算机可能会打开和关闭),因此这些计算机必须使用网络本身来查找全局结构。这样的路由程序就是分布式程序的一个例子,因为它经常涉及许多组件,它们相互之间,彼此之间以及彼此之间相互工作,因此很难对分布式程序进行推理。在本文中,我们研究了专门设计用于推理分布式程序 overover属性的程序逻辑UNITY [CM88]。联合国小而简单,因此具有吸引力。但是,根据我们的经验,与UNITY一起设计程序通常非常困难。缺乏系统的设计方法,并且某些设计技术无法(或无法得到支持)。我们扩展了uddus UNITY,尤其是为了更好地支持将程序拆分为udparallel工作组件的技术。举例说明了如何通过选择适当的故障来简化问题的确定,我们主要关注所谓的自稳定,分布式程序。自稳定程序是一种可以在系统由于外部干扰而退出系统后使其恢复到所需状态的程序。即使在此维修过程中发生新的故障,对于此类系统也不是问题。我们通过一系列声明扩展了UNITY,以说明此类程序。我们将介绍一个很好的例子,即所谓的公平和重复申请(EHT)程序。 EHT程序是一种分布式程序,可以自我稳定(计算)某些类别的问题 Ud本书的独特之处在于它不仅涉及形式化方法或有关编辑某些困难程序的问题,但是因为几乎所有结果都使用位置指示器进行了机械验证!本书还介绍了我们在机械验证方面的经验。最后,我们想强调的是,实践形式方法需要成熟的数学家。不幸的是,迄今为止,仅少数几个专家才使用脚手架拨盘进行操作。可以理解的是,该行业对形式化方法的经济价值存有疑问。但是,随着我们越来越依赖于计算机,人们迟早会发现计算机上发生错误时他们的脆弱性。因此,将来,人们将不得不查看位置指标。因此,在我们看来,投资机械验证技术和培训“正式”程序员是不浪费的精力。

著录项

  • 作者

    Prasetya I.S.W.B.;

  • 作者单位
  • 年度 1995
  • 总页数
  • 原文格式 PDF
  • 正文语种 en
  • 中图分类

相似文献

  • 外文文献
  • 中文文献
  • 专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号