Software Engineering ist ein systematischer Ansatz zur Entwicklung von Software. Für die Entwicklung von Software muss man über Kenntnisse in den Bereichen Analyse, Schätzung, Prototyping, Planung, Design, Testen usw. verfügen. Software-Engineering umfasst: - Anforderungsanalyse - Menschliche Faktoren - Funktionsspezifikation - Software-Architektur - Entwurfsmethoden - Programmierung für Zuverlässigkeit - Programmierung für Wartbarkeit - Team-Programmiermethoden - Testmethoden - Konfigurationsmanagement Software-Engineering ist das Studium und die Anwendung von Ingenieurswissenschaften für Design, Entwicklung und Wartung von Software. Die Spezifikation ist ein Dokument, das das Verhalten des zu erstellenden Softwaresystems beschreibt. Sie enthält das Anforderungsmodell und das Domänenmodell. Das Anforderungsmodell enthält die funktionalen und nicht-funktionalen Anforderungen. Funktionale Anforderungen werden auch als Fähigkeiten bezeichnet. Nicht-funktionale Anforderungen werden auch als Constraints bezeichnet. Zu den nicht-funktionalen Anforderungen gehören Benutzerfreundlichkeit, Komfort, Sicherheit, Zuverlässigkeit und Leistung der Software für den Kunden.