Welche Vorraussetzungen müssen fürs Implementieren vorhanden sein?
Architektur
Team
Festlegung von:
Entwicklungsprozess
Programmiersprache
Tools
Zeitplan
Welche Faktoren beeinflussen die Wahl der Prgrammiersprache?
Kenntnisse und Erfahrungen des Teams
Eignung der Sprache für die Problem-Domäne
Verfügbarkeit von Entwicklungstools, Frameworks und Libraries
Verfügbarkeit von Entwickler
Kundenvorgabe
Was ist das Framework? Was sind Beispiele dafür?
Applikationsskelett, das vom Entwickler angepasst (spezialisiert) wird
Beispiele:
Spring, Hibernate, Angular, JUnit
Welche Vorteile haben Frameworks?
Wiederverwendung
Entwicklungszeit kürzer -> Kosten senken
Softwarequalität erhöhen
Entwicklung auf Spezialisierung vorgegebener Strukturen reduziert
Welche Nachteile haben Frameworks?
Komplexität (Black/Magic Box, Bugs?)
-> Einarbeitung und Erfahrung notwendig
Welche Kriterien gibt es zur Auswahl von Frameworks?
Abdeckung der Anforderungen
Sicherung Wartung und Weiterentwicklung
(hoher Verbreitungsgrad bedeutet meist gute Wartung)
Kommerziell
(Support aber auch Kosten)
Frei
(Support bei Bedarf zukaufen, Risiko durch fehlende Garantien)
Was ist der Unterschied zwischen einer Library und einem Framework?
Library:
wiederverwendbare Funktionalität
wird vom Entwickler-Code aufgerufen
Framework:
wiederverwendbares Verhalten
Framework ruft Entwickler-Code auf
(Inversion of Control, Hollywood-Prinzip)
Was ist das VCS (Versionsmanagementsystem)?
Es ist ein Computersystem, das Änderungen an Dateien über die Zeit
hinweg archiviert
-> erlaubt jederzeit das Laden der aktuellen und jeder archivierten Version einer Dateil
Was ist das Repository?
Datenbestand aus dem die Arbeitskopie generiert wird
Was ist ein Checkout?
Übertragung (Abholen) der Daten aus dem Repository
Was ist ein Check-in oder Commit?
Übertragung der Daten in das Repository
Was ist Branching (Verzwigung)?
Es ist das Anlegen einer Kopie von Objekten im VCS
Was ist der Unterschied zwischen einem Zentralen und einem dezantralen VCS?
Zentrales VCS
Client/Server Ansatz
Zentraler Server
z.B.: SVN (Subversion) / CVS (Concurrent Versions System)
Dezentrales VCS
Kein zentrales Repository
Jeder Entwickler besitzt sein eigenes Repository
Änderungen werden zwischen den Repositories ausgetauscht
Was ist das BMS (Build Management System) ?
Es ist ein Werkzeug, zum Bauen einer Applikation oder Teilen (Modulen) davon
-> Stellt sicher, dass benötigte (Sub-)Module verfügbar sind
Was ist die Kopplung? Was passiert bei hoher Kopplung?
= Maß der Abhängigkeit zwischen Komponenten
Je höher die Kopplung desto schlechter der Programmierstil
Was ist die Kohäsion?
= Maß der Zusammengehörigkeit innerhalb einer Komponente
Wie erreicht man eine hohe Kohäsion?
Durch Methodengruppierungen nach Zweck
Single-Responsibility-Prinzip:
eine Komponente erfüllt genau eine Aufgabe
Don‘t- Repeat-Yourself-Prinzip:
nur diese Komponente erfüllt diese Aufgabe
Wie funktioniert Information Hiding?
Komponente soll von anderer Komponente nur so viel wie nötig wissen (z.B. gehaltene Daten, Datenstrukturen, Algorithmen)
Kommunikation zwischen Komponenten über Interfaces
Welche Arten von Entwurfsmustern (Design Patterns) gibt es?
Creational Patterns:
Abstract Factory, Builder, Singleton, Prototype, ...
Structural Patterns:
Adapter, Bridge, Decorator, Facade, Proxy,...
Behavioral Patterns:
Command, Iterator, Observer, Strategy, ...
Was ist das Ziel der Entwickungsrichtlinien?
Konsistenterer Code und eine kürzere Einarbeitungszeit für Entwickler
Was betrifft die Richtlinien?
Namenskonventionen
Programmierstil
Formatierung des Quellcodes
Kommentarstil
Verwendete Design Patterns
Wofür gibt es die Dokumentation?
Erhöht die Lesbarkeit und Übersicht
Erleichtert Verständnis
Kommentierung
Last changed2 years ago