Inhaltsverzeichnis
Inhaltsverzeichnis
Abk ürzungsverzeichnis VI
1 Einleitung 1
1.1 Vorwort 1
1.2 Zielsetzung der Arbeit. 2
1.3 Vorgehensweise 2
1.4 Namenskonvention. 3
2 Theoretische und konzeptionelle Grundlagen 4
2.1 Begriffsdefinitionen zur Programmierung 4
2.1.1 Compiler. 4
2.1.2 Konstruktor / Destruktor 4
2.1.3 Eigenschaft / Property. 4
2.1.4 Methode 5
2.1.5 Klasse 5
2.1.6 Objekt. 6
2.1.7 Namespaces / Namensräume. 6
2.1.8 Variablen 6
2.2 Begriffsdefinitionen zum technischen Redesign. 7
2.2.1 Programm 7
2.2.2 Engineering 7
2.2.3 Software-Engineering. 7
2.2.4 Projekt 8
2.2.5 Softwaretest 8
2.3 Grundlegendes zu NET 8
2.3.1 Vorteile von NET 10
2.3.2 Nachteile von NET 12
2.3.3 Klassifikation von Programmiersprachen. 13
2.3.4 Anforderungen an eine moderne Programmiersprache. 14
2.3.5 Die Sprache Visual Basic NET. 14
2.4 Das NET-Framework. 15
2.4.1 Das Schichtenmodell des Frameworks. 16
2.4.2 Die Microsoft Intermediate Language (MSIL) 16
2.4.3 Die Common Language Specification (CLS) 18
2.4.4 Das Common Type System (CTS) 18
2.4.5 Die Common Language Runtime (CLR) 18
I
Inhaltsverzeichnis
2.5 Entwicklungsumgebung (IDE) 20
2.5.1 Vorstellung der Entwicklungsumgebung 20
2.5.2 Ausgewählte Merkmale von Visual Studio NET. 21
2.6 Datenbankzugriff - Grundlagen. 24
2.6.1 Datenzugriffsmodell - ADO.NET im Überblick. 24
2.6.2 Das DataSet Objekt / Datenkonsument 26
2.6.3 Das DataTable Objekt. 27
2.6.4 Die NET Data Provider. 28
2.6.5 Das DataAdapter Objekt 29
2.6.6 Datenbankzugriff auf eine Access-Datenbank 30
3 Software Engineering und praktische Umsetzung. 32
3.1 Projektrahmen 32
3.1.1 Projektumfeld 32
3.1.2 Kundenanforderungen 32
3.1.3 Zielsetzung. 33
3.1.4 Projektstrukturplan 34
3.2 Projektbearbeitung - Planungsphase. 35
3.2.1 Analyse der Vor- und Nachteile der bisherigen Programmlösung 35
3.2.2 Ressourcen und Schnittstellen. 35
3.2.3 Termine und Übergabezeiten. 36
3.2.4 Lastenheft 37
3.3 Projektbearbeitung - Installations- und Konfigurationsphase 38
3.4 Projektbearbeitung - Programmierungsphase 39
3.4.1 Eingabevalidierung. 40
3.4.2 Datenbanksicherung 41
3.4.3 Nutzung des StringBuilder Objekts für SQL-Abfragen 45
3.4.4 Erzeugen von Ausgabeberichten mit Crystal Reports - „Push Reports“ 47
3.4.5 Änderung von Berichtsobjekten während der Laufzeit. 52
3.4.6 Export der Unternehmensberichte für einzelne Firmen 55
3.4.7 Distribution - das Setup-Projekt. 58
3.5 Projektbearbeitung - Testphase. 61
3.5.1 Einführung. 61
3.5.2 Softwareprüfung. 63
3.5.3 Testmethoden 64
3.5.4 Testobjekte. 65
3.5.5 Einzeltest Auswertungsprozedur - Extremwerttest. 66
3.5.6 Projektabweichungen. 67
II
Inhaltsverzeichnis
3.6 Projektübergabephase 69
4 Schlussbetrachtung und Ausblick 70
4.1 Weiterführende Arbeiten. 71
4.2 Quellcode 71
Literaturverzeichnis. VIII
Erkl ärung XIII
A Anhang XXI
A.1 Programmdokumentation XXI
A.2 Programm installieren. XXI
A.3 Programm deinstallieren. XXII
A.4 Programm starten. XXII
A.5 „SpeedPlayer“-Hauptfenster. XXIII
A.6 Spiel anlegen. XXIV
A.7 Spiel öffnen. XXV
A.8 Spiel vorbereiten. XXVI
A.8.1 Teamdaten eingeben XXVII
A.8.2 Startberichte anzeigen XXVIII
A.8.3 Berichte exportieren XXIX
A.8.4 E-Mail versenden XXX
A.9 Spiel löschen XXXI
A.10 Spiel durchführen XXXII
A.10.1 Entscheidungen importieren. XXXIII
A.10.2 Entscheidungen eingeben XXXIV
A.10.3 Auswertung starten. XXXV
A.10.4 Neue Spielperiode wählen. XXXVI
A.10.5 Spielleiterberichte ausgeben XXXVII
A.10.6 Spielberichte ausgeben XXXVIII
A.11 Sicherheitskopie der Datenbank anlegen XXXIX
III
Inhaltsverzeichnis
Tabellenverzeichnis
2-1 Vergleich von ADOalt zu ADO.NET. 26
2-2 DataAdapter Syntax. 29
3-1 Beteiligte Personen. 36
Bilderverzeichnis
2-1 Das Schichtenmodell des Frameworks 16
2-2 Programmentwicklung - die Rolle des MSIL-Codes 17
2-3 Bestandteile/Dienste der CLR 19
2-4 Solution Explorer mit 2 Beispielprojekten 22
2-5 Das Solution File „DA SpeedPlayer.sln“ 22
2-6 Das Project File „DA SpeedPlayer.vbproj“ 23
2-7 Konfigurations-Manager für die Kompilierung 24
2-8 Beispielcode für einen Datenbankzugriff 31
3-1 Projektstrukturplan. 34
3-2 Programmlayout „SpeedPlayer“ 40
3-3 Beispielcode für das KeyPress Event. 41
3-4 Beispielcode für die Existenzkontrolle einer Tabelle 42
3-5 Beispielcode für die Datenbanksicherung ( ini-Datei lesen) 43
3-6 Beispielcode für die Datenbanksicherung ( ini-Datei schreiben) 44
3-7 Beispielcode für das Kopieren einer Datei. 45
3-8 Beispielcode für den Einsatz eines StringBuilders 46
3-9 DataSet als Datenquelle 48
3-10 Beispielcode für das Hinzufügen von Tabellen zum myBerichtsDataSet 49
3-11 XML-Schema des myBerichtsDataSets auf Festplatte schreiben 49
3-12 Codeauszug aus der XML-Datei DataSetInhalt.xsd 50
3-13 Field Explorer des Crystal Designer 50
3-14 Auswahl der Datenquelle im Crystal Designer 50
3-15 Auswahl der XML-Schema Datei im Crystal Designer 51
3-16 Field Explorer - Datenfelder 51
3-17 Codebeispiel für die Zuweisung des myBerichtsDataSets als Datenquelle zum
Bericht. 52
3-18 Codebeispiel für die Änderung von Berichtsobjekten während der Laufzeit. 53
3-19 Importdirektive für die Crystal Reports Engine 54
IV
Inhaltsverzeichnis
3-20 Codebeispiel für das dynamische Laden von Bildern 54
3-21 Codebeispiel für das dynamische Laden von Bildern - Ermittlung der
Bildobjekte 55
3-22 Codebeispiel für den Export der Unternehmensberichte 57
3-23 Codebeispiel für den Export der Unternehmensberichte - Hinzufügen von
Tabellen zum myBerichtsDataSet 57
3-24 Visual Studio NET Merge Module. 60
3-25 Crystal regwiz2003 - Property. 60
3-26 Registrierungsfehler 60
3-27 Fehlerentwicklung und Fehlerbehebung 62
3-28 Invalid Cast Exception bei der Typkonvertierung 67
3-29 Codebeispiel für die Umwandlung von DBNull 67
V
Abkürzungsverzeichnis
Abkürzungsverzeichnis
ADO ActiveX Data Objects
ANSI American National Standards Institute
ASP Active Server Page
Basic Beginners All-Purpose Symbolic Instruction Code
BiZ Betriebswirtschaft im Zusammenspiel
CD Compact Disc
CLR Common Language Runtime
CLS Common Language Specification
CTS Common Type System
DAO Data Access Objects
DLL Dynamic Link Library
GSO Georg-Simon-Ohm
GUI Graphical User Interface
HTML Hypertext Markup Language
IDE Integrated Development Environment
IL / MSIL Intermediate Language
ISO International Organization for Standardization
JIT Just in Time
MDAC Microsoft Data Access Components
MDI Multiple Document Interface
MS Microsoft
MSDN Microsoft Development Network
ODBC Open Database Connectivity
OLE Object Linking and Embedding
PDA Personal Digital Assistant
VI
Abkürzungsverzeichnis
RAM Random Access Memory
SDK Software Development Kit
SQL Structured Query Language
TDS Tabular Data Stream
VB Visual Basic
VBA Visual Basic for Applications
XML Standardisierte Extensible Markup Language
XSD XML-Schema Definition
VII
Einleitung
1 Einleitung
1.1 Vorwort
„Der 13. Februar 2002 markiert für Windows-Programmierer in der ganzen Welt ein wichtiges Datum. An diesem Tag wurde nach mehrjähriger Entwicklungsarbeit unter dem Namen Visual Studio .NET die neueste Version des Entwicklungswerkzeugs Visual Studio offiziell ausgeliefert (…).“ 1 Zum derzeitigen Stand der Arbeit hat Microsoft die Preview-Version von Visual Studio 2005 für MSDN-Abonnenten zum Herunterladen bereitgestellt. 2 Auch eine neue Version des Frameworks ist angedacht.
Die vorliegende Arbeit befasst sich mit der Neuentwicklung und Migration des Unternehmensplanspiels „BiZ-Player“ 3 der Georg-Simon-Ohm-Fachhochschule in eine .NET-Umgebung. Hinter .NET versteckt sich eine völlig neue Systemarchitektur, die innerhalb mehrerer Jahre von der Firma Microsoft entwickelt wurde und Sprachen- sowie Plattformunabhängigkeit propagiert. Zukünftige Windows-Versionen werden von Anfang an mit dieser Systemplattform ausgestattet sein und immer mehr Anwendungen werden auf ihr aufbauen. 4 Als Programmiersprache für die Portierung des Planspiels wurde Visual Basic .NET gewählt, welches der Nachfolger von Visual Basic 6.0 ist. Wie viele andere .NET-Programmiersprachen auch, arbeitet es völlig objektorientiert. 5 Grundlage dieser Arbeit ist die „BiZ-Player“ 6 -Microsoft-Access-Datenbank, welche bisher als Basis des Planspiels für die Eingabe, Visualisierung und Berechnung von betriebswirtschaftlichen Daten an der Hochschule genutzt wird.
Mit Hilfe des Unternehmensplanspiels soll es den Studenten des Fachbereichs Betriebswirtschaft möglich sein, erste Erfahrungen im Team bei der Führung und Leitung eines eigenen Unternehmens zu sammeln. Das Planspiel stellt dazu in der Datenbank verschiedene Spielszenarien zur Auswahl, welche die Branchenstruktur und das Produktangebot am Markt sowie die materielle und finanzielle Situation der teilnehmenden Unternehmen definieren. Alle teilnehmenden Firmen befinden sich dabei in völliger Konkurrenz zueinander und unterliegen den Wettbewerbs- und Absatzmechanismen des betreffenden Marktes. Motivation der einzelnen Marktteilnehmer ist die Maximierung des Shareholder- 1 Monadjemi, (2002), S. 17
2 vgl. Winfuture Webseite
3 vgl. Unternehmensplanspiel Webseite
4 vgl. Monadjemi, (2002), S. 49f
5 vgl. Monadjemi, (2002), S. 77
6 Idee, Programmentwicklung und Datenbankdesign von Prof. Dr. Walter Lösel
1
Einleitung
values für die Anteilseigner des Unternehmens und das Streben nach Gewinn. Um diese Ziele zu erreichen, haben die Teams die Möglichkeit, sich auf eine geeignete Strategie zu verständigen und mittels Entscheidungen im Rahmen von vorgegebenen Entscheidungsbereichen die Möglichkeit, diese am Markt durchzusetzen. Sieger des Planspiels ist das Unternehmen, welches nach allen Spielrunden den höchsten Gesamtgewinn ausweisen kann, wobei die Zahl der Perioden und der Zeitpunkt für die Entscheidungen vom Spielleiter vorgegeben sind. Zentrales Element des Spiels sind die Unternehmensberichte, die nach jeder abgeschlossenen Entscheidungsperiode vom Spielleiter generiert und an die teilnehmenden Teams versandt werden. Die Bereichte geben Aufschluss über die aktuelle Lage des Unternehmens und die Auswirkungen der getroffenen Entscheidungen. Aus Sicht der Spielteilnehmer bilden die Unternehmensberichte die zentrale Basis für ihre Entscheidungsfindung. 7
1.2 Zielsetzung der Arbeit
Ziel dieser Diplomarbeit soll es sein, mit Hilfe der Programmiersprache Visual Basic .NET und der Entwicklungsumgebung Visual Studio .NET ein eigenständig lauffähiges Programm zu entwickeln, welches auf Grundlage der „BiZ-Player“-Datenbank das Unternehmensplanspiel abbildet. Dem Spielleiter soll es dadurch möglich sein, auf einfache Art und Weise relevante Unternehmensentscheidungen in die Datenbank einzugeben bzw. zu importieren und die notwendigen Kalkulationen und Buchungen durchzuführen. Im Mittelpunkt der Arbeit steht dabei der Zugriff auf die Datenbank mittels ADO.NET unter Verwendung aller relevanten .NET Data Provider sowie ADO-Objekte. Die Visualisierung der gewonnen Daten soll in Form von ausdruckbaren Berichten erfolgen.
1.3 Vorgehensweise
Um Hintergründe sowie insbesondere einzelne Programmbausteine und Vorgehensweisen innerhalb dieser Arbeit besser verstehen zu können, widmet sich das zweite Kapitel theoretische Grundlagen. Neben fundamentalen Begriffsdefinitionen aus dem Software-Engineering und der Programmierung wird hier auf die .NET-Technologie und insbesondere auf den Aufbau des Frameworks näher eingegangen. Es wird ferner die der Arbeit zugrunde liegende Entwicklungsumgebung Visual Studio .NET kurz anhand ausgesuchter Merkmale charakterisiert.
7 vgl. „BiZ-Player“-Spielanleitung
2
Einleitung
Im Anschluss daran werden die Datenbankschnittstelle ADO.NET und deren wichtigste Klassen und Objekte sowie die einzelnen Daten-Provider näher vorgestellt. Den Abschluss des zweiten Kapitels bildet eine beispielhafte Darstellung für einen Zugriff auf eine Microsoft Access-Datenbank unter Verwendung der zuvor angesprochenen Objekte an-hand eines Codelistings.
Die eigentliche Umsetzung und Entwicklung des Programms „SpeedPlayer“ wird im dritten Kapitel behandelt. Hier werden im Rahmen einer projektorientierten Vorgehensweise die einzelnen Entwicklungsphasen und deren Ergebnisse näher erläutert und beschrieben. Eine zentrale Rolle spielen dabei die während der Entwicklung aufgetretenen Probleme. Anhand von ausgesuchten Codebeispielen wird deren Lösung beschrieben. Den Abschluss findet das dritte Kapitel mit der Vorstellung verschiedenster Testmethoden, welche in der Praxis eingesetzt werden, um im Zuge der Qualitätssicherung von Software diese noch produktiver zu gestalten.
Das vierte Kapitel fasst die gewonnen Erkenntnisse der Arbeit noch einmal zusammen und gibt einen Ausblick über zukünftige Entwicklungen. Ferner werden hier noch einige Vorschläge für mögliche weiterführende Entwicklungsarbeiten am Programm „SpeedPlayer“ aufgezeigt.
1.4 Namenskonvention
In der vorliegenden Arbeit wird folgende Namensgebung verwendet:
• Alle Bezüge zur bestehenden Datenbanklösung sind mit „BiZ“ bezeichnet.
• Alle Bezüge zum technischen Redesign des vorliegenden Programms und seiner Module sind mit „SpeedPlayer“ bezeichnet.
• „ADOalt“ bezeichnet die in Visual Basic 6 genutzten ActiveX Data Objects.
3
Theoretische und konzeptionelle Grundlagen
2 Theoretische und konzeptionelle Grundlagen
2.1 Begriffsdefinitionen zur Programmierung
2.1.1 Compiler
Compiler sind Übersetzungsprogramme, die das Quellprogramm in eine für Maschinen verständliche Sprache übersetzen (kompilieren) sollen. 8
2.1.2 Konstruktor / Destruktor
Ein Konstruktor wird über das NEW-Schlüsselwort aufgerufen, sobald eine neue Instanz der Klasse angelegt wird. Konstruktoren haben die Aufgabe, Objekte direkt bei ihrer Instanziierung zu initialisieren, das heißt, mit Startvariablenwerten zu versehen. Es können in einer Klasse mehrere (überladene) Konstruktoren koexistieren, welche über unterschiedliche Parameterlisten angesprochen werden können.
Destruktoren werden dann aufgerufen, wenn keine Referenz mehr auf das Objekt zeigt. Der Speicher wird dann durch Aufruf spezieller Methoden wieder freigegeben, zum Beispiel der Dispose Methode. 9
2.1.3 Eigenschaft / Property
Unter Eigenschaften versteht man bestimmte Attribute, die Objekte besitzen können, z. B. die Höhe oder Breite eines Fensters oder die Farbe des Fensterhintergrundes. Dabei verfügen unterschiedliche Objekte über unterschiedliche Eigenschaften. 10 Das Verändern von Eigenschaften wird sehr häufig über GET- bzw. SET-Prozeduren vollzogen. Mit GET wird der Wert einer Eigenschaft ausgelesen und mit SET kann ein neuer Eigenschaftswert festgelegt werden. Durch diese Vorgehensweise kann eine Wertvalidierung innerhalb der Property implementiert werden. 11
8 vgl. Hansen / Neumann, (2001), S. 936
9 vgl. Bayer, (2002), S. 175f, S. 178
10 vgl. Doberenz / Kowalski, (2002), S. 44
11 vgl. MVPS Webseite
4
Theoretische und konzeptionelle Grundlagen
2.1.4 Methode
Unter Methoden versteht man bestimmte Prozeduren bzw. Funktionen, die ein Objekt besitzen kann. Methoden können die Attribute des Objekts verändern und somit das Verhalten des Objekts beeinflussen. So hat zum Beispiel die Klasse CAuto ein Objekt Auto mit der Eigenschaft Geschwindigkeit und der Methode Beschleunigen.
2.1.5 Klasse
Klassen enthalten Anweisungen, wie nach deren Bauplan Objekte im Speicher generiert werden sollen. Sie lassen sich mit den folgenden Eigenschaften charakterisieren:
• Klassen beschreiben Objekte. Sie könnten dabei mehrmals verwendet werden, um Objekte desselben Typs zu erstellen.
• Klassen entstehen durch Initialisierung, d. h., indem alle ihre Eigenschaften/Attribute mit einem Anfangswert versehen werden. Dies geschieht durch einen Kon-struktor.
• Klassen können Eigenschaften/Attribute und Methoden bzw. Funktionen besitzen, die für andere Objekte sowohl sichtbar als auch unsichtbar sein können. 12 Man spricht hier von einem public field bzw. von einer gekapselten private Property. Durch die Kapselung soll sichergestellt werden, dass nur innerhalb der Klasse auf die Daten zugegriffen werden kann.
• Klassen besitzen die Möglichkeit, bestimmte Eigenschaften mit denen anderer Klassen zu teilen.
• Klassen können vererbt werden, d. h., andere Klassen erben bestimmte Eigenschaften der Basisklasse und erweitern ihre eigene Klasse um zusätzliche Attribute (Polymorphismus). 13
• Jede Klasse besitzt einen Konstruktor, zum Beispiel den parameterlosen Stan-dard-Konstruktor NEW().
12 vgl. Connell, (2002), S. 114
13 vgl. VBarchiv Webseite
5
Theoretische und konzeptionelle Grundlagen
2.1.6 Objekt
Werden die Anweisungen umgesetzt, die in einer Klasse stehen, so gelangt man zu einem Objekt. Objekte bestehen aus bestimmten Eigenschaften (statisch) und aus Methoden (dynamisch), mit denen man die Eigenschaften bearbeiten kann. Objekte sind die Umsetzung des Bauplanes einer bestimmten Klasse, auf die sie sich beziehen. 14 Hinter-grund der objektorientierten Programmierung ist es, reale Objekte in elektronischer Form mit ihren wesentlichen Eigenschaften und Funktionen nachbilden zu können. 15
2.1.7 Namespaces / Namensräume
Namensräume sind eine grundlegende Art und Weise, Klassen zu organisieren. Sie haben die Aufgabe, Namens- bzw. Bezeichnungskonflikte zu vermeiden. So sind zum Beispiel die gesamten Basisklassen des Frameworks in logische Namensräume und Anwendungsgebiete eingeordnet. 16 Damit eine explizite Referenzierung einzelner Objekte entfallen kann, werden die Namespaces über die Importanweisung zu Beginn der Klasse bekannt gemacht.
2.1.8 Variablen
Variablen dienen zum Zwischenspeichern von Werten, welche während der Programmlaufzeit entstehen. Die Speicherung der Werte erfolgt dabei in definierten Speicherzellen im Hauptspeicher des Computers. Jede Variable besteht aus vier Merkmalen: 17
• Name
• Datentyp
• Gültigkeitsbereich
• Lebensdauer
14 vgl. Connell, (2002), S. 42f
15 vgl. Webseite MWeb
16 vgl. Fellner, (2002), S. 46f; vgl. Monadjemi, (2002), S. 58f
17 vgl. Monadjemi, (2002), S. 84f
6
Theoretische und konzeptionelle Grundlagen
2.2 Begriffsdefinitionen zum technischen Redesign
2.2.1 Programm
Ein Programm dient zur Lösung einer oder mehrerer Aufgaben und stellt ein System von Arbeitsanweisungen an einen Rechner dar, welche mit Hilfe einer Programmiersprache umgesetzt werden können. Synonym sind Begriffe wie Software bzw. Softwaresystem. Je nach Aufgabe gibt es eine Vielzahl an Programmarten zu unterscheiden, die alle einer Reihe von allgemeinen Anforderungen genügen müssen: 18
• Benutzerfreundlichkeit
• Korrektheit
• Zuverlässigkeit
• Erweiterbarkeit
Das sind nur einige Beispiele dafür.
2.2.2 Engineering
Unter Engineering versteht man eine zielorientierte Verwendung von Prinzipien bzw. Verfahren, welche eine arbeitsteilige Programmerstellung gewährleisten sollen. Folgende Merkmale sind dabei kennzeichnend:
• Vorgegebenes und zielgerichtetes Vorgehen
• Verwendung von bestimmten Konstruktionsprinzipien
• Einsatz bewährter Verfahren
• Unterstützung durch den Einsatz maschineller Werkzeuge 19
2.2.3 Software-Engineering
Der Begriff Software-Engineering wurde erstmals innerhalb einer Arbeitsgruppe in den sechziger Jahren geprägt. Seine Bedeutung bestand darin, die unter Engineering genannten Verfahren und Methodiken anzuwenden, um eine Softwareentwicklung auf professioneller Basis mit verbindlichen Abmachungen zwischen Enduser und Entwickler zu gewährleisten. 20 Nach einer Definition von Pomberger und Blaschek versteht man darunter
18 vgl. Steinbuch, P. / Steinbuch, A., (1999), S. 26, S. 37
19 vgl. Steinbuch, P. / Steinbuch, A., (1999), S. 27f
20 vgl. Spitta, (1989), S. 1
7
Theoretische und konzeptionelle Grundlagen
die praktische Anwendung wissenschaftlicher Erkenntnisse für eine wirtschaftliche Programmierung hochwertiger Software. 21 Ziele des Software-Engineerings sind im Speziellen die Einhaltung von Terminen und die Reduktion von Entwicklungs- und Wartungskosten für die zu entwickelnde Software.
2.2.4 Projekt
Projekte sind Vorhaben, die im Wesentlichen durch folgende Charakteristika bestimmt sind: 22
• Einmaligkeit der Bedingungen
• Zielvorgabe
• Zeitliche Begrenzungen, zum Beispiel in Form von Start- und Endterminen
• Abgrenzung gegenüber anderen Vorhaben
• Projektspezifische Organisationsstruktur
• Ergebnisrelevanz
• Neuartigkeit der Aufgabe (Know-how)
• Risiken, wie zum Beispiel Planungs- oder Organisationsfehler
2.2.5 Softwaretest
Unter Testen versteht man das Vergleichen der funktionellen Eigenschaften einer Software gegen eine definierte Vorgabe. 23
2.3 Grundlegendes zu .NET
Mit der Entwicklung von „.NET“ 24 hat Microsoft einen weiteren Meilenstein geschaffen, um Computersysteme global zu vernetzen und dadurch eine bessere Zusammenarbeit zwischen Anwendern zu gewährleisten. Microsoft hat mit seiner Strategie frühzeitig erkannt, dass Software in naher Zukunft nicht mehr über herkömmliche Distributionskanäle, wie zum Beispiel über CDs vertrieben wird, sondern in Form von Webdiensten, welche über das Internet bereitgestellt werden. 25
21 vgl. Steinbuch, P. / Steinbuch, A., (1999), S. 28
22 vgl. Koreimann, (1995), S. 235
23 vgl. Thaller, (2000), S. 24
24 gesprochen als Dotnet; durch den Punkt will Microsoft den Bezug zum Internet hervorheben. vgl. Monadjemi / Groth, (2001), S. 33
25 vgl. Connell, (2002), S. 131; vgl. Fellner, (2002), S. 29
8
Theoretische und konzeptionelle Grundlagen
Die .NET-Technologie ist keine neue Erfindung der Firma Microsoft, sondern vielmehr als eine Art Gesamtkonzept anzusehen. Dieses Konzept betrachtet bereits bestehende Technologien nicht mehr für sich allein, sondern integriert sie und lässt sie miteinander verschmelzen. Ziel soll es sein, vorhandene „Insellösungen“ durch ein offenes, plattformübergreifendes System mit einheitlichen Protokoll-Standards wie SOAP, basierend auf HTML und XML, zu ersetzen. 26
Wenn man sich näher mit .NET beschäftigt, stellt man fest, dass es viele Parallelen, aber auch Unterschiede zur Programmiersprache JAVA gibt. 27 Mit der Einführung von JAVA entstand ein Umdenken in der Software-Entwicklungsgemeinde, welche nicht spurlos an Microsoft vorbeigegangen ist. Die Art und Weise, wie ab diesem Zeitpunkt Programmierer Dinge sahen, führte zu einem grundlegenden Paradigmenwechsel. Dieser bestand darin, dass mit Kenntnis der Fakten und Details über JAVA die etablierten Konzepte von Microsoft aufgegriffen, erweitert und dahingehend verändert bzw. verbessert wurden, dass Schwachstellen eliminiert werden konnten. 28 Das Ergebnis war eine komplett neue Entwicklungsumgebung, welche keine bloße Zusammenstellung von bisherigen Technologien war. Der Hauptunterschied zwischen .NET und JAVA im engeren Sinne liegt im Zielverständnis beider Technologien. So versucht man beispielsweise durch .NET, im Gegensatz zu JAVA, viele Sprachen auf einer Plattform zu unterstützen. 29
.NET selbst ist modular aufgebaut und fügt sich aus zahlreichen Teilkomponenten zusammen, die hier kurz vorgestellt werden sollen:
• .NET-Plattform
Sie stellt ein einheitliches Programmiermodell in Form einer plattformübergreifenden Basis zur Verfügung.
• Microsoft .NET-Dienste
unter anderem: MSN.NET, Office.NET, Messaging oder Authentisierung im Internet
• .NET-Dienste anderer Hersteller
Im Zuge der Globalisierung sollen Firmen von nun an über die gemeinsame .NET-Schnittstelle kooperieren und kommunizieren können.
26 vgl. Bayer, (2002), S. 25
27 vgl. Fellner, (2002), S. 23
28 vgl. Monadjemi / Groth, (2001), S. 16
29 vgl. Beer / Birngruber / Mössenböck / Wöß, (2003), S. 13
9
Theoretische und konzeptionelle Grundlagen
• .NET myServices
ist eine Ansammlung von diversen Internet-Diensten und Dienstleistungen, die Enduser sowie Firmen von Microsoft über eine gemeinsame Schnittstelle beziehen können.
Kerngedanke dabei ist die Verfügbarkeit von Informationen, zu jeder Zeit, an jedem Ort und von jedem Gerät aus.
• .NET Passport
versteht sich als Voraussetzung für die Nutzung einiger Dienste und erlaubt ein zentral verwaltetes Login.
Damit ist es möglich, sich schnell und einfach in Webseiten zu authentifizieren, ohne dass der Anwender alle Passwörter im Kopf behalten muss. Klassisches Anwendungsgebiet ist hierbei die Online-Bezahlung von Gütern. 30 31
2.3.1 Vorteile von .NET
„.NET wurde notwendig, weil sich die Anforderungen an die moderne Softwareentwicklung in den letzten Jahren drastisch verändert haben.“ 32 Das folgt nicht zuletzt auch aus Microsofts Befürchtungen, JAVA könnte eine Vormachtstellung einnehmen. Vor der Einführung von .NET wurden komplexere Programme fast ausschließlich in C bzw. C++ entwickelt. Für eine Interoperabilität bzw. Abwärtskompatibilität der verwendeten Komponenten sorgte Microsoft durch die Entwicklung und Einführung von COM (Component Object Model) bzw. COM+. Dadurch konnte man auf die Funktionalität von Elementen zurückgreifen und sie in Anwendungen implementieren und nutzen, unabhängig von der Sprache, in der sie ursprünglich geschrieben wurden. 33 Diese Technologie brachte jedoch zahlreiche Probleme mit sich, die durch eine neue Infrastruktur behoben werden mussten. Ein Beispiel dafür ist die so genannte „DLL-Hell“, bei der die COM-Bibliotheken bei einer Neuinstallation eines Programms in das Systemverzeichnis von Windows kopiert wurden und unter Umständen aufgrund von Inkompatibilitäten zu Konflikten führten, da es bis dahin noch keinen Versionsschutz gab. 34 Eine Lösung dieses Problems bringt die „Side by Side“-Ausführung (Versionierung) von Komponenten und Anwen-
30 vgl. Eisenmener, (2002), S. 3ff
31 vgl. Microsoft Webseite; vgl. Fellner, (2002), S. 28; vgl. Kratschmer, (2002), S. 18f
32 Doberenz / Kowalski, (2002), S. 80; vgl. Kratschmer, (2002), S. 18
33 vgl. Connell, (2002), S. 4; vgl. Kratschmer, (2002), S. 17
34 vgl. Connell, (2002), S. 7; vgl. Fellner, (2002), S. 22, S. 54ff; vgl. Monadjemi, (2002), S. 70f
10
Theoretische und konzeptionelle Grundlagen
dungen unter .NET. Das bedeutet verschiedene Versionen ein und derselben Komponente können von nun an parallel ausgeführt werden. 35
Für die .NET-Systemplattform sprechen aber noch zahlreiche weitere Gründe:
• Die entwickelten Programme können problemlos weitergegeben werden. Damit fällt eine mühsame Registrierungsroutine in der Windows-Registrierdatenbank komplett weg. Fertige Anwendungen können z. B. durch Kopieren ausgeliefert werden. Einzige Voraussetzung für das Funktionieren des Programms ist das Installieren des .NET-Frameworks auf dem Zielrechner. 36 Dies ist zumindest für einfach strukturierte Programme gültig. Auf die problemlose Weitergabe der Programme wird im Verlaufe der Arbeit noch einmal gesondert eingegangen.
• Die entwickelte Software ist von nun an theoretisch auf unterschiedlichen Plattformen lauffähig. Es gibt bereits erste Versuche, eine open Source-Version der .NET-Plattform für LINUX/UNIX-Systeme zu entwickeln. 37 Die Software läuft zum Beispiel auch auf mobilen Endgeräten wie PDAs. 38 Auch hier existiert wieder eine sehr starke Parallele zu JAVA’s Virtual Machine, welche sich ebenfalls problemlos auf andere Plattformen portieren lässt. Es besteht somit keine Notwendigkeit mehr, sich näher mit den entsprechenden Compilern zu befassen bzw. sich Gedanken zu machen, welche spezifischen Hardwarevoraussetzungen das Zielsystem erfüllen muss. Einzige Voraussetzung ist „nur“ noch das Vorhandensein der Laufzeitumgebung.
• Ein weiterer großer Vorteil ist die Sprachunabhängigkeit 39 , d. h., Programme können in einer beliebigen .NET-Sprache, zum Beispiel C# oder J# 40 , erstellt werden und verwenden dabei untereinander die gleichen Datentypen und Bibliotheken (Vereinheitlichung). Im Speziellen bedeutet dies, dass z. B. eine in C# erstellte Klasse von jeder .NET konformen Sprache aus aufgerufen und verwendet werden kann und umgekehrt. Die charakteristischen Merkmale einer Sprache verwischen und gehen somit fließend ineinander über. 41 Diese Tatsache führt nicht zuletzt zu
35 vgl. Monadjemi / Groth, (2001), S. 34; vgl. Kratschmer, (2002), S. 22
36 vgl. Beer / Birngruber / Mössenböck / Wöß, (2003), S. 10f
37 vgl. MONO-Projekt Webseite; vgl. DOTGNU-Projekt Webseite
38 vgl. Kratschmer, (2002), S. 18
39 vgl. Kratschmer, (2002), S. 20
40 gesprochen als C Sharp bzw. JAVA Sharp
41 vgl. Beer / Birngruber / Mössenböck / Wöß, (2003), S. 11; vgl. Monadjemi, (2002), S. 73f
11
Theoretische und konzeptionelle Grundlagen
einer erheblichen Einsparung an Entwicklungskosten für Software. Derzeit setzen ca. 20 Sprachen auf .NET-Technologie auf.
• Der Garbage Collector, auch „Müllsammler“ genannt, kommt immer dann zum Einsatz, wenn das Programm nicht stark ausgelastet ist. Er übernimmt die Aufgabe, auf intelligente Art und Weise den Speicher periodisch nach nicht mehr verwendeten Objekten zu durchforsten, deren Lebensdauer zu überprüfen und diese ggf. aus dem Speicher zu entfernen. 42
• .NET ist vollkommen objektorientiert, das heißt, alle Elemente lassen sich auf Objekte zurückführen und sind vom Typ SYSTEM.OBJECT abgeleitet. Dies gilt auch im Speziellen für einfache Datentypen, wie z. B. den INTEGER. Sie können somit über den Referenztyp OBJECT aufgerufen werden (Boxing-Verfahren). 43
2.3.2 Nachteile von .NET
Die .NET-Technologie bringt jedoch nicht nur Vorteile mit sich, sondern auch einige nennenswerte Nachteile:
• Bestehende VB 6.0 Projekte können nicht ohne weiteres bzw. nur mit sehr großem Aufwand in VB.NET portiert werden. Visual Studio bietet dazu einen Migrationsassistenten an, welcher jedoch nur für kleinere, wenig komplexe Projekte geeignet ist. Eine Portierung ist daher immer mit Kosten und Zeitaufwand sowie Know-how verbunden.
• .NET-Programme benötigen ein installiertes Framework, welches ca. 20 MB groß ist und unter Umständen erst herunter geladen bzw. in Setup-Projekte mit einge-bunden werden muss.
• .NET-Programme laufen nicht mehr auf Rechnern mit Betriebssystemen unter Windows 98 und können nicht auf Rechnern mit Windows 98 entwickelt werden. Dies ist für Firmen, welche nicht auf die .NET-Technologie verzichten können, mit erheblichen Mehrkosten verbunden.
• Eine vollständige Entwicklungsumgebung (Visual Studio) einschließlich der benötigten Serverprogramme und der Source Control Programme, zum Beispiel Visual Source Safe, sind teuer in der Anschaffung und somit für kleinere Firmen oft nicht erschwinglich. 44
42 vgl. Bayer, (2002), S. 30; vgl. Connell, (2002), S. 7
43 vgl. Bayer, (2002), S. 102; vgl. Monadjemi / Groth, (2001), S. 65; vgl. Monadjemi, (2002), S. 73
44 vgl. Microsoft Webseite (offizielle Preistabelle)
12
Theoretische und konzeptionelle Grundlagen
• Das Programmieren unter .NET braucht eine lange Einarbeitungszeit, je nach Kenntnisstand und Erfahrungen in der objektorientierten Programmierung. 45
2.3.3 Klassifikation von Programmiersprachen
Eine Programmiersprache ist eine künstlich geschaffene Sprache mit festgelegter Syntax. Sie hat die Aufgabe, Arbeitsanweisungen für eine ganz bestimmte Problemstellung in einem Programm zusammenzufassen und dieses anschließend in Maschinensprache umzuwandeln. 46
Dabei gibt es unterschiedliche Möglichkeiten, Programmiersprachen einzuordnen. In der Vergangenheit wurden Sprachen oft in Generationen eingeteilt. Folgende Stadien sind dabei zu unterscheiden:
1. Maschinensprachen
2. Assembler
3. Höhere Programmiersprachen/High Level Languages, welche weitestgehend unabhängig sind von der zugrunde liegenden Plattform und dem Prozessortyp
4. Fourth Generation Language (4GL)
5. Very High Level Language (VHLL)
Heutzutage ist man von dieser Einteilung abgerückt und klassifiziert die Sprache nach den zugrunde liegenden Konzepten bzw. nach der zugrunde liegenden Logik:
• nach Maschinennähe, d. h. alle Sprachen, deren Befehlsvorrat den wesentlichen Instruktionen des Prozessors entsprechen. 47
• nach Problembezogenheit, zum Beispiel spezielle Sprachen für die Systemprogrammierung wie C oder C++
• Nach Paradigmenbezogenheit, zum Beispiel alle objektorientierten Sprachen mit typischen Eigenschaften wie Datenkapselung oder Polymorphismus. Bei objekt-orientierten Sprachen liegt der Schwerpunkt auf der Strukturierung des Programms in einzelne Objekte. 48
45 vgl. Contentmanager Webseite
46 vgl. Kent, (2002), S. 23f; vgl. Hansen / Neumann, (2001), S. 942
47 vgl. Hansen / Neumann, (2001), S. 939f
48 vgl. Webseite Uni Bielefeld
13
Arbeit zitieren:
Alexander Lorenz, 2004, Software Reengineering unter VB.NET / ADO.NET, München, GRIN Verlag GmbH
Dieser Text kann über folgende URL aufgerufen und zitiert werden:
Einbetten
DOI
Business Process Reengineering
BWL - Unternehmensführung, Management, Organisation
Seminararbeit, 35 Seiten
Produktionsprozesse in SAP und Semiramis unter Einbeziehung von APS-Op...
Diplomarbeit, 186 Seiten
Betriebssysteme und Programmierung von mobilen Endgeräten
Informatik - Internet, neue Technologien
Bachelorarbeit, 89 Seiten
Entwicklung einer interaktiven, mobilen E-Learning-Anwendung basierend...
Informatik - Wirtschaftsinformatik
Diplomarbeit, 335 Seiten
Review eines Software-Reengineering-Projektes
Informatik - Wirtschaftsinformatik
Bachelorarbeit, 84 Seiten
Dokumentation in der Softwareentwicklung - Effizienter Einsatz von Ent...
Informatik - Wirtschaftsinformatik
Diplomarbeit, 101 Seiten
Risikomanagement in der Softwareentwicklung
Informatik - Wirtschaftsinformatik
Diplomarbeit, 97 Seiten
Alexander Lorenz's Text Software Reengineering unter VB.NET / ADO.NET ist nun auf dem Buchmarkt erhältlich
Alexander Lorenz hat den Text Software Reengineering unter VB.NET / ADO.NET veröffentlicht
Alexander Lorenz hat einen neuen Text hochgeladen
Beginning Visual Web Programming in VB .NET
From Novice to Professional
Daniel Cazzulino, Chris Hart, James Greenwood, Victor Garcia Aprea
Programming VB.NET 2005 + CD + 180 Day Trial Software
Julia Case Bradley, Anita C. Millspaugh, Case Bradley Julia
Professional Design Patterns in VB .Net: Building Adaptable Applicatio...
Tom Fischer, John Slater, Pete Stromquist
0 Kommentare