realisierung umfangreicher softwareprojekte unter linux · umbrello eclipse uml argouml ... einige...

41
LIT 2007 Realisierung umfangreicher Softwareprojekte unter Linux Dr. Christian Dietrich [email protected] Linux-Infotag – 24.03.07 – FH-Augsburg

Upload: others

Post on 19-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Realisierung umfangreicher Softwareprojekte unter Linux

Dr. Christian [email protected]

Linux-Infotag – 24.03.07 – FH-Augsburg

Page 2: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Wie gut eignet sich Linux für die Realisierung

umfangreicher Softwareprojekte?

Page 3: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Inhalt➲ Einleitung

➲ SW-Entwurf / Design➔ UML➔ Entwurfsmuster (Design patterns)➔ Tools

➲ Implementierung / Dokumentation➔ Entwicklungsumgebungen➔ Compiler➔ Build Tools➔ C++ Libraries➔ Datenbankanbindung➔ Versionsverwaltungssysteme➔ Cruise Control➔ Statische Codeanalyse

➲ Fazit

Page 4: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Aufgaben im SW-Lifecyle

➲ Anforderungsanalsye➲ Entwurf / Design➲ Implementierung / Dokumentation➲ Test (Unit Tests, Component Tests, ...)➲ Wartung und Pflege

Die Internen Abläufe eines Unternehmens müssen mit den Aufgaben im SW-Lifecycleharmonieren (Automotive SPICE, ...)!

Page 5: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

SW-Entwurf / Design

Page 6: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

UML

➲ Unified Modeling Language (UML) ist eine von der Object Management Group (OMG) entwickelte und standardisierte Sprache für die Modellierung von Software und anderen Systemen.

➲ Die UML definiert weiter grafische Notationen für diese Begriffe und für Modelle von statischen Strukturen und von dynamischen Abläufen

Page 7: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Diagrammarten der UML➲ Strukturdiagramme

➔ Klassendiagramm➔ Kompositionsstrukturdiagramm➔ Komponentendiagramm➔ Verteilungsdiagramm➔ Objektdiagramm➔ Paketdiagramm

➲ Verhaltensdiagramme

➔ Anwendungsfalldiagramm (Use-Case o. Nutzfalldiagramm)➔ Aktivitätsdiagramm➔ Sequenzdiagramm➔ Kommunikationsdiagramm➔ Interaktionsübersichtsdiagramm➔ Zeitverlaufsdiagramm➔ Zustandsdiagramm

Page 8: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

UML Klassendiagramm

Page 9: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Beispiel: MagicDraw

Page 10: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

UML-Tools

Sowohl freie als auch kommerzielle UML-Tools stehen unter Linux zur Verfügung.

➲ Umbrello➲ Eclipse UML➲ ArgoUML➲ ...

Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern.

Bitte beachten:In den Folien werden immer nur die freien Tools aufgelistet.

Page 11: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Entwurfsmuster (Design patterns)➲ Ein Entwurfsmuster (engl. design pattern)

beschreibt eine bewährte Schablone für ein Entwurfsproblem.

➲ Aus einem Entwurfsmuster kann direkt Code erzeugt werden.

➲ Objektorientierte Entwurfsmuster beschreiben allgemein Beziehungen und Interaktionen zwi-schen Klassen und Objekten.

Page 12: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Entwurfsmuster (Design patterns)

➲ Vorteile:➔ Zeitersparnis (Anfangs zeitaufwendig, später jedoch

äußerst hilfreich).➔ Erhöhte Flexibilität.➔ Bessere Wiederverwendbarkeit des Codes.➔ Große UML-Diagramme (insbesondere Klassendia-

gramme) sind viel besser und schnelle lesbar.➔ Ähnliche Strukturen in der Softwarearchitektur

können direkt einem Pattern zugeordnet werden.

➲ Bitte beachten➔ Gutes SW-Design mit Entwurfsmustern ist keine

leichte Aufgabe und wird häufig nicht richtig umgesetzt!

Page 13: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Typen von Entwurfsmustern

➲ Erzeugermuster (Creational patterns)➔ Fabrikmethode (Factory method)➔ Einzelstück (Singleton)

➲ Strukturmuster (Structural patterns)➔ Fassade (Facade)➔ Stellvertreter (Proxy)

➲ Verhaltensmuster (Behavioral patterns)➔ Befehl (Command)➔ Beobachter (Observer)➔ Vermittler (Mediator)

