1
11
Unified Modeling LanguageUnified Modeling Language
Luciano BaresiLuciano Baresi
PolitecnicoPolitecnicodi Milanodi Milano
22
Modellazione visualeModellazione visuale
Computer SystemComputer System
“Un“Un modello catturamodello cattura le le parti parti essenzialiessenziali di un di un sistemasistema””
Dr. James James RumbaughRumbaugh
Business ProcessBusiness Process
richiestarichiesta
ordineordine
consegnaconsegna
2
33
Perché UMLPerché UML
UML è il linguaggio visuale standard (OMG) UML è il linguaggio visuale standard (OMG) per definire, progettare, realizzare e per definire, progettare, realizzare e documentare i sistemi software ad oggettidocumentare i sistemi software ad oggettiUML riunisce molte proposte esistenti (Booch, UML riunisce molte proposte esistenti (Booch, Rumbough e Jacobson)Rumbough e Jacobson)UML copre l’intero processo di produzioneUML copre l’intero processo di produzioneUML è sponsorizzato dalle maggiori industrie UML è sponsorizzato dalle maggiori industrie produttrici di softwareproduttrici di software
44
Perché UML (cont.)Perché UML (cont.)
UML riunisce aspetti dell’ingegneria del UML riunisce aspetti dell’ingegneria del software, delle basi di dati e della software, delle basi di dati e della progettazione di sistemiprogettazione di sistemiUML è indipendente da qualsiasi linguaggio di UML è indipendente da qualsiasi linguaggio di programmazioneprogrammazioneUML è utilizzabile in domini applicativi diversi UML è utilizzabile in domini applicativi diversi e per progetti di diverse dimensionie per progetti di diverse dimensioniUML è estendibile per modellare meglio le UML è estendibile per modellare meglio le diverse realtàdiverse realtà
3
55
Diagrammi Diagrammi UMLUML
Viste staticheViste staticheUse Case DiagramsUse Case DiagramsClass DiagramsClass DiagramsObject DiagramsObject DiagramsComponent DiagramsComponent DiagramsDeployment DiagramsDeployment Diagrams
Viste dinamicheViste dinamicheSequence DiagramsSequence DiagramsCollaboration DiagramsCollaboration DiagramsStatechart DiagramsStatechart DiagramsActivity DiagramsActivity Diagrams
66
Use case diagramUse case diagram
4
77
RequisitiRequisiti
Il primo passo di “qualsiasi” processo di Il primo passo di “qualsiasi” processo di sviluppo è la definizione dei requisitisviluppo è la definizione dei requisiti
Definizione del Business Model Definizione del Business Model Solitamente informale e in linguaggio naturaleSolitamente informale e in linguaggio naturale
Jacobson (OOSE) propone una notazione Jacobson (OOSE) propone una notazione particolare che è confluita in UMLparticolare che è confluita in UML
Use Case DiagramUse Case Diagram
88
Elementi graficiElementi grafici
Actor: è qualcuno (utente) o qualcosa Actor: è qualcuno (utente) o qualcosa (sistemi esterni (sistemi esterni -- hardware) che:hardware) che:
Controlla le funzionalitàControlla le funzionalitàFornisce input o riceve output dal sistemaFornisce input o riceve output dal sistema
Use Case: è un’unità funzionale parte Use Case: è un’unità funzionale parte del sistemadel sistema
5
99
Relazioni principaliRelazioni principali
AssociationsAssociations identificano relazioni semplici identificano relazioni semplici tra attori e casitra attori e casi
Include Include fattorizza proprietà comuni. fattorizza proprietà comuni. ÈÈsimile all’innesto di procedure alla Pascalsimile all’innesto di procedure alla Pascal. A . A includes Bincludes B
ExtendExtend identifica comportamenti simili identifica comportamenti simili (varianti)(varianti). A . A può essere visto come una può essere visto come una variante divariante di BB
GeneralizationGeneralization si applica sia ad attori che si applica sia ad attori che a use casea use case. A . A eredita il comportamento dieredita il comportamento di B. B. A A può essere sostituito ad ogni occorrenza può essere sostituito ad ogni occorrenza di Bdi B
<<include>>A B
<<extend>>A B
A B
1010
EsempioEsempio(Registrazione corsi)(Registrazione corsi)
Cambio organizzazione corso
Richiesta studenti registrati
Professore
Selezione corso
Gestione professori
Gestione studenti
Archivio globale
Gestione corsi
Richiesta corsi
Cambio corsi
Studente
Scelta corsiAmministrazione
6
1111
ContestoContesto(Ufficio postale)(Ufficio postale)
Il primo Use Case Il primo Use Case diagram definisce il diagram definisce il contesto del modellocontesto del modelloScelte diverse possono Scelte diverse possono imporre imporre
Attori diversiAttori diversiUse case diversiUse case diversi
Cliente
Distr. posta
Sportello
Postino
Impiegato
1212
EsempioEsempio
Utente
Impiegato
Gestione prestito
Ordine Ordine Internet
Gestione dati
<<include>>
Gestione disponibilitàGestione pagamento
<<include>>
<<include>>
<<include>>
<<extend>>
7
1313
Use caseUse case(Processo)(Processo)
Il processo di definizione degli use case è iterativoIl processo di definizione degli use case è iterativoSi inizia identificando il comportamento più sempliciSi inizia identificando il comportamento più sempliciSi descrivono i comportamenti alternativi e più complessiSi descrivono i comportamenti alternativi e più complessi
Quando smettere?Quando smettere?Un buon livello di dettaglio facilità tutte le attività successiUn buon livello di dettaglio facilità tutte le attività successiveveTroppi dettagliTroppi dettagli
Complicherebbero inutilmente la descrizioneComplicherebbero inutilmente la descrizioneIntrodurrebbero prematuramente scelte progettualiIntrodurrebbero prematuramente scelte progettualiPrecluderebbero la visione d’insiemePrecluderebbero la visione d’insieme
1414
DocumentazioneDocumentazione
Per ogni use case:Per ogni use case:TitoloTitolo: Computo tasse: Computo tasseAutoriAutori: Pluto e Topolino: Pluto e TopolinoDescrizioneDescrizione: Quando le iscrizioni di uno studente : Quando le iscrizioni di uno studente sono state accettate si inviano le informazioni sono state accettate si inviano le informazioni all’ufficio contabileall’ufficio contabileAttoriAttori: Ufficio contabile: Ufficio contabilePrePre--condizionicondizioni: Studente registrato: Studente registratoPostPost--condizionicondizioni: Non identificate: Non identificateScenariScenari:.....:.....
8
1515
ScenariScenari
Uno scenario è un’istanza di uno use caseUno scenario è un’istanza di uno use caseÈ una ”esecuzione” particolare dello use caseÈ una ”esecuzione” particolare dello use caseRappresenta il comportamento (le azioni e gli eventi) del Rappresenta il comportamento (le azioni e gli eventi) del sistema nel caso particolare consideratosistema nel caso particolare considerato
Gli scenari definiscono requisiti di più basso livello Gli scenari definiscono requisiti di più basso livello rispetto agli use caserispetto agli use caseGli scenari sono solitamente definiti in linguaggio Gli scenari sono solitamente definiti in linguaggio naturalenaturaleUML propone una notazione particolareUML propone una notazione particolare
Interaction DiagramInteraction Diagram
1616
EsempioEsempio(Selezione corsi)(Selezione corsi)
Paperino Paolino scegliePaperino Paolino sceglie ii corsicorsi:: informaticainformatica,, fisicafisica,, analisianalisi ee disegnodisegnoComeCome corsi alternativi scegliecorsi alternativi sceglie:: fotografiafotografia ee giornalismogiornalismoII corsi scelti sono immessi nel sistemacorsi scelti sono immessi nel sistema didi registrazioneregistrazioneLoLo studente viene aggiunto ai primistudente viene aggiunto ai primi 33 corsi principalicorsi principaliIl quartoIl quarto corsocorso non ènon è disponibiledisponibileIF la primaIF la prima alternativaalternativa èè disponibiledisponibile THENTHEN
LoLo studente viene aggiuntostudente viene aggiunto alal corsocorsoELSIF laELSIF la seconda alternativaseconda alternativa èè disponibledisponible THENTHEN
LoLo studente viene aggiuntostudente viene aggiunto alal corsocorsoELSEELSE notifica allo studente notifica allo studente
IF notIF not notificanotifica THENTHENSi creaSi crea lala cartella corsi dello studentecartella corsi dello studenteSi mandanoSi mandano lele informazioni all’ufficio contabileinformazioni all’ufficio contabile
9
1717
Interaction diagramInteraction diagram
1818
Interaction diagramInteraction diagram
Descrivono il comportamento dinamico di un gruppo Descrivono il comportamento dinamico di un gruppo di oggetti che “interagiscono” per risolvere un di oggetti che “interagiscono” per risolvere un problemaproblemaSono utilizzati per “formalizzare” gli scenari in terminiSono utilizzati per “formalizzare” gli scenari in termini
Entità (oggetti)Entità (oggetti)Messaggi scambiati (metodi)Messaggi scambiati (metodi)
UML propone due diversi tipi di Interaction DiagramUML propone due diversi tipi di Interaction DiagramSequence DiagramSequence DiagramCollaboration DiagramCollaboration Diagram
10
1919
Sequence diagramSequence diagram
Evidenziano la sequenza temporale delle Evidenziano la sequenza temporale delle azioniazioniNon si vedono le associazioni tra oggettiNon si vedono le associazioni tra oggettiUsabili in due forme diverseUsabili in due forme diverse
La forma generica: tutte le sequenze (esecuzioni) La forma generica: tutte le sequenze (esecuzioni) possibilipossibiliLa forma d’istanza: una sequenza particolare La forma d’istanza: una sequenza particolare (consistente con quella generica)(consistente con quella generica)
2020
EsempioEsempio((Caso specificoCaso specifico))
Pippo Selettore Informatica
Scegli informatica
Disponibile?
Aggiungi PippoConferma registrazione
Potrebbe essere diventare un attore
Potrebbe essere diventare un attore
Candidati per diventare classi
Candidati per diventare classi
Candidati per diventare metodi
Candidati per diventare metodi
Le risposte restano impliciteLe risposte restano implicite
11
2121
EsempioEsempio((Raffinamento diagramma precedenteRaffinamento diagramma precedente))
Pippo
:Selettore Informatica: Corso
seleziona(informatica)
disponibile()
Aggiungi(Pippo)conferma(Informatica)
{transient}
2222
EsempioEsempio((Chiamata telefonicaChiamata telefonica))
Chiamante Mezzo Chiamato
inizio
disponibile
digita n.
...
instrada
aspetta suona
risposta
fine attesa fine attesa
ab
c
d
d’
{b-a < 1 sec.}{c-b < 10 sec.}
{d’-d < 5 sec.}
Il ritardo è dato dal mezzo di comunicazione
La conversazione inizia
12
2323
Sequence diagramSequence diagram((Alternative e creazione oggettiAlternative e creazione oggetti))
Obj1:C1op()
doit(z)
Obj3:C3
Obj2:C2
Obj4:C4
[x>=0] foo(x)
[x<0] bar(x)
doit(w)
more()
2424
Collaboration diagramCollaboration diagram
Simili a sequence diagram, maSimili a sequence diagram, maEvidenziano le interazioni tra le partiEvidenziano le interazioni tra le partiMaggior attenzione allo scambio messaggiMaggior attenzione allo scambio messaggiAdatti per Adatti per
Concorrenza e threadConcorrenza e threadInvocazioni innestateInvocazioni innestateInterazioni “sofisticate”Interazioni “sofisticate”
Il tempo non è associato ad una dimensione precisaIl tempo non è associato ad una dimensione precisaLe sequenze si scoprono usando strane numerazioniLe sequenze si scoprono usando strane numerazioniSequence alternative possono essere modellate sullo stesso Sequence alternative possono essere modellate sullo stesso diagrammadiagramma
13
2525
EsempioEsempio((Precedenza tra corsiPrecedenza tra corsi))
:Selettore :Corso
1: precedenza(softEng)
true
2: precedenza(softEng)
Multioggetto
2626
EsempioEsempio:Corso
:Selettore
Info:InfoAmministrative
F1:CartellaStudente
Pippo
1: seleziona 4 corsi
2: seleziona Informatica3: seleziona Matematica4: seleziona Chimica
5: seleziona Storia
6: seleziona altri 2 corsi
7: seleziona Ing. Software8: seleziona Italiano
9: sottometti corsi
10: * corso Disponibile?11: * aggiungi Pippo
12: crea CartellaStudente
13: crea InfoAmministrative
14
2727
Class DiagramClass Diagram
2828
Class DiagramClass Diagram
Definiscono la visione statica del sistemaDefiniscono la visione statica del sistemaclassiclassirelazioni tra classirelazioni tra classi
associazione (uso)associazione (uso)generalizzazione (ereditarietà)generalizzazione (ereditarietà)aggregazione (contenimento)aggregazione (contenimento)
È forse il modello più importante perché È forse il modello più importante perché definisce gli elementi base del sistemadefinisce gli elementi base del sistema
15
2929
ClassiClassi
In UML una classe è composta da tre partiIn UML una classe è composta da tre partinomenomeattributi (lo stato)attributi (lo stato)metodi (il comportamento)metodi (il comportamento)
Professore
nomecognome
create()delete()
Professore
create()delete()
Professore
nomecognome
Professore
3030
ClassClassii((VisibilitVisibilitàà ee mmolteplicitàolteplicità))
Professore
nome: Stringcognome: Stringetà: integer
visualizza()selezionaCorso()
ProfessoreProfessore
+ nome: String
# cognome: String
- età: integer = 0
+visualizza()
- selezionaCorso()
45
classe astrattamolteplicità
public
protected
private
scope
valore iniziale
Method ::= [visibility] name [(parameter linst)] [: return type]Method ::= [visibility] name [(parameter linst)] [: return type]
Parameter ::= [direction] name: type [= defaultParameter ::= [direction] name: type [= default--value]value]
16
3131
InterfacInterfacciacia((DefiniDefinizionezione))
SpecificanoSpecificano il comportamento di una classe senza il comportamento di una classe senza darne l’implementazionedarne l’implementazione
String
isEqual(String): BooleanisGreater(String): Booleanlength(): Integer
<<interface>>Sortable
isEqual(Object): BooleanisGreater(Object): Boolean
String
isEqual(String): BooleanisGreater(String): Booleanlength(): Integer Sortable
3232
SortedStringList
String
isEqual(String): BooleanisGreater(String): Booleanlength(): Integer
InterfacInterfacciacia(Us(Usoo))
<<interface>>Sortable
isEqual(Object): BooleanisGreater(Object): Boolean
String
isEqual(String): BooleanisGreater(String): Booleanlength(): Integer Sortable
SortedStringList
17
3333
AssociazioniAssociazioni
Un’associazione definisce un canale di Un’associazione definisce un canale di comunicazione bidirezionale fra le due classicomunicazione bidirezionale fra le due classiLa molteplicità definisce il numero di istanze La molteplicità definisce il numero di istanze che prendono parte alla relazioneche prendono parte alla relazioneI link sono istanze delle associazioniI link sono istanze delle associazioni
Un link connette due oggettiUn link connette due oggettiUn'associazione connette due classiUn'associazione connette due classi
3434
Corso CartellaStudenteappare
AssociazioniAssociazioni
Un’associazione indica una relazione tra classiUn’associazione indica una relazione tra classiad esempio persona che lavora per aziendaad esempio persona che lavora per azienda
Un’associazione deve avere un nomeUn’associazione deve avere un nomeIl nome è solitamente un verbo (un etichetta Il nome è solitamente un verbo (un etichetta al centro della linea che definisce al centro della linea che definisce l’associazione)l’associazione)
18
3535
Corso Studente
3 .. 100..*
MolteplicitàMolteplicità
La molteplicità dice:La molteplicità dice:Se l’associazione è obbligatoria oppure no?Se l’associazione è obbligatoria oppure no?Il numero minimo e massimo di oggetti che Il numero minimo e massimo di oggetti che possono essere relazionati ad un altro oggettopossono essere relazionati ad un altro oggetto
segue
3636
Molteplicità (cont.)Molteplicità (cont.)
EEsattamentesattamente unouno: 1: 1Zero o Zero o unouno: 0..1: 0..1MMoltiolti: 0..*: 0..*UnoUno oo piùpiù: 1..*: 1..*Un numero specificoUn numero specifico: 7: 7Un intervalloUn intervallo: 4..15: 4..15ListListaa: 0..1, 3..4, 6..*: 0..1, 3..4, 6..*
Tutti i numeri eccettoTutti i numeri eccetto 2 2 ee 55
?
19
3737
RuoloRuolo
Definisce il ruolo svolto nell’associazioneDefinisce il ruolo svolto nell’associazioneUtile perUtile per
AutoAuto--associazioniassociazioniAssociazioni multiple tra due classiAssociazioni multiple tra due classi
work forPerson Company
employee employer
1..* 0..1
Person
0..1
0..1
husband
wife
is married toUser Directory
owner
ack. user
container
contained
0..*
0..*
0..*
0..*1
1
3838
Studente Corso
Frequenzapercentualeprofitto
1..* 1..*
Classi associazioneClassi associazione
Alcune proprietà potrebbero appartenere Alcune proprietà potrebbero appartenere all’associazione e non alle parti coinvolteall’associazione e non alle parti coinvolte
20
3939
Corso Curriculum1..*
AggregazioniAggregazioni
Le aggregazioni sono una forma particolare di Le aggregazioni sono una forma particolare di associazione. Una parte è in relazione con un associazione. Una parte è in relazione con un oggetto (oggetto (partpart--ofof))
1
4040
SliderPanel Button
Window
1
1
1
scrollbar body close2
1
1
ComposizioniComposizioni
Una relazione di composizione è un’aggregazione forte Una relazione di composizione è un’aggregazione forte Le parti componenti non esistono senza il contenitoreLe parti componenti non esistono senza il contenitore
21
4141
Persona
Studente Professore
Ereditarietà (Generalizzazione)Ereditarietà (Generalizzazione)
Esplicita eventuali Esplicita eventuali comportamenti comunicomportamenti comuniÈ possibile dover:È possibile dover:
Aggiungere nuove Aggiungere nuove proprietà alle classiproprietà alle classiRidefinire/modificare Ridefinire/modificare operazioni esistentioperazioni esistenti
4242
PackagePackage
I packageI package sonosono ““contenitoricontenitori” ” didi classiclassiSistemi complessiSistemi complessi ((realireali))devono essere modellati devono essere modellati gerarchicamentegerarchicamente
SottosistemiSottosistemi (package) in(package) inrelazione fra lororelazione fra loroClassi all’interno deiClassi all’interno deipackagepackage
PackagePackageAltaAlta coesione all’internocoesione all’internoInterfacce precise eInterfacce precise e limitatelimitate
GUI
Server
+Database+LoggingService
Client
+OrderForm
+TrackingForm
+Order
22
4343
EsempiEsempi
GeneralizGeneralizzazionizazioniAggregaAggregazionizioni
Package possono contenere altri packagePackage possono contenere altri packageImportImportAccessAccess
<<import>>
User services
Business services
Data services
GUI
MacGUIDOSGUI
<<import>>
4444
StatechartStatechart diagramdiagram
23
4545
State DiagramState Diagram
Rappresentano il comportamento dei singoli Rappresentano il comportamento dei singoli oggetti di una classe in termini dioggetti di una classe in termini di
Eventi a cui gli oggetti (la classe) sono sensibiliEventi a cui gli oggetti (la classe) sono sensibiliAzioni prodotteAzioni prodotteTransizioni di stato Transizioni di stato
Identificazione degli stati interni degli oggetti Identificazione degli stati interni degli oggetti
Possibilità di descrivere evoluzioni parallelePossibilità di descrivere evoluzioni paralleleSintassi mutuata da StateChart (D. Harel)Sintassi mutuata da StateChart (D. Harel)
4646
Elementi graficiElementi grafici
StStatoato
Decomposizione Decomposizione ANANDD
Decomposizione ORDecomposizione OR
eventoazione
TransizioneTransizione
Stato inizialeStato iniziale
Stato finaleStato finale
24
4747
Inizio e FineInizio e Fine
Inizio BiancoMuovere
NeroMuovere
Matto o Abbandono
Stallo o Accordo
MossaBianca
MossaNera
Vince Nero
Vince Bianco
Patta
Matto o Abbandono
Stallo o Accordo
4848
ProntoVerde [incrocio.stato=libero]
InCorsa
CondizioneEvento
CondizioniCondizioni
Funzioni booleane sui valori degli oggettiFunzioni booleane sui valori degli oggettiUtili quando non basta l'evento, ma si vuole Utili quando non basta l'evento, ma si vuole aggiungere un predicatoaggiungere un predicato
25
4949
EsempioEsempio(P(Prenotazione volirenotazione voli))
No reservationsentry/ reset()
openFlight()
Fully booked
cancel()[ reservedSeats>1 ]
reserve[ freeSeats>1 ]
cancelFlight()
reserve()
cancel()
close()
cancel()[ reservedSeats=1 ]
reserve()[ freeSeats=1 ]Closed
close()
Partiallybooked
5050
Folle RetroMarcia
MarciaAvanti
Prima Seconda Terza
levaR
levaN
levaF levaN
accelera accelera
deceleradecelera
Cambio Automatico
Decomposizione ORDecomposizione OR
Un macro stato equivale ad una scomposizione OR Un macro stato equivale ad una scomposizione OR degli statidegli statiI sottostati ereditano le transizioni dei loro superstatiI sottostati ereditano le transizioni dei loro superstati
26
5151
Decomposizione ANDDecomposizione AND
NaturalmenteAttento
do: appunti
do: sbadiglia
do: gratta
Distratto
noiarichiamo
ForzatamenteAttento
do: ghirigoririchiamo
5252
HistoryHistory
History può essere associata a stati non fogliaHistory può essere associata a stati non fogliaQuando l’esecuzione lascia uno stato S con historyQuando l’esecuzione lascia uno stato S con history
Si salva l’ultimo stato visitato Si salva l’ultimo stato visitato SS11 in Sin S
Quando l’esecuzione ritorna inQuando l’esecuzione ritorna in SSSi riparte daSi riparte da SS11
H
A A1
A2
B
27
5353
ExampleExample((Selezione corsiSelezione corsi))
Creazione Selezione
Selezione extra
Sospendi
Salva
SottometticorsiE < 2
corsi < 4
sospendi
continua
quit
corsiE = 2
corsi = 4
H
5454
BibliografiaBibliografia
28
5555
LibriLibri
The Unified Modeling Language User GuideThe Unified Modeling Language User GuideG. Booch, J. Rumbaugh e I. JacobsonG. Booch, J. Rumbaugh e I. JacobsonAddison Wesley, 1998Addison Wesley, 1998The Modeling Language Reference ManualThe Modeling Language Reference ManualJ. Rumbaugh, I. Jacobson e G. Booch J. Rumbaugh, I. Jacobson e G. Booch Addison Wesley, 1999Addison Wesley, 1999The Unified Software Development ProcessThe Unified Software Development ProcessI. Jacobson, G. Booch e J. RumbaughI. Jacobson, G. Booch e J. Rumbaugh
UML DistilledUML DistilledM. Fowler e K. ScottM. Fowler e K. ScottAddison Wesley, 1999Addison Wesley, 1999
5656
Libri (cont.)Libri (cont.)
The Object Constraint LanguageThe Object Constraint LanguageJ. Warmer e A. KleppeJ. Warmer e A. KleppeAddison Wesley, 1999Addison Wesley, 1999Visual Modeling with Rational Rose and UMLVisual Modeling with Rational Rose and UMLT. QuatraniT. QuatraniAddison Wesley, 2000 Addison Wesley, 2000 UML ExplainedUML ExplainedK. ScottK. ScottAddison Wesley, 2001Addison Wesley, 2001RealReal--Time UMLTime UMLB. DouglassB. DouglassAddison Wesley, 1998Addison Wesley, 1998
29
5757
I tool più famosiI tool più famosiEmbarcaderoEmbarcaderoRhapsodyRhapsodyTogetherTogether JJRational Rational RoseRoseObjecteering Objecteering UML ModelerUML ModelerUML Suite UML Suite VisioVisioArgoUMLArgoUMLMetaEditMetaEdit++
hrefhref="http://www.="http://www.objectsbydesignobjectsbydesign.com/tools/modeling.com/tools/modeling
5858
Siti webSiti web
http://www.cetushttp://www.cetus--links.orglinks.orghttp://www.rational.comhttp://www.rational.comhttp://www.omg.orghttp://www.omg.orghttp://www.klasse.nl/ocl/http://www.klasse.nl/ocl/
"Using UML"Using UML for Modeling a Distributed Java Application“for Modeling a Distributed Java Application“K.K. BergnerBergner, A. Rausch, and M. , A. Rausch, and M. SihlingSihlingTechnische Universität MünchenTechnische Universität München, TUM, TUM--I9735, July 1997. I9735, July 1997. http://www4.http://www4.informatikinformatik..tutu--muenchenmuenchen.de/reports/TUM.de/reports/TUM--I9735.htmlI9735.html