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.
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.
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.
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).
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.
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).
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.
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).
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.
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.
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).
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.