Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Portabilität Seminar aus Softwareentwicklung: Programmierstil Christine Schiestl WS 02 / 03.

Ähnliche Präsentationen


Präsentation zum Thema: "Portabilität Seminar aus Softwareentwicklung: Programmierstil Christine Schiestl WS 02 / 03."—  Präsentation transkript:

1 Portabilität Seminar aus Softwareentwicklung: Programmierstil Christine Schiestl WS 02 / 03

2 Portabilität Schnittstellen Probleme bezüglich Programmiersprache Zielsysteme Vorteile / Kosten von Portabilität Metriken Grad der Portabilität A software unit is portable (exhibits portability) across a class of environments to the degree that the effort required to transport and adapt it to a new environment in the class is less than the effort of redevelopment. Definition und Übersicht

3 Anerkannte, vollständige, eindeutige Standards für Schnittstellen erleichtern Portabilität Schnittstellen Application Programm Support Procedures CPU and Memory Operating System I/O Devices UsersTerminals Remote Systems

4 Programmiersprache Nicht vom Standard abweichen Mit dem Strom schwimmen Alte Sprachkonstrukte vermeiden Standard Bibliotheken verwenden *x[] = {abx} java.util.Date int getDay() Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.DAY_OF_WEEK) 1 / 3

5 Programmiersprache Auf Problemstellen achten (vom Standard nicht spezifiziert) Größe von Datentypen Reihenfolge der Auswertung int main(void){ printf(%d %d %d %d, sizeof(char), sizeof(short), sizeof(int), sizeof(long)); return 0; } 1 2 4 4 1 2 2 4 n = (getchar() << 8) | getchar(); ptr[count] = name[++count]; printf(%c %c\n, getchar(), getchar()); 2 / 3

6 Programmiersprache char mit / ohne Vorzeichen Speicher Int i; Char s[MAX]; for (i=0; i<MAX-1; i++) { //if ((s[i]=getchar()) == EOF) break; if ((c=getchar()) == EOF) break; s[i] = c; } s[i] = \0; Struct X{ char c; int i; }; sizeof(Struct X) sizeof(char)+sizeof(int) 3 / 3

7 Zielsysteme Schnittmenge der Eigenschaften statt Vereinigung Bedingte Kompilierung vermeiden Einfache Programmierung #ifdef MAC... #elif DOS... #endif 1 / 2 Schnittmenge Vereinigung

8 Zielsysteme Systemabhängigkeiten Getrennt verwalten Mittels Interfaces verstecken Byte Ordnung Fixe Byte Ordnung einführen Auf #ifdef verzichten unsigned short x; putchar(x >> 8); putchar(x & 0xFF); unsigned short x; x = getchar << 8; x |= getchar() & 0xFF; 2 / 2 int open(const char *Pfad,int OModus[unsigned SModus]) int read(int Fd, void *Puffer, unsigned n) int close(int Fd) UNIX.cWIN.c...

9 User Sprache Fehlermeldungen Platz Datum Kulturelle Unterschiede Interpretation graphischer oder akustischer Elemente und Symbole User Experience Systemkapazitäten Zeichensatz ASCII / Unicode … Internationalisierung / Lokalisierung 01.02.2002 1. Februar ? 2. Jänner? $ / / … garçon 67 61 72 E7 6F 6E

10 Vorteile / Nachteile Vorteile Kosten für spätere Entwicklungen Verschiedene Zielsysteme In Neuentwicklung und nicht Redevelopment investieren Software ist strukturierter, durchdachter, besser getestet Kosten Größerer Aufwand bei der Entwicklung Möglicherweise Qualitätseinbußen bei der Software (Ressourcenverbrauch, Performance, Eigenschaften der jeweiligen Systeme)

11 Metriken Grad der Portabilität Kosten Eigene Metriken für Einbußen in Qualität wie Ressourcen Verbrauch … DP(su) = 1 – (Cport(su,e2) / Crdev(req,e2)) für SW-Entwicklung: Cdev(req,e1) = Cdes(req) + Ccod(req,e1) + Ctd(req,e1) + Cdoc(req,e1) Cdevp(req,e1) = Cdev(req,e1) + Cpa(req) für Neuentwicklung: Crdev(req,e2) <= Cdev(req,e1) für Portierung: Cport(su,e2) = Cmod(su,e2) + Cptd(req,e2) + Cpdoc(req,e2) 1 1.2 1 ohne P: 0.95 mit P: 1.08 0.9

12 Ausblick Portabilität ist nicht immer der beste Weg Keine allgemeine Komplettlösung Java, SW Patterns, universelle Systeme / Plattformen … Verschiedene Aspekte Portieren über Länder, Systeme usw. hinweg Kaum Methoden, Referenzen, Metriken etc. vorhanden Empfehlungen Meist ad hoc – Lösungen

13 Literatur Williams, David: C++ portability guide, Version 0.8, 1998 http://www.mozilla.org/hacking/portable-cpp.html http://www.mozilla.org/hacking/portable-cpp.html Blair, Liz: Build to Spec!, Reprinted from Java Developers Journal, 2001 http://developer.java.sun.com/developer/technicalArticles/J2EE/build/index.ht ml http://developer.java.sun.com/developer/technicalArticles/J2EE/build/index.ht ml Mooney, James D.: Developing Portable Software, Tutorial, 2001 http://www.csee.wvu.edu/~jdm/research/portability/home.html http://www.csee.wvu.edu/~jdm/research/portability/home.html Mooney, James D.: Bringing Portability to the Software Process, Technikal Report, 1997 http://www.csee.wvu.edu/~jdm/research/portability/home.htmlhttp://www.csee.wvu.edu/~jdm/research/portability/home.html Brian W. Kernighan, Rob Pike: The Practice of Programming, Addison Wesley, 1999 Schildt, Herbert: C ent-packt, mitp-Verlag, 2001


Herunterladen ppt "Portabilität Seminar aus Softwareentwicklung: Programmierstil Christine Schiestl WS 02 / 03."

Ähnliche Präsentationen


Google-Anzeigen