Software Engineering
← Ausblick | ● | Datenstrukturen und Algorithmen →
Software-Engineering bezeichnet die Vorgehensweisen und Werkzeuge, welche einen Entwickler beim effizienten Entwickeln von transparenter Software unterstützen.
Hauptansatz: Minimierung der Abhängigkeiten einzelner Softwarebestandteile eines komplexen Systems.
Motivation: Sämtliche Techniken des Software-Engineering übertragen sich leicht auch auf komplexe Systeme, die nicht nur aus Software bestehen, z.B. Helikopter, Containerhäfen, Digitalkameras etc.
Direkt:
- Schnittstellen (Interfaces)
- Entwurfsmuster (Design Patterns)
- Container
- Iteratoren
- Adaptor
- Observer
- Factory
- Singleton
- Templates / Traits
- Bibliotheken
- Standard Template Library
- z.B. std::vector<…>
- Standard Template Library
Indirekt:
- Modellbasierte Entwicklung
- Klassendiagramme (UML / XSLT)
- Komponentendiagramme
- Codegeneratoren
- UI-Builder
Requirement Management
- Mindmaps
- V-Modell
- Iterativ inkrementelle Entwicklung
- Agile Programming
Version Management
- Versioning Systems
- svn / git
- Online Code Repositories
- Differentielle Analyse
- Statistiken
- Fortschrittskontrolle
Testing:
- Prototyping
- Regression Testing
- Mockup
- Bug Report
Documentation:
- Developer Blog
- Fact Wiki
- Automatische Dokumentationssysteme
Software Quality:
- Pair Programming
- Peer Review
- Team-Building
- Knowledge Transfer
← Ausblick | ● | Datenstrukturen und Algorithmen →