Page 14: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Beispiel Vermittler (Mediator)

➲ Der Vermittler steuert die Kommunikation und das kooperative Verhaltens von Objekten (Kollegen).

➲ Der Vermittler wird verwendet wenn:➔ Gruppen von Objekte miteinander kooperieren und die

Objekte die miteinander kooperieren sich nicht kennen sollen oder können.

➲ Vorteile:➔ Die Koordination des kooperativen Verhaltens wird

zentral verwaltet.➔ Das Muster unterstützt eine lose Kopplung

zwischen den Kollegen.➔ Das Protokoll der Kollegen wird vereinfacht.

Page 15: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Beispiel Vermittler (Mediator)

Page 16: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Implementierung / Dokumentation

Page 17: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Entwicklungsumgebungen

Viele freie als auch kommerzielle Entwicklungsum-gebungen stehen zur Verfügung:

➲ KDevelop➲ Eclipse (sehr flexibel)➲ Mono➲ ...

Entwicklungsumgebungen unter Linux nutzen meistkeinen eigenen Compiler und Debugger, sondern verwenden den GNU Compiler / Debugger.

Page 18: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Page 19: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

GNU-Compiler➲ Standard Compiler vieler Systeme: Linux, BSD, Mac OS X,

NextStep, BeOS, ZETA, ...➲ Der GNU-Compiler besitzt einen leistungsfähigen Code-

optimierer. Dieser reduziert die Größe des Binärcodes und optimiert die Performanz.

➲ Durch das Frontend/Backend-Konzept eignet sich der GNU Compiler insbesondere für die Codeerstellung zahlreicher Hard-ware-Plattformen.

➔ Frontends sind sprachabhängig und erzeugen einen abstrak-ten Syntaxbaum. Fast alle modernen kompilierbaren Sprachen stehen bereit (C/C++, D, Objective-C, ADA, Fortran, Java).

➔ Backends implementieren die Schnittstellezur verwendeten Prozessor-Architektur.

➲ Nebenbei: Viele Codeoptimierungsverfahren optimierenden abstrakten Syntax-Baum. Dieser Teil des Compilers wird als Middleend bezeichnet.

Page 20: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

GNU-Compiler➲ Der GNU-Compiler unterstützt die plattformübergreifende SW-

Entwicklung:

➔ Häufig bei C/C++-Programmen für LINUX/UNIX.

➔ Quellcode enthält Anweisungen, die es erlauben, die Betriebssyste-munterschiede auszugleichen.

➔ Zahlreiche Hilfsmittel, z.B. GNU autoconf, automake

➔ Viele im Quellcode portable Programme stehen bereits in vorgefertig-ten Versionen für mehrere Plattformen bereit. Beispiele: Mozilla, Firefox, Thunderbird, GIMP, OpenOffice.

➔ Cross Compiler: Bei der Softwareentwicklung für Embedded Syste-me tritt häufig das Problem auf, dass das Embedded System nicht über genügend Ressourcen für das Entwicklungssystem (Compiler, Debugger, Profiler, ...) verfügt. Hier wird auf dem Entwicklungssystem ein Cross Compiler eingesetzt, der die Binaries für das Zielsystem (das Embedded System) erzeugt.

Page 21: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

GNU-Compiler / Standards➲ ANSI-C

Relativ einheitliche Implementierung auf verschiedenen Plattformen. Zusätzlich wird je-doch eine „Standard C Library“ benötigt.

➲ POSIX (Portable Operating System Interface for UNIX) Ein gemeinsam von der IEEE und der Open Group für Unix entwickeltes stan-dardisiertes Applikationsebeneninterface, das die Schnittstelle zwischen Ap-plikation und dem Betriebssystem darstellt.

➔ Basis-Definitionen (POSIX.1/IEEE 1003.1-2001): Eine Liste der im Standard benutzten Konventionen und Definitionen, zusätzlich noch eine Liste der bereitzu-stellenden C-Headerdateien

➔ Shell und Hilfsprogramme (POSIX.2/IEEE 1003.1-2001): Eine Liste der Hilfspro-gramme und der Shell

➔ Echtzeit-Erweiterungen (POSIX.4/IEEE 1003.1b-1993/IEEE 1003.1d-1999)➔ Thread-Erweiterungen (POSIX.4a/IEEE 1003.1c-1994)➔ System-Schnittstelle: Eine Liste der C-Systemaufrufe, die unterstützt

werden müssen

Page 22: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

GNU-Toolchain

