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

Slides:



Advertisements
Verwante presentaties
KWALITEITSZORG november 2012
Advertisements


Objectgeoriënteerd Programmeren in C++
Wat was toen het grootste het grootste probleem van de van de FOD?
HM-ES-th2 Les 9 en 10 Electronic System Level Design and Verification.
NEDERLANDS WOORD BEELD IN & IN Klik met de muis
Embedded systemen Embedded software.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Percelen.
Algoritmen en Datastructuren (ALDAT)
Een optimale benutting van vierkante meters Breda, 6 juni 2007.
Verbetering van kwaliteit begint bij de individuele ontwikkelaar E-ducation is our mission NIOC Eric van der Vliet SPI Consultant.
VBA en VBS Een introductie.

Nooit meer onnodig groen? Luuk Misdom, IT&T
Hoofdstuk 6: Controle structuren
FOD VOLKSGEZONDHEID, VEILIGHEID VAN DE VOEDSELKETEN EN LEEFMILIEU 1 Kwaliteit en Patiëntveiligheid in de Belgische ziekenhuizen anno 2008 Rapportage over.
Elke 7 seconden een nieuw getal
Visibility-based Probabilistic Roadmaps for Motion Planning Tim Schlechter 13 februari 2003.
Oefeningen F-toetsen ANOVA.
Neurale Netwerken Kunstmatige Intelligentie Rijksuniversiteit Groningen April 2005.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
Verdieping Programmeren in Java - deel 1 college 6 mei 2001.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Databases I (H. 1) Wiebren de Jonge Vrije Universiteit, Amsterdam Voorlopige versie 2003.
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
SIP File Recovery Tool. Agenda 18/10/2006Maken agenda + onderzoeken van verschillende filetypes 25/10/2006Uitzoeken hoe er effecient gelezen en geschreven.
De digitale coach Het verbeteren van een plan van aanpak Steven Nijhuis, coördinator projecten FNT Deze presentatie staat op:
Ben Bruidegom 1 Sequentiële schakelingen Toestand uitgang bepaald door:  ingangen;  vorige toestand uitgang.
ribwis1 Toegepaste wiskunde – Differentieren Lesweek 7
P. 1 Vakgroep Informatietechnologie Scanf voorbeeld #include int main(void) { int i=-1,j=-1,k=-1,l=-1; int b; b=scanf("%d %d %d %d",&i,&j,&k,&l); printf("res=%d.
Deel I: Programmeertaal C 6. Arrays en Pointers
P. 1 Vakgroep Informatietechnologie Structuur Deel II C++ Classes Namespaces Type casting Reference types Constructors en Destructors Memory Management.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Power PC Assembler. Assembler toolkit bevat Assembler zelf Linkerlibrarian.
EFS Seminar Discriminatie van pensioen- en beleggingsfondsen
Eerst even wat uitleg. Klik op het juiste antwoord als je het weet.
Uitleg scheikundige begrippen
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 3: Werken met numerieke gegevens.
STIMULANS KWALITEITSZORG juni 2014.
Logistics: a driver for innovation Low costs High value Flexibility now and later Superior technology Timwood - T > No transport - I > No Inventory - M.
Management Accounting Management Control
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 4: het beheersen van complexiteit: programming in the.
Programmatuur voor real-time controle
Openbaar je talent Service public, talent particulier.
Deltion College Engels B1 Lezen [no. 001] can-do : 2 products compared.
Deltion College Engels C1 Spreken/Presentaties [Edu/004] thema ‘Today I will talk to you about… ‘ can-do : kan duidelijke, gedetailleerde beschrijving.
Hoofdstuk 6 – Objectgeoriënteerd Programmeren: Overerving
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
Hoofdstuk 3 - Conditionele logica
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Deltion College Engels C1 Spreken [Edu/002] thema: A book that deserves to be read can-do : kan duidelijke, gedetailleerde samenvatting geven van een gelezen.
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
1 Introductie next MCT - Programmeren 2 © S. Walcarius Waarom java? programma machinetaal (.exe) compilen platformspecifiek Een exe programma.
JAVA: een platformonafhankelijke taal
Deltion College Engels C1 Schrijven [Edu/007] thema: Mind twister or how to write an essay… can-do : kan heldere, goed gestructureerde uiteenzetting schrijven.
Deltion College Engels B2 Spreken [Edu/001] thema: What’s in the news? can-do : kan verslag doen van een gebeurtenis en daarbij meningen met argumenten.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Deltion College Engels B1 Spreken [Edu/001] thema: song texts can-do : kan een onderwerp dat mij interesseert op een redelijk vlotte manier beschrijven.
Deltion College Engels B2 Schrijven [Edu/005] thema: Writing a hand-out can-do: kan een begrijpelijke samenvatting schrijven © Anne Beeker Alle rechten.
APP Platform Rivium, 5 maart 2013 Rik Vietsch.
Minor Project- en Programmamanagement
Key Process Indicator Sonja de Bruin
= Data management Voor uitvoering en communicatie Informatie tijdens het ontwerp- en het bouwproces Werken met het InfraModel Het begin van de verandering!
Innovatie met IBM Cloud Orchestrator.
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Software Development fundamentals
SQL Les February 2019.
Leerlingen zeiden: “Je MOET hem loslaten
Transcript van de presentatie:

slide 1Systeem-geïntegreerde programmatuurYolande Berbers SGP Systeem-geïntegreerde Programmatuur Marc Gobin (&Yolande Berbers) Departement Computerwetenschappen (200A 03.20)

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 n lessen over device drivers u die geef ik al altijd n practica: zie verder

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

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

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

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

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

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

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

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,...

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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)

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

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

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*)

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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!

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

SGP slide 51Systeem-geïntegreerde programmatuurYolande Berbers (450+) (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

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

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!

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

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

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

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

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”, 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

SGP slide 59Systeem-geïntegreerde programmatuurYolande Berbers Software Development vs. Software Maintenance n DoD looks at systems from total lifecycle perspective n % 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

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

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

SGP slide 62Systeem-geïntegreerde programmatuurYolande Berbers Summary Ada vs C 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

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

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++

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)

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

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

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

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

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

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

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

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

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

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

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

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

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!

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)

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

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

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++)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 < then Num_Digits := 4; else Num_Digits := 5; end if; controle structuren: if-then-else in Ada

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

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

SGP slide 109Systeem-geïntegreerde programmatuurYolande Berbers in Ada: for I in 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

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

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

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

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

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

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

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

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

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

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

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;

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

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;

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

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);

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

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

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

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

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

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;

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)

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

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

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)

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);

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

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; ….

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

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

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