Einheit 5 Flashcards
Software Engineering
technische Disziplin
beschäftigt sich sich mit allen
Aspekten der systematischen Softwareherstellung, angefangen von der Systemspezifikation bis hin zur Wartung des Systems, nachdem es integriert und in Betrieb genommen wurde
Technische Disziplin: Verwendung von Werkzeugen um, in Anlehnung an das Ingenieurwesen, Ergebnisse in geforderter
Qualität innerhalb des Zeitplans und des Budgets zu erreichen.
Alle Aspekte der Softwareherstellung: Es geht nicht nur um technische Prozesse, sondern auch um Management Tätigkeiten.
Gestaltung von Informationssystemen
Herangehensweise wie ein System gebaut wird hängt stark vom Systemtyp ab.
Webbasierte (transaktionsbasierte)
Anwendungen
z.B.: ERP-System, Web-Shop, Online Zeitung
Für die Entwicklung von Informationssystemen
kann ein iterativer Ansatz mehr Sinn machen um schnell lauffähige Ergebnisse zu erzielen.
Auszug an möglichen Anforderungen:
-Zugang zu einer Datenbank um Daten und Informationen systematisch zu verwalten und zur Verfügung zu stellen (Datenintegrität, Datenverbreitung, Datenschutz …)
-Zugang zu einem Netzwerk (Internet, Intranet) (Informationsaustausch, Infromationssicherheit…)
-Benutzer müssen das System effizient verwenden können (Usability, Funktionalität …)
-Unterschiedliche Personengruppen haben verschiedene Sichten (Benutzerverwaltung, Rollenbasierte Zugangsverwaltung …)
und dadurch auch unterschiedliche Bedürfnisse
Die Gestaltung von Systemen ist ein komplexer Prozess und benötigt vor allem
effektive Kommunikation, effizientes Projektmanagement und Kollaboration.
Grundsätze des Software engineerings
Prozess
-Gestaltung mithilfe eines
verständlichen und gelenkten
Entwicklungsprozesses
-Planung, Spezifikation und
Kontrolle stehe
Anforderungen
-Vereinbarung und Verwaltung
von dem „was die Software
tun soll“ (Anforderungen &
deren Spezifikation)
-Erwartungen an ein
brauchbares System
Verlässlichkeit
-Software sollte sich wie
erwartet verhalten, keine
Fehler machen und verfügbar
sein.
-Sicherheit und Effizienz als
wichtige Faktoren
Wiederverwendung
-Effizienter Einsatz von
Betriebsmitteln
-„das Rad nicht neu
erfinden“, sondern auf
bereits bestehenden
Softwarekomponenten
aufbauen
Management und Entwicklungstätigkeiten
IS-Managementtätigkeiten:
-Beschaffung
-Projektmanagement
-Konfigurationsmanagement
IS-Entwicklungstätigkeiten:
-Geschäftsprozessentwicklung
-Spezifikation
-Entwurf
-Implementierung
-Test
-Change-Mangement
Tätigkeiten der Systementwicklung
vier grundlegende Tätigkeiten der Systementwicklung
Spezifikation
Verständnis und Definition von Anforderungen eines Systems (Requirements Engineering)
Entwurf
Skizzierung und Modellierung des zu implementierenden
Systems (Software Design)
Implementierung
Umsetzung und Programmierung des Entwurfs eines Systems (Software Development)
Test
Überprüfung dass Spezifikationen und
Erwartungen erfüllt wurden (Software Testing)
Spezifikation
Analyse und Erhebung
-Durchführbarkeitsanalyse
-Erhebung und Analyse der Anforderungen
-Kommunikation mit relevanten
Stakeholdern
->
Dokumentation
-(Strukturierte) Verschriftlichung von Benutzer- & Systemanforderungen
-Modellierung (zb Szenarien, Anwendungsfälle (User cases)
-> Validierung & Verwaltung:
-Abgleich und Überprüfung
-Planung & Strukturierung
-Nachvollziehbarkeit (Traceablitity)
Entwurf
Ziel ist es eine Systemarchitektur zu entwerfen. Diese beinhaltet:
Beschreibung der Struktur der Software, des Datenmodells, der Schnittstellen zwischen den Systemen, der Algorithmen, der Benutzeroberfläche usw.
Entwurf mithilfe von Modellierungswerkzeugen (z.B. UML)
-Modell für den Systemkontext, die Architektur, die Interaktionen oder
Zustände in einem System
Entwurf mithilfe von Software Prototyping
-Prototyping: papier, proof-of-concept, funktional, visuell
-Modellierung der grafischen Oberfläche
Implementierung
Ziel ist es die Anforderungen aus dem Entwurf in einen konkreten Lösungsansatz zu überführen.
Erstellung von Programmen mithilfe von
Programmiersprachen
Verwaltung und Koordination zwischen
Programmiererinnen und Programmierern sowie Kommunikation mit relevanten Stakeholdern
Entwicklungsstadien: Prototyp, Alphaversion, Betaversion, Freigabekandidat und
Freigabeversion
Test
Entwicklertests (z.B.: Modultest, Systemtest)
Freigabetests (z.B.: Anforderungsbasierte Tests, Szenariobasierte Tests)
Modultests-> Systemtests -> Abnahmetests
–>
Vorgehensmodelle
Vorgehensmodelle sind vereinfachte Darstellungen der Prozessschritte
in der Systementwicklung. Sie dienen als Rahmen der erweitert und
angepasst werden kann und soll.
Wasserfallmodell
§ Modell nach Royce (1970)
§ Plangesteuerter Prozess
§ Dokumentation und
Abnahme jedes Schrittes
Inkrementelle Entwicklung
§ Am häufigsten eingesetzt
§ Fundament für agile
Methoden
Agile Methoden
§ Inkrementelle Entwicklung
§ Schnelle Releasezyklen
§ Extreme Programming &
Scrum als
Projektmanagement
Spiralmodell
§ Risikogesteuertes Modell
nach Boehm (1988)
§ Hauptunterschied zu anderen
Modellen ist die integrierte
Risikoanalyse
§ Jede Windung hat 4
Segmente (Planung, Ziele,
Risiken, Entwicklung)
Unified Process
§ Hybrides Modell
§ Verbindet klassische Modelle
mit inkrementellen
§ Iteration in Phasen
V-Modell
§ Kombination jeder Phase mit
Verifizierung und Validierung
§ Systemtests als zentrales
Element in jeder Phase
Vor- und Nachteile Inkrementelle Entwicklung
+Kosten für Anpassung an sich ändernde
Kundenanforderungen werden reduziert.
+Konstruktive Rückmeldungen von Kunden
können einfacher aufgrund von
Zwischenversionen eingeholt werden.
+Schnellere Auslieferung und Verwendung
von lauffähiger Software. Auch wenn noch
nicht alle Funktionen enthalten sind.
-> optimal für kleine Projekte
-Prozess ist nicht sichtbar/greifbar.
-Integration von weiteren Änderungen kann
zunehmend schwerer und teurer werden.
grobe Beschreibung ->
gleichzeitig stattfindende Akitivitäten (Spezifikation, Entwicklung, Test) + Benuterzkommentare und Hinweise
Spezifikation -> Anfangsversion
Entwicklung -> Zwischenversionen
Test-> Endversion
Agile Methoden Vor- und Nachteiel
“Agile Manifesto” -> Grundprinzipien agiler Methoden
Extreme Programming -> Anforderungen werden in Szenarien (User Stories) spezifiziert dann sofort implementiert, getestet und freigegeben
Agiles Projektmanagement -> Scrum als
Management Ansatz mit Fokus auf
iterativer Entwicklung vs. plangesteuerter
Umsetzung (z.B. Wasserfallmodell)
->Optimal für kleine bis mittelgroße Projekte
-> Klares Einverständnis zur Einbeziehung des Kunden
-> Wenig oder keine externe Regeln bzw. Vorschriften
Warum Modell im Kontext der Systementiwkcklung
Komplexität: Die Gestaltung von Informationssystemen, Anwendungssystemen bzw.
Datenbanksystemen kann sehr kompliziert werden.
Konzeption:
§ Wie können wir über das System sprechen?
§ Wie können Anforderungen an ein System erfasst werden und deren
Zusammenspiel vereinfacht dargestellt werden?
Entwicklung:
§ Systemmodellierung als Hilfestellung zur
Entwicklung eines Systems
§ Möglichkeit der Transformation eines
Systemmodells in ausführbaren Programmiercode
Dokumentation:
§Systemmodellierung als
Werkzeug zur Analyse eines bestehenden Systems
§ Systemmodelle können helfen Komplexität in vereinfachter Form darzustellen
Systemmodellierung im Kontext der Systementwicklung
Systemmodellierung wird eingesetzt vor allem im Rahmen der Spezifikation (Requirements Engineering) und dem Entwurf (Software Design).
Allgemein versteht man unter Systemmodellierung die vereinfachte Darstellung eines Systems mithilfe
von grafischer Notation.
Heutzutage baut man meistens auf den Notationen der Unified Modeling Language (UML) auf.
Es gibt auch text-basierte, tabellarische oder formale, also mathematische, Modelle.