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

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
der Universität Oldenburg
der Universität Oldenburg
Klassen - Verkettete Liste -
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
Definition von Klassen in Java
Timm Grams Hochschule Fulda Fachbereich Elektrotechnik und Informationstechnik Rekursive Funktionen in C © Timm Grams, Fulda, (korr.: )
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Fakultät für informatik informatik 12 technische universität dortmund Specifications Peter Marwedel TU Dortmund, Informatik 12 Graphics: © Alexandra Nolte,
der Universität Oldenburg
On a Buzzword: Hierachical Structure David Parnas.
Java: Dynamische Datentypen
FH-Hof Eine kleine Theorie der Zeit Richard Göbel.
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Konstruktoren.
WHILE - Anweisung.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
DO...WHILE Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Objektorientierte Programmierung JDK-Klassenbibliothek
Automatisches Testen und Bewerten von Java-Klassen
JAVA RMI.
Brandenburgische Technische Universität Cottbus Program Profiling Andrzej Filipiak Übung Testen von Software SoSe 2006.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Modulare Programmierung
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
Thema: Fibonacci-Zahlen
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Rekursive Funktionen (Fakultät)
Einführung in die Programmiersprache Java
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
D I E V E R W A L T U N G D E S 2 1. J H D T ´ S F.Grandits / U.Linauer E-Government Kommunikationsarchitektur Schnittstellen für integrierte Lösungen.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Dynamische Datentypen
Lindenmayer-Systeme: Fraktale rekursiv zeichnen
Ganze Zahlen Die Typen int, unsigned int; Auswertung arithmetischer Aus-drücke, arithmetische Operatoren.
Objektorientiertes Konstruieren
Programmierung 1. Einführung Seite 1
Algorithmen und Datenstrukturen Übungsmodul 1
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Vergleiche von Adjektiven
Übersicht Nachtrag zu Ausdrücken
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Objektorientierte (OO) Programmierung
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
Hello World! Javakurs 2013 Arne Kappen
 Präsentation transkript:

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

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

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

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

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; } n = (getchar() << 8) | getchar(); ptr[count] = name[++count]; printf(%c %c\n, getchar(), getchar()); 2 / 3

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

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

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

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

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)

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) ohne P: 0.95 mit P:

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

Literatur Williams, David: C++ portability guide, Version 0.8, Blair, Liz: Build to Spec!, Reprinted from Java Developers Journal, ml ml Mooney, James D.: Developing Portable Software, Tutorial, Mooney, James D.: Bringing Portability to the Software Process, Technikal Report, Brian W. Kernighan, Rob Pike: The Practice of Programming, Addison Wesley, 1999 Schildt, Herbert: C ent-packt, mitp-Verlag, 2001