SGP - Departement Computerwetenschappen

advertisement
SGP
Systeem-geïntegreerde Programmatuur
Systeem-geïntegreerde
Programmatuur
Marc Gobin (&Yolande Berbers)
Departement Computerwetenschappen
(200A 03.20)
([email protected])
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 1
SGP

practische organisatie
Marc Gobin is ziek
 ik geef enkele weken les
zeker 2, waarschijnlijk 3, misschien meer
 slides kun je vinden via mijn home-page
 http://www.cs.kuleuven.ac.be/~yolande/


lessen over device drivers
 die geef ik al altijd

practica: zie verder
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 2
SGP
overzicht van de cursus

karakteristieken van real-time systemen

Ada en Java voor real-time en embedded systemen

gelijktijdige processen

het invoeren van tijd

interrupts

device drivers

petri-netten

schedulability

temporele logica
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 3
SGP

practica
2 practica
 practicum 1
individueel
 schrijven van een programma dat gebruik maakt van
gelijktijdige taken
 begroot op 10 uur
 practicum 2
 in groepjes van 2
 schrijven van pakket voor communicatie tussen 2 pc’s
 begroot op 20 uur
 er wordt een demo van de 2 practica georganiseerd
 timing is afhankelijk van verloop herstel Marc Gobin

Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 4
SGP
Systeem-geïntegreerde Programmatuur
deel 1:
inleiding tot real-time systemen
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 5
SGP
overview

what is a real-time system ?

what is an embedded system ?

concrete examples

different types of real-time & embedded systems

characteristics of real-time & embedded systems

economic importance
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 6
SGP

wat is een real-time systeem?
een computersysteem dat moet
 reageren op externe stimuli
 binnen een eindige en wel bepaalde tijd

de correctheid van het systeem
 niet alleen afhankelijk van het logische resultaat
 ook van het tijdstip waarop dat resultaat gegeven werd


niet op tijd reageren is even erg als foutief antwoorden
in het Nederlands
 ware-tijd-systemen
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 7
SGP

wat is een ingebed systeem?
een product met processor en software
 software is onlosmakelijk verbonden met het product
 software wordt niet apart verkocht
 software biedt vaak belangrijke toegevoegde waarde
 product dat een welbepaalde functie vervult

zeer veel voorbeelden in de huidige consumentenmarkt

vaak is ingebed syst. deel van groter industrieel complex
 computersysteem bewaakt en/of bestuurt externe apparatuur
 voorbeelden uit boek komen meestal uit deze hoek
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 8
SGP

real-time systeem vs ingebed systeem
een ingebed systeem reageert op externe stimuli
 deze reacties moeten vaak in real-time gebeuren

ingebedde systemen en real-time systemen
 veel gelijkaardige karakteristieken

in het boek
 real-time system == embedded system
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 9
SGP
voorbeelden van RT & ES
 prime components of global infrastructure
 the world’s energy supplies (oil, coal, gas, nuclear) depend on
embedded systems
 planes fly, and ships sail, based on embedded systems
 pharmaceutical industries use embedded systems to create our
drug supply
 our food, drink and clean water come primarily from processes
which depend on embedded systems
 embedded systems are vital in car manufacturing, national and
international defense, railway networks, medical equipment,
telecommunications, broadcast media, ...
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 10
SGP

soorten real-time systemen
harde real-time - systemen: absolute noodzaak om te
reageren binnen een deadline
 bv een vlucht-controle systeem
 wanneer de deadlines erg klein zijn en de mogelijke gevolgen
catastrofaal, zijn dit zeer kritische systemen
(bv het besturen van bomraketten)

zachte real-time - systemen: deadline is belangrijk, maar
het systeem functioneert correct ook als een deadline
‘af en toe’ gemist wordt
 bv het verzamelen van gegevens bij procescontrole
 vaak vermindert de waarde van een reactie wanneer deze te
laat komt (maar heeft geen catastrofale gevolgen)
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 11
SGP

soorten real-time systemen
what happens if a deadline is missed
 system fails: hard real-time
 value (or utility) of the result decreases: soft real-time
 value is of no benefit: firm real-time system
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 12
SGP
soorten real-time systemen

een computer systeem kan zowel harde als zachte
real-time subsystemen hebben

missen van een deadline
 vaak: kost-functie geassocieerd met missen van een deadline
 aangeven (in %) hoe vaak een deadline mag gemist worden
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 13
SGP
voorbeelden van RT systemen

real-time systemen voor proces-controle

real-time systemen in een productieomgeving

real-time systemen voor communicatie, bevel en controle

veralgemening: industrieel ingebed computersystemen
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 14
SGP

voorbeelden van RT systemen
real-time systeem voor proces-controle
 eenvoudig voorbeeld: zorgen voor een gelijke stroming in een
pijpleiding, door controle van een klep

de hoek van de klep moet aangepast worden aan de
veranderingen van de inputstroming

dit moet gebeuren binnen een bepaalde tijd, of anders zal de
apparatuur aan het einde van de pijp overbelast worden

Yolande Berbers
dit kan best veel rekenwerk vragen
Systeem-geïntegreerde programmatuur
slide 15
example: simple valve control
SGP
interface
input flow
reading
flow
meter
processing
output valve
angle
valve
time
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 16
SGP

examples of real-time systems
process control: general characteristics
 interaction with equipment
 use of sensors and actuators
 use of transducers: generate an electrical signal proportional to
the physical quantity being read
 use of analog to digital (and digital to analog) converters
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 17
SGP
general process control
operators console
process control
computer
chemicals
and
materials
valve
temperature
transducer
stirrer
finished
products
a process control system
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 18
SGP

voorbeelden van RT systemen
real-time systeem in een productieomgeving
 automatisering van allerhande handelingen

verlaagt de productiekost

verhoogt de productiviteit
 integratie van het volledige productieproces,
van ontwerp van een product tot fabricatie
 gebruik van een variatie van mechanische tuigen (werktuigen,
robots, lopende banden),

werking moet gecoördineerd en gecontroleerd worden

vaak een groot aantal los-gekoppelde systemen
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 19
SGP
general manufacturing
operators console
production control
computer
parts
machine
tools
manipulators
conveyor
belts
finished
products
a production control system
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 20
SGP

voorbeelden van RT systemen
real-time systemen voor communicatie, bevel en controle
 militaire term, veel toepassingen met zelfde karakteristieken
 voorbeelden: automatische bediening van medische toestellen,
luchtverkeer controle, vliegtuigreservaties, bankoperaties per
terminal
 kenmerken:
 ingewikkelde beslissingsregels
 verzamelen van informatie
 grote hoeveelheden
 vaak geografisch verspreid
 administratieve procedures
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 21
SGP communicatie, bevel en controle
command
post
command and
control computer
terminals
temperature, pressure, power and so on
sensors/actuators
a command and control system
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 22
SGP

voorbeelden van RT systemen
veralgemening: industrieel ingebed computersystemen
 directe interface met fysische wereld
 sensoren die op regelmatige tijdstippen informatie geven
 meestal ook een console

operator krijgt uitgebreide informatie (vaak grafisch)

operator kan manueel ingrijpen

toestandsveranderingen in het systeem worden in een
gegevensbank bijgehouden voor analyse en het nemen van
beslissingen
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 23
SGP
real time
clock
industrial embedded system
algorithms for
digital control
interface
data
logging
remote
monitoring
data retrieval
and display
display
devices
engineering
system
database
operator’s
console
Yolande Berbers
operator
interface
Systeem-geïntegreerde programmatuur
slide 24
SGP

vb van ingebedde systemen
wasmachine
 één specifieke taak, beperkte functionaliteit
 weinig flexibel
 goedkoop, massaproductie

postsorteermachine
 één specifieke taak, uitgebreide maar overzienbare functionaliteit
 geen massaproductie

communicatiesysteem in wagen
 zeer complex
 goedkoop
 zware real-time vereisten
 laag vermogen gebruik
 moet zeer flexibel zijn, open voor nieuwe toepassingen
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 25
SGP

vb van ingebedde systemen
ADSL switching center
 in centraal punt 20 tot 50 ADSL lijnen op een ATM netwerk
 zware real-time vereisten
 zeer hoge snelheid nodig
 laag vermogen gebruik

MPEG-4 decoder
 zeer complex
 zeer hoge snelheid nodig
 laag vermogen gebruik (bv in draagbare videospelletjes)
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 26
SGP

karakteristieken van een RTS
groot en complex
 niet gewoon proportioneel met het aantal lijnen code
 gerelateerd aan de variëteit die in de code voorkomt
 verandert continu omdat de omgeving continu verandert

situaties veranderen

noden veranderen
 nood aan continu onderhoud
 kan variëren van enkele honderden lijnen assembler of C tot 20
miljoen lijnen Ada-code (geschat voor het ruimtestation ISS)
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 27
SGP

karakteristieken van een RTS
manipulation of real numbers
 many RT systems control an engineering activity
 e.g.: controller based op feedback

controlled entity has a vector of output variables,
that change over
 time

outputs are compared with desired signal

difference is used to change input variables
 control based on mathematical model of process to be controlled

Yolande Berbers
complex, often based on differential equations
Systeem-geïntegreerde programmatuur
slide 28
SGP

karakteristieken van een RTS
e.g.: controller (possibly analog), based on feedback
 r(t) is desired signal
 u(t) is input vector
 e(t) is error vector
 y(t) is output signal
r(t)
Yolande Berbers

e(t)
controller
(analog)
u(t)
plant
Systeem-geïntegreerde programmatuur
y(t)
slide 29
SGP
karakteristieken van een RTS
 more realistic figure using a computer, discrete values (with a *),
and D/A and A/D converters
 discipline: control theory
r(t*)
controller
u(t*)
(computer)
y(t*)
digital to
analog
converter
u(t)
sample
and
hold
plant
y(t)
 requirement: ability to manipulate real numbers
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 30
SGP

karakteristieken van een RTS
extreem betrouwbaar en veilig
 meer en meer vitale functies in de samenleving worden
toevertrouwd aan computer systemen

slecht functionerende systemen kunnen catastrofaal zijn

vaak zijn mensenlevens gemoeid
– bv kerncentrales

kan ook extreem kostelijk zijn
 voorbeeld van zeer kostelijke faling: Ariane 5, zie volgende slide
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 31
SGP

voorbeeld: ontploffing Ariane 5
eerste lancering van Ariane 5 op 4 juni 1996: na 37 sec.
 boordcomputer denkt dat raket zwaar uit koers is
 boordcomputer geeft sterk bijstuurcommando
 boordcomputer oordeelt dat dit niet voldoende is, en schakelt
zelfs de hoofdmotor in
 raket kantelt, bovendeel scheurt los, zelfvernietigingsdozen
doen het geheel ontploffen
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 32
SGP

voorbeeld: ontploffing Ariane 5
wat liep er mis
 het Inertial Reference System (SRI) berekent de houding en de
bewegingen van de raket, op basis van bepaalde metingen
 deze metingen worden doorgegeven aan de boordcomputer, die
in functie hiervan stuurbeslissingen neemt
 vóór de lancering berekent een zekere module in het SRI die
houding tov het lanceerplatform
 na lancering heeft die bepaalde module geen betekenis meer
 die module werd gestopt ongeveer 40 sec. na lancering
 voor Ariane 4, om count-down te kunnen “pauzeren”
 behouden in Ariane 5: verander geen goedwerkende software
 in die code staat een conversie van een 64-bit floating point
getal naar een 16-bit integer
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 33
SGP

voorbeeld: ontploffing Ariane 5
wat liep er mis (vervolg)
 Ariane 5 stijgt anders op van Ariane 4: traject is verschillend
 na de lancering gebeurde er een conversiefout: het 64-bit
floating point getal had een onverwachte grote waarde
 de toepassing crashte, een 2de computer werd ingeschakeld
 deze 2de computer bevatte dezelfde software, dus crashte ook
 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

gebruikte programmeertaal: Ada
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 34
SGP

