De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Slide 1Systeem-geïntegreerde programmatuurYolande Berbers SGP Systeem-geïntegreerde Programmatuur Marc Gobin (&Yolande Berbers) Departement Computerwetenschappen.

Verwante presentaties


Presentatie over: "Slide 1Systeem-geïntegreerde programmatuurYolande Berbers SGP Systeem-geïntegreerde Programmatuur Marc Gobin (&Yolande Berbers) Departement Computerwetenschappen."— Transcript van de presentatie:

1 slide 1Systeem-geïntegreerde programmatuurYolande Berbers SGP Systeem-geïntegreerde Programmatuur Marc Gobin (&Yolande Berbers) Departement Computerwetenschappen (200A 03.20) (Yolande@cs.kuleuven.ac.be)

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

3 SGP slide 3Systeem-geïntegreerde programmatuurYolande Berbers 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

4 SGP slide 4Systeem-geïntegreerde programmatuurYolande Berbers practica n 2 practica u practicum 1 l 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

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

6 SGP slide 6Systeem-geïntegreerde programmatuurYolande Berbers 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

7 SGP slide 7Systeem-geïntegreerde programmatuurYolande Berbers wat is een real-time systeem? n een computersysteem dat moet u reageren op externe stimuli u binnen een 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 niet op tijd reageren is even erg als foutief antwoorden n in het Nederlands u ware-tijd-systemen

8 SGP slide 8Systeem-geïntegreerde programmatuurYolande Berbers wat is een ingebed systeem? n 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

9 SGP slide 9Systeem-geïntegreerde programmatuurYolande Berbers real-time systeem vs ingebed systeem n 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

10 SGP slide 10Systeem-geïntegreerde programmatuurYolande Berbers 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,...

11 SGP slide 11Systeem-geïntegreerde programmatuurYolande Berbers soorten real-time systemen n 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)

12 SGP slide 12Systeem-geïntegreerde programmatuurYolande Berbers soorten real-time systemen n 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

13 SGP slide 13Systeem-geïntegreerde programmatuurYolande Berbers 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

14 SGP slide 14Systeem-geïntegreerde programmatuurYolande Berbers 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

15 SGP slide 15Systeem-geïntegreerde programmatuurYolande Berbers voorbeelden van RT systemen n 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 dit kan best veel rekenwerk vragen

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

17 SGP slide 17Systeem-geïntegreerde programmatuurYolande Berbers examples of real-time systems n 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

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

19 SGP slide 19Systeem-geïntegreerde programmatuurYolande Berbers voorbeelden van RT systemen n real-time systeem in een productieomgeving u automatisering van allerhande handelingen 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

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

21 SGP slide 21Systeem-geïntegreerde programmatuurYolande Berbers voorbeelden van RT systemen n 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

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

23 SGP slide 23Systeem-geïntegreerde programmatuurYolande Berbers voorbeelden van RT systemen n 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

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

25 SGP slide 25Systeem-geïntegreerde programmatuurYolande Berbers vb van ingebedde systemen n 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

26 SGP slide 26Systeem-geïntegreerde programmatuurYolande Berbers vb van ingebedde systemen n 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)

27 SGP slide 27Systeem-geïntegreerde programmatuurYolande Berbers karakteristieken van een RTS n 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)

28 SGP slide 28Systeem-geïntegreerde programmatuurYolande Berbers karakteristieken van een RTS n 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 complex, often based on differential equations

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

30 SGP slide 30Systeem-geïntegreerde programmatuurYolande Berbers 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 u requirement: ability to manipulate real numbers r(t*) digital to analog converter plant u(t*) u(t) y(t) controller (computer) sample and hold y(t*)

31 SGP slide 31Systeem-geïntegreerde programmatuurYolande Berbers karakteristieken van een RTS n 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

32 SGP slide 32Systeem-geïntegreerde programmatuurYolande Berbers voorbeeld: ontploffing Ariane 5 n 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

33 SGP slide 33Systeem-geïntegreerde programmatuurYolande Berbers voorbeeld: ontploffing Ariane 5 n 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

34 SGP slide 34Systeem-geïntegreerde programmatuurYolande Berbers voorbeeld: ontploffing Ariane 5 n 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 2de computer werd ingeschakeld u deze 2de 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

35 SGP slide 35Systeem-geïntegreerde programmatuurYolande Berbers voorbeeld: ontploffing Ariane 5 n 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 H6) l dit gebeurde niet voor de instructie die crash veroorzaakte u de fout had via simulaties kunnen gevonden worden l maar in de simulaties draaide die module niet na lancering

36 SGP slide 36Systeem-geïntegreerde programmatuurYolande Berbers karakteristieken van een RTS n 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

37 SGP slide 37Systeem-geïntegreerde programmatuurYolande Berbers karakteristieken van een RTS n 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

38 SGP slide 38Systeem-geïntegreerde programmatuurYolande Berbers karakteristieken van een RTS n 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)

39 SGP slide 39Systeem-geïntegreerde programmatuurYolande Berbers karakteristieken van een RTS n 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

40 SGP slide 40Systeem-geïntegreerde programmatuurYolande Berbers 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

41 SGP slide 41Systeem-geïntegreerde programmatuurYolande Berbers economisch belang n 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

42 SGP slide 42Systeem-geïntegreerde programmatuurYolande Berbers economic importance 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 Oracle l Computer Ass. Int. l Novell l SAP AG u Europe can still grow in the market of embedded systems l Sybase l Adobe systems l Informix l American Management Systems l Sterling Software

43 SGP slide 43Systeem-geïntegreerde programmatuurYolande Berbers economic importance

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

45 SGP slide 45Systeem-geïntegreerde programmatuurYolande Berbers de taal Ada n taal ontworpen op aanvraag van DoD (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

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

47 SGP slide 47Systeem-geïntegreerde programmatuurYolande Berbers Why Ada? (Technical Arguments) n In 1976, nothing else existed, so... n 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

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

49 SGP slide 49Systeem-geïntegreerde programmatuurYolande Berbers Do Defects Really Matter? n 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!

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

51 SGP slide 51Systeem-geïntegreerde programmatuurYolande Berbers (450+) 100 200 500 300 400 19761985 1994 (37) SIGNIFICANT DECREASE IN No. OF 3GLs NO. OF 3GLs Ada is No. 1 For WeaponsAda is No. 2 For AISs Ada (33.5%) Other (6.1%) Jovial (9.3%) CMS-2 (12.5% ) C (22%) FORTRAN (13.2%) C++ 3.4% COBOL (59.2%) Ada (22%) Other (10%) C (9%) Current State of Ada Use in DoD

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

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

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

55 SGP slide 55Systeem-geïntegreerde programmatuurYolande Berbers 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 DoD 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

56 SGP slide 56Systeem-geïntegreerde programmatuurYolande Berbers Why C++? n 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

57 SGP slide 57Systeem-geïntegreerde programmatuurYolande Berbers Why C++? n 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

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

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

60 SGP slide 60Systeem-geïntegreerde programmatuurYolande Berbers When Not to Use Ada n 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

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

62 SGP slide 62Systeem-geïntegreerde programmatuurYolande Berbers Summary Ada vs C++ 2001 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 Single Vendor Non- Standard Closed System Stovepipes Ada

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

64 SGP slide 64Systeem-geïntegreerde programmatuurYolande Berbers what is so great about Java ? n programming language u familiar C-like (but improved) syntax l 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++

65 SGP slide 65Systeem-geïntegreerde programmatuurYolande Berbers what is so great about Java ? n bytecodes u Java bytecode == portable binary format l 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)

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

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

68 SGP slide 68Systeem-geïntegreerde programmatuurYolande Berbers why use anything else ? n 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

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

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

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

72 SGP slide 72Systeem-geïntegreerde programmatuurYolande Berbers inside a virtual machine n garbage collector (biggest myth for Java) u many algorithms, some even hard RT suitable l naive l incremental l 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

73 SGP slide 73Systeem-geïntegreerde programmatuurYolande Berbers inside a virtual machine n 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

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

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

76 SGP slide 76Systeem-geïntegreerde programmatuurYolande Berbers Inside a virtual machine n Java Class Libraries u upward compatibility is desirable l EmbeddedJava applications also run on any PersonalJava platform l PersonalJava applications also run on any Standard Java platform

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

78 SGP slide 78Systeem-geïntegreerde programmatuurYolande Berbers JVM requirements: processor n capabilities u arithmetic l 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 n address space u JVM + all class libraries requires a lot of memory!

79 SGP slide 79Systeem-geïntegreerde programmatuurYolande Berbers JVM requirements: OS n 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) l at least 10 priority levels u synchronization primitives (e.g., mutexes) (see CH 8) u private thread stacks (see CH 7)

80 SGP slide 80Systeem-geïntegreerde programmatuurYolande Berbers JVM requirements: other SW n 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

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

82 SGP slide 82Systeem-geïntegreerde programmatuurYolande Berbers supporting technologies n 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++)

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

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

85 SGP slide 85Systeem-geïntegreerde programmatuurYolande Berbers 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 algemene stijl: een blok in Ada

86 SGP slide 86Systeem-geïntegreerde programmatuurYolande Berbers algemene stijl: een blok in C { } { 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;/* toekenningsoperator is = */ B = temp; } algemene stijl: een blok in C en Java

87 SGP slide 87Systeem-geïntegreerde programmatuurYolande Berbers gegevenstypen n 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 gegevenstypen

88 SGP slide 88Systeem-geïntegreerde programmatuurYolande Berbers 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 types in C

89 SGP slide 89Systeem-geïntegreerde programmatuurYolande Berbers 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; types in Ada

90 SGP slide 90Systeem-geïntegreerde programmatuurYolande Berbers types in Ada (vervolg) 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; types in Ada

91 SGP slide 91Systeem-geïntegreerde programmatuurYolande Berbers types in C (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 H4 types in C en Java

92 SGP slide 92Systeem-geïntegreerde programmatuurYolande Berbers 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; gestructureerde gegevenstypes in Ada

93 SGP slide 93Systeem-geïntegreerde programmatuurYolande Berbers 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] [MAX]; // merk op: in Java zijn rijen objecten gestructureerde gegevenstypes in C

94 SGP slide 94Systeem-geïntegreerde programmatuurYolande Berbers gestructureerde gegevenstypes in C #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] [MAX]; /* er zijn geen booleans in C */ reading_t reading; switches_t switches; gestructureerde gegevenstypes in Java

95 SGP slide 95Systeem-geïntegreerde programmatuurYolande Berbers 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; gestructureerde gegevenstypes in Ada

96 SGP slide 96Systeem-geïntegreerde programmatuurYolande Berbers 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; } date2_t;/* dit is een nieuw type met naam date2_t */ gestructureerde gegevenstypes in C

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

98 SGP slide 98Systeem-geïntegreerde programmatuurYolande Berbers 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; gestructureerde gegevenstypes in Ada (vervolg) gestructureerde gegevenstypes in Ada

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

100 SGP slide 100Systeem-geïntegreerde programmatuurYolande Berbers dynamische gegevenstypes in C { typedef struct node { int value; struct node *next; /* pointer naar een record hier gedefinieerd */ } node_t; 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 */... } dynamische gegevenstypes in C

101 SGP slide 101Systeem-geïntegreerde programmatuurYolande Berbers 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; A1: Ac; begin A1 := new Node;-- dynamische allocatie van geheugen A1.Value := V; A1.Next := null ;... end ; dynamische gegevenstypes in Ada

102 SGP slide 102Systeem-geïntegreerde programmatuurYolande Berbers dynamische gegevenstypes in C (vervolg) 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];/* adres van eerste element van rij */ next_event++;/* 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) */ dynamische gegevenstypes in C

103 SGP slide 103Systeem-geïntegreerde programmatuurYolande Berbers dynamische gegevenstypes in C (vervolg) 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 Ref1 = new Node(); Node Ref 2= new Node(); if (Ref1 == Ref2) { … }// vergelijkt adressen en geen inhoud dynamische gegevenstypes in Java

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

105 SGP slide 105Systeem-geïntegreerde programmatuurYolande Berbers controle structuren: if-then-else in Ada: if A /= 0 then if B/A > 10 then High := True; else High := False; end if; 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; } controle structuren: if-then-else

106 SGP slide 106Systeem-geïntegreerde programmatuurYolande Berbers 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; controle structuren: if-then-else in Ada

107 SGP slide 107Systeem-geïntegreerde programmatuurYolande Berbers controle structuren: case in Ada: case Command is when ‘A’ | ‘a’=> Action1; when ‘t’ => Action2; when ‘e’=> Action3; when ‘x’.. ‘z’=> Action4; when others=> null; end case; in Java en C: switch (command) { case ‘A’ : case ‘a’ :action1; break; case ‘t’ :action2; break; case ‘e’ :action3; break; case ‘x’ : case ‘y’ : case ‘z’ :action4; break; default :break; } controle structuren: case

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

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

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

111 SGP slide 111Systeem-geïntegreerde programmatuurYolande Berbers 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 *R1, float *R2, 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 parameters bij subprogramma’s in C

112 SGP slide 112Systeem-geïntegreerde programmatuurYolande Berbers parameters bij subprogrammas in C 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 R1, R2; } 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: R1 en R2 kunnen gewijzigd worden parameters bij subprogramma’s in Java

113 SGP slide 113Systeem-geïntegreerde programmatuurYolande Berbers procedures in Ada procedure Quadratic (A, B, C: in Float; R1, R2: 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; R1 := 0.0; R2 := 0.0; return; end if; Ok := True; R1 := (-B + Sqrt(Z)) / (2.0*A); R2 := (-B - Sqrt(Z)) / (2.0*A); end Quadratic; procedures in Ada

114 SGP slide 114Systeem-geïntegreerde programmatuurYolande Berbers procedures in C void quadratic (float A, float B, float C, float *R1, float *R2, int *OK); { float Z; Z = B*B - 4.0*A*C; if (Z < 0.0 || A == 0.0) { *OK = 0; *R1 = 0.0; *R2 = 0.0; return; } *OK = 1; *R1 = (-B + SQRT(Z)) / (2.0*A); *R2 = (-B - SQRT(Z)) / (2.0*A); }... quadratic (F1, F2, F3, &Q1, &Q2, &S); procedures in C

115 SGP slide 115Systeem-geïntegreerde programmatuurYolande Berbers procedures in C public class Roots { float R1, R2; } 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.R1 = 0f; R.R2 = 0f; return false; } R.R1 = (float) (-B + Math.sqrt(Z)) / (2.0*A); R.R2 = (float) (-B - Math.sqrt(Z)) / (2.0*A); return true; } procedures/functies in Java

116 SGP slide 116Systeem-geïntegreerde programmatuurYolande Berbers 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; functies in Ada

117 SGP slide 117Systeem-geïntegreerde programmatuurYolande Berbers 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)); functies in C

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

119 SGP slide 119Systeem-geïntegreerde programmatuurYolande Berbers 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 het lichaam bevat een initialisatie-deel n 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 n implementatie van slechts één instantie van de queue n de queue wordt gecreëerd in het initialisatie-deel

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

121 SGP slide 121Systeem-geïntegreerde programmatuurYolande Berbers gegevensverberging: package in Ada (vervolg) 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; gegevensverberging: package in Ada

122 SGP slide 122Systeem-geïntegreerde programmatuurYolande Berbers 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;

123 SGP slide 123Systeem-geïntegreerde programmatuurYolande Berbers 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

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

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

126 SGP slide 126Systeem-geïntegreerde programmatuurYolande Berbers gegevensverberging in C int Empty(); void insertE (element E); void removeE (element *E); queuemod.h #include “queuemod.h” …. int empty() {... } void insertE (element E) {... } …. queuemod.c #include “queuemod.h” …. element E1, E2; insertE(E1); insertE(E2); …. put_in.c #include “queuemod.h” …. element E3; if !empty() removeE(&E3) …. take_out.c

127 SGP slide 127Systeem-geïntegreerde programmatuurYolande Berbers tekortkomingen van modules n 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

128 SGP slide 128Systeem-geïntegreerde programmatuurYolande Berbers aparte compilatie n 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

129 SGP slide 129Systeem-geïntegreerde programmatuurYolande Berbers aparte compilatie in C int Empty(); void insertE (element E); void removeE (element *E); #include “queuemod.h” …. int empty() {... } void insertE (element E) {... } …. #include “queuemod.h” …. element E1, E2; insertE(E1); insertE(E2); …. #include “queuemod.h” …. element E3; if !empty() removeE(&E3) …. queuemod.h queuemod.c put_in.ctake_out.c

130 SGP slide 130Systeem-geïntegreerde programmatuurYolande Berbers aparte compilatie in Ada n with-constructie: gebruik van een package uit bibliotheek (een beetje te vergelijken met #include van C) n 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;

131 SGP slide 131Systeem-geïntegreerde programmatuurYolande Berbers aparte compilatie in Ada n 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 specificatie is een deel van ontwerpen 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 (bij fout in een lichaam moet enkel dit lichaam hercompileerd worden)

132 SGP slide 132Systeem-geïntegreerde programmatuurYolande Berbers aparte compilatie n Ada u aparte compilatie is deel van de taal l bibliotheekomgeving is deel van taal l consistentie van specificaties en types gebeurt over bibliotheekeenheden n 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 specificatie- consistentie en types

133 SGP slide 133Systeem-geïntegreerde programmatuurYolande Berbers 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

134 SGP slide 134Systeem-geïntegreerde programmatuurYolande Berbers abstracte gegevenstypes n 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: l 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)

135 SGP slide 135Systeem-geïntegreerde programmatuurYolande Berbers abstracte gegevenstypes in C n 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 insertE (queue_ptr_t Q, element E); void removeE (queue_ptr_t Q, element *E);

136 SGP slide 136Systeem-geïntegreerde programmatuurYolande Berbers 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; abstracte gegevenstypes in Ada

137 SGP slide 137Systeem-geïntegreerde programmatuurYolande Berbers abstracte gegevenstypes in Ada with Complex_Arithmetic; use Complex_Arithmetic; …. C1, C2, C3: Complex; A, B: float; …. C2 := Comp(A, B); C3 := C1 + C2; if C1 = C2 then …. end if; ….

138 SGP slide 138Systeem-geïntegreerde programmatuurYolande Berbers 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 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 n ondersteund in Ada en Java

139 SGP slide 139Systeem-geïntegreerde programmatuurYolande Berbers OOP en Java n 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 ThreeDimension 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

140 SGP slide 140Systeem-geïntegreerde programmatuurYolande Berbers herbruikbaarheid n herbruikbaarheid is veelbelovend voor softwareproductie, maar niet zo eenvoudig n overerving is een goed middel n ander middel: een sjabloon u type is generisch en wordt pas bepaald bij instantiatie u uitwerking in Ada en C++ l 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


Download ppt "Slide 1Systeem-geïntegreerde programmatuurYolande Berbers SGP Systeem-geïntegreerde Programmatuur Marc Gobin (&Yolande Berbers) Departement Computerwetenschappen."

Verwante presentaties


Ads door Google