SGP Systeem-geïntegreerde Programmatuur Marc Gobin Yolande Berbers Departement

Скачать презентацию SGP Systeem-geïntegreerde Programmatuur Marc Gobin Yolande Berbers Departement Скачать презентацию SGP Systeem-geïntegreerde Programmatuur Marc Gobin Yolande Berbers Departement

5f8f50ae72de86a1d7c1ec2c4aa5243d.ppt

  • Количество слайдов: 140

SGP Systeem-geïntegreerde Programmatuur Marc Gobin (&Yolande Berbers) Departement Computerwetenschappen (200 A 03. 20) (Yolande@cs. SGP Systeem-geïntegreerde Programmatuur Marc Gobin (&Yolande Berbers) Departement Computerwetenschappen (200 A 03. 20) ([email protected] kuleuven. ac. be) Yolande Berbers Systeem-geïntegreerde programmatuur slide 1

SGP n practische organisatie Marc Gobin is ziek u ik geef enkele weken les SGP n practische organisatie Marc Gobin is ziek u ik geef enkele weken les zeker 2, waarschijnlijk 3, misschien meer u slides kun je vinden via mijn home-page l http: //www. cs. kuleuven. ac. be/~yolande/ l n lessen over device drivers u die geef ik al altijd n practica: zie verder Yolande Berbers Systeem-geïntegreerde programmatuur slide 2

SGP overzicht van de cursus n karakteristieken van real-time systemen n Ada en Java SGP overzicht van de cursus n karakteristieken van real-time systemen n Ada en Java voor real-time en embedded systemen n gelijktijdige processen n het invoeren van tijd n interrupts n device drivers n petri-netten n schedulability n temporele logica Yolande Berbers Systeem-geïntegreerde programmatuur slide 3

SGP n practica 2 practica u practicum 1 individueel l schrijven van een programma SGP n practica 2 practica u practicum 1 individueel l schrijven van een programma dat gebruik maakt van gelijktijdige taken l begroot op 10 uur u practicum 2 l in groepjes van 2 l schrijven van pakket voor communicatie tussen 2 pc’s l begroot op 20 uur u er wordt een demo van de 2 practica georganiseerd u timing is afhankelijk van verloop herstel Marc Gobin l Yolande Berbers Systeem-geïntegreerde programmatuur slide 4

SGP Systeem-geïntegreerde Programmatuur deel 1: inleiding tot real-time systemen Yolande Berbers Systeem-geïntegreerde programmatuur slide SGP Systeem-geïntegreerde Programmatuur deel 1: inleiding tot real-time systemen Yolande Berbers Systeem-geïntegreerde programmatuur slide 5

SGP overview n what is a real-time system ? n what is an embedded SGP overview n what is a real-time system ? n what is an embedded system ? n concrete examples n different types of real-time & embedded systems n characteristics of real-time & embedded systems n economic importance Yolande Berbers Systeem-geïntegreerde programmatuur slide 6

SGP n wat is een real-time systeem? een computersysteem dat moet u reageren op SGP n wat is een real-time systeem? een computersysteem dat moet u reageren op externe stimuli u binnen eindige en wel bepaalde tijd n de correctheid van het systeem u niet alleen afhankelijk van het logische resultaat u ook van het tijdstip waarop dat resultaat gegeven werd n n niet op tijd reageren is even erg als foutief antwoorden in het Nederlands u ware-tijd-systemen Yolande Berbers Systeem-geïntegreerde programmatuur slide 7

SGP n wat is een ingebed systeem? een product met processor en software u SGP n wat is een ingebed systeem? een product met processor en software u software is onlosmakelijk verbonden met het product u software wordt niet apart verkocht u software biedt vaak belangrijke toegevoegde waarde u product dat een welbepaalde functie vervult n zeer veel voorbeelden in de huidige consumentenmarkt n vaak is ingebed syst. deel van groter industrieel complex u computersysteem bewaakt en/of bestuurt externe apparatuur u voorbeelden uit boek komen meestal uit deze hoek Yolande Berbers Systeem-geïntegreerde programmatuur slide 8

SGP n real-time systeem vs ingebed systeem een ingebed systeem reageert op externe stimuli SGP n real-time systeem vs ingebed systeem een ingebed systeem reageert op externe stimuli u deze reacties moeten vaak in real-time gebeuren n ingebedde systemen en real-time systemen u veel gelijkaardige karakteristieken n in het boek u real-time system == embedded system Yolande Berbers Systeem-geïntegreerde programmatuur slide 9

SGP voorbeelden van RT & ES u prime components of global infrastructure u the SGP voorbeelden van RT & ES u prime components of global infrastructure u the world’s energy supplies (oil, coal, gas, nuclear) depend on embedded systems u planes fly, and ships sail, based on embedded systems u pharmaceutical industries use embedded systems to create our drug supply u our food, drink and clean water come primarily from processes which depend on embedded systems u embedded systems are vital in car manufacturing, national and international defense, railway networks, medical equipment, telecommunications, broadcast media, . . . Yolande Berbers Systeem-geïntegreerde programmatuur slide 10

SGP n soorten real-time systemen harde real-time - systemen: absolute noodzaak om te reageren SGP n soorten real-time systemen harde real-time - systemen: absolute noodzaak om te reageren binnen een deadline u bv een vlucht-controle systeem u wanneer de deadlines erg klein zijn en de mogelijke gevolgen catastrofaal, zijn dit zeer kritische systemen (bv het besturen van bomraketten) n zachte real-time - systemen: deadline is belangrijk, maar het systeem functioneert correct ook als een deadline ‘af en toe’ gemist wordt u bv het verzamelen van gegevens bij procescontrole u vaak vermindert de waarde van een reactie wanneer deze te laat komt (maar heeft geen catastrofale gevolgen) Yolande Berbers Systeem-geïntegreerde programmatuur slide 11

SGP n soorten real-time systemen what happens if a deadline is missed u system SGP n soorten real-time systemen what happens if a deadline is missed u system fails: hard real-time u value (or utility) of the result decreases: soft real-time u value is of no benefit: firm real-time system Yolande Berbers Systeem-geïntegreerde programmatuur slide 12

SGP soorten real-time systemen n een computer systeem kan zowel harde als zachte real-time SGP soorten real-time systemen n een computer systeem kan zowel harde als zachte real-time subsystemen hebben n missen van een deadline u vaak: kost-functie geassocieerd met missen van een deadline u aangeven (in %) hoe vaak een deadline mag gemist worden Yolande Berbers Systeem-geïntegreerde programmatuur slide 13

SGP voorbeelden van RT systemen n real-time systemen voor proces-controle n real-time systemen in SGP voorbeelden van RT systemen n real-time systemen voor proces-controle n real-time systemen in een productieomgeving n real-time systemen voor communicatie, bevel en controle n veralgemening: industrieel ingebed computersystemen Yolande Berbers Systeem-geïntegreerde programmatuur slide 14

SGP n voorbeelden van RT systemen real-time systeem voor proces-controle u eenvoudig voorbeeld: zorgen SGP n voorbeelden van RT systemen real-time systeem voor proces-controle u eenvoudig voorbeeld: zorgen voor een gelijke stroming in een pijpleiding, door controle van een klep l de hoek van de klep moet aangepast worden aan de veranderingen van de inputstroming l dit moet gebeuren binnen een bepaalde tijd, of anders zal de apparatuur aan het einde van de pijp overbelast worden l Yolande Berbers dit kan best veel rekenwerk vragen Systeem-geïntegreerde programmatuur slide 15

example: simple valve control SGP interface input flow reading flow meter processing output valve example: simple valve control SGP interface input flow reading flow meter processing output valve angle valve time Yolande Berbers Systeem-geïntegreerde programmatuur slide 16

SGP n examples of real-time systems process control: general characteristics u interaction with equipment SGP n examples of real-time systems process control: general characteristics u interaction with equipment u use of sensors and actuators u use of transducers: generate an electrical signal proportional to the physical quantity being read u use of analog to digital (and digital to analog) converters Yolande Berbers Systeem-geïntegreerde programmatuur slide 17

SGP general process control operators console process control computer chemicals and materials valve temperature SGP general process control operators console process control computer chemicals and materials valve temperature transducer stirrer finished products a process control system Yolande Berbers Systeem-geïntegreerde programmatuur slide 18

SGP n voorbeelden van RT systemen real-time systeem in een productieomgeving u automatisering van SGP n voorbeelden van RT systemen real-time systeem in een productieomgeving u automatisering van allerhandelingen l verlaagt de productiekost l verhoogt de productiviteit u integratie van het volledige productieproces, van ontwerp van een product tot fabricatie u gebruik van een variatie van mechanische tuigen (werktuigen, robots, lopende banden), l werking moet gecoördineerd en gecontroleerd worden l vaak een groot aantal los-gekoppelde systemen Yolande Berbers Systeem-geïntegreerde programmatuur slide 19

SGP general manufacturing operators console production control computer parts machine tools manipulators conveyor belts SGP general manufacturing operators console production control computer parts machine tools manipulators conveyor belts finished products a production control system Yolande Berbers Systeem-geïntegreerde programmatuur slide 20

SGP n voorbeelden van RT systemen real-time systemen voor communicatie, bevel en controle u SGP n voorbeelden van RT systemen real-time systemen voor communicatie, bevel en controle u militaire term, veel toepassingen met zelfde karakteristieken u voorbeelden: automatische bediening van medische toestellen, luchtverkeer controle, vliegtuigreservaties, bankoperaties per terminal u kenmerken: l ingewikkelde beslissingsregels l verzamelen van informatie s grote hoeveelheden s vaak geografisch verspreid l administratieve procedures Yolande Berbers Systeem-geïntegreerde programmatuur slide 21

SGP communicatie, bevel en controle command post command control computer terminals temperature, pressure, power SGP communicatie, bevel en controle command post command control computer terminals temperature, pressure, power and so on sensors/actuators a command control system Yolande Berbers Systeem-geïntegreerde programmatuur slide 22

SGP n voorbeelden van RT systemen veralgemening: industrieel ingebed computersystemen u directe interface met SGP n voorbeelden van RT systemen veralgemening: industrieel ingebed computersystemen u directe interface met fysische wereld u sensoren die op regelmatige tijdstippen informatie geven u meestal ook een console l operator krijgt uitgebreide informatie (vaak grafisch) l operator kan manueel ingrijpen l toestandsveranderingen in het systeem worden in een gegevensbank bijgehouden voor analyse en het nemen van beslissingen Yolande Berbers Systeem-geïntegreerde programmatuur slide 23

SGP industrial embedded system algorithms for digital control interface data logging remote monitoring data SGP industrial embedded system algorithms for digital control interface data logging remote monitoring data retrieval and display real time clock display devices engineering system database operator’s console Yolande Berbers operator interface Systeem-geïntegreerde programmatuur slide 24

SGP n vb van ingebedde systemen wasmachine u één specifieke taak, beperkte functionaliteit u SGP n vb van ingebedde systemen wasmachine u één specifieke taak, beperkte functionaliteit u weinig flexibel u goedkoop, massaproductie n postsorteermachine u één specifieke taak, uitgebreide maar overzienbare functionaliteit u geen massaproductie n communicatiesysteem in wagen u zeer complex u goedkoop u zware real-time vereisten u laag vermogen gebruik u moet zeer flexibel zijn, open voor nieuwe toepassingen Yolande Berbers Systeem-geïntegreerde programmatuur slide 25

SGP n vb van ingebedde systemen ADSL switching center u in centraal punt 20 SGP n vb van ingebedde systemen ADSL switching center u in centraal punt 20 tot 50 ADSL lijnen op een ATM netwerk u zware real-time vereisten u zeer hoge snelheid nodig u laag vermogen gebruik n MPEG-4 decoder u zeer complex u zeer hoge snelheid nodig u laag vermogen gebruik (bv in draagbare videospelletjes) Yolande Berbers Systeem-geïntegreerde programmatuur slide 26

SGP n karakteristieken van een RTS groot en complex u niet gewoon proportioneel met SGP n karakteristieken van een RTS groot en complex u niet gewoon proportioneel met het aantal lijnen code u gerelateerd aan de variëteit die in de code voorkomt u verandert continu omdat de omgeving continu verandert l situaties veranderen l noden veranderen u nood aan continu onderhoud u kan variëren van enkele honderden lijnen assembler of C tot 20 miljoen lijnen Ada-code (geschat voor het ruimtestation ISS) Yolande Berbers Systeem-geïntegreerde programmatuur slide 27

SGP n karakteristieken van een RTS manipulation of real numbers u many RT systems SGP n karakteristieken van een RTS manipulation of real numbers u many RT systems control an engineering activity u e. g. : controller based op feedback l controlled entity has a vector of output variables, that change over time l outputs are compared with desired signal l difference is used to change input variables u control based on mathematical model of process to be controlled l Yolande Berbers complex, often based on differential equations Systeem-geïntegreerde programmatuur slide 28

SGP n karakteristieken van een RTS e. g. : controller (possibly analog), based on SGP n karakteristieken van een RTS e. g. : controller (possibly analog), based on feedback u r(t) is desired signal u u(t) is input vector u e(t) is error vector u y(t) is output signal r(t) Yolande Berbers e(t) controller (analog) u(t) plant Systeem-geïntegreerde programmatuur y(t) slide 29

SGP karakteristieken van een RTS u more realistic figure using a computer, discrete values SGP karakteristieken van een RTS u more realistic figure using a computer, discrete values (with a *), and D/A and A/D converters u discipline: control theory r(t*) controller u(t*) (computer) y(t*) digital to analog converter u(t) sample and hold plant y(t) u requirement: ability to manipulate real numbers Yolande Berbers Systeem-geïntegreerde programmatuur slide 30

SGP n karakteristieken van een RTS extreem betrouwbaar en veilig u meer en meer SGP n karakteristieken van een RTS extreem betrouwbaar en veilig u meer en meer vitale functies in de samenleving worden toevertrouwd aan computer systemen l slecht functionerende systemen kunnen catastrofaal zijn s vaak zijn mensenlevens gemoeid – bv kerncentrales s kan ook extreem kostelijk zijn u voorbeeld van zeer kostelijke faling: Ariane 5, zie volgende slide Yolande Berbers Systeem-geïntegreerde programmatuur slide 31

SGP n voorbeeld: ontploffing Ariane 5 eerste lancering van Ariane 5 op 4 juni SGP n voorbeeld: ontploffing Ariane 5 eerste lancering van Ariane 5 op 4 juni 1996: na 37 sec. u boordcomputer denkt dat raket zwaar uit koers is u boordcomputer geeft sterk bijstuurcommando u boordcomputer oordeelt dat dit niet voldoende is, en schakelt zelfs de hoofdmotor in u raket kantelt, bovendeel scheurt los, zelfvernietigingsdozen doen het geheel ontploffen Yolande Berbers Systeem-geïntegreerde programmatuur slide 32

SGP n voorbeeld: ontploffing Ariane 5 wat liep er mis u het Inertial Reference SGP n voorbeeld: ontploffing Ariane 5 wat liep er mis u het Inertial Reference System (SRI) berekent de houding en de bewegingen van de raket, op basis van bepaalde metingen u deze metingen worden doorgegeven aan de boordcomputer, die in functie hiervan stuurbeslissingen neemt u vóór de lancering berekent een zekere module in het SRI die houding tov het lanceerplatform u na lancering heeft die bepaalde module geen betekenis meer u die module werd gestopt ongeveer 40 sec. na lancering l voor Ariane 4, om count-down te kunnen “pauzeren” u behouden in Ariane 5: verander geen goedwerkende software u in die code staat een conversie van een 64 -bit floating point getal naar een 16 -bit integer Yolande Berbers Systeem-geïntegreerde programmatuur slide 33

SGP n voorbeeld: ontploffing Ariane 5 wat liep er mis (vervolg) u Ariane 5 SGP n voorbeeld: ontploffing Ariane 5 wat liep er mis (vervolg) u Ariane 5 stijgt anders op van Ariane 4: traject is verschillend u na de lancering gebeurde er een conversiefout: het 64 -bit floating point getal had een onverwachte grote waarde u de toepassing crashte, een 2 de computer werd ingeschakeld u deze 2 de computer bevatte dezelfde software, dus crashte ook u door de crash werd een diagnose bit-patroon naar de boordcomputer gestuurd, die dit als gegevens interpreteerde, en besloot dat er drastisch bijgestuurd moest worden, met alle gevolgen van dien n gebruikte programmeertaal: Ada Yolande Berbers Systeem-geïntegreerde programmatuur slide 34

SGP n voorbeeld: ontploffing Ariane 5 hoe had dit kunnen vermeden worden u fouten SGP n voorbeeld: ontploffing Ariane 5 hoe had dit kunnen vermeden worden u fouten door conversies, evenals andere fouten zoals delingen door 0, kunnen opgevangen worden in specifieke stukken code (zie H 6) l dit gebeurde niet voor de instructie die crash veroorzaakte u de fout had via simulaties kunnen gevonden worden l Yolande Berbers maar in de simulaties draaide die module niet na lancering Systeem-geïntegreerde programmatuur slide 35

SGP n karakteristieken van een RTS verschillende software componenten zijn gelijktijdig actief u de SGP n karakteristieken van een RTS verschillende software componenten zijn gelijktijdig actief u de apparaten in de omgeving werken gelijktijdig u deze gelijktijdigheid wordt het best gerealiseerd door gelijktijdig uitvoerende software componenten u meer en meer real-time systemen zijn gedistribueerde systemen u dit vraagt ondersteuning van programmeertalen en/of systemen Yolande Berbers Systeem-geïntegreerde programmatuur slide 36

SGP n karakteristieken van een RTS omgang met ‘tijd’ u responstijd is van groot SGP n karakteristieken van een RTS omgang met ‘tijd’ u responstijd is van groot belang u deadlines moeten in alle omstandigheden gehaald worden l worst-case moet gekend zijn l voorspelbaarheid van responstijd is cruciaal l real-time systemen worden altijd over-gedimensioneerd u taal en systeem moeten toelaten om tijd te specifiëren, deadlines te specifiëren, om te reageren wanneer een deadline niet gehaald zal worden Yolande Berbers Systeem-geïntegreerde programmatuur slide 37

SGP n karakteristieken van een RTS interacties met hardware interface u aangesloten hardware: vaak SGP n karakteristieken van een RTS interacties met hardware interface u aangesloten hardware: vaak niet de klassieke randapparaten u randapparaten moeten kunnen gestuurd worden, liefst op een abstracte manier n vereiste voor efficiënte implementatie en uitvoeringsomgeving u de tijdsvereisten kunnen zo streng zijn dat efficiëntie echt belangrijk wordt (vb DSP) Yolande Berbers Systeem-geïntegreerde programmatuur slide 38

SGP n karakteristieken van een RTS typische karakteristieken voor consumentenmarkt u goedkoop l beperkt SGP n karakteristieken van een RTS typische karakteristieken voor consumentenmarkt u goedkoop l beperkt geheugen l goedkopere processor u time-to-market is extreem laag u laag vermogen gebruik indien draagbaar Yolande Berbers Systeem-geïntegreerde programmatuur slide 39

SGP karakteristieken van een RTS: overzicht n groot en complex n manipuleren reële getallen SGP karakteristieken van een RTS: overzicht n groot en complex n manipuleren reële getallen n extreem betrouwbaar en veilig n verschillende software componenten zijn gelijktijdig actief n omgang met ‘tijd’ n interacties met hardware interface n vereist efficiënte implementatie en uitvoeringsomgeving Yolande Berbers Systeem-geïntegreerde programmatuur slide 40

SGP n economisch belang ingebedde systemen: u voor elke PC zijn er ongeveer 50 SGP n economisch belang ingebedde systemen: u voor elke PC zijn er ongeveer 50 ingebedde systemen u PC-markt heeft een plateau bereikt, markt voor ingebedde systemen kan nog enorm groeien n belang voor Vlaanderen u groot deel van software dat in Vlaanderen gemaakt wordt is voor ingebedde systemen u Vlaanderen is derde ‘super-high-tech region’ in Europa (na Rheinland-Phals en Hessen) volgens Eurostat studie n belang voor Europa u VS hebben groot deel van ‘packaged software’ markt u Europa heeft en kan nog groeien in markt ingebedde systemen Yolande Berbers Systeem-geïntegreerde programmatuur slide 41

economic importance SGP n importance for Europe u US have large part of market economic importance SGP n importance for Europe u US have large part of market for ‘packaged software’ (see next slide) u top 10 software vendors in the world: l Microsoft l Sybase l Oracle l Adobe systems l Computer Ass. Int. l Informix l Novell l American Management Systems l SAP AG l Sterling Software u Europe can still grow in the market of embedded systems Yolande Berbers Systeem-geïntegreerde programmatuur slide 42

SGP Yolande Berbers economic importance Systeem-geïntegreerde programmatuur slide 43 SGP Yolande Berbers economic importance Systeem-geïntegreerde programmatuur slide 43

SGP Systeem-geïntegreerde Programmatuur deel 2: Ada en Java voor real-time en embedded systemen Yolande SGP Systeem-geïntegreerde Programmatuur deel 2: Ada en Java voor real-time en embedded systemen Yolande Berbers Systeem-geïntegreerde programmatuur slide 44

SGP n de taal Ada taal ontworpen op aanvraag van Do. D (Department of SGP n de taal Ada taal ontworpen op aanvraag van Do. D (Department of Defense, US) n naam “Ada” komt van Countess Augusta Ada Lovelace u dochter van dichter Lord Byron (England) u schreef programma’s voor de “Difference Engine” van Charles Babbage, de eerste computer uit de geschiedenis u was hierdoor de eerste computerprogrammeur n volgende slides: uit presentatie van DOD Yolande Berbers Systeem-geïntegreerde programmatuur slide 45

Comments on Ada in Relation to C++ Center for Computer Systems Engineering Joint Interoperability Comments on Ada in Relation to C++ Center for Computer Systems Engineering Joint Interoperability & Engineering Organization Defense Information Systems Agency

SGP Why Ada? (Technical Arguments) n n In 1976, nothing else existed, so. . SGP Why Ada? (Technical Arguments) n n In 1976, nothing else existed, so. . . Ada was designed with: u Software engineering in mind u Large, complex projects in mind u Standardization/validation in mind u Reliability/maintainability in mind n In 1996, still nothing else exists! Ada Was Designed With Long-term Support for the Warfighter in Mind Yolande Berbers Systeem-geïntegreerde programmatuur slide 47

SGP IBM Weighted Scores for 6 Criterion Categories Source: IBM study, 1985 Yolande Berbers SGP IBM Weighted Scores for 6 Criterion Categories Source: IBM study, 1985 Yolande Berbers Systeem-geïntegreerde programmatuur slide 48

SGP n Do Defects Really Matter? is 99. 9% an acceptable tolerance for defects? SGP n Do Defects Really Matter? is 99. 9% an acceptable tolerance for defects? Consider: u Drinking water contaminated for 1 hour per month. u 16, 000 letters lost every day by the US Post Office. u 2 accidents per month at O’Hare International Airport. u 20, 000 prescriptions in error each year. u 50 babies dropped on the delivery room floor each hour. u 22, 000 checks drawn from the wrong account per hour. OOPS! Yolande Berbers Systeem-geïntegreerde programmatuur slide 49

SGP n n n Software Crisis in 1976 Proliferation of languages (>450) Many dialects SGP n n n Software Crisis in 1976 Proliferation of languages (>450) Many dialects of standard languages Low interoperability High maintenance costs Low reliability Result Yolande Berbers Ada Systeem-geïntegreerde programmatuur slide 50

SGP Current State of Ada Use in Do. D NO. OF 3 GLs SIGNIFICANT SGP Current State of Ada Use in Do. D NO. OF 3 GLs SIGNIFICANT DECREASE IN No. OF 3 GLs 500 400 300 200 100 (450+) (37) 1976 1994 1985 Ada is No. 1 For Weapons Ada is No. 2 For AISs Ada (33. 5%) Other (6. 1%) C++ 3. 4% Yolande Berbers COBOL (59. 2%) C (22%) FORTRAN (13. 2%) Jovial (9. 3%) CMS-2 (12. 5%) Ada (22%) Other (10%) C (9%) Systeem-geïntegreerde programmatuur slide 51

SGP Ada in Maintenance Arena 270, 000 LOC 225, 000 LOC 135, 000 LOC SGP Ada in Maintenance Arena 270, 000 LOC 225, 000 LOC 135, 000 LOC 150, 000 LOC 100% productivity and 50% quality increase does not reduce C to Ada levels 112, 500 LOC 75, 000 LOC Source: MITRE (Avionics domain) Yolande Berbers Systeem-geïntegreerde programmatuur slide 52

SGP Common Reasons for NOT Using Ada n n n Yolande Berbers If I SGP Common Reasons for NOT Using Ada n n n Yolande Berbers If I ignore it it will go away! It’s too complex. I don’t have time to learn another language. We don’t have a compiler. We need more tools to use Ada. Blah, Blah! Systeem-geïntegreerde programmatuur slide 53

SGP n n n n n Expected Benefits of Ada Overall Advantage: Increased Quality SGP n n n n n Expected Benefits of Ada Overall Advantage: Increased Quality per Dollar Spent Code Portability People Portability Maintainability Reliability Common Basis for Tools/Methodologies Modularity, Managing Complexity Management Visibility, System View Improved Productivity Increased Reusability Yolande Berbers Systeem-geïntegreerde programmatuur slide 54

SGP Why Ada? (Business Arguments) n Ada: u Has better support for “ilities” u SGP Why Ada? (Business Arguments) n Ada: u Has better support for “ilities” u Yields greater productivity u Costs less per SLOC u Has fewer defects u Supported by multiple vendors n Ada represents: u A Do. D core competency u Increased economies of scale u An ISO and ANSI standard u Freedom from proprietary solutions Ada Makes Open Systems and Interoperability Possible Yolande Berbers Systeem-geïntegreerde programmatuur slide 55

SGP n Why C++? Major industry marketing u Nothing equivalent for Ada n Object-oriented SGP n Why C++? Major industry marketing u Nothing equivalent for Ada n Object-oriented programming support u Did not exist in Ada 83, but does in Ada 95 n Builds on popularity of C u C was free with UNIX operating systems u Students were taught C u Easier to move up to C++ than Ada n Tools, bindings, visual environments and support abundantly available (based on origin) u Ada was isolated Yolande Berbers Systeem-geïntegreerde programmatuur slide 56

SGP n Why C++? Lower startup costs ($, personnel, tools) u Ada delivers more SGP n Why C++? Lower startup costs ($, personnel, tools) u Ada delivers more and thus costs more when only development costs are considered n C++ gives programmers more freedom u Less discipline is attractive to programmers - dangerous on large systems n No standard for C++ u Ada vendors must meet standard - more difficult and more expensive Yolande Berbers Systeem-geïntegreerde programmatuur slide 57

SGP Why C++ for Industry? Industry and Do. D have different focus Do. D SGP Why C++ for Industry? Industry and Do. D have different focus Do. D n n n Commercial Sector buy one long-term planning precludes quick reaction limited market fixed profits failures cost lives n n n sell many quick reaction to market forces large market large profit potential failures cost money Source: Nyberg, Karl presentation quoting Gensler, “The Defense Industry” and Aharonian, Greg, “Microeconomic Definitions for Ada Summit”, 1994. Yolande Berbers Systeem-geïntegreerde programmatuur slide 58

SGP n n n Software Development vs. Software Maintenance Do. D looks at systems SGP n n n Software Development vs. Software Maintenance Do. D looks at systems from total lifecycle perspective 60 -80+% of the lifecycle costs of software occur in maintenance Arguments based on lower development costs total only 20 -40% of the story On most projects, development and maintenance are two separate contracts Commercial Off-The-Shelf (COTS) software is not always the correct choice Decisions must be made on lifecycle costs not on development costs Yolande Berbers Systeem-geïntegreerde programmatuur slide 59

SGP n When Not to Use Ada may not be appropriate u When some SGP n When Not to Use Ada may not be appropriate u When some other language has lower lifecycle costs u For some R&D applications where the intent is for concept development only and the system will not be fielded u For some prototype applications, however the prototype must not be carried into E&D for subsequent fielding u When a compiler does not exist for the hardware platform u When timing and/or sizing constraints make Ada a technical infeasibility Yolande Berbers Systeem-geïntegreerde programmatuur slide 60

SGP n n n YF-22 Prototype Development Software for the aircraft (35% of total SGP n n n YF-22 Prototype Development Software for the aircraft (35% of total avionics development cost) Developed by 8 geographically separated subcontractors Developed using u different Ada compilers u different hardware platforms n n 12 major avionics subsystems 650 Ada modules Millions of SLOC Integrated in 3 days! Source: Guidelines for Successful Acquisition and Management of Software Intensive Systems, Vol. I, USAF, Feb 1995 Yolande Berbers Systeem-geïntegreerde programmatuur slide 61

SGP Summary Ada vs C++ 2001 Ada Single Vendor Non. Standard Stovepipes Closed System SGP Summary Ada vs C++ 2001 Ada Single Vendor Non. Standard Stovepipes Closed System Ada is: • Technically superior • Demonstrably lower in cost through entire lifecycle • Successfully used today and growing • Supported by DISA Ada was explicitly designed to support large systems well into the next century Yolande Berbers Systeem-geïntegreerde programmatuur slide 62

SGP n developing embedded SW in Java overview: technology and architecture u why Java SGP n developing embedded SW in Java overview: technology and architecture u why Java ? u Java Virtual Machine Technology u alternative technologies u supporting technologies Yolande Berbers Systeem-geïntegreerde programmatuur slide 63

SGP n what is so great about Java ? programming language u familiar C-like SGP n what is so great about Java ? programming language u familiar C-like (but improved) syntax all test conditions must be Boolean s e. g. while (x=3) is not allowed l primitive data types have fixed sizes u easier to produce bug-free software l array bounds checking l automatic garbage collection u built-in exception-handling u built-in library for concurrency u truly object-oriented u simpler to learn than C++ l Yolande Berbers Systeem-geïntegreerde programmatuur slide 64

SGP n what is so great about Java ? bytecodes u Java bytecode == SGP n what is so great about Java ? bytecodes u Java bytecode == portable binary format instruction set for a virtual machine l platform portability, without source code l source translation is done in advance u faster than a “fully interpreted” solution u can be translated into native opcodes: l at each encounter (bytecode interpreter) l at first encounter (just-in-time compiler) l prior to loading (ahead-of-time compiler) l Yolande Berbers Systeem-geïntegreerde programmatuur slide 65

SGP what is so great about Java ? Java Source Java bytecode libraries Java SGP what is so great about Java ? Java Source Java bytecode libraries Java compiler Java Virtual Machine Java bytecode operating systems hardware Yolande Berbers Systeem-geïntegreerde programmatuur slide 66

SGP n what is so great about Java ? class libraries u high level SGP n what is so great about Java ? class libraries u high level of abstraction u standard APIs: increase application portability l reduce programming effort u support for multitasking (see CH 7 -9) l Thread class and Runnable interface l synchronized keyword l monitors via wait() and notify() l u support for networking Yolande Berbers Systeem-geïntegreerde programmatuur slide 67

SGP n why use anything else ? problems with Java u no direct access SGP n why use anything else ? problems with Java u no direct access to hardware (see CH 15) l Java has no pointers l nor bytecodes to access a physical address l but Java can call C ! (Java Native Methods) u size of code: JVM can be huge u inefficiencies l bytecode interpretation is slower than C/C++ l garbage collection requires processor time l interpreter or JIT may not be “optimal” compiler u unpredictability (see CH 13) l garbage collector may preempt a running task l Just-in-Time compilation slows first access Yolande Berbers Systeem-geïntegreerde programmatuur slide 68

SGP JVM technology: components Java Threads Class libs C/C++ Tasks Java Virtual Machine (+ SGP JVM technology: components Java Threads Class libs C/C++ Tasks Java Virtual Machine (+ garbage collector) Native methods Multitasking OS Processor and other hardware Yolande Berbers Systeem-geïntegreerde programmatuur slide 69

inside a virtual machine SGP Java application Class libs Dynamic class loader Bytecode verifier inside a virtual machine SGP Java application Class libs Dynamic class loader Bytecode verifier Native methods Execution engine Garbage collector Multitasking OS Yolande Berbers Systeem-geïntegreerde programmatuur slide 70

SGP n inside a virtual machine execution engine u bytecode interpreter u just-in-time compilation SGP n inside a virtual machine execution engine u bytecode interpreter u just-in-time compilation u hybrid l Yolande Berbers Sun’s Hot. Spot compiler Systeem-geïntegreerde programmatuur slide 71

SGP n inside a virtual machine garbage collector (biggest myth for Java) u many SGP n inside a virtual machine garbage collector (biggest myth for Java) u many algorithms, some even hard RT suitable l l l Yolande Berbers naive incremental real-time (double heap, HW assisted) s bounded worst-case allocation time (faster than incremental GC) s bounded worst-case object access time s slower average-case allocation time s slower object access time Systeem-geïntegreerde programmatuur slide 72

SGP n inside a virtual machine dynamic Class Loader u find and load referenced SGP n inside a virtual machine dynamic Class Loader u find and load referenced class u read file /. class in the CLASSPATH u ZIP files are also traversable, can be placed in ROM, if necessary u verify class file format u link: place contents into a JVM data structure u prepare and initialize the class Yolande Berbers Systeem-geïntegreerde programmatuur slide 73

SGP n inside a virtual machine bytecode verifier u detects and prevents “illegal” activity SGP n inside a virtual machine bytecode verifier u detects and prevents “illegal” activity u verification is optional! u of little value in a closed system Yolande Berbers Systeem-geïntegreerde programmatuur slide 74

SGP n inside a virtual machine Java Class Libraries u Write Once, Run Anywhere SGP n inside a virtual machine Java Class Libraries u Write Once, Run Anywhere u only if the same set of class libraries are available! u multiple “standard platforms” (APIs): Standard Java - the full set, for desktops and workstations l Personal. Java - a subset of the above, for smaller devices l Embedded. Java - like the previous, but more memoryconscious l Yolande Berbers Systeem-geïntegreerde programmatuur slide 75

SGP n Inside a virtual machine Java Class Libraries u upward compatibility is desirable SGP n Inside a virtual machine Java Class Libraries u upward compatibility is desirable Embedded. Java applications also run on any Personal. Java platform l Personal. Java applications also run on any Standard Java platform l Yolande Berbers Systeem-geïntegreerde programmatuur slide 76

SGP n JVM requirements: memory ROM: JVM + libraries + application u JVM: ~500 SGP n JVM requirements: memory ROM: JVM + libraries + application u JVM: ~500 K is typical maximum u Class libraries: ~500 K for Personal. Java u + the application itself n RAM: JVM + heap + thread stacks u affected by engine type JIT compiler requires large storage area, interpreter does not u heap size is application-dependent u each thread requires its own stack l Yolande Berbers Systeem-geïntegreerde programmatuur slide 77

SGP n JVM requirements: processor capabilities u arithmetic 32 -bit integers assumed cheap and SGP n JVM requirements: processor capabilities u arithmetic 32 -bit integers assumed cheap and fast, 64 -bit available l 32 -bit and 64 -bit floating point (IEEE 754) available u processing power l need enough to negate interpretation slowdown l n address space u JVM + all class libraries requires a lot of memory! Yolande Berbers Systeem-geïntegreerde programmatuur slide 78

SGP n JVM requirements: OS JVM is not (usually) an OS replacement u RTOS SGP n JVM requirements: OS JVM is not (usually) an OS replacement u RTOS or kernel expected underneath n only minimal functionality required u thread creation and deletion (see CH 7) u priority-based scheduling (see CH 13) at least 10 priority levels u synchronization primitives (e. g. , mutexes) (see CH 8) u private thread stacks (see CH 7) l Yolande Berbers Systeem-geïntegreerde programmatuur slide 79

SGP n JVM requirements: other SW JVMs are written in C, therefore: u Standard SGP n JVM requirements: other SW JVMs are written in C, therefore: u Standard C library u Standard math library n dynamic memory allocation u malloc() is called internally n Java class libraries u java. net - assumes a TCP/IP stack u java. awt - requires a graphics API n others? - implementation-specific Yolande Berbers Systeem-geïntegreerde programmatuur slide 80

SGP n alternative technologies traditional JVM: u too big u too slow u too SGP n alternative technologies traditional JVM: u too big u too slow u too unpredictable n alternatives: u Ahead-of-time compilers u Java processors u Java. Card technology u Kjava Virtual Machine Yolande Berbers Systeem-geïntegreerde programmatuur slide 81

SGP n supporting technologies Java Native Interface (JNI) u call legacy code u work SGP n supporting technologies Java Native Interface (JNI) u call legacy code u work around Java’s limitations u implement higher-performance functionality u native methods == C functions (no good integration with C++) Yolande Berbers Systeem-geïntegreerde programmatuur slide 82

SGP n supporting technologies JVM Debug Interface (JVMDI) u programming interface for debuggers l SGP n supporting technologies JVM Debug Interface (JVMDI) u programming interface for debuggers l l l Yolande Berbers Client(JVM) - Server monitor and control: s memory s stack frames s threads s local variables event notification for: s field access/modification s breakpoints Systeem-geïntegreerde programmatuur slide 83

SGP Systeem-geïntegreerde Programmatuur kort overzicht van Ada (en C en Java): programming in the SGP Systeem-geïntegreerde Programmatuur kort overzicht van Ada (en C en Java): programming in the small Yolande Berbers Systeem-geïntegreerde programmatuur slide 84

SGP algemene stijl: een blok in Ada declare <declarative part> begin <sequence of statements> SGP algemene stijl: een blok in Ada declare begin exception end declare Temp: Integer : = A; -- initiële waarde wordt gegeven aan Temp begin A : = B; -- : = is de toekennings operator B : = Temp; end -- geen exception deel Yolande Berbers Systeem-geïntegreerde programmatuur slide 85

SGP algemene stijl: eeneen blok in C algemene stijl: blok in C en Java SGP algemene stijl: eeneen blok in C algemene stijl: blok in C en Java { } { int temp = A; /* declaratie en initialisatie */ /* merk op: in C staat de naam van het type eerst */ /* in Ada komt het na de naam van de variabele */ A = B; B = temp; /* toekenningsoperator is = */ } Yolande Berbers Systeem-geïntegreerde programmatuur slide 86

SGP n gegevenstypen Ada is sterk getypeerd: in toekenningen en expressies moeten objecten van SGP n gegevenstypen Ada is sterk getypeerd: in toekenningen en expressies moeten objecten van hetzelfde type zijn (expliciete conversies zijn mogelijk) n C biedt veel minder type-controle n Java is ook sterk getypeerd Yolande Berbers Systeem-geïntegreerde programmatuur slide 87

SGP types in C { typedef enum (xplane, yplane, zplane) dimension; /* typedef introduceert SGP types in C { typedef enum (xplane, yplane, zplane) dimension; /* typedef introduceert een naam voor een nieuw type; */ /* de naam is hier dimension; */ /* enum zegt dat het om een enumeratie gaat */ dimension line, force; line = xplane; force = line + 1; /* force is nu yplane */ } Java biedt geen enumeratie type Yolande Berbers Systeem-geïntegreerde programmatuur slide 88

SGP types in Ada type Dimension is (Xplane, Yplane, Zplane); type Map is (Xplane, SGP types in Ada type Dimension is (Xplane, Yplane, Zplane); type Map is (Xplane, Yplane); Line, Force : Dimension; Grid : Map; begin Line : = Xplane; Force : = Dimension’Succ(Xplane); Grid : = Yplane; Grid : = Line; -- mag niet, verschillende types end; Yolande Berbers Systeem-geïntegreerde programmatuur slide 89

SGP types in(vervolg) in Ada subtype Surface is Dimension range Xplane. . Yplane; type SGP types in(vervolg) in Ada subtype Surface is Dimension range Xplane. . Yplane; type New_int is new Integer; type Projection is new Dimension range Xplane. . Yplane; D: Dimension; S: Surface; P: Projection; begin D : = S; -- OK S : = D; -- legaal, maar zou kunnen run-time fout genereren P : = D; -- illegaal P : = Projection(D); -- OK, met expliciete conversie end; Yolande Berbers Systeem-geïntegreerde programmatuur slide 90

SGP types in CC en Java types in (vervolg) in C typedef int newint; SGP types in CC en Java types in (vervolg) in C typedef int newint; typedef dimension projection; /* biedt niet dezelfde protectie als in Ada */ in Java nieuwe types worden gecreëerd via object-oriëntatie, zie H 4 Yolande Berbers Systeem-geïntegreerde programmatuur slide 91

SGP gestructureerde gegevenstypes in Ada Max: constant Integer : = 10; type Reading_T is SGP gestructureerde gegevenstypes in Ada Max: constant Integer : = 10; type Reading_T is array (0. . Max-1) of Float; Size: constant Integer : = Max-1; type Switches_T is array(0. . Size, 0. . Size) of Boolean; Reading: Reading_T; Switches: Switches_T; Yolande Berbers Systeem-geïntegreerde programmatuur slide 92

SGP gestructureerde gegevenstypes in C static final int max = 10; // definitie van SGP gestructureerde gegevenstypes in C static final int max = 10; // definitie van constante float reading[] = new float [MAX]; // index is 0. . max -1 boolean switches[] [] = new boolean[MAX]; // merk op: in Java zijn rijen objecten Yolande Berbers Systeem-geïntegreerde programmatuur slide 93

SGP gestructureerde gegevenstypes inin C gestructureerde gegevenstypes Java #define MAX 10 /* manier om SGP gestructureerde gegevenstypes inin C gestructureerde gegevenstypes Java #define MAX 10 /* manier om een constante te definiëren */ /* zonder typevoordeel */ typedef float reading_t[MAX]; /* index is 0. . MAX-1 */ typedef short int switches_t[MAX]; /* er zijn geen booleans in C */ reading_t reading; switches_t switches; Yolande Berbers Systeem-geïntegreerde programmatuur slide 94

SGP gestructureerde gegevenstypes in Ada (vervolg) type Day_T is new Integer range 1. . SGP gestructureerde gegevenstypes in Ada (vervolg) type Day_T is new Integer range 1. . 31; type Month_T is new Integer range 1. . 12; type Year_T is new Integer range 1900. . 2050; type Date_T is record Day : Day_T : = 1; Month : Month_T : = 1; Year: Year_T; end record; Yolande Berbers Systeem-geïntegreerde programmatuur slide 95

SGP gestructureerde gegevenstypes in C (vervolg) typedef short int day_t; typedef short int month_t; SGP gestructureerde gegevenstypes in C (vervolg) typedef short int day_t; typedef short int month_t; typedef short int year_t; struct date_t { day_t day; month_t month; year_t year; }; /* naam hiervan is ‘struct date_t */ typedef struct { day_t day; month_t month; year_t year; } date 2_t; Yolande Berbers /* dit is een nieuw type met naam date 2_t */ Systeem-geïntegreerde programmatuur slide 96

SGP gestructureerde gegevenstypes in Java gestructureerde gegevenstypes in C (vervolg) class Date { int SGP gestructureerde gegevenstypes in Java gestructureerde gegevenstypes in C (vervolg) class Date { int day, month, year; } Date birthday = new Date(); birthdate. day = 31; birthdate. day = 2000; Yolande Berbers Systeem-geïntegreerde programmatuur slide 97

SGP gestructureerde gegevenstypes in Ada (vervolg) D: Date_T; begin D. Year : = 2000; SGP gestructureerde gegevenstypes in Ada (vervolg) D: Date_T; begin D. Year : = 2000; -- D is nu 1/1/2000 D : = (3, 1, 1953); -- volledige toekenning D : = (Year => 1974, Day => 4, Month => 7); -- volledige toekenning met gebruik van veldnamen. . . end; Yolande Berbers Systeem-geïntegreerde programmatuur slide 98

SGP gestructureerde gegevenstypes in C (vervolg) struct date_T d = (1, 1, 1); /* SGP gestructureerde gegevenstypes in C (vervolg) struct date_T d = (1, 1, 1); /* kan alleen bij initialisatie statische variabelen */. . . { d. year = 2000; . . . } Yolande Berbers Systeem-geïntegreerde programmatuur slide 99

SGP dynamische gegevenstypes in C { typedef struct node { int value; struct node SGP dynamische gegevenstypes in C { typedef struct node { int value; struct node *next; } node_t; /* pointer naar een record hier gedefinieerd */ int V; node_t *Ptr; Ptr = malloc (sizeof(node_t)); /* dynamische allocatie van geheugen */ Ptr->value = V; Ptr->next = 0; /* de null-pointer bestaat niet */. . . } Yolande Berbers Systeem-geïntegreerde programmatuur slide 100

SGP dynamische gegevenstypes in Ada type Node; -- definitie zal volgen type Ac is SGP dynamische gegevenstypes in Ada type Node; -- definitie zal volgen type Ac is access Node; type Node is record Value: Integer; Next: Ac; end record; V: Integer; A 1: Ac; begin A 1 : = new Node; A 1. Value : = V; -- dynamische allocatie van geheugen A 1. Next : = null; . . . end; Yolande Berbers Systeem-geïntegreerde programmatuur slide 101

SGP dynamische gegevenstypes in C (vervolg) dynamische gegevenstypes in C typedef date_t events_t[MAX], *next_event_t; SGP dynamische gegevenstypes in C (vervolg) dynamische gegevenstypes in C typedef date_t events_t[MAX], *next_event_t; /* events_t is een type voor arrays van Max el. van type date_t next_event_t is type voor pointers naar el. van type date_t */ events_t history; next_event_t next_event; next_event = &history[0]; next_event++; /* adres van eerste element van rij */ /* de pointer gaat nu wijzen naar het */ /* volgende element in de rij */ /* een pointer in C kan naar om het even wat wijzen, probleem van hangende pointers (dangling pointer) */ Yolande Berbers Systeem-geïntegreerde programmatuur slide 102

SGP dynamische gegevenstypes in C (vervolg) dynamische gegevenstypes in Java elk object in Java SGP dynamische gegevenstypes in C (vervolg) dynamische gegevenstypes in Java elk object in Java is een referentie naar het actuele object met zijn data, voor de rest zijn er geen pointers voorzien in Java class node { int value; node next; } Node Ref 1 = new Node(); Node Ref 2= new Node(); if (Ref 1 == Ref 2) { … } Yolande Berbers // vergelijkt adressen en geen inhoud Systeem-geïntegreerde programmatuur slide 103

SGP controle structuren: leeg blok in Ada: begin null; end; in Java en C: SGP controle structuren: leeg blok in Ada: begin null; end; in Java en C: { } /* gewoon niets */ Yolande Berbers Systeem-geïntegreerde programmatuur slide 104

SGP controle structuren: if-then-else in Ada: if A /= 0 then if B/A > SGP controle structuren: if-then-else in Ada: if A /= 0 then if B/A > 10 then High : = True; else High : = False; end if; Yolande Berbers in C: if (A != 0) if (B/A > 10) high = 1; else high = 0; // in Java mag die ambiguïteit niet if (A != 0) { if (B/A > 10) { high = 1; } else { high = 0; } } Systeem-geïntegreerde programmatuur slide 105

SGP controle structuren: if-then-else in Ada (vervolg) if Number < 10 then Num_Digits : SGP controle structuren: if-then-else in Ada (vervolg) if Number < 10 then Num_Digits : = 1; elseif Number < 100 then Num_Digits : = 2; elseif Number < 1000 then Num_Digits : = 3; elseif Number < 10000 then Num_Digits : = 4; else Num_Digits : = 5; end if; Yolande Berbers Systeem-geïntegreerde programmatuur slide 106

SGP controle structuren: case in Ada: in Java en C: case Command is when SGP controle structuren: case in Ada: in Java en C: case Command is when ‘A’ | ‘a’=> Action 1; when ‘t’ => Action 2; when ‘e’ => Action 3; when ‘x’. . ‘z’ => Action 4; when others => null; end case; switch (command) { case ‘A’ : case ‘a’ : action 1; break; case ‘t’ : action 2; break; case ‘e’ : action 3; break; case ‘x’ : case ‘y’ : case ‘z’ : action 4; break; default : break; } Yolande Berbers Systeem-geïntegreerde programmatuur slide 107

SGP controle structuren: while-lus in Ada: in Java en C: while <Boolean Expression> loop SGP controle structuren: while-lus in Ada: in Java en C: while loop end loop; while () { /* expressie = 0 eindigt lus */ } loop. . . exit when . . . end loop; Yolande Berbers while (1) {. . . if () break; . . . } Systeem-geïntegreerde programmatuur slide 108

SGP controle structuren: for-lus en oneindige lus in Ada: in C: for I in SGP controle structuren: for-lus en oneindige lus in Ada: in C: for I in 0. . 9 loop A(I): = I; end loop; for (i = 0; i <= 9; i++) { A[i] = i; { loop end loop; while (1) { } Yolande Berbers Systeem-geïntegreerde programmatuur slide 109

SGP parameters bij subprogrammas in parameters bij subprogramma’s in Ada drie modes: in out SGP parameters bij subprogrammas in parameters bij subprogramma’s in Ada drie modes: in out data wordt doorgegeven aan het subprogramma data wordt doorgegeven aan het oproepende programmaonderdeel data wordt doorgegeven aan het subprogramma, wordt daar eventueel gewijzigd en wordt dan weer doorgegeven aan het oproepende programmaonderdeel procedure Quadratic ( A, B, C : in Float; R 1, R 2 : out Float; Ok : out Boolean); bij functies mogen alleen ‘in’ parameters gebruikt worden Yolande Berbers Systeem-geïntegreerde programmatuur slide 110

parameters bij subprogramma’s in C SGP parameters bij subprogrammas in C maar 1 parametermechanisme: parameters bij subprogramma’s in C SGP parameters bij subprogrammas in C maar 1 parametermechanisme: by value: data wordt enkel doorgegeven aan het subprogramma om resultaten te doen terugkeren naar het oproepende programmaonderdeel moeten pointers gebruikt worden void quadratic ( float A, float B, float C, float *R 1, float *R 2, int *OK); merk op: - C gebruikt geen sleutelwoord om een subprogramma aan te geven - een procedure in C is een functie die niets (void) terug geeft Yolande Berbers Systeem-geïntegreerde programmatuur slide 111

Java SGP parameters bij subprogramma’s inin C parameters bij subprogrammas primitieve argumenten worden gekopieerd Java SGP parameters bij subprogramma’s inin C parameters bij subprogrammas primitieve argumenten worden gekopieerd variabelen van classe-type zijn reference variabelen, worden doorgegeven als referentie argument dat niet mag gewijzigd worden door functie: “final” public class Roots { float R 1, R 2; } boolean quadratic ( final float A, final float B, final float C, Roots R); merk op: - de boolean vlag is de teruggeefwaarde van de functie - Roots is een klasse: R 1 en R 2 kunnen gewijzigd worden Yolande Berbers Systeem-geïntegreerde programmatuur slide 112

SGP procedures in Ada procedure Quadratic (A, B, C : in Float; R 1, SGP procedures in Ada procedure Quadratic (A, B, C : in Float; R 1, R 2 : out Float; Ok : out Boolean) is Z : Float; begin Z : = B*B - 4. 0*A*C; if Z < 0. 0 or A = 0. 0 then Ok : = False; R 1 : = 0. 0; R 2 : = 0. 0; return; end if; Ok : = True; R 1 : = (-B + Sqrt(Z)) / (2. 0*A); R 2 : = (-B - Sqrt(Z)) / (2. 0*A); end Quadratic; Yolande Berbers Systeem-geïntegreerde programmatuur slide 113

SGP proceduresin C procedures in C void quadratic ( float A, float B, float SGP proceduresin C procedures in C void quadratic ( float A, float B, float C, float *R 1, float *R 2, int *OK); { float Z; Z = B*B - 4. 0*A*C; if (Z < 0. 0 || A == 0. 0) { *OK = 0; *R 1 = 0. 0; *R 2 = 0. 0; return; } *OK = 1; *R 1 = (-B + SQRT(Z)) / (2. 0*A); *R 2 = (-B - SQRT(Z)) / (2. 0*A); }. . . quadratic (F 1, F 2, F 3, &Q 1, &Q 2, &S); Yolande Berbers Systeem-geïntegreerde programmatuur slide 114

SGP procedures/functies. Cin Java procedures in public class Roots { float R 1, R SGP procedures/functies. Cin Java procedures in public class Roots { float R 1, R 2; } boolean quadratic ( final float A, final float B, final float C, Roots R); { float Z; Z = (float) (B*B - 4. 0*A*C); if (Z < 0. 0 || A == 0. 0) { R. R 1 = 0 f; R. R 2 = 0 f; return false; } R. R 1 = (float) (-B + Math. sqrt(Z)) / (2. 0*A); R. R 2 = (float) (-B - Math. sqrt(Z)) / (2. 0*A); return true; } Yolande Berbers Systeem-geïntegreerde programmatuur slide 115

SGP functies in Ada function Minimum (X, Y: in Integer) return Integer is begin SGP functies in Ada function Minimum (X, Y: in Integer) return Integer is begin if X > Y then return Y; else return X; end if; end Minimum; Yolande Berbers Systeem-geïntegreerde programmatuur slide 116

SGP functies in C int minimum (int X, int Y) { if (X > SGP functies in C int minimum (int X, int Y) { if (X > Y) return Y; else return ; } voorbeeld van een macro (en tegelijk ook van mogelijk cryptische schrijfwijze van if-then-else in C): #define MIN(X, Y) ((X > Y) ? (Y) : (X)); Yolande Berbers Systeem-geïntegreerde programmatuur slide 117

SGP Systeem-geïntegreerde Programmatuur kort overzicht van Ada (en C en Java): programming in the SGP Systeem-geïntegreerde Programmatuur kort overzicht van Ada (en C en Java): programming in the large Yolande Berbers Systeem-geïntegreerde programmatuur slide 118

SGP gegevensverberging: package in Ada n package heeft twee delen u specificatie interface: dit SGP gegevensverberging: package in Ada n package heeft twee delen u specificatie interface: dit is zichtbaar er buiten u lichaam: dit is de implementatie, is onzichtbaar er buiten l n het lichaam bevat een initialisatie-deel beide moeten in hetzelfde declaratieve deel staan u er mag wel iets tussen staan u bv spec. pack. A, spec. pack. B, lichaam pack. A, lichaam pack. B u op deze manier kunnen A en B elkaar oproepen n routines (en ge-exporteerde variabelen) kunnen bereikt worden via naam_package. naam_routine implementatie van slechts één instantie van de queue wordt gecreëerd in het initialisatie-deel Yolande Berbers Systeem-geïntegreerde programmatuur slide 119

SGP gegevensverberging: package in Ada n specificatie interface: deze entiteiten zijn zichtbaar er buiten SGP gegevensverberging: package in Ada n specificatie interface: deze entiteiten zijn zichtbaar er buiten package Queuemod is function Empty return Boolean; procedure Insert (E: Element); -- Element moet zichtbaar zijn procedure Remove (E: out Element); end Queuemod; n voorbeeld van oproep: n lichaam : dit is de implementatie, zie volgende slide Yolande Berbers Queuemod. Insert (El); Systeem-geïntegreerde programmatuur slide 120

SGP gegevensverberging: package in Ada (vervolg) gegevensverberging: package in Ada packagebody Queuemod is type. SGP gegevensverberging: package in Ada (vervolg) gegevensverberging: package in Ada packagebody Queuemod is type. . . Q: Queue_Ptr_T; procedure Create is begin. . . end Create; function Empty return Boolean is begin. . . end Empty; procedure Insert (E: Element) is begin. . . end Insert; procedure Remove (E: out Element) is begin. . . end Remove; begin Create; end Queuemod; Yolande Berbers Systeem-geïntegreerde programmatuur slide 121

SGP gegevensverberging: package in Ada n use: u om de naamgeving niet te zwaar SGP gegevensverberging: package in Ada n use: u om de naamgeving niet te zwaar te maken wanneer veel elementen uit een package gebruikt worden u naam_package. naam_routine wordt naam_routine declare use Queuemod; begin if not Empty then Remove (E); end if; end; Yolande Berbers Systeem-geïntegreerde programmatuur slide 122

SGP gegevensverberging in C n C: geen taalconstructies voor gegevensverberging n modules kunnen nagebootst SGP gegevensverberging in C n C: geen taalconstructies voor gegevensverberging n modules kunnen nagebootst worden door code in verschillende bestanden te plaatsen u per module een ‘header-file’, deze eindigt op ‘. h’ u per module een ‘body-file’, deze eindigt op ‘. c’ u het header-bestand wordt ingelast in het. c-bestand u geen formele relatie tussen deze bestanden, alleen naamconventie n nadelen: u geen initialisatie-deel (initialisatie zal ergens expliciet moeten staan) u minder testen door de compiler zijn mogelijk u bv geen test op volledigheid specificatie tov lichaam en omgekeerd: het ontbreken van een routine wordt slechts opgemerkt bij het linken Yolande Berbers Systeem-geïntegreerde programmatuur slide 123

SGP n gegevensverberging in C header-bestand (. h bestand): dit bestand definieert de functionele SGP n gegevensverberging in C header-bestand (. h bestand): dit bestand definieert de functionele interface van de module int Empty(); void insert. E (element E); void remove. E (element *E); n n dit header-bestand moet ingelast worden in elk bestand dat van de module wenst gebruik te maken (via #include-instructie) implementatie staat in een. c bestand, zie volgende slide Yolande Berbers Systeem-geïntegreerde programmatuur slide 124

SGP gegevensverberging in C (vervolg) #include “queuemod. h” struct. . . void create() {. SGP gegevensverberging in C (vervolg) #include “queuemod. h” struct. . . void create() {. . . } int empty() {. . . } void insert. E (element E) {. . . } void remove. E (element *E) {. . . } Yolande Berbers Systeem-geïntegreerde programmatuur slide 125

SGP gegevensverberging in C queuemod. h int Empty(); void insert. E (element E); void SGP gegevensverberging in C queuemod. h int Empty(); void insert. E (element E); void remove. E (element *E); queuemod. c put_in. c take_out. c #include “queuemod. h” …. …. int empty() {. . . } void insert. E (element E) {. . . } element E 1, E 2; insert. E(E 1); insert. E(E 2); element E 3; if !empty() remove. E(&E 3) …. …. Yolande Berbers Systeem-geïntegreerde programmatuur slide 126

SGP n tekortkomingen van modules zijn geen eerste-klas-taalelementen u moduletypes kunnen niet gemaakt worden SGP n tekortkomingen van modules zijn geen eerste-klas-taalelementen u moduletypes kunnen niet gemaakt worden l je kunt geen verschillende instanties van module creëren u je kunt geen pointer naar een module laten wijzen Yolande Berbers Systeem-geïntegreerde programmatuur slide 127

SGP n aparte compilatie voordelen van het apart compileren van modules u een module SGP n aparte compilatie voordelen van het apart compileren van modules u een module kan geschreven en getest worden, onafhankelijk van de rest u eens getest kan de module in een bibliotheek geplaatst worden, eventueel reeds gecompileerd u aparte compilatie ondersteunt projectbeheer u voordeel dat niet alles telkens gehercompileerd moet worden (dat geldt natuurlijk vooral voor ‘programming in the large’) n aparte compilatie ondersteunt bottom-up ontwerp u vooral bottom-up ontwerp van specificaties is interessant Yolande Berbers Systeem-geïntegreerde programmatuur slide 128

SGP aparte compilatie in C queuemod. h int Empty(); void insert. E (element E); SGP aparte compilatie in C queuemod. h int Empty(); void insert. E (element E); void remove. E (element *E); queuemod. c #include “queuemod. h” put_in. c #include “queuemod. h” take_out. c #include “queuemod. h” …. …. int empty() {. . . } void insert. E (element E) {. . . } element E 1, E 2; insert. E(E 1); insert. E(E 2); element E 3; if !empty() remove. E(&E 3) …. …. Yolande Berbers Systeem-geïntegreerde programmatuur slide 129

SGP n n aparte compilatie in Ada with-constructie: gebruik van een package uit bibliotheek SGP n n aparte compilatie in Ada with-constructie: gebruik van een package uit bibliotheek (een beetje te vergelijken met #include van C) een with-constructie kan in een andere package staan: zo ontstaat een hiërarchie van modules u vb: module Dispatcher maakt gebruik van module Queuemod package Dispatcher is. . . -- nieuwe zichtbare entiteiten end Dispatcher; with Queuemod; package body Dispatcher is. . . -- verborgen entiteiten end Dispatcher; Yolande Berbers Systeem-geïntegreerde programmatuur slide 130

SGP n aparte compilatie in Ada voordelen u specificatie en lichaam zijn expliciet in SGP n aparte compilatie in Ada voordelen u specificatie en lichaam zijn expliciet in de bibliotheek u specificatie kan geschreven worden vóór het lichaam l logische consistentie kan reeds door compiler getest worden l specificatie kan geschreven worden door project-leiders s s uitwerken van specificatie is vaak programming in the small s fout in specificatie heeft grotere gevolgen dan fout in lichaam: alle modules die de specificatie gebruiken moeten eventueel gewijzigd worden s Yolande Berbers specificatie is een deel van ontwerpen (bij fout in een lichaam moet enkel dit lichaam hercompileerd worden) Systeem-geïntegreerde programmatuur slide 131

SGP n aparte compilatie Ada u aparte compilatie is deel van de taal l SGP n aparte compilatie Ada u aparte compilatie is deel van de taal l l n bibliotheekomgeving is deel van taal consistentie van specificaties en types gebeurt over bibliotheekeenheden C u aparte compilatie is geen deel van taal l C-bestand worden apart gecompileerd: object modules l object modules worden gelinked l bij het linken wordt niet gechecked op specificatieconsistentie en types Yolande Berbers Systeem-geïntegreerde programmatuur slide 132

SGP abstracte gegevenstypes n uitbreiding van idee dat gebruikers van een type niets hoeven SGP abstracte gegevenstypes n uitbreiding van idee dat gebruikers van een type niets hoeven te weten van de precieze voorstellingskeuze van dit type (bv lijst, enkel of dubbel gelinkt, circulair of niet, . . ) n lost één van de tekortkomingen van modules op n ADT (abstract data type) = module dat een type definieert u type bepaalt: objecten en operaties u definitie van een type impliceert dat er variabelen van dit type kunnen gedeclareerd worden u een creatie-routine is hier absoluut noodzakelijk Yolande Berbers Systeem-geïntegreerde programmatuur slide 133

SGP n abstracte gegevenstypes extra moeilijkheid wanneer gecombineerd met aparte compilatie u normaal wensen SGP n abstracte gegevenstypes extra moeilijkheid wanneer gecombineerd met aparte compilatie u normaal wensen we dat de interne voorstelling van het type verborgen wordt, zich dus in het lichaam bevindt u module dat gebruik maakt van een ADT moet het volgende kennen: de operaties (= specificatie, de interface) l de grootte van het ADT (dit is nodig voor de compilatie van de gebruikmakende module) u mogelijke oplossing: gebruik van een indirectie l altijd een pointer gebruiken naar het ADT: een pointer heeft een vaste grootte (vaak gebruikt in C) u in Ada: interne voorstelling wordt bij specificatie gevoegd l als limited private l als private (dan zijn ook toekenning en vgl mogelijk) l Yolande Berbers Systeem-geïntegreerde programmatuur slide 134

SGP n abstracte gegevenstypes in C voorbeeld van gebruik van indirectie in C: als SGP n abstracte gegevenstypes in C voorbeeld van gebruik van indirectie in C: als extra parameter wordt hier nu altijd een pointer naar het object gebruikt int empty(queue_ptr_t Q); void insert. E void remove. E Yolande Berbers (queue_ptr_t Q, element E); (queue_ptr_t Q, element *E); Systeem-geïntegreerde programmatuur slide 135

SGP abstracte gegevenstypes in Ada package Complex_Arithmetic is type Complex is private; function ”+” SGP abstracte gegevenstypes in Ada package Complex_Arithmetic is type Complex is private; function ”+” (X, Y: Complex) return Complex; function ”-” (X, Y: Complex) return Complex; function Comp (A, B: Float) return Complex; function Real_Part (X: Complex) return Float; private type Complex is record Real_Part: Float; Imag_Part: Float; end record; end Complex_Arithmetic; Yolande Berbers Systeem-geïntegreerde programmatuur slide 136

SGP abstracte gegevenstypes in Ada with Complex_Arithmetic; use Complex_Arithmetic; …. C 1, C 2, SGP abstracte gegevenstypes in Ada with Complex_Arithmetic; use Complex_Arithmetic; …. C 1, C 2, C 3: Complex; A, B: float; …. C 2 : = Comp(A, B); C 3 : = C 1 + C 2; if C 1 = C 2 then …. end if; …. Yolande Berbers Systeem-geïntegreerde programmatuur slide 137

SGP object-georiënteerd programmeren n verder uitbreiding van ADT (variabelen van de ADT worden objecten SGP object-georiënteerd programmeren n verder uitbreiding van ADT (variabelen van de ADT worden objecten genoemd) n 4 extra kenmerken u uitbreidbaarheid van type (over-erving) u automatische initialisatie van objecten (constructors) u automatische destructie van objecten (destructors) u soort operatie wordt pas bij uitvoering bepaald (polymorfisme) l n probleem bij real-time programma's: polymorfisme maakt het niet mogelijk om via de code te weten welke operatie opgeroepen zal worden: moeilijk om nodige tijd te schatten ondersteund in Ada en Java Yolande Berbers Systeem-geïntegreerde programmatuur slide 138

SGP n OOP en Java abstracte klasse u hier kunnen geen objecten van gedeclareerd SGP n OOP en Java abstracte klasse u hier kunnen geen objecten van gedeclareerd worden u moet via over-erving concreet gemaakt worden n finale klasse u hiervan kan men niet over-erven n sleutelwoord extends u geeft aan dat een klasse van een andere is afgeleid u public class Coordinate {. . } // voor 2 -dimensionaal werken u public class Three. Dimension extends Coordinate { … } // voor 3 -dimensies l nieuwe velden kunnen toegevoegd worden l extra operaties kunnen gedefinieerd worden l bestaande operaties kunnen ge-herdefinieerd worden, en mogen in hun definitie gebruik maken van oorspronkelijke operatie Yolande Berbers Systeem-geïntegreerde programmatuur slide 139

SGP n n n herbruikbaarheid is veelbelovend voor softwareproductie, maar niet zo eenvoudig overerving SGP n n n herbruikbaarheid is veelbelovend voor softwareproductie, maar niet zo eenvoudig overerving is een goed middel ander middel: een sjabloon u type is generisch en wordt pas bepaald bij instantiatie u uitwerking in Ada en C++ generic modules in Ada l template in C++ l [interfaces in Java: werkt iets anders] u componenten kunnen geïnstantieerd worden van een sjabloon u voorbeeld: een ADT dat een queue van elementen beheert, het type van de elementen wordt in het sjabloon nog niet bepaald l Yolande Berbers Systeem-geïntegreerde programmatuur slide 140




  • Мы удаляем страницу по первому запросу с достаточным набором данных, указывающих на ваше авторство. Мы также можем оставить страницу, явно указав ваше авторство (страницы полезны всем пользователям рунета и не несут цели нарушения авторских прав). Если такой вариант возможен, пожалуйста, укажите об этом.