Kapitel 7 Software-Entwicklungssysteme Literatur zu Kapitel 7 HANSEN, HANS ROBERT; NEUMANN, GUSTAF: Wirtschaftsinformatik I: Grundlagen betrieblicher Informationsverarbeitung, 8. Auflage, Stuttgart 2001. GABRIEL, ROLAND et al.: Computergestützte Informations- und Kommunikationssysteme in der Unternehmung, Berlin et al. 2002. BALZERT, HELMUT: Lehrbuch der Software- Technik: Software-Management, Software- Qualitätssicherung, Unternehmensmodellierung, Heidelberg; Berlin 1998. Folie 300
7 Software-Entwicklungssysteme 7.1 Systemarchitekturen 7.2 Programmiersprachen-Konzepte Folie 301 Programmiersprachen Eine zur Lösung einer Aufgabe vollständige Anweisung zusammen mit allen erforderlichen Vereinbarungen heißt PROGRAMM. Ein PROGRAMM setzt sich aus Befehlen zusammen, die von der Zentraleinheit in logischer Reihenfolge abgearbeitet werden. Eine PROGRAMMIERSPRACHE ist eine künstliche Sprache zum Abfassen von Computerprogrammen (DIN 44300). Programmiersprachen sollen es ermöglichen, den Lösungsweg (Algorithmus) für eine spezielle Problemstellung in einer der Maschine verständlichen Sprache zu formulieren. Folie 302
Programmierumgebung Eine PROGRAMMIERUMGEBUNG ist ein Software-system, das eine Sammlung von Werkzeugen, die zur Entwicklung von Software dient, zur Verfügung stellt. Wesentliche Komponenten: TEXTEDITOR: zur Erfassung des Quelltextes ÜBERSETZUNGSPROGRAMME: Programm, das Anweisungen in einer höheren Sprache liest, analysiert und in bedeutungsgleiche Maschinenbefehle umwandelt DEBUGGER: ermöglicht ein schrittweises Abarbeiten des Programms zu Testzwecken HILFESYSTEM: erlaubt die kontextsensitive Abfrage von Informationen zur Programmsyntax u.ä. GUI-BUILDER: Modellierung der Benutzeroberfläche Folie 303 Programmierumgebung Visual Basic Hilfesystem Übersetzungsprg. Debugger Folie 304 Texteditor
CASE-Systeme I CASE Computer Aided Software Engineering CASE befasst sich mit allen computerunterstützten Hilfsmitteln, die dazu beitragen, die Software-Produktivität zu erhöhen die Software-Qualität zu verbessern das Software-Management zu erleichtern CASE-Systeme Ein CASE-System ist eine integrierte SOFTWARE-Entwicklungsumgebung, die den gesamten Softwarelebenszyklus (Problemanalyse, Systemspezifikation, Systementwurf, Implementierung, Systemtest, Wartung und Pflege) unterstützt. Folie 305 CASE-Systeme II Folie 306 CASE-Werkzeuge (CASE tools) Alle Software-Produkte, die zumindest einzelne bei der Erstellung von Software benötigte Funktionen bzw. Dienstleistungen anbieten CASE-Plattform (CASE platforms) / CASE-Rahmen (CASE-framework) integriert einzelne CASE-Werkzeuge stellt Basisdienstleistungen zur Verfügung und entlastet so die einzelnen CASE-Werkzeuge von diesen Dienstleistungen User-interface services Allgemeine Benutzungsschnittstelle Message services Schnittstelle zum Datenaustausch der einzelnen Komponenten Repository services Verwaltung aller Objekte und ihrer gegenseitigen Beziehungen Data-integration services Versions- und Konfigurationsverwaltung Metadatenverwaltung Prozess-management services Aufrufsequenzen einzelner Werkzeuge Rollen und Aufgaben der CASE-Plattform-Benutzer
Referenzmodell für CASE-Umgebung CASE-platform Repository services CASE-tool Data-integration services Horizontal tools Vertical tools Process-management services User-interface services FILE EDIT COMPILE PROGRAM beitrag; USES Wincrt; VAR brutto, netto : Integer; BEGIN WriteLN( Bitte geben Folie 307 Message services CASE-Systeme III Anspruch an CASE-Systeme Unterstützung des gesamten Softwarelebenszyklus (Problemanalyse, Systemspezifikation, Systementwurf, Implementierung, Systemtest, Wartung und Pflege) in einem integriertem System CASE-Umgebung/CASE-environment Eine organisatorische und computerunterstützte Arbeitsumgebung, die möglichst viele Tätigkeiten der Software-Erstellung integriert unterstützt auch Software-Entwicklungsumgebung (SEU) CASE Umgebung = CASE-Plattform + mehrere darin integrierte CASE-Werkzeuge Folie 308
CASE beim Data Base Engineering Betriebliche BetrieblicheProblemstellung Problemstellung (datenorientiertes (datenorientiertesproblem) Problem) Vorgehensmodell Vorgehensmodellbei beider derentwicklung Entwicklungeines einesdbs DBS unter unterberücksichtigung Berücksichtigungder derallgemeinen allgemeinenprinzipien Prinzipien und undmethoden Methodendes dessoftware SoftwareEngineering Engineering Planung des Einsatzes eines DB-Systems Semantisches Datenmodell Logisches / Konzeptionelles Datenmodell Physisches Datenmodell Ziel: Anforderungsanalyse und Erstellung des Anwendungs- bzw. Fachkonzeptes (Informations- und Kommunikationsstrukturmodell) Auswahl eines DB-Systems und seine Beschaffung Erstellung des Systemkonzeptes (Datenmodell) Implementierung, Integration, Freigabe zur Nutzung Einsatz eines DB-Systems zur Problemlösung Wartung und Pflege Folie 309 Beispiel eines CASE-Umgebung beim Data Base Engineering Semantisches Datenmodell Logisches / Konzeptionelles Datenmodell Folie 310 6
Beispielmodell für die Anwendung der CASE-Umgebung ER/Studio Kunden_Nr Nachname KUNDEN Vorname erteilt erteilt 1 N AUFTRAEGE M enthält enthält Auftrag-Nr. Datum Datum Preis Preis Artikel-Nr. N ARTIKEL Bezeichnung Folie 311 7 Software-Entwicklungssysteme 7.1 Systemarchitekturen 7.2 Programmiersprachen-Konzepte Folie 312
Programmiersprachenstammbaum Folie 313 Sprachgenerationen Folie 314 Sprachen der ersten Generation: MASCHINENSPRACHEN Sprachen der zweiten Generation: ASSEMBLERSPRACHEN Sprachen der dritten Generation: HÖHERE PROGRAMMIERSPRACHEN Sprachen der vierten Generation: 4GL-SYSTEME Alternative Sprachrichtungen: SUMME = 3 + 4 Compiler / Compiler / Interpreter / Interpreter Assemblersprachen Höhere Programmiersprachen 4GL-Systeme Alternative Sprachrichtungen SPRACHEN DER KÜNSTLICHEN INTELLIGENZ (Sprachen der fünften Generation) OBJEKTORIENTIERTE PROGRAMMIERSPRACHEN VISUELLE PROGRAMMIERSPRACHEN Assemblierer Assemblierer ADD 3, 4 Maschinensprache 00011010 0011 0100
Maschinensprachen (1. Generation) Maschinenorientierte Sprache Jeder Befehl besteht aus einer Folge der Binärzeichen 0 und 1 entsprechend dem Befehlssatz des jeweiligen Prozessors. Beispiel: Addiere 3+4 (Großrechner) Befehl Addition, Operanden 3, 4: 00011010 0011 0100 Befehlswort 3 4 unmittelbare Hardware-Orientierung, unverständlich, unübersichtlich, fehleranfällig Folie 315 Assemblersprachen (2. Generation) maschinenorientierte Sprache, die den Aufbau der Befehle der Maschinensprache beibehält, die Instruktionsteile jedoch nicht primär verschlüsselt, sondern durch Symbolik (mnemotechnische Abkürzungen) ausdrückt Beispiel: Addiere 3+4 Assemblerbefehl: ADD 3, 4 Die Übersetzung in Maschinensprache erfolgt mit Hilfe eines ASSEMBLIERERS (1:1-Übersetzung). optimale Speicherausnutzung und Verarbeitungsgeschwindigkeit enge Hardware-Orientierung, unübersichtlich, fehleranfällig Folie 316
Höhere / Prozedurale Programmiersprachen (3. Generation) Weitgehend genormte Sprachen, die für einen speziellen Anwendungsbereich konzipiert (problemorientiert) sind und nahezu unabhängig von einem bestimmten Rechnertyp sind. Die Programmierung erfolgt durch die Formulierung von Algorithmen (Algorithmus = Abfolge von Operationen, die jeweils Daten bearbeiten). Beispiel: Addiere 3+4: Operation SUMME = 3 + 4 Übersetzung in Maschinensprache erfolgt durch einen Compiler/Interpreter (1:n-Übersetzung) schlechtere Performance Folie 317 Übersetzungsprogramm I Ein Programm, das nicht in Maschinensprache abgefasst ist, wird QUELLPROGRAMM (QUELLCODE/SOURCECODE) genannt. Ein in Maschinensprache vorliegendes Programm (=Zielprogramm des Übersetzungsvorgangs) heißt OBJEKTPROGRAMM (OBJEKTCODE). Unter einem ÜBERSETZUNGSPROGRAMM (TRANSLATOR) versteht man ein Programm, das Anweisungen in einer höheren Sprache oder in Assemblersprache liest, analysiert (Optimierung) und in bedeutungsgleiche Maschinenbefehle umwandelt. Folie 318
Assemblierer Compiler Interpreter Assemblierer Compiler / / Interpreter 00011010 0011 0100 Assemblersprachen Höhere Programmiersprachen 4GL-Systeme Alternative Sprachrichtungen ADD 3, 4 SUMME = 3 + 4 Folie 319 Übersetzungsprogramm II Maschinensprache QUELLCODE: ÜBERSETZUNGS- PROGRAMM PROGRAM test; test; BEGIN BEGIN (Assemblierer, WriteLN ('Hallo!'); Compiler, Interpreter)...... OBJEKTCODE: 0101000100111 0110010011111 1110110001100 1100011... Hallo! Folie 320
Compiler vs. Interpreter Compiler Ein Übersetzungsprogramm, das in einer höheren Programmiersprache abgefassten Quellcode komplett in Zielanweisungen einer maschinenorientierten Programmiersprache umwandelt (kompiliert). Das erzeugte Objektprogramm kann für spätere Verarbeitungsläufe abgespeichert werden, so dass vor der (erneuten) Ausführung keine Übersetzung mehr nötig ist. Interpreter Ein Programm zur schrittweisen Übersetzung von Quellcode in lauffähigen Maschinencode, welcher sofort (zeilenweise) ausgeführt wird. Im Unterschied zum Kompilieren entsteht kein vollständiges, aufbewahrungsfähiges Objektprogramm. Bei jedem Programmstart erfolgt ein erneuter Übersetzungsvorgang Folie 321 Beispiele für 3-GL-Sprachen I COBOL (COmmon Business Oriented Language) Entwicklung in den 50er Jahren betriebswirtschaftliche Anwendungen (Verarbeitung umfangreicher Datenbestände) meistgenutzte Programmiersprache auf Großrechnern Standard: ANSI-COBOL-85 FORTRAN (FORmula TRANslator) Entwicklung in den 50er Jahren von IBM technisch-wissenschaftliche Anwendungen (effiziente Programme für komplexe mathematische Algorithmen) Standard: FORTRAN 90 BASIC (Beginners All-Purpose Symbolic Instruction Code) Entwicklung in den 60er Jahren als vereinfachtes FORTRAN fehlende Unterstützung der strukturierten Programmierung führte zu Spaghetticode Weiterentwicklung (MICROSOFT) zur professionellen Makro- und Programmiersprache VISUAL BASIC (Visuelle Programmierung) Folie 322
Beispiele für 3-GL-Sprachen II C Entwicklung in den 70er Jahren in den Bell Laboratories des amerikanischen Telekommunikationskonzerns AT&T effizientes Laufzeitverhalten eng mit dem Betriebssystem UNIX verbunden (UNIX zu 90% in C geschrieben) universell einsetzbar auf allen gängigen Rechnern objektorientierte Nachfolger: C++ Makrosprachen Automatisierung von wiederkehrenden Abläufen innerhalb von Anwendungen (z.b. Textverarbeitung, Tabellenkalkulation) Proprietär: Der Befehlsumfang wird ausschließlich von einem einzigen Hersteller definiert bzw. weiterentwickelt zumeist herstellerspezifische Dialekte der Programmiersprache BASIC z.b. Visual Basic for Application (VBA) von MICROSOFT, LotusScript von LOTUS Folie 323 Beispiele für 3-GL-Sprachen III PASCAL 1971 von Prof. Niklaus Wirth an der ETH Zürich entwickelt benannt nach französischen Mathematiker und Philosophen Blaise Pascal (1623-1662) unterstützt die strukturierte Programmierung durch leichte Erlernbarkeit für Ausbildungszwecke geeignet geringe Verbreitung im Bereich kommerzielle Anwendungsentwicklung durch unkomfortable Ein- und Ausgabeanweisungen und unzureichende Dateiverarbeitung Nachfolger: MODULA 2 (modulare Programmierung) ObjectPascal (objektorientierte Programmierung) Delphi (visuelle Programmierung) Blaise Pascal (1623-1662) Niklaus Wirth Folie 324
Nicht-prozedurale Sprachen 4GL-Systeme (4. Generation) Deskriptive Programmierung Der Programmierer muss nicht mehr angeben, auf welche Weise ein Problem Schritt für Schritt gelöst werden soll, sondern er legt in beschreibender Form das Resultat fest, was geschehen soll. Prozedurale Beispiel: Variante: Sortieren einer Kundenliste Datenbanksprache Structured Query Language (SQL) SELECT Vorname, Nachname FROM Kunden WHERE Ort = Bochum ORDER BY Nachname 1. Gehe zum ersten Datensatz in der Tabelle Kunde 2. Solange noch nicht am Ende der Tabelle Kunde 2.1. Wenn Ort von jeweiligen Datensatz = Bochum 2.1.1. Dann Markiere den Datensatz 2.2. Gehe zum nächsten Datensatz 3. Kopiere von markierten Datensätzen Vorname, Nachname in eine temporäre Tabelle 4. Sortiere Datensätze der temporären Tabelle nach Nachnamen Folie 325 Proprietär, hohe Inanspruchnahme der Hardwareressourcen bei Umsetzung, beschränkter Anwendungsbereich Alternative Richtungen: Sprachen der künstlichen Intelligenz Sprachen der 5. Generation Anwendungsgebiete: Expertensysteme, Robotersteuerung, Data Mining Funktionale Programmiersprachen mathematische Funktionen auf Basis von Basisfunktionen (Aneinanderkettung, Iteration, Rekursion) LISP (LISt-Processing Language): 1958 am MIT (Massachusetts Institute of Technology) entwickelt grundlegende Struktur der Liste für Programme und Daten Logische Programmiersprachen Prinzipien der mathematischen Logik: aus Fakten und Regeln werden mit Hilfe der Prädikatenlogik neue Fakten gewonnen PROLOG (PROgramming LOGic): 1972 in Marseille entwickelt Folie 326 kaum Ablaufsteuerung, Verwendung von Deduktionsverfahren
Alternative Richtungen: Objektorientierte Programmierspr. Objekt Daten: beschreiben den Zustand des Objekts Methoden: beschreiben das Verhalten des Objekts Klassen: Objekte mit gemeinsamer Struktur und gemeinsamen Verhalten weitere Konzepte: einfache/mehrfache Vererbung, Polymorphismus Objektorientierte Programmiersprachen (OOP) Simula (1967), Smalltalk (1972), Eiffel (1988), Java (1995) Hybridsprachen C++ (1985), ObjectPascal (1985), Modula-3 (1985) Folie 327 Alternative Richtungen: Visuelle Programmiersprachen objekt- und ereignisorientierte Modellierung des optischen Erscheinungsbildes des Programms Kontroll-/Steuerelemente besitzen Eigenschaften (z.b. Farbe) und Ereignisse (z.b. Mausklick) den Ereignissen werden Ereignisprozeduren zugeordnet VISUAL BASIC von MICROSOFT DELPHI von BORLAND Folie 328
Vergleich Pascal zu Visual Basic "Schritt für Schritt" Ereignisgesteuert Folie 329 Gefragte Softwaretechnologien bei den IT-Kernberufen Softwareentwicklung / Programmierung IT-Organisation / IT-Projekte Netzwerke / Betriebssysteme Service / Support Datenbanken [CDI, Sept 2001] Folie 330
Gefragte Softwaretechnologien bei den IT-Mischberufen Multimedia E-Business / E-Commerce SAP CAD Kaufmännische Sachbearbeitung [CDI, Sept 2001] Folie 331 Vielen Dank für Ihre Aufmerksamkeit Folie 332