➲ Die GNU-Toolchain stellt eine Sammlung von Entwicklungstools zur Verfügung:

➔ Compiler (gcc, g++)➔ Linker (ld)➔ Debugger (gdb)➔ Assembler (as)➔ Profiler (gprof)➔ ar, nm, objcopy, objdump, ranlib, strip, ...

Page 23: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Optimierter Code➲ Der GNU Compiler unterstützt Optimierungsstrategien verschiedener Pro-

zessoren. ACHTUNG: Diese müssen auch vom Betriebssystem unterstützt werden, da dieses beim Wechsel zwischen Prozessen den Zustand der Register spei-chern muss.

➲ SIMD-Erweiterungen (Single Instruction, Multiple Data) wie MMX, SSE, SSE2, SSE3 und 3DNow erlauben, dass durch einen einzelnen Befehl, meh-rere Berechnungen, parallel ausgeführt werden.

➲ Durch Intrinsics-Funktionen können diese Erweiterungen auch ohne Inline-Assembler verwendet werden.

Ein Beispiel:

➲ Übersetzen mit SSE2 (ab Pentium 4)> g++ -msse2 -DUSE_INTRINSICS multiply.cpp -o multiply.sse2

➲ Übersetzen ohne Optimierung> g++ multiply.cpp -o multiply.std

Page 24: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

➲ Der Präprozessor übernimmt die beding-te Ersetzung des SSE2 optimierten Co-des.

Der optimierte Code wird durch den define USE_INTRINSICS eingeschaltet.

Page 25: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Build Tools➲ Makefiles sind für viele Entwickler im C/C++-

Kontext ein ungeliebtes Stiefkind.

➲ Build Tools erleichtern das Erstellen von Make-files und lösen Abhängigkeiten selbstständig auf.

Statische als auch dynamische Bibliotheken werden in den Beschreibungsdateien definiert.

➲ JAM➲ QMake➲ GNU automake

Page 26: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Build Tools

➲ Der Makefilegenerator qmake erzeugt aus einer plattformunabhängigen Projektdatei durch einen simplen Aufruf von qmake auf der Kommandozeile das plattformspezifische Makefiles.

Page 27: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Build Tools

➲ Makefiles sollten in umfangreichen Projekten nicht automatisch von der Entwicklungsumgebung erzeugt werden.

➲ Der Build sollte unabhängig von der Entwick-lungsumgebung sein.

Page 28: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Die GNU libc (glib-2, auch bekannt als libc-6)

➔ Ist sehr umfangreich, da sie mit der Intention entwickelt wurde, möglichst viele Standards für C-Libraries zu erfüllen.

➔ Ihre Verwendung in Anwendungsprogrammen führt daher zu einer hohen Maß an Portabilität.

➔ Die glibc erfüllt die folgenden Standards:● ANSI C● POSIX.1● Viele Funktionen von POSIX.2● Aufwärts kompatibel zu BSD 4.3 und 4.4● Viele Funktionen von System V (SVID)● GNU-eigene Erweiterungen

Libraries und Frameworks

Page 29: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Libraries und Frameworks➲ C Bibliotheken

➔ GNU libc (existiert auch für Windows und Mac)➔ uClibc (für Embedded Systeme)➔ newLib (für Embedded Systeme)➔ Diet-libc (für Embedded Systeme)

➲ C++ Frameworks zur plattformunabhängigen Entwicklung➔ Qt (Windows, Linux, Mac)➔ Qt Embedded (für Embedded Systeme)➔ WxWidgets (Windows, Linux, Mac, Embedded)

➲ Grafiklibraries➔ PicoGUI (für Embedded Systeme)➔ MiniGUI (für Embedded Systeme)➔ MicroWindows (für Embedded Systeme)➔ FLTK (für Embedded Systeme)

Page 30: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Libraries und Frameworks

Plattformunabhängigkeit durch Qt● Qt basiert auf C++ und ist vollständig objektorientiert● Qt unterliegt der GPL● Eine Closed Source Lizenz kann erworben werden.● Die grafische Benutzeroberfläche KDE basiert auf Qt!● Systemabhängige Bibliotheken zum Ausgleich der BS-

Unterschiede:➢ Qt/X11 für Linux/Unix (unterstützt viele Derivate)➢ Qt/Embedded (Qtopia) für embedded Linux➢ Qt/Windows für Microsoft Windows➢ Qt/Mac für Apple Macintosh

Page 31: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Page 32: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Page 33: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Datenbankanbindung

➲ Fast alle gängigen Datenbanken stehen unter Linux zur Verfügung.

➲ Berkley DB (nicht SQL fähig)➲ Sybase➲ Firebird➲ PostgreSQL➲ mSQL➲ MySQL➲ SQLite➲ MaxDB➲ ...

Page 34: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Datenbankanbindung

➲ ODBC (Open Database Connectivity) ist eine Standard-API für die Anbindung einer Anwendung an eine Datenbank.

➲ Die meisten DMS (Datenbank Management Systeme) unter-stützen die Anbindung durch einen ODBC-Treiber.

➲ Nebenbei: Qt stellt ein ODBC Plugin bereit.

Vorteile:➲ Typische Windows Anwendungen (beispielsweise Access)

können die Datenbank auf einem Linux-Server zugreifen.➲ Die Anwendung ist unabhängig von der Datenbank eines be-

stimmten Herstellers.

Page 35: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Versionsverwaltungssysteme

➲ Der Quellcode wird auf einem Server durch das Versionsver-waltungssystem verwaltet.

➲ Alle Entwickler eines Projekts können einen aktuellen Sourcecode-Stand von Server holen (auschecken).

➲ Jeder Entwickler übertragt seine Änderungen in Form von Changelisten (mehrere Dateien) auf den Server (einchecken)

➲ Änderungen können zu einem späteren Zeitpunkt nach-vollzogen werden (diff).

Beispiele:

➲ Subversion➲ CVS➲ GIT➲ ...

Page 36: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

VersionsverwaltungssystemeHauptaufgaben eines Versionsverwaltungssystems:

➲ Protokollierungen der Änderungen: Es kann jederzeit nachvollzo-gen werden, wer wann was geändert hat.

➲ Wiederherstellung von alten Ständen einzelner Dateien: Somit können versehentliche Änderungen jederzeit wieder rückgängig gemacht werden.

➲ Archivierung der einzelnen Release-Stände eines Projektes: Da-durch ist es jederzeit möglich auf alle ausgelieferten Versionen zu-zugreifen.

➲ Koordinierung des gemeinsamen Zugriffs von mehreren Entwick-lern auf die Dateien.

➲ Gleichzeitige Entwicklung mehrerer Entwicklungszweige (engl. Branches) eines Projektes (z. B. stabile Release-Version und Entwicklerversion mit größeren, nicht getesteten Änderungen).

Page 37: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Page 38: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Page 39: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Cruise Control Systeme➲ Werden auf einem eigenen Server installiert.

➲ Überwachen den Build des Projekts indem die ak-tuellen Sourcen kompiliert werden.

➲ Informieren die Entwickler über syntaktische Feh-ler via E-Mail.

Page 40: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Statische Codeanalyse

➲ Der Quelltext wird einer Reihe formaler Prüfungen un-terzogen, bei denen bestimmte Sorten von Fehlern ent-deckt und behoben werden können.

➲ Erkennen von unsicherem Konstrukten bei der Verwendung von Programmiersprachen.

Beispiele:➲ Die Benutzung von Variablen bevor die Variablen zuge-

wiesen werden.➲ Bedingungen welche immer wahr/falsch sind.➲ Unbenutzte Rückgabewerte von Funktionen.

Tools:➲ Lint / SPLint (Secure Programming Lint)➲ ...

Page 41: Realisierung umfangreicher Softwareprojekte unter Linux · Umbrello Eclipse UML ArgoUML ... Einige unterstützen sogar die automatische Source-codegenerierung von Entwurfsmustern

Christian Dietrich – Realisierung umfangreicher Softwareprojekte unter Linux

LIT 2007

Fazit➲ Der Vortrag hat aktuelle Methoden und Tools für

typische Arbeitsschritte in umfangreichen Soft-wareprojekten vorgestellt:

➔ Linux eignet sich hervorragend als Entwicklungssystem für komplexe Softwaresysteme.

➔ Für alle Tätigkeiten des Entwicklungsprozesses stehen komfortable Tools (meist sogar Open Source Tools) zur Verfügung.

➔ Das Herzstück (der GNU Compiler) ist äußerst flexibel und skalierbar einsetzbar, insbesondere bei der Entwicklung plattformunabhängiger Software.

➔ Weitere Flexibilität bringt die Entkopplung der Entwick-lungsumgebung vom Compiler, Debugger, Versionsverwaltungssystem, ... mit sich.