Software-Engineering FAQ

FAQ zum Thema Software-Engineering

Die folgenden Fragen und Antworten stellen eine mehr oder weniger freie Übersetzung der "Frequently asked questions about software engineering" aus Sommerville's Buch "Software Engineering" (Ausgabe 8, erschienen im Verlag Addison-Wesley; vgl. S. 6, Abbildung 1.1) dar.

  1. Was ist eigentlich Software im Sinne des Software-Engineering?

    • Software, das sind Computerprogramme plus die dazugehörige Dokumentation. Software-Produkte (Software als verkaufbares Produkt) können entweder speziell für einen Kunden individuell entwickelt werden oder für den freien Markt produziert werden.

  2. Was ist eigentlich Software-Engineering?

    • Software-Engineering beschäftigt sich mit allen Aspekten der Produktion von Software. Dabei kommen erprobte und praktikable Vorgehensweisen vergleichbar mit denen anderer Ingenieursdisziplinen zum Einsatz.

  3. Wie verhält sich der Begriff Software-Engineering zum Begriff Informatik?

    • Die Informatik (Computer Science) beschäftigt sich mit den notwendigen (mathematischen) Grundlagen und der Theorie bzgl. Computern, Software und Systemen; Software-Engineering betrachtet die Umsetzung von Entwicklung und Auslieferung praktisch einsetz- und nutzbarer Software. (Ähnliches Konzept: die Beziehung zwischen der Physik und der Elektrotechnik).

  4. Was ist der Unterschied zwischen Software-Engineering und System-Engineering?

    • Das System-Engineering betrachtet alle Aspekte der Entwicklung von Computer-basierten Systemen (Hard- und Software, Prozesse, etc.). Software-Engineering ist ein wichtiger Teil des System-Engineering.

  5. Was ist ein Software-Prozess?

    • Eine Menge von Abläufen (Aktivitäten), deren Gesamtziel die Entwicklung und/oder Evolution von Software ist. Grundlegende Aktivitäten der meisten Prozesse sind Spezifikationsphase (specification), Entwicklungsphase (development), Validierungsphase (validation) und Wartungsphase (evolution).

  6. Was ist ein Software-Prozessmodell?

    • Eine vereinfachte Darstellung (Modell) eines Software-Prozesses. Ziel ist, den Prozess aus einer bestimmten Blickrichtung zu betrachten (z.B. aus der des Managements), und dabei gerade noch genau genug zu beschreiben.

  7. Wie verteilen sich die Kosten beim Software-Engineering?

    • Entwicklungskosten ca. 60%, Aufwende für das Testen ca. 40%. (Bei Individuallösungen übersteigen die Kosten für die Wartung oft signifikant die Kosten für die Entwicklung).

  8. Welche Methoden umfasst Software-Engineering?

    • Allgemein: strukturierte Vorgehensweisen zur Entwicklung von Software. Im Speziellen: (System-)Modelle, formale Notationen, definierte Regeln für die Durchführung bestimmter Aktivitäten (Policies), Design-Richtlinien, definierte und erprobte (Entwicklungs-)Prozesse.

  9. Was versteht man unter dem Begriff CASE (Computer-Aided Software Engineering)?

    • Software-basierte Systeme, die den (Software-)Ingenieur bei der Durchführung bestimmter Abläufe im Entwicklungsprozess unterstützen, beispielsweise durch die Automation von Teilschritten. CASE-Werkzeuge werden oft eingesetzt, um ein bestimmtes, methodisches Vorgehen zu fördern. Beispiele sind Editoren, Testwerkzeuge, Report- und Code-Generatoren.

  10. Welche Eigenschaften zeichnet gute Software aus?

    • Die Software bietet die benötigte Funktionalität mit der geforderten Performanz (aus der Sicht des Anwenders!). Zusätzlich ist die Software wartbar (maintainable), zuverlässig (dependable) und benutzbar (usable).

  11. Worin liegen die größten Herausforderungen beim Software-Engineering?

    • Zunehmende Vielfalt (Domänen, Technologien, Sprachen, …), zunehmend kürzer werdende Entwicklungszyklen, Zunahme am Bedarf sicherheitskritischer Software mit höheren Anforderungen an die Vertrauenswürdigkeit der Software.