190 likes | 403 Views
Informatik ist viel mehr als Delphi-Programmierung !. Bedeutung der Informationstechnik Disziplinen der Informatik Programmiersprachen Softwaretechnologie. Wirtschaftliche Bedeutung von Informations- und Kommunikationstechnik. Weltweite Leitindustrien (Umsatz 1994 in Milliarden US-$).
E N D
Informatik ist viel mehr als Delphi-Programmierung ! • Bedeutung der Informationstechnik • Disziplinen der Informatik • Programmiersprachen • Softwaretechnologie
Wirtschaftliche Bedeutung von Informations- und Kommunikationstechnik Weltweite Leitindustrien (Umsatz 1994 in Milliarden US-$) Militär & Verteidigung Tourismus Inform. - und Komm.-technik Autoindustrie Maschinenbau Textilindustrie ICT = Information and Communication Technology Chemieindustrie Quelle: Balzert, Bd. 1
Dynamik des IT-Marktes Jährliche Wachstumsraten im westeuropäischen IT-Markt (Angaben in%): Quelle: EITO
Teilgebiete der Informatik • Theoretische Informatik • Theoretische Grundlagen der Informationsverarbeitung • Komplexität, Berechenbarkeit, Modellbildung, ... • Technische Informatik • Konstruktion von informationsverarbeitenden Maschinen (Hardware) • Praktische Informatik • Konstruktion von Algorithmen und Programmen (Software) • Softwaretechnologie • Betriebssysteme, Rechnernetze, Datenbanken, Compilerbau, Computergrafik, ... • Angewandte Informatik • Einsatz maschineller Informationsverarbeitung • Interdisziplinarität • Künstliche Intelligenz • Lernende Maschinen, Sprach- und Bildverstehen, log. Schliessen
Theoretische Informatik - Highlights • Theorie der Berechenbarkeit: • Man kann beweisen, daß manche Aufgaben nicht durch Algorithmen lösbar sind ! • Beispiel: Programm zur Analyse von Programmen auf die Möglichkeit von endlosen Abläufen • Komplexitätsklassen: • Man kann von manchen Problemen beweisen, daß ihre Lösung für größere Datenmengen exponentiell großen Zeit- oder Speicheraufwand benötigt. • Kodierungstheorie: • Theorie der "Redundanz" und optimaler Codierungen ermöglicht Kompression - spart Speicherplatz und Übertragungszeit.
Praktische Informatik - Highlights • Automatische Generierung von Sprachübersetzer (Compiler) aus Beschreibung von Programmiersprache • Datenbanksysteme mit praktisch unbegrenztem Speichervermögen und zehntausenden gleichzeitiger Zugriffe • Realistische dreidimensionale Grafik-Animationen • Zuverlässige, störfallresistente und dynamisch erweiterbare globale Computernetzwerke • Entwicklungsmethodik für systematische Konstruktion von komplexen, anpassungsfähigen Softwaresystemen
"Stammbaum" von Programmiersprachen FORTRAN ALGOL COBOL LISP BASIC Simula C Pascal Ada PL/I Smalltalk C++ UCSD Pascal Turbo Pascal CLOS Eiffel Visual Basic Visual C++ ObjectPascal / Delphi Ada-95 Java
"Generationen" von Programmiersprachen • 1. Generation: Maschinensprachen • rein binär • 2. Generation: Assemblersprachen • bequemer handhabbare Darstellung der Maschinensprache • 3. Generation: "höhere Programmiersprachen" • z.B. ALGOL, ObjectPascal, Java • 4. Generation: Baukästen für Anwendungssysteme • z.B. CSP, QMF, Natural, z.T. auch Delphi • (5. Generation: Intelligente selbstlernende Systeme)
Programmiersprachen: Schnappschuß 1998 • In deutschen Softwarehäusern überwiegend verwendete Sprachen (Mehrfachnennungen möglich) • Quelle: Universität Köln, nach Computerzeitung 36/1998
"Hello World" in Java class HelloWorld { public static void main (String[] args) { System.out.println("Hello, World!"); } } Resultat-Typ Argument-Typ Definierte Klasse Verwendete Klasse Verwendetes Objekt Verwendete Methode Definierte Methode
Definition einer Klasse Point class Point { public double x, y; public void clear(); { x = 0; y = 0; } public double distance (Point that) { double xdiff, ydiff; xdiff = x - that.x; ydiff = y - that.y; return Math.sqrt(xdiff*xdiff+ydiff*ydiff); } } x y clear distance
Erzeugen von Objekten, Methodenaufruf Point p1 = new Point(); Point p2 = new Point(); p1.clear(); p2.x = 3.0; p2.y = 4.0; System.out.println(p1.distance(p2));
Vererbung, Redefinition von Methoden class ColorPoint extends Point { Color color; public void clear() { super.clear(); color = null; } }
Die permanente Softwarekrise ? • 1965: Der Begriff der Softwarekrise etabliert sich in Industrie und Wissenschaft. • Fehler in Computersystemen sind fast immer Softwarefehler. • Software wird nicht termingerecht und/oder zu höheren Kosten als geschätzt fertiggestellt. • Software entspricht oft nicht den Anforderungen ihrer Benutzer. • 1979: Studie zu Softwareprojekten (USA), insges. ca. 7 Mio US-$. 75% der Ergebnisse nie eingesetzt; 19% der Ergebnisse stark überarbeitet. 6% benutzbar. • 1981: US Air Force Command&Control Software überschreitet Kostenvoranschlag fast um den Faktor 10 (3,2 Mio US-$) • 1996: Absturz der 'Ariane 5' wegen eines Software-Fehlers. • November 1997: Entwicklung des Informationssystems SACSS für den Staat Kalifornien abgebrochen. Aufgelaufene Kosten 300 Mio US-$ (200 % des Voranschlags) • 1999: Absturz einer Mars-Sonde wegen eines Software-Fehlers
Ungefähre Verteilung des Arbeitsaufwandes 10 % Analyse 20 % Entwurf 20 % Implementierung 50 % Test, Integration Wartung
Arbeitsalltag eines Software-Ingenieurs • Anteil an der Arbeitszeit: • Schreiben von Programmen:15 % • Kommunikation (Kollegen, Kunden):30 % • Diverse weitere Aufgaben: • Analyse • Spezifikation • Dokumentation • Test • Wartung
Daten • Die typische Dauer eines Softwareprojekts ist 1-2 Jahre.Zykluszeit bis zur Freigabe einer neuen Version sinkt, derzeit oft bei 6-9 Monaten. • Nur 70 - 80 % aller Projekte werden erfolgreich abgeschlossen. • Das Kostenverhältnis von Hard- zu Software lag • 1955 bei 4 : 1 • 1985 bei 1 : 4 • Die Siemens AG bezieht 50 % ihrer Wertschöpfung aus Software. • Die Entwicklungskosten für technische Produkte bestehen zu ca. 50% (große PKWs) bis 80% (Meß- und Regeltechnik) aus Kosten für die Softwareentwicklung.