Software Engineering Flashcards
Was ist der wesentliche Unterschied zwischen Standardsoftware und Individualentwicklung?
Der Ersteller von Standardsoftware muss die Spezifikation selbst übernehmen und kann die genauen Anwenderwünsche nicht erfragen.
Aktuelle Herausforderungen für das SE
Heterogene Umgebungen
Kurze Projektzielzeiten
Software muss immer verlässlicher sein
Was sind Merkmale guter Software?
Wartbarkeit
Zuverlässigkeit
Effizienz
Benutzerfreundlichkeit
Welche Arten kritischer Systeme gibt es?
Sicherheitskritische Systeme (kann zu Schäden für Mensch und Umwelt führen z.B: Atomkraftwerk)
Aufgabenkritisch (Kann zum Scheitern einer umfangreichen Aufgabe führen, Raumfahrtnavigation)
Geschäftskritisch (kann hohe Kosten hervorrufen)
Warum ist Zuverlässigkeit die wichtigste Eigenschaft kritischer Systeme?
Wenn es unzuverlässig arbeitet wird es von den Benutzern abgelehnt
Ausfallkosten können Unternehmen gefährden
Verlorene Informationen können wichtiger als System sein
Was muss man bei der Entwicklung kritischer Systeme beachten?
Lieber erprobte Techniken verwenden
Kosten für Tests höher als bei unkritischen
Besonders aufwendige SE Methoden lohnen sich oft
Sicht auf Gesamtsystem (Hard + Software)
Was macht Vorgehensmodelle aus?
Definieren Standards für IT Projekte.
Vor allem für: Phasen Organisation Dokumente Kommunikation Methoden
Was ist ein Lastenheft?
Anforderungen aus Sicht des Auftraggebers
Ist vs. Soll Zustand
Funktionale Anforderungen:
Nichtfunktionale Anforderungen
Grundlage der Angebote potentieller Auftragnehmer
Was ist ein Pflichtenheft?
Realisierungsvorhaben aus Sicht des Auftragsnehmers
Detailliert das Lastenheft
Enthält Kriterien für die Abnahme
Begründet grundsätzliche Plattformentscheidungen
Welche Softwareanforderungen gibt es und was muss beachtet werden?
Funktionale Anforderungen
Nichtfunktionale Anforderungen
Anforderungen müssen schriftlich fixiert werden um Mißverständnisse zu vermeiden
Was sind Funktionale Anforderungen?
Beschreiben was das System leisten soll und sich in bestimmten Fällen bei bestimmten Eingaben verhalten soll
Sollen vollständig und konsistent sein
Was sind nichtfunktionale Anforderungen?
Beschreiben Beschränkungen der vom System angebotenen Dienste. Werden oft als Systemziel formuliert.
Besser sind Meßbare Dinge z.B: Performance, Portierbarkeit
Ursprung:
Dem Produkt (Anzahl User)
Der Organisation (Zugriff auf Firmen DB)
externe Quellen (Gesetzte etc.)
Was ist ein Systemziel?
System sollte für erfahrene Benutzer einfach zu bedienen sein und so aufgebaut sein, Fehler durch Benutzer minimiert werden.
Wie können Softwareanforderungen formuliert werden?
Natürlicher Sprache
Nachteile: ungenau, verwirrend, Gefahr der Verschmelzung von Anforderungen
In vorstrukturierten Dokumenten (Use Case)
Als graphisches Modell (UML Diagrame)
Was sind Schwierigkeiten bei der Sammlung von Anforderungen?
Beteiligten haben unklare Erwartungen
Können Erwartungen nicht in Worte fassen
Haben unrealistische Erwartungen
Beschreiben Erwartungen in unternehmensspezifischer Terminologie
Erwartungen versch. beteiligter unterscheiden sich
Was passiert wenn die Anforderungen gesammelt sind?
Sie werden:
klassifiziert, strukturiert und gruppiert.
Priorisiert, verhandelt, Konflikte gelöst
Dokumentiert
Was ist Requirements Validation?
In Review Meetings mit Anbietern und Kunden werden die Anforderungen validiert.
z.B: gescheit formuliert, realistisch vollständig…
Allererster Prototyp und erste Testfälle abzuleiten oftmals hilfreich
Was passiert wenn sich Anforderungen nach Verabschiedung nochmal ändern?
Hierfür muss es einen Prozess geben der dies dokumentiert (Change Management)
Was sind Shall-not-requirements?
Sind abstrakte Sicherheitsanforderungen in kritischen Systemen
Was sind verteilte Systeme?
Softwaresysteme die auf mehreren Rechnern laufen
Mehrere Prozesse können gleichzeitig darauf laufen
Was sind Vor- und Nachteile von verteilten Systemen?
Vorteil: Sind skalierbar, Fehlertoleranter aber Single Point of Failure
Nachteil: Komplexer, Erschwerter Zugriffsschutz wegen Datenverkehr der Rechner
Vor- und Nachteile zentraler Repositorys
Vorteile: Keine direkte Kommunikation zwischen Subsystemen nötig, Schutz etc. sind einfacher in Rechenzentrum zu gewährleisten
Nachteil: Langsamerer Zugriff als auf eigene Festplatte,
Was macht das Client Server Modell aus?
Clients: Fragen Dienste im Netzwerk ab, kennen Server aber keine anderen Clients
Server: Bieten Dienste im Netzwerk an, Meist zentral im Rechenzentrum
Was macht das 2-Tier-Client-Server aus?
Gibt nur Clients und Server
Thin Clients: Anwendungslogik läuft komplett auf Server, Client nur Benutzereingabe und Bildschirmdarstellung
Fat Clients: Server übernimmt nur Datenhaltung. Anwendungslogik, Eingaben Darstellung laufen auf Client
Was macht das 3-Tier-Client-Server System aus?
Ein zentraler DB Server sorgt für Persistenz.
Applikationsserver sorgen für Applikationslogik
Clients übernehmen Eingaben und Darstellung
Was macht Webapplikationen aus?
Können Vorteile von Fat und Thin Clients vereinen.
Useability und Performance von Web Appl. nähern sich lokaler Software an.
Was sind Batchverarbeitende Systeme?
Verarbeiten Daten am Stück ohne Eingriff des Benutzers. Wenn auf große Datenmenge immer ähnliche Operationen angewendet werden.
Bestehen meist aus Komponenten für Eingabe, Verarbeitung und Ausgabe
Was sind Transaktionsverarbeitende Systeme?
Verarbeiten Schreib- und Lesezugriffe auf großen Datenbestand.
Müssen sicherstellend dass Personen sich nicht gegenseitig behindern.
Komponenten für: Benutzerinteraktion, Anwendungslogik und Datenhaltung
Was sind Sprachverarbeitende Systeme?
Arbeiten Anweisungen ab, die in formaler Sprache formuliert sind. z.B. Compiler
Komponenten: Prüfen, Auswerten und Ausführen von Anweisungen
Grundregeln für den GUI Entwurf
Benutzervertrautheit Konsistenz Minimale Überraschung Wiederherstellbarkeit Benutzerführung Benutzervielfalt
Grundregeln für Systemmeldungen
Kontext Erfahrung Fähigkeiten Stil Kultur
Was sind Ziele der Softwarewiederverwendung?
Herstellkosten verringern
Wartungskosten verringern
Projektdauer verkürzen
Qualität erhöhen
Was sind Kriterien für die Wiederverwendung von Software?
Entwicklungszeit der Software
Nutzungsdauer der Software
Erfahrungen/ Kenntnisse des Entwicklungsteams
Kompromißbereitschaft der Kunden
Was sind Prinzipien verläßlicher Entwicklung?
Gute Grundsätze objektorientierer Entwicklung (Getter & Setter, try catch etc)
Fehleranfällige Konstrukte vermeiden
Was ist Defensive Programming?
Überprüfungen werden in Code eingebaut, die nicht notwendig für Funktion wären.
Fehler der Spezifikation werden nicht erkannt.
Was sind Verifikation und Validierung?
Verifikation: Entspricht das Produkt den Anforderungen
Validierung: Stellt das Produkt den Anwender zufrieden?
Verfahren: Softwareinspektion, SW-Test
Was macht Test Cases aus?
Werden aus Use Cases abgeleitet.
Dienen als Anleitung für Tester.
Beschreiben: Vorbedingungen, Eingabedaten, Aktionen, Erwartete Ergebnisse
Was sind White- und Black-Box Test?
White Box Test: Beim Erstellen der Testfälle wird Wissen um Programmaufbau berücksichtigt.
Black-Box-test: testfälle werden ausschließlich aus Spezifikation abgeleitet
Was sind die Testprinzipien?
- Anforderungsbasiert (AUs Use Cases)
- Klassenbasiert
- Strukturell (Versucht Grenzwerte abzudecken)
- Pfadüberdeckung
- Testen auf Zufallswerte
- CRUD (Create Read Use Delete)
Welche nicht funktionalen Tests gibt es?
Stresstest
Usability Test
Recovery Test
Sicherheitstest
Was ist ein Auslieferungstest?
Gesamtsystem wird getestet
Teste keinen Zugriff auf Quellcode
Was ist ein Alphatest?
Interner Test mit Schwerpunkt: FUnktionalität/Usability
Was ist ein Betatest?
Erste Version wird an eingeschränkten Benutzerkreis gegeben um Fehlermeldungen zu sammeln
Danch Einordnung:
Release Candidate
Release to Manufacturing
General Availability
Was macht Standardsoftware aus?
Universell
Definierte Problemlösung
Minimierter Anpassungsaufwand
Festpreise
Kerngedanke: Ähnliche Aufgaben in versch. Unternehmen, hohe Fixkosten bei SW Entwicklung
Was ist Customizing?
Parametrisierung oder auch Ergänzungsprogrammierung je nach Hersteller. Bei SW mit vielen Parametern: Flexibler Weniger Programmierung notwendig Schwieriger zu verstehen Längere Einführungszeiten
Argumente Pro Standardsoftware
Kosten besser abschätzbar
Wartungsaufwand abschätzbar
Kein kurzfristiger Personalaufwand während Entwicklung
Parameteränderung später ejdrzeit möglich
Einführung schneller
Ausgereifte Software
Vor Entscheidung testen möglich
Argumente Pro Individual
Flexibler -> 1:1 Abbildung
Keine Abhängigkeit vom hersteller
IdR technisch schlanker
Keine Standardlösung für exotische Aufgabe
Was muss man bei der Auswahl von Standardsoftware beachten?
Best of breed
Alles aus einer Hand falls möglich
Was ist ein Framework?
Eine Sammlung von Klassen die erweitert werden können
Bieten eine Möglichkeit Code wiederzuverwenden
z.B. Hibernate
Was ist Service Orientierte Architektur?
Spezielle Art der Wiederverwendung mit Komponenten mittlerer Größe
Komponenten sind eigenständige Dienste
Für Kommunikation werden Standardkontrolle verwendet
Plattform/Sprachabhängig
Was sind SOAP und UDDI?
XML basierte Standards für Service orientiere Architektur.
SOAP definiert das XML Format der Nachrichten die ein Service erhält und verschickt
UDDI definiert das Format der Nachrichten mit denen nach Diensten gesucht wird
Was ist WSDL?
XML basierter Standard für SOA. Definiert wie ein Service beschrieben wird
Was ist REST?
Leichtgewichtige Alternative zu SOAP/UDDI/WSDL
Definiert lediglich grundlegende Prinzipien für die Maschine zu Maschine Kommunikation im Web
Derzeit Tendenz hin
Was sind Entwurfsmuster?
Keine Softwarekomponenten sondern abstrakte Konzepte
Beschreiben erfolgreiche Designs
Erfahrung vieler Softwareprojekte
Viele Entwurfsmuster heute frei verfügbar
Was ist GoF?
Gang of Four
führte 1994 Konzept der Design Patterns in SE Entwicklung ein
Aus was besteht ein Entwurfsmuster?
Name des Musters
Domäne
Lösungsbeschreibung, oft auch graphisch
Konsequenzen (Beschränkung des Musters)
Aus was besteht ein Aspekt?
Advice
Pointcut
Begriffe des Aspekt Orientierten Designs
Advice: Code zum Implemntieren eines Belangs
Aspekt: Programmabstraktion, enthält Definition eines Pointcuts und den Advice
Join Point: Ereignis in einem ausgeführten Programm, bei der der mit Aspekt verknüpfte Advice ausgeführt werden kann
Verbindungsmodell: Satz von Ereignissen auf die in einem Point Cut verwiesen werden kann
Point Cut: In einem Aspekt eingeschlossen Anweisung, die die Join Points definiert, an denen der mit dem Apsket verknüpfte Advice ausgeführt werden soll
Einweben: Enbeziehen des Advice codes an Join Points durch Aspect-Weber
Welche Möglichkeiten zum Einweben von Aspekten gibt es?
Quellcodeverarbeitung (Quellcode wird an passenden Stellen durch Aspect Weaver eingefügt. Dann COmpiler)
Während des Linkens: Aspect Weaver wird in Compiler eingebaut
Zur Laufzeit: Join Points werden im Hintergrund überwacht. bei definiertem Ereigniseintritt wird Advice ausgeführt.