voorbeeld: ontploffing Ariane 5
hoe had dit kunnen vermeden worden
 fouten door conversies, evenals andere fouten zoals delingen
door 0, kunnen opgevangen worden in specifieke stukken code
(zie H6)

dit gebeurde niet voor de instructie die crash veroorzaakte
 de fout had via simulaties kunnen gevonden worden

Yolande Berbers
maar in de simulaties draaide die module niet na lancering
Systeem-geïntegreerde programmatuur
slide 35
SGP

karakteristieken van een RTS
verschillende software componenten zijn gelijktijdig actief
 de apparaten in de omgeving werken gelijktijdig
 deze gelijktijdigheid wordt het best gerealiseerd door
gelijktijdig uitvoerende software componenten
 meer en meer real-time systemen zijn gedistribueerde systemen
 dit vraagt ondersteuning van programmeertalen en/of systemen
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 36
SGP

karakteristieken van een RTS
omgang met ‘tijd’
 responstijd is van groot belang
 deadlines moeten in alle omstandigheden gehaald worden

worst-case moet gekend zijn

voorspelbaarheid van responstijd is cruciaal

real-time systemen worden altijd over-gedimensioneerd
 taal en systeem moeten toelaten om tijd te specifiëren,
deadlines te specifiëren, om te reageren wanneer een deadline
niet gehaald zal worden
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 37
SGP

karakteristieken van een RTS
interacties met hardware interface
 aangesloten hardware: vaak niet de klassieke randapparaten
 randapparaten moeten kunnen gestuurd worden,
liefst op een abstracte manier

vereiste voor efficiënte implementatie en
uitvoeringsomgeving
 de tijdsvereisten kunnen zo streng zijn dat efficiëntie echt
belangrijk wordt (vb DSP)
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 38
SGP

karakteristieken van een RTS
typische karakteristieken voor consumentenmarkt
 goedkoop

beperkt geheugen

goedkopere processor
 time-to-market is extreem laag
 laag vermogen gebruik indien draagbaar
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 39
SGP
karakteristieken van een RTS: overzicht

groot en complex

manipuleren reële getallen

extreem betrouwbaar en veilig

verschillende software componenten zijn gelijktijdig actief

omgang met ‘tijd’

interacties met hardware interface

vereist efficiënte implementatie en uitvoeringsomgeving
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 40
SGP

economisch belang
ingebedde systemen:
 voor elke PC zijn er ongeveer 50 ingebedde systemen
 PC-markt heeft een plateau bereikt, markt voor ingebedde
systemen kan nog enorm groeien

belang voor Vlaanderen
 groot deel van software dat in Vlaanderen gemaakt wordt is
voor ingebedde systemen
 Vlaanderen is derde ‘super-high-tech region’ in Europa
(na Rheinland-Phals en Hessen) volgens Eurostat studie

belang voor Europa
 VS hebben groot deel van ‘packaged software’ markt
 Europa heeft en kan nog groeien in markt ingebedde systemen
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 41
economic importance
SGP

importance for Europe
 US have large part of market for ‘packaged software’
(see next slide)
 top 10 software vendors in the world:

Microsoft

Sybase

Oracle

Adobe systems

Computer Ass. Int.

Informix

Novell

American Management Systems

SAP AG

Sterling Software
 Europe can still grow in the market of embedded systems
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 42
SGP
economic importance
Packaged Software : Production Share versus Customer Share 1993
Production share
100% = $ 100 bn
Customer share
1%
Rest of World
Pacific Region
Europe
4%
5%
16%
14%
42%
79%
USA
39%
Source : Gartner Group 1994
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 43
SGP
Systeem-geïntegreerde Programmatuur
deel 2:
Ada en Java voor real-time en
embedded systemen
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 44
SGP

de taal Ada
taal ontworpen op aanvraag van DoD
(Department of Defense, US)

naam “Ada” komt van Countess Augusta Ada Lovelace
 dochter van dichter Lord Byron (England)
 schreef programma’s voor de “Difference Engine” van
Charles Babbage, de eerste computer uit de geschiedenis
 was hierdoor de eerste computerprogrammeur

volgende slides: uit presentatie van DOD
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 45
Comments on Ada
in Relation to C++
Center for Computer Systems Engineering
Joint Interoperability & Engineering Organization
Defense Information Systems Agency
SGP Why Ada? (Technical Arguments)


In 1976, nothing else existed, so...
Ada was designed with:
 Software engineering in mind
 Large, complex projects in mind
 Standardization/validation in mind
 Reliability/maintainability in mind

In 1996, still nothing else exists!
Ada Was Designed With Long-term
Support for the Warfighter in Mind
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 47
SGP
Category
IBM Weighted Scores for 6
Criterion Categories
Maximum
Score
Ada
C
Pascal
JOVIAL
FORTRAN
Capability
16.7
16.1
9.6
10.4
7.6
3.9
Efficiency
16.4
8.0
11.8
10.8
11.0
11.1
Availability/
Reliability
22.6
21.5
11.6
14.5
15.6
10.3
Maintainability/
Extensibility
17.4
14.0
10.2
12.2
6.8
8.3
Lifecycle Cost
11.3
8.2
7.4
7.8
4.9
5.2
Risk
15.6
8.8
8.9
7.6
9.6
8.2
100.00
76.6
59.6
63.3
55.5
47.0
TOTAL
Source: IBM study, 1985
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 48
SGP

Do Defects Really Matter?
is 99.9% an acceptable tolerance for defects?
Consider:
 Drinking water contaminated for 1 hour per month.
 16,000 letters lost every day by the US Post Office.
 2 accidents per month at O’Hare International Airport.
 20,000 prescriptions in error each year.
 50 babies dropped on the delivery room floor each hour.
 22,000 checks drawn from the wrong account per hour.
OOPS!
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 49
SGP





Software Crisis in1976
Proliferation of languages (>450)
Many dialects of standard languages
Low interoperability
High maintenance costs
Low reliability
Result
Yolande Berbers
Ada
Systeem-geïntegreerde programmatuur
slide 50
SGP Current State of Ada Use in DoD
SIGNIFICANT DECREASE IN No. OF 3GLs
500
400
300
200
100
(450+)
(37)
1976
1994
1985
Ada is No. 1 For Weapons
Ada is No. 2 For AISs
Ada
(33.5%)
Other
(6.1%)
COBOL
(59.2%)
C (22%)
Ada
(22%)
C++
3.4%
Yolande Berbers
FORTRAN
(13.2%)
Jovial
(9.3%)
CMS-2
(12.5%
)
Other
(10%)
C (9%)
Systeem-geïntegreerde programmatuur
slide 51
SGP
Ada in Maintenance Arena
Thousands of 1994 Dollars
Average Annual Costs for Software Maintenance
1600
1400
1200
1000
800
600
400
200
0
Ada
Other HOLs
C
270,000 LOC
225,000 LOC
135,000 LOC
150,000 LOC
112,500 LOC
75,000 LOC
350
700 1,050 1,400 1,750 2,100
Function Points
Yolande Berbers
100% productivity
and 50% quality
increase does
not reduce C
to Ada levels
Source: MITRE (Avionics domain)
Systeem-geïntegreerde programmatuur
slide 52
SGP
Common Reasons for NOT Using Ada






Yolande Berbers
If I ignore it it will go away!
It’s too complex.
I don’t have time to learn another language.
We don’t have a compiler.
We need more tools to use Ada.
Blah, Blah, Blah!
Systeem-geïntegreerde programmatuur
slide 53
SGP










Expected Benefits of Ada
Overall Advantage: Increased Quality per Dollar Spent
Code Portability
People Portability
Maintainability
Reliability
Common Basis for Tools/Methodologies
Modularity, Managing Complexity
Management Visibility, System View
Improved Productivity
Increased Reusability
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 54
SGP Why Ada? (Business Arguments)

Ada:
 Has better support for “ilities”
 Yields greater productivity
 Costs less per SLOC
 Has fewer defects
 Supported by multiple vendors

Ada represents:
 A DoD core competency
 Increased economies of scale
 An ISO and ANSI standard
 Freedom from proprietary solutions
Ada Makes Open Systems and Interoperability Possible
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 55
SGP

Why C++?
Major industry marketing
 Nothing equivalent for Ada

Object-oriented programming support
 Did not exist in Ada 83, but does in Ada 95

Builds on popularity of C
 C was free with UNIX operating systems
 Students were taught C
 Easier to move up to C++ than Ada

Tools, bindings, visual environments and support
abundantly available (based on origin)
 Ada was isolated
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 56
SGP

Why C++?
Lower startup costs ($, personnel, tools)
 Ada delivers more and thus costs more when only
development costs are considered

C++ gives programmers more freedom
 Less discipline is attractive to programmers - dangerous on
large systems

No standard for C++
 Ada vendors must meet standard - more difficult and more
expensive
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 57
SGP
Why C++ for Industry?
Industry and DoD have different focus
DoD





Commercial Sector
buy one
long-term planning precludes
quick reaction
limited market
fixed profits
failures cost lives





sell many
quick reaction to market
forces
large market
large profit potential
failures cost money
Source: Nyberg, Karl presentation quoting Gensler, “The Defense Industry”
and Aharonian, Greg, “Microeconomic Definitions for Ada Summit”, 1994.
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 58
SGP






Software Development vs.
Software Maintenance
DoD looks at systems from total lifecycle perspective
60-80+% of the lifecycle costs of software occur in
maintenance
Arguments based on lower development costs total only
20-40% of the story
On most projects, development and maintenance are two
separate contracts
Commercial Off-The-Shelf (COTS) software is not always
the correct choice
Decisions must be made on lifecycle costs not on
development costs
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 59
SGP

When Not to Use Ada
Ada may not be appropriate
 When some other language has lower lifecycle costs
 For some R&D applications where the intent is for concept
development only and the system will not be fielded
 For some prototype applications, however the prototype must
not be carried into E&D for subsequent fielding
 When a compiler does not exist for the hardware platform
 When timing and/or sizing constraints make Ada a technical
infeasibility
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 60
SGP



YF-22 Prototype Development
Software for the aircraft
(35% of total avionics development cost)
Developed by 8 geographically separated subcontractors
Developed using
 different Ada compilers
 different hardware platforms




12 major avionics subsystems
650 Ada modules
Millions of SLOC
Integrated in 3 days!
Source: Guidelines for Successful Acquisition and Management of Software Intensive Systems, Vol. I, USAF, Feb 1995
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 61
SGP
Summary Ada vs C++
2001
Ada
Single
Vendor
NonStandard
Stovepipes
Closed
System
Ada is:
• Technically superior
• Demonstrably lower in
cost through entire
lifecycle
• Successfully used
today and growing
• Supported by DISA
Ada was explicitly designed to
support large systems well into the
next century
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 62
SGP

developing embedded SW in Java
overview: technology and architecture
 why Java ?
 Java Virtual Machine Technology
 alternative technologies
 supporting technologies
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 63
SGP

what is so great about Java ?
programming language
 familiar C-like (but improved) syntax
all test conditions must be Boolean
 e.g. while (x=3) is not allowed
 primitive data types have fixed sizes
 easier to produce bug-free software
 array bounds checking
 automatic garbage collection
 built-in exception-handling
 built-in library for concurrency
 truly object-oriented
 simpler to learn than C++

Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 64
SGP

what is so great about Java ?
bytecodes
 Java bytecode == portable binary format
instruction set for a virtual machine
 platform portability, without source code
 source translation is done in advance
 faster than a “fully interpreted” solution
 can be translated into native opcodes:
 at each encounter (bytecode interpreter)
 at first encounter (just-in-time compiler)
 prior to loading (ahead-of-time compiler)

Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 65
SGP
what is so great about Java ?
Java
Source
Java
bytecode
libraries
Java compiler
Java Virtual
Machine
Java
bytecode
operating systems
hardware
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 66
SGP

what is so great about Java ?
class libraries
 high level of abstraction
 standard APIs:
increase application portability
 reduce programming effort
 support for multitasking (see CH 7-9)
 Thread class and Runnable interface
 synchronized keyword
 monitors via wait() and notify()

 support for networking
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 67
SGP

why use anything else ?
problems with Java
 no direct access to hardware (see CH 15)
 Java has no pointers
 nor bytecodes to access a physical address
 but Java can call C ! (Java Native Methods)
 size of code: JVM can be huge
 inefficiencies
 bytecode interpretation is slower than C/C++
 garbage collection requires processor time
 interpreter or JIT may not be “optimal” compiler
 unpredictability (see CH 13)
 garbage collector may preempt a running task
 Just-in-Time compilation slows first access
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 68
SGP
JVM technology: components
Java Threads
Class libs
C/C++ Tasks
Java Virtual Machine (+ garbage collector)
Native methods
Multitasking OS
Processor and other hardware
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 69
inside a virtual machine
SGP
Java application
Class libs
Dynamic class loader
Bytecode verifier
Native
methods
Execution engine
Garbage
collector
Multitasking OS
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 70
SGP

inside a virtual machine
execution engine
 bytecode interpreter
 just-in-time compilation
 hybrid

Yolande Berbers
Sun’s HotSpot compiler
Systeem-geïntegreerde programmatuur
slide 71
SGP

inside a virtual machine
garbage collector (biggest myth for Java)
 many algorithms, some even hard RT suitable



Yolande Berbers
naive
incremental
real-time (double heap, HW assisted)
 bounded worst-case allocation time
(faster than incremental GC)
 bounded worst-case object access time
 slower average-case allocation time
 slower object access time
Systeem-geïntegreerde programmatuur
slide 72
SGP

inside a virtual machine
dynamic Class Loader
 find and load referenced class
 read file <package>/<class>.class in the CLASSPATH
 ZIP files are also traversable, can be placed in ROM, if
necessary
 verify class file format
 link: place contents into a JVM data structure
 prepare and initialize the class
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 73
SGP

inside a virtual machine
bytecode verifier
 detects and prevents “illegal” activity
 verification is optional!
 of little value in a closed system
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 74
SGP

inside a virtual machine
Java Class Libraries
 Write Once, Run Anywhere
 only if the same set of class libraries are available!
 multiple “standard platforms” (APIs):
Standard Java - the full set, for desktops and workstations
 PersonalJava - a subset of the above, for smaller devices
 EmbeddedJava - like the previous, but more memoryconscious

Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 75
SGP

Inside a virtual machine
Java Class Libraries
 upward compatibility is desirable
EmbeddedJava applications also run on any PersonalJava
platform
 PersonalJava applications also run on any Standard Java
platform

Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 76
SGP

JVM requirements: memory
ROM: JVM + libraries + application
 JVM: ~500K is typical maximum
 Class libraries: ~500K for PersonalJava
 + the application itself

RAM: JVM + heap + thread stacks
 affected by engine type
JIT compiler requires large storage area, interpreter does not
 heap size is application-dependent
 each thread requires its own stack

Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 77
SGP

JVM requirements: processor
capabilities
 arithmetic
32-bit integers assumed cheap and fast, 64-bit available
 32-bit and 64-bit floating point (IEEE 754) available
 processing power
 need enough to negate interpretation slowdown


address space
 JVM + all class libraries requires a lot of memory!
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 78
SGP

JVM requirements: OS
JVM is not (usually) an OS replacement
 RTOS or kernel expected underneath

only minimal functionality required
 thread creation and deletion (see CH 7)
 priority-based scheduling (see CH 13)
at least 10 priority levels
 synchronization primitives (e.g., mutexes) (see CH 8)
 private thread stacks (see CH 7)

Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 79
SGP

JVM requirements: other SW
JVMs are written in C, therefore:
 Standard C library
 Standard math library

dynamic memory allocation
 malloc() is called internally

Java class libraries
 java.net - assumes a TCP/IP stack
 java.awt - requires a graphics API

others? - implementation-specific
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 80
SGP

alternative technologies
traditional JVM:
 too big
 too slow
 too unpredictable

alternatives:
 Ahead-of-time compilers
 Java processors
 JavaCard technology
 Kjava Virtual Machine
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 81
SGP

supporting technologies
Java Native Interface (JNI)
 call legacy code
 work around Java’s limitations
 implement higher-performance functionality
 native methods == C functions (no good integration with C++)
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 82
SGP

supporting technologies
JVM Debug Interface (JVMDI)
 programming interface for debuggers



Yolande Berbers
Client(JVM) - Server
monitor and control:
 memory
 stack frames
 threads
 local variables
event notification for:
 field access/modification
 breakpoints
Systeem-geïntegreerde programmatuur
slide 83
SGP
Systeem-geïntegreerde Programmatuur
kort overzicht van Ada
(en C en Java):
programming in the small
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 84
SGP
algemene stijl: een blok in Ada
declare
<declarative part>
begin
<sequence of statements>
exception
<exception handlers>
end
declare
Temp: Integer := A; -- initiële waarde wordt gegeven aan Temp
begin
A := B;
-- := is de toekennings operator
B := Temp;
end
-- geen exception deel
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 85
SGP algemene
algemene
stijl:
stijl:
eeneen
blokblok
in Cin
enCJava
{
<declarative part>
<sequence of statements>
}
{
int temp = A;
/* declaratie en initialisatie */
/* merk op: in C staat de naam van het type eerst */
/* in Ada komt het na de naam van de variabele */
A = B;
B = temp;
/* toekenningsoperator is = */
}
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 86
SGP

gegevenstypen
gegevenstypen
Ada is sterk getypeerd: in toekenningen en expressies
moeten objecten van hetzelfde type zijn (expliciete
conversies zijn mogelijk)

C biedt veel minder type-controle

Java is ook sterk getypeerd
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 87
SGP
types
typesin
inCC
{
typedef enum (xplane, yplane, zplane) dimension;
/* typedef introduceert een naam voor een nieuw type; */
/* de naam is hier dimension; */
/* enum zegt dat het om een enumeratie gaat */
dimension line, force;
line = xplane;
force = line + 1;
/* force is nu yplane */
}
Java biedt geen enumeratie type
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 88
SGP
types
typesin
inAda
Ada
type Dimension is (Xplane,Yplane,Zplane);
type Map is (Xplane,Yplane);
Line, Force : Dimension;
Grid : Map;
begin
Line := Xplane;
Force := Dimension’Succ(Xplane);
Grid := Yplane;
Grid := Line;
-- mag niet, verschillende types
end;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 89
SGP
typestypes
in Adain(vervolg)
Ada
subtype Surface is Dimension range Xplane .. Yplane;
type New_int is new Integer;
type Projection is new Dimension range Xplane .. Yplane;
D: Dimension;
S: Surface;
P: Projection;
begin
D := S;
-- OK
S := D;
-- legaal, maar zou kunnen run-time fout genereren
P := D;
-- illegaal
P := Projection(D);
-- OK, met expliciete conversie
end;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 90
SGP
types
typesininCC(vervolg)
en Java
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
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 91
SGP
gestructureerde gegevenstypes in Ada
Max: constant Integer := 10;
type Reading_T is array (0 .. Max-1) of Float;
Size: constant Integer := Max-1;
type Switches_T is array(0 .. Size, 0 .. Size) of Boolean;
Reading: Reading_T;
Switches: Switches_T;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 92
SGP gestructureerde
gestructureerde gegevenstypes
gegevenstypes in
in C
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
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 93
SGP gestructureerde
inin
Java
gestructureerdegegevenstypes
gegevenstypes
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;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 94
SGP
gestructureerde
gegevenstypes
in Ada
gestructureerde gegevenstypes
in Ada (vervolg)
type Day_T is new Integer range 1 .. 31;
type Month_T is new Integer range 1 .. 12;
type Year_T is new Integer range 1900 .. 2050;
type Date_T is
record
Day : Day_T := 1;
Month : Month_T := 1;
Year: Year_T;
end record;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 95
SGP gestructureerde
gegevenstypes
in C
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;
Yolande Berbers
/* dit is een nieuw type met naam date2_t */
Systeem-geïntegreerde programmatuur
slide 96
SGP gestructureerde
gegevenstypes
in Java
gestructureerde gegevenstypes
in C (vervolg)
class Date
{
int day, month, year;
}
Date birthday = new Date();
birthdate.day = 31;
birthdate.day = 1;
birthdate.day = 2000;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 97
SGP
gestructureerde
gegevenstypes
in Ada
gestructureerde gegevenstypes
in Ada (vervolg)
D: Date_T;
begin
D.Year := 2000;
-- D is nu 1/1/2000
D := (3, 1, 1953);
-- volledige toekenning
D := (Year => 1974, Day => 4, Month => 7);
-- volledige toekenning met gebruik van veldnamen
...
end;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 98
SGP gestructureerde
gegevenstypes
in C
gestructureerde gegevenstypes
in C (vervolg)
struct date_T d = (1, 1, 1);
/* kan alleen bij initialisatie statische variabelen */
...
{
d.year = 2000;
...
}
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 99
SGP dynamische
dynamische gegevenstypes
gegevenstypes ininCC
{
typedef struct node {
int value;
struct node *next;
} node_t;
/* pointer naar een record hier gedefinieerd */
int V;
node_t *Ptr;
Ptr = malloc (sizeof(node_t)); /* dynamische allocatie van geheugen */
Ptr->value = V;
Ptr->next = 0;
/* de null-pointer bestaat niet */
...
}
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 100
SGP dynamische
Ada
dynamische gegevenstypes
gegevenstypes ininAda
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;
A1.Value := V;
-- dynamische allocatie van geheugen
A1.Next := null;
. . .
end;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 101
SGP dynamische
dynamische
gegevenstypes
in C
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];
next_event++;
/* adres van eerste element van rij */
/* de pointer gaat nu wijzen naar het */
/* volgende element in de rij */
/* een pointer in C kan naar om het even wat wijzen, probleem van
hangende pointers (dangling pointer) */
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 102
SGP dynamische
dynamische
gegevenstypes
in Java
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) { … }
Yolande Berbers
// vergelijkt adressen en geen inhoud
Systeem-geïntegreerde programmatuur
slide 103
SGP
controle
leegblok
blok
controle structuren:
structuren: leeg
in Ada:
begin
null;
end;
in Java en C:
{
}
/* gewoon niets */
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 104
SGP controle
if-then-else
controle structuren:
structuren: if-then-else
in Ada:
if A /= 0 then
if B/A > 10 then
High := True;
else
High := False;
end if;
end if;
Yolande Berbers
in C:
if (A != 0)
if (B/A > 10) high = 1;
else high = 0;
// in Java mag die ambiguïteit niet
if (A != 0) {
if (B/A > 10) {
high = 1;
}
else {
high = 0;
}
}
Systeem-geïntegreerde programmatuur
slide 105
SGP
controle structuren: if-then-else in Ada
controle structuren:
if-then-else in Ada
(vervolg)
if Number < 10 then
Num_Digits := 1;
elseif Number < 100 then
Num_Digits := 2;
elseif Number < 1000 then
Num_Digits := 3;
elseif Number < 10000 then
Num_Digits := 4;
else
Num_Digits := 5;
end if;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 106
SGP
controle
case
controle structuren:
structuren: case
in Ada:
in Java en C:
case Command is
when ‘A’ | ‘a’ => Action1;
when ‘t’
=> Action2;
when ‘e’
=> Action3;
when ‘x’ .. ‘z’
=> Action4;
when others
=> null;
end case;
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;
}
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 107
SGP
controle
while-lus
controle structuren:
structuren: while-lus
in Ada:
in Java en C:
while <Boolean Expression> loop
<Statements>
end loop;
while (<expression>) {
/* expressie = 0 eindigt lus */
<statement>
}
loop
...
exit when <Boolean Expression>
...
end loop;
Yolande Berbers
while (1) {
...
if (<expression>) break;
...
}
Systeem-geïntegreerde programmatuur
slide 108
SGP
controle structuren: for-lus en oneindige lus
in Ada:
in C:
for I in 0 .. 9 loop
A(I):= I;
end loop;
for (i = 0; i <= 9; i++) {
A[i] = i;
{
loop
<Statements>
end loop;
while (1) {
<statement>
}
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 109
SGP
parameters bij subprogrammas in
parameters bij subprogramma’s in Ada
Ada
drie modes:
in
out
in out
data wordt doorgegeven aan het subprogramma
data wordt doorgegeven aan het oproepende
programmaonderdeel
data wordt doorgegeven aan het subprogramma,
wordt daar eventueel gewijzigd en wordt dan weer
doorgegeven aan het oproepende programmaonderdeel
procedure Quadratic ( A, B, C : in Float;
R1, R2 : out Float;
Ok
: out Boolean);
bij functies mogen alleen ‘in’ parameters gebruikt worden
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 110
parameters bij
bij subprogrammas
subprogramma’s in
C
SGP parameters
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
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 111
bij
subprogramma’s
in
Java
SGP parameters
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
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 112
SGP
procedures
inAda
Ada
procedures in
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;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 113
SGP
procedures
inCC
procedures in
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);
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 114
SGP
procedures/functies
procedures in Cin Java
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;
}
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 115
SGP
functies
inAda
Ada
functies in
function Minimum (X, Y: in Integer) return Integer is
begin
if X > Y then
return Y;
else
return X;
end if;
end Minimum;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 116
SGP
functies
inCC
functies in
int minimum (int X, int Y)
{
if (X > Y) return Y;
else return ;
}
voorbeeld van een macro (en tegelijk ook van mogelijk
cryptische schrijfwijze van if-then-else in C):
#define MIN(X, Y) ((X > Y) ? (Y) : (X));
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 117
SGP
Systeem-geïntegreerde Programmatuur
kort overzicht van Ada
(en C en Java):
programming in the large
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 118
SGP gegevensverberging: package in Ada

package heeft twee delen
 specificatie interface: dit is zichtbaar er buiten
 lichaam: dit is de implementatie, is onzichtbaar er buiten


het lichaam bevat een initialisatie-deel
beide moeten in hetzelfde declaratieve deel staan
 er mag wel iets tussen staan
 bv spec. pack. A, spec. pack. B, lichaam pack. A, lichaam pack. B
 op deze manier kunnen A en B elkaar oproepen



routines (en ge-exporteerde variabelen) kunnen bereikt
worden via naam_package.naam_routine
implementatie van slechts één instantie van de queue
de queue wordt gecreëerd in het initialisatie-deel
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 119
SGP gegevensverberging: package in Ada

specificatie interface: deze entiteiten zijn zichtbaar er buiten
package Queuemod is
function Empty return Boolean;
procedure Insert (E: Element);
-- Element moet zichtbaar zijn
procedure Remove (E: out Element);
end Queuemod;

voorbeeld van oproep:

lichaam : dit is de implementatie, zie volgende slide
Yolande Berbers
Queuemod.Insert (El);
Systeem-geïntegreerde programmatuur
slide 120
SGP gegevensverberging:
gegevensverberging:
package
in Ada
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;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 121
SGP gegevensverberging: package in Ada

use:
 om de naamgeving niet te zwaar te maken wanneer veel
elementen uit een package gebruikt worden
 naam_package.naam_routine wordt naam_routine
declare
use Queuemod;
begin
if not Empty then
Remove (E);
end if;
end;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 122
SGP
gegevensverberging in C

C: geen taalconstructies voor gegevensverberging

modules kunnen nagebootst worden door code in
verschillende bestanden te plaatsen
 per module een ‘header-file’, deze eindigt op ‘.h’
 per module een ‘body-file’, deze eindigt op ‘.c’
 het header-bestand wordt ingelast in het .c-bestand
 geen formele relatie tussen deze bestanden, alleen naamconventie

nadelen:
 geen initialisatie-deel (initialisatie zal ergens expliciet moeten staan)
 minder testen door de compiler zijn mogelijk
 bv geen test op volledigheid specificatie tov lichaam en omgekeerd:
het ontbreken van een routine wordt slechts opgemerkt bij het linken
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 123
SGP

gegevensverberging in C
header-bestand (.h bestand): dit bestand definieert de
functionele interface van de module
int Empty();
void insertE (element E);
void removeE (element *E);


dit header-bestand moet ingelast worden in elk bestand dat van
de module wenst gebruik te maken (via #include-instructie)
implementatie staat in een .c bestand, zie volgende slide
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 124
SGP
gegevensverberging
in C
gegevensverberging
in C (vervolg)
#include “queuemod.h”
struct ...
void create()
{ ... }
int empty()
{ ... }
void insertE (element E)
{ ... }
void removeE (element *E)
{ ... }
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 125
SGP
gegevensverberging in C
queuemod.h
int Empty();
void insertE (element E);
void removeE (element *E);
queuemod.c
#include “queuemod.h”
put_in.c
#include “queuemod.h”
take_out.c
#include “queuemod.h”
….
….
….
int empty()
{ ... }
void insertE (element E)
{ ... }
element E1, E2;
insertE(E1);
insertE(E2);
element E3;
if !empty()
removeE(&E3)
….
….
….
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 126
SGP

tekortkomingen van modules
modules zijn geen eerste-klas-taalelementen
 moduletypes kunnen niet gemaakt worden

je kunt geen verschillende instanties van module creëren
 je kunt geen pointer naar een module laten wijzen
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 127
SGP

aparte compilatie
voordelen van het apart compileren van modules
 een module kan geschreven en getest worden, onafhankelijk
van de rest
 eens getest kan de module in een bibliotheek geplaatst worden,
eventueel reeds gecompileerd
 aparte compilatie ondersteunt projectbeheer
 voordeel dat niet alles telkens gehercompileerd moet worden
(dat geldt natuurlijk vooral voor ‘programming in the large’)

aparte compilatie ondersteunt bottom-up ontwerp
 vooral bottom-up ontwerp van specificaties is interessant
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 128
SGP
aparte compilatie in C
queuemod.h
int Empty();
void insertE (element E);
void removeE (element *E);
queuemod.c
#include “queuemod.h”
put_in.c
#include “queuemod.h”
take_out.c
#include “queuemod.h”
….
….
….
int empty()
{ ... }
void insertE (element E)
{ ... }
element E1, E2;
insertE(E1);
insertE(E2);
element E3;
if !empty()
removeE(&E3)
….
….
….
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 129
SGP


aparte compilatie in Ada
with-constructie: gebruik van een package uit bibliotheek
(een beetje te vergelijken met #include van C)
een with-constructie kan in een andere package staan:
zo ontstaat een hiërarchie van modules
 vb: module Dispatcher maakt gebruik van module Queuemod
package Dispatcher is
... -- nieuwe zichtbare entiteiten
end Dispatcher;
with Queuemod;
package body Dispatcher is
... -- verborgen entiteiten
end Dispatcher;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 130
SGP

aparte compilatie in Ada
voordelen
 specificatie en lichaam zijn expliciet in de bibliotheek
 specificatie kan geschreven worden vóór het lichaam

logische consistentie kan reeds door compiler getest worden

specificatie kan geschreven worden door project-leiders
Yolande Berbers

specificatie is een deel van ontwerpen

uitwerken van specificatie is vaak programming in the small

fout in specificatie heeft grotere gevolgen dan fout in lichaam:
alle modules die de specificatie gebruiken moeten eventueel
gewijzigd worden

(bij fout in een lichaam moet enkel dit lichaam hercompileerd
worden)
Systeem-geïntegreerde programmatuur
slide 131
SGP

aparte compilatie
Ada
 aparte compilatie is deel van de taal


bibliotheekomgeving is deel van taal

consistentie van specificaties en types gebeurt over
bibliotheekeenheden
C
 aparte compilatie is geen deel van taal

C-bestand worden apart gecompileerd: object modules

object modules worden gelinked

bij het linken wordt niet gechecked op specificatieconsistentie en types
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 132
SGP
abstracte gegevenstypes

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, ..)

lost één van de tekortkomingen van modules op

ADT (abstract data type) = module dat een type definieert
 type bepaalt: objecten en operaties
 definitie van een type impliceert dat er variabelen van dit type
kunnen gedeclareerd worden
 een creatie-routine is hier absoluut noodzakelijk
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 133
SGP

abstracte gegevenstypes
extra moeilijkheid wanneer gecombineerd met aparte compilatie
 normaal wensen we dat de interne voorstelling van het type
verborgen wordt, zich dus in het lichaam bevindt
 module dat gebruik maakt van een ADT moet het volgende kennen:
de operaties (= specificatie, de interface)
 de grootte van het ADT (dit is nodig voor de compilatie van
de gebruikmakende module)
 mogelijke oplossing: gebruik van een indirectie
 altijd een pointer gebruiken naar het ADT: een pointer heeft
een vaste grootte (vaak gebruikt in C)
 in Ada: interne voorstelling wordt bij specificatie gevoegd
 als limited private
 als private (dan zijn ook toekenning en vgl mogelijk)

Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 134
SGP

abstracte gegevenstypes in C
voorbeeld van gebruik van indirectie in C: als extra parameter
wordt hier nu altijd een pointer naar het object gebruikt
int empty(queue_ptr_t Q);
void insertE
(queue_ptr_t Q, element E);
void removeE (queue_ptr_t Q, element *E);
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 135
SGP abstracte
abstractegegevenstypes
gegevenstypesin
inAda
Ada
package Complex_Arithmetic is
type Complex is private;
function ”+” (X, Y: Complex) return Complex;
function ”-” (X, Y: Complex) return Complex;
function Comp (A, B: Float) return Complex;
function Real_Part (X: Complex) return Float;
private
type Complex is
record
Real_Part: Float;
Imag_Part: Float;
end record;
end Complex_Arithmetic;
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 136
SGP abstracte gegevenstypes in Ada
with Complex_Arithmetic;
use Complex_Arithmetic;
….
C1, C2, C3: Complex;
A, B: float;
….
C2 := Comp(A, B);
C3 := C1 + C2;
if C1 = C2 then …. end if;
….
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 137
SGP object-georiënteerd programmeren

verder uitbreiding van ADT
(variabelen van de ADT worden objecten genoemd)

4 extra kenmerken
 uitbreidbaarheid van type (over-erving)
 automatische initialisatie van objecten (constructors)
 automatische destructie van objecten (destructors)
 soort operatie wordt pas bij uitvoering bepaald (polymorfisme)


probleem bij real-time programma's: polymorfisme maakt het
niet mogelijk om via de code te weten welke operatie
opgeroepen zal worden: moeilijk om nodige tijd te schatten
ondersteund in Ada en Java
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 138
SGP

OOP en Java
abstracte klasse
 hier kunnen geen objecten van gedeclareerd worden
 moet via over-erving concreet gemaakt worden

finale klasse
 hiervan kan men niet over-erven

sleutelwoord extends
 geeft aan dat een klasse van een andere is afgeleid
 public class Coordinate { .. }
// voor 2-dimensionaal werken
 public class ThreeDimension extends Coordinate { … } // voor 3-dimensies
 nieuwe velden kunnen toegevoegd worden
 extra operaties kunnen gedefinieerd worden
 bestaande operaties kunnen ge-herdefinieerd worden, en mogen in hun
definitie gebruik maken van oorspronkelijke operatie
Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 139
SGP



herbruikbaarheid
herbruikbaarheid is veelbelovend voor softwareproductie,
maar niet zo eenvoudig
overerving is een goed middel
ander middel: een sjabloon
 type is generisch en wordt pas bepaald bij instantiatie
 uitwerking in Ada en C++
generic modules in Ada
 template in C++
 [interfaces in Java: werkt iets anders]
 componenten kunnen geïnstantieerd worden van een sjabloon
 voorbeeld: een ADT dat een queue van elementen beheert, het
type van de elementen wordt in het sjabloon nog niet bepaald

Yolande Berbers
Systeem-geïntegreerde programmatuur
slide 140
Download