swe, Checkfragen

Checkfragen aus dem Unterricht Softwarekonstruktion

Checkfragen aus dem Unterricht Softwarekonstruktion

Jasmin Lienhard

Jasmin Lienhard

Fichier Détails

Cartes-fiches 55
Langue Deutsch
Catégorie Informatique
Niveau Université
Crée / Actualisé 14.01.2014 / 10.03.2014
Lien de web
https://card2brain.ch/box/swe_checkfragen
Intégrer
<iframe src="https://card2brain.ch/box/swe_checkfragen/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

 Erklären Sie in eigenen Worten die beiden Konzepte Äkquivalenzklassen und Grenzwertanalyse. Was ist deren Zweck? 

 

Grenzwertanalyse

Die Grenzwertanalyse ist ein Spezialfall der Äquivalenzklassen. Man geht davon aus, dass
Fehler häufig an den Rändern der Äquivalenzklassen auftreten. Daher werden nicht beliebige Werte, sondern eben die Grenzwerte getestet. 

 

Wie kann mit Tests die Korrektheit von Code nachgewiesen werden? 

 

Man testet, ob die erwarteten Resultate den aktuellen Resultaten entsprechen und ob diese immer wieder zuverlässig reproduziert werden können. 

 

Was versteht man unter „isolierten Testen“? Warum ist das von grosser Bedeutung und durch welche Massnahmen im Software-Entwurf bzw. Implementierung kann dies erreicht werden? 

 

Isoliertes Testen:Ein Modul wird so weit wie möglich ohne Interaktion mit anderen Modulen getestet. Benötigte Module werden simuliert.

Bedeutung: Man stellt so die Unabhängigkeit der Module untereinander sicher und kann bei Fehlern direkt auf die falsche Komponente schliessen. 

 

Was versteht man unter „isolierten Testen“? Warum ist das von grosser Bedeutung und durch welche Massnahmen im Software-Entwurf bzw. Implementierung kann dies erreicht werden? 

 

Isoliertes Testen:Ein Modul wird so weit wie möglich ohne Interaktion mit anderen Modulen getestet. Benötigte Module werden simuliert.

Bedeutung: Man stellt so die Unabhängigkeit der Module untereinander sicher und kann bei Fehlern direkt auf die falsche Komponente schliessen. 

 

Sie werden zum Projektleiter eines neuen Softwareentwicklungsprojektes ernannt. Als eine der ersten Aufgaben müssen Sie sich überlegen, wie Sie die im Verlauf des Projektes anfallenden Artefakte (insb. Sourcecode, auch andere wichtige Artefakte) verwalten wollen.

a) Beschreiben Sie die Ziele, die Sie mit dem Konfigurationsmanagement erreichen wollen und begründen Sie diese. 

 

Das Software-Versionsmanagement verfolgt das Ziel, dass jede Änderung eindeutig nachvollziehbar
ist und jede beliebige Version eines Artefaktes wieder hergestellt werden kann. Folgedne Probleme

sollen behoben werden:
- Bugs die behoben wurden, tauchen wieder auf
- Dateien gehen verloren
- Frühere Releases der Software können nicht mehr erstellt werden
- Gleicher oder ähnlicher Code existiert mehrfach in verschiedenen Projekten
- Zwei Entwickler ändern dieselbe Datei gleichzeitig ohne es zu merken 

 

CI Best Practices
Drei der „Best Practices“ für kontinuierliche Integration lauten?
Erklären Sie für jede dieser Aussagen, wie dies mit einer CI Umgebung erreicht werden kann, und diskutieren Sie was die Vorteile oder Nachteile davon sind. 

 

Make it easy for anyone to get the latest executable
Jeder kann sich einfach die unter Versionskontrolle stehende, letzte Version herunterladen /checkout. Hat nichts mit dem Code zu tun „latest executable“ Der Build Server erstellt regelmässig geplant oder per Knopfdruck einen fertigen Build der eine ausführbare Datei generiert die jeder ausführen kann. - Everyone can see what's happening
Der Build-Server erstellt ein Build-Report. Anhand dieses Reports kann jeder sehen und nachvollziehen, was genau geschieht.
- Keep the build fast: Es bringt nicht wenn ein Build mehrere Stunden dauert deshalb ist ein schneller Build unerlässlich um nach jeder Änderung direkt auch eine ausführbare Datei zu generieren die auch als Prototyp verwendet werden kann. Vorteile:Jeder sieht sofort wenn etwas fehlschlägt Es können nach Änderung direkt ausführbare Dateien generiert werden. Tests laufen automatisiert. Mann hat immer lauffähiger Code. Nachteile: Abhängige Applikationen können nicht getestet werden. (Datenbanken, Sharepoint) Aufwändig, Hoher Erstintallationsaufwand 

 

Nennen Sie 3 Probleme, die bei der Code- Integration auftreten können und wie diese vermieden oder zumindest früh erkannt werden können. 

 

  1. Verbindung zum SVN Server schlägt fehlà Monitoring des SVN Servers.
  2. Fehlerhafter Code wir commited.à Arbeitsabläufe einhalten
  3. JUnit Test schlägt fehl.àJUnit-Test lokal nach change ausführen bevor commit 

 

Arbeiten mit CI und VCS
Der typische Ablauf beim Arbeiten in einer CI Umgebung lautet:
Update – Test – Change – Test – Update – Commit

Erklären Sie für jeden Schritt dessen Zweck und warum dieser sinnvoll ist. 

 

Mit dem ersten Update wird sichergestellt, dass die Working Copy auf dem neuesten Stand (HEAD Revision) ist. Dadurch vermindert man das Risiko, spätere Konflikte zu haben, da man nur mit den aktuellsten Artefakten arbeitet.

Beim darauf folgenden Testen soll die aktuelle Funktionalität lokal getestet werden. Anhand dieses Testens stellt man sicher, dass die Applikation lokal läuft. Anschliessend können die Änderungen wie gewünscht vorgenommen werden. Beim direkt darauf folgenden Test wird sichergestellt, dass das neu Implementierte funktioniert und keine vorhandene Funktionalität nicht mehr wunschgemäss funktioniert. Erst nach dem erfolgreichen Testen kann man den lokalen Stand wieder committen. Sprich die Working Copy wird mit dem Repository auf dem VCS Server abgeglichen. 

 

Wieso trägt ein CI System zur Risiko- Minimierung bei? Nennen Sie 4 Gründe. 

 

  1.  Integrationsfehlern werden früh erkannt
  2. Frühe Warnung bei nicht zusammenpassenden Bestandteile
  3. Erhöhte Code Qualität
  4. Unit Test entdecken Fehler früh 

 

Beschreiben Sie eine typische CI Umgebung mit Ihren Komponenten und deren Zweck. 

 

  • VCS Server
  • Build Server
  • Build Script
  • Deployment Server

Beschreiben Sie eine typische CI Umgebung mit Ihren Komponenten und deren Zweck. 

VCS Server

 

Enthält das Repository in dem alle Files gespeichert werden. Leg eine History der Kommentare und Files ab. Managed Benutzer und verwaltet Änderungen

 

Beschreiben Sie eine typische CI Umgebung mit Ihren Komponenten und deren Zweck. 

Build Server

Der Build Server führt das Build Script(ANT Script) aus. Führt die Tasks nach festgelegtem Zeitplan aus. Und erstellt reports der Builds. 

 

Beschreiben Sie eine typische CI Umgebung mit Ihren Komponenten und deren Zweck. 

Build Script

Das Build Script(ANT Script) beinhaltet Targets die je nach Depencies abgearbeitet werden. Targets können beliebige Aktionen ausgeführen (code Coverage, JUnit, Compile, usw) 

 

Beschreiben Sie eine typische CI Umgebung mit Ihren Komponenten und deren Zweck. 

Deployment Server

Der Build Server erzeugt Executables die auf dem Deployment Server abgelegt werden. Der Deployment Server testet die generierte Anwendung unter gewissen Umgebungen (verschiedene OSs, Verschiedene Versionen von Komponenten) und stellt diese für den Enduser bereit. (Beispiel Windows Update) 

 

Beschreiben Sie eine typische CI Umgebung mit Ihren Komponenten und deren Zweck. 

Was wenn Prozess nicht klar definiert ist?

Ist der Arbeitsprozess nicht klar definiert, schwinden alle Vorteile eines CI-Umfeldes. Jedem Teammitglied muss klar sein, wann es was tun muss, damit die Integration auch funktionieren kann.
- Nur lauffähiger Code Commiten
- Abläufe einhalten update-test-change-test- commit