C-Programmierung

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<…>

Indirekt:

  • Modellbasierte Entwicklung
    • Klassendiagramme (UML / XSLT)
    • Komponentendiagramme
  • Codegeneratoren
  • UI-Builder

Requirement Management

  • Mindmaps
  • V-Modell
  • Iterativ inkrementelle Entwicklung

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

Options: