• Keine Ergebnisse gefunden

Softwareengineering f¨ ur langlebige Systeme – Ubung 5 ¨

N/A
N/A
Protected

Academic year: 2022

Aktie "Softwareengineering f¨ ur langlebige Systeme – Ubung 5 ¨"

Copied!
7
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Softwareengineering f¨ ur langlebige Systeme – Ubung 5 ¨

AUFGABE 1 (Updates) (5BP):

Die Firma Aer Calidus nutzt f¨ ur Kundenkantakte eine Adressdatenbank. Da die Daten- bank alt ist und nicht mehr modernen Anforderungen gen¨ ugt, soll das System durch eine neue Version ersetzt werden. Dabei sind die Daten zu migrieren.

Da das alte System nicht alle ben¨ otigten Daten unterst¨ utzt sind, in der Vergangenheit Felder anders genutzt worden, als vorgesehen:

• Es existieren keine Felder f¨ ur Email, Webseite oder ¨ ahnliches. Diese Daten wurden in die Felder Pager, Telex oder Bemerkung eingetragen.

• Es kann pro Kunde nur eine Adresse eingetragen werden. Daher wurden weitere Adressen in weiteren Datens¨ atzen zu dem Kunden gehalten. Die verschiedenen Rol- len der Adressen wurden im Bemerkungsfeld gepflegt. Kontaktdaten (Email, Telefon) wurden mit in den entsprechenden Datens¨ atzen gehalten.

Bitte schreiben Sie ein Tool oder Script, welches die alte Datenbank in die neue ¨ uberf¨ uhrt.

create table alt_adressen ( create table new_client (

id integer, client integer,

name varchar(20), address1 varchar(40),

vorname varchar(40), address2 varchar(40), anrede varchar(10), address3 varchar(40),

strasse varchar(70), zip varchar(10),

plz integer(5), city varchar(40),

ort varchar(40), country varchar(40),

telefon varchar(20), adresstyp varchar(20) telefax varchar(20), );

telex varchar(20),

pager varchar(20), create table new_client (

autotelefon varchar(20), id integer,

bemerkung varchar(20) surename varchar(40),

); middlename varchar(40),

create table new_contact ( name varchar(40),

client integer, titel varchar(10),

typ varchar(20), anrede varchar(10),

contactid varchar(20), remark varchar(20)

remark varchar(40) );

);

(2)

AUFGABE 2 (Reengineering) (5BP):

Analysieren Sie das Programm.

1. Um welche Sprache bzw. welches Sprachderivat handelt es sich?

2. F¨ ur welche Plattform ist das Programm?

3. Wie wird dieses Programm genutzt? Sind spezielle Tools, Hardware oder ¨ ahnliches erforderlich?

4. Analysieren Sie die einzelnen Funktionalit¨ aten des Programms. Stellen Sie das gege- bene Programm als Modell dar.

5. Extrahieren Sie bitte die Anforderungen, die das Programm erf¨ ullt.

(3)

# i n c l u d e < D m x S i m p l e . h >

# d e f i n e m a x G r o u p s 5

# d e f i n e m a x G r o u p m e m b e r s 5

# d e f i n e m a x C h a n 125

# d e f i n e m a x P r o g s 5

# d e f i n e s i g n ( i ) (( i ) < 0? -1:1)

int v a l u e = 0;

int c h a n n e l = 0;

int g r o u p = 0;

int g r o u p s [ m a x G r o u p s ][ m a x G r o u p m e m b e r s ];

b o o l e a n i s G r o u p M o d e = f a l s e ; b o o l e a n r u n P r o g r a m [ m a x P r o g s ];

int p r o g r a m G r o u p [ m a x P r o g s ];

int pc [ m a x P r o g s ];

int f a r b [] = { 0 , 0 , 255 , 0 , 255 , 0 ,

255 , 0 , 0 ,

255 , 255 , 0 , 255 , 0 , 255 , 0 , 255 , 2 5 5 } ;

int r3 = 0 , rz3 = 0 , g3 = 0 , gz3 =0 , b3 = 0 , bz3 = 0 , y3 = 0 , yz3 = 0;

int i4 = 0;

int f a r b 4 [] = { 0 , 0 , 0 , 255 ,

0 , 0 , 255 , 0 ,

0 , 255 , 0 , 0 ,

255 , 0 , 0 , 0 ,

255 , 255 , 0 , 0 ,

0 ,255 , 255 , 0 , 0 , 0 ,255 , 255 ,

255 , 0 , 0 , 255 ,

255 , 255 , 255 , 0 , 0 , 255 , 255 , 255 , 255 , 0 , 255 , 255 , 255 , 255 , 0 , 255 , 255 , 255 , 255 , 2 5 5 } ; int c h n s e l e c t ( int c ) {

int r e s u l t = 0;

s w i t c h ( c ) { c a s e ’ w ’ : c a s e ’ R ’ :

r e s u l t = 0;

b r e a k ; c a s e ’ r ’ : c a s e ’ G ’ :

r e s u l t = 1;

b r e a k ; c a s e ’ g ’ : c a s e ’ B ’ :

r e s u l t = 2;

b r e a k ; c a s e ’ b ’ : c a s e ’ Y ’ :

r e s u l t = 3;

b r e a k ; }

r e t u r n r e s u l t ; }

v o i d s e t v a l u e ( int basechn , int command , int v a l u e ) { D m x S i m p l e . w r i t e ( b a s e c h n + c h n s e l e c t ( c o m m a n d ) , v a l u e );

}

v o i d a d d T o G r o u p ( int lgroup , int c h a n n e l ) { if ( l g r o u p < m a x G r o u p s ) {

int j = 0;

(4)

for (; j < m a x G r o u p m e m b e r s && g r o u p s [ l g r o u p ][ j ] != 0; j ++) { };

if ( j < m a x G r o u p m e m b e r s ) { g r o u p s [ l g r o u p ][ j ] = c h a n n e l ; S e r i a l . p r i n t ( " C h a n n e l : " );

S e r i a l . p r i n t ( c h a n n e l );

S e r i a l . p r i n t ( " a d d e d to g r o u p " );

S e r i a l . p r i n t l n ( l g r o u p );

} } }

v o i d s e t u p () {

for ( int i = 0; i < m a x G r o u p s ; i ++) {

for ( int j = 0; j < m a x G r o u p m e m b e r s ; j ++) { g r o u p s [ i ][ j ] = 0;

};

}

for ( int i = 0; i < m a x P r o g s ; i ++) { r u n P r o g r a m [ i ] = f a l s e ;

p r o g r a m G r o u p [ i ] = 0;

pc [ i ] = 0;

}

D m x S i m p l e . u s e P i n ( 3 ) ; S e r i a l . b e g i n ( 9 6 0 0 ) ; S e r i a l . p r i n t l n ( " r e a d y " );

}

v o i d e x e c P r o g r a m ( int i ) { s w i t c h ( i ) {

c a s e 0:

if ( pc [0] < 5 0 0 ) {

s e t G r o u p V a l u e ( p r o g r a m G r o u p [0] , ’ r ’ , 2 5 5 ) ; }

e l s e if ( pc [0] < 2 0 0 0 ) {

s e t G r o u p V a l u e ( p r o g r a m G r o u p [0] , ’ r ’ , 0);

} e l s e {

pc [0] = 0;

};

pc [ 0 ] + + ; b r e a k ; c a s e 1:

if ( pc [1] < 10) {

s e t G r o u p V a l u e ( p r o g r a m G r o u p [1] , ’ b ’ , 2 5 5 ) ; }

e l s e if ( pc [1] < 60) {

s e t G r o u p V a l u e ( p r o g r a m G r o u p [1] , ’ b ’ , 0);

} e l s e {

pc [1] = 0;

};

pc [ 1 ] + + ; b r e a k ; c a s e 2:

if ( pc [2] == 1) { if ( r3 == rz3 ) {

rz3 = r a n d o m ( 1 6 ) * 1 6 ; };

if ( g3 == gz3 ) {

gz3 = r a n d o m ( 1 6 ) * 1 6 ; }

if ( b3 == bz3 ) {

bz3 = r a n d o m ( 1 6 ) * 1 6 ; }

if ( y3 == yz3 ) {

(5)

yz3 = r a n d o m ( 1 6 ) * 1 6 ; }

b3 += s i g n ( bz3 - b3 );

r3 += s i g n ( rz3 - r3 );

g3 += s i g n ( gz3 - g3 );

y3 += s i g n ( yz3 - y3 );

s e t G r o u p V a l u e ( p r o g r a m G r o u p [2] , ’ R ’ , r3 );

s e t G r o u p V a l u e ( p r o g r a m G r o u p [2] , ’ G ’ , g3 );

s e t G r o u p V a l u e ( p r o g r a m G r o u p [2] , ’ B ’ , b3 );

s e t G r o u p V a l u e ( p r o g r a m G r o u p [2] , ’ Y ’ , y3 );

}

e l s e if ( pc [2] > 1 0 0 0 ) { pc [2] = 0 ;

};

pc [ 2 ] + + ; b r e a k ; c a s e 3:

if ( pc [3] % 5 0 0 0 == 1) {

for ( int i = 0; i < m a x G r o u p s ; i ++) {

s e t G r o u p V a l u e ( i , ’ R ’ , f a r b [3* i + pc [ 3 ] / 5 0 0 0 ] ) ; s e t G r o u p V a l u e ( i , ’ G ’ , f a r b [3* i + pc [ 3 ] / 5 0 0 0 + 1 ] ) ; s e t G r o u p V a l u e ( i , ’ B ’ , f a r b [3* i + pc [ 3 ] / 5 0 0 0 + 2 ] ) ; }

}

e l s e if ( pc [3] > 5 0 0 0 * m a x G r o u p s ) { pc [3] = 0 ;

};

pc [ 3 ] + + ; b r e a k ;

c a s e 4:

if ( pc [4] == 1) {

if ( r3 == rz3 && g3 == gz3 && b3 == bz3 && y3 == yz3 ) { i4 = c o n s t r a i n ( i4 +4 ,0 ,51);

rz3 = f a r b 4 [ i4 ];

gz3 = f a r b 4 [ i4 + 1 ] ; bz3 = f a r b 4 [ i4 + 2 ] ; yz3 = f a r b 4 [ i4 + 3 ] ; }

b3 += s i g n ( bz3 - b3 );

r3 += s i g n ( rz3 - r3 );

g3 += s i g n ( gz3 - g3 );

y3 += s i g n ( yz3 - y3 );

s e t G r o u p V a l u e ( p r o g r a m G r o u p [2] , ’ R ’ , r3 );

s e t G r o u p V a l u e ( p r o g r a m G r o u p [2] , ’ G ’ , g3 );

s e t G r o u p V a l u e ( p r o g r a m G r o u p [2] , ’ B ’ , b3 );

s e t G r o u p V a l u e ( p r o g r a m G r o u p [2] , ’ Y ’ , y3 );

}

e l s e if ( pc [4] > 1 0 0 0 ) { pc [4] = 0 ;

};

pc [ 4 ] + + ; b r e a k ; }

}

v o i d s e t G r o u p V a l u e ( int group , int c , int v a l u e ) { for ( int j = 0; j < m a x G r o u p m e m b e r s ; j ++) {

if ( g r o u p s [ g r o u p ][ j ] == 0) { b r e a k ;

}

s e t v a l u e ( g r o u p s [ g r o u p ][ j ] , c , v a l u e );

} }

v o i d l o o p () {

for ( int i = 0; i < m a x P r o g s ; i ++) { if ( r u n P r o g r a m [ i ]) {

(6)

e x e c P r o g r a m ( i );

} } }

v o i d s e r i a l E v e n t () { int c ;

// w h i l e (! S e r i a l . a v a i l a b l e ( ) ) ; c = S e r i a l . r e a d ();

if (( c >= ’ 0 ’ ) && ( c <= ’ 9 ’ )) { v a l u e = 10* v a l u e + c - ’ 0 ’ ; }

e l s e {

s w i t c h ( c ) { c a s e ’ c ’ :

c h a n n e l = v a l u e ; i s G r o u p M o d e = f a l s e ; b r e a k ;

c a s e ’ Y ’ : c a s e ’ B ’ : c a s e ’ G ’ : c a s e ’ R ’ : c a s e ’ b ’ : c a s e ’ g ’ : c a s e ’ r ’ : c a s e ’ w ’ :

if ( i s G r o u p M o d e ) {

s e t G r o u p V a l u e ( group , c , v a l u e );

} e l s e {

s e t v a l u e ( channel , c , v a l u e );

};

b r e a k ; c a s e ’ a ’ :

if ( v a l u e < m a x G r o u p s ) { a d d T o G r o u p ( value , c h a n n e l );

};

b r e a k ; c a s e ’ s ’ :

if ( v a l u e < m a x G r o u p s ) { g r o u p = v a l u e ;

i s G r o u p M o d e = t r u e ; };

b r e a k ; c a s e ’ p ’ :

if ( v a l u e < m a x P r o g s ) { r u n P r o g r a m [ v a l u e ] = t r u e ; p r o g r a m G r o u p [ v a l u e ] = g r o u p ; }

b r e a k ; c a s e ’ q ’ :

if ( v a l u e < m a x P r o g s ) { r u n P r o g r a m [ v a l u e ] = f a l s e ; p r o g r a m G r o u p [ v a l u e ] = 0;

} b r e a k ; c a s e ’ x ’ :

if ( v a l u e < m a x G r o u p s ) {

for ( int j = 0; j < m a x G r o u p m e m b e r s ; j ++) { g r o u p s [ v a l u e ][ j ] = 0;

};

};

b r e a k ; c a s e ’ z ’ :

for ( int i = 0; i < m a x C h a n ; i ++) { D m x S i m p l e . w r i t e ( i , 0);

};

b r e a k ;

(7)

c a s e ’ l ’ :

S e r i a l . p r i n t l n ( " S t a t u s :\ n G r o u p s : " );

for ( int i = 0; i < m a x G r o u p s ; i ++) { S e r i a l . p r i n t ( " G r o u p " );

S e r i a l . p r i n t ( i );

S e r i a l . p r i n t ( " M e m b e r : " );

for ( int j = 0; j < m a x G r o u p m e m b e r s ; j + + ) { S e r i a l . p r i n t ( g r o u p s [ i ][ j ]);

S e r i a l . p r i n t ( " , " );

}

S e r i a l . p r i n t l n ( " " );

}

S e r i a l . p r i n t l n ( " \ n P r o g r a m m e : " );

for ( int i = 0; i < m a x P r o g s ; i ++) { S e r i a l . p r i n t ( " P r o g r a m m " );

S e r i a l . p r i n t ( i );

S e r i a l . p r i n t ( " run : " );

S e r i a l . p r i n t ( r u n P r o g r a m [ i ]);

S e r i a l . p r i n t ( " G r o u p : " );

S e r i a l . p r i n t l n ( p r o g r a m G r o u p [ i ]);

} }

v a l u e = 0;

} }

Referenzen

ÄHNLICHE DOKUMENTE

Wieviele mp3-Dateien mit je 5 MiB Speicherbedarf k¨ onnen Sie innerhalb einer halben Stunde im Gigabit-LAN vom Server auf Ihren PC kopieren?. Der Download einer 416 MiB

Es soll eine graphische Oberfl¨ ache existieren, welche einem handels¨ ubliche Taschenrechner nachgebildet ist.. Geben Sie den Code bitte, sowohl als Ausdruck als auch als

Erstellen Sie ein Ant-Script, welches folgende Tragets bietet und eine sinnvolle Includierung der Targets untereinander beinhalten:. • compile : Kompiliert

Halten Sie sich bitte an das Schema aus der Vorlesung und erstellen sie zus¨ atzlich eine Klasse, die den Ablauf wie oben beschrieben durchf¨

Bemerkung: Die nichtssagenden Klassen-, Variablen- und Methoden-Namen sind schlech- ter Programmierstil, den Sie sich nicht aneignen sollen. Wir haben ihn hier dennoch ge- nutzt,

Erstelle eine Executive Summary f¨ ur die Einleitung (bis Seite 18) des Buches “Entwurfs- muster f¨ ur effektive Software-Entwicklung” (Link auf der LSys-Webseite).

Jan J¨ urjens, Christian Wessel Lehrstuhl 14 – Software Engineering Fakult¨ at f¨ ur Informatik Modellbasierte Softwaretechniken f¨ ur sichere Systeme – 24.04.2012..

Kunden k¨ onnen ¨ uber eine Benutzeroberfl¨ ache Informationen ¨ uber ihre laufenden Versicherungen einholen.. Auch diese Daten sind sensibel und m¨ ussen gesch¨