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.
Unified Modeling Language
UML
Werkzeug zur Modellierung,
Dokumentation, Spezifizierung und
Visualisierung von Systemen, unabhängig
von Fach- und Realisierungsgebiet
Veröffentlicht als Standard durch die
Object Management Group (OMG)
Es gibt insgesamt 14 Diagrammtypen.
Die fünf meistgenutzten Diagrammtypen sind:
(1) Aktivitätsdiagramm,
(2) Use-Case-Diagramm,
(3) Sequenzdiagramm,
(4) Klassendiagramm und
(5) Zustandsdiagramm
UML-Modelle und deren Elemente lassen sich in unterschiedlichen Repräsentationsformen darstellen: grafisch, als XML-konforme Struktur, als
Codedatei oder in Form von natürlicher Sprache
Use-Case-Diagramm
§ Als Kontextdiagramm Teil der
Verhaltensmodellierung
§ Zentrale Frage: „Was soll mein geplantes
System eigentlich leisten?“
§ Externe Nutzersicht zur Systemabgrenzung: Visualisierung des nach außen hin sichtbaren Verhaltens eines Systems/Elements.
§ Sollte am Beginn jeder Systementwicklung stehen
Aktivitätsdiagramm
Als Kontextdiagramm Teil der
Verhaltensmodellierung
Zentrale Frage: „Wie realisiert mein System
ein bestimmtes Verhalten?“
Visualisierung von Abläufen zu unterschiedlichen Zeitpunkten mit variierendem Detailgrad
Wichtigste Anwendungsgebiete:
§ Geschäftsprozessmodellierung
§ Beschreibung von Use-Cases
§ Dokumentation einer Operation
(Algorithmus)
Sequenzdiagramm
Als Interaktionsdiagramm Teil der
Verhaltensmodellierung
Zentrale Frage: „Wie läuft die Kommunikation
in meinem System ab?“
Modelliert Abfolge von Interaktionen, die
während eines bestimmten Use Cases anfallen
Interaktionen zwischen Akteuren & Objekten
Klassendiagramm
Strukturdiagramm
Zentrale Frage: „Wie sind die Daten und das
Verhalten meines Systems im Detail
strukturiert?“
Bildet die Organisation eines Systems ab durch Darstellung von Komponenten (Klassen) und deren Beziehungen zueinander
Wichtig bei Systementwurf für Architektur
Notationselemente des UML für Use-Case-Diagramme
Akteur: interagiert mit dem System, steht aber immer außerhalb
davon. Ein Akteur stellt eine Rolle dar, die mit dem System interagiert.
Es ist auch erlaubt anstatt des Strichmännchens eigene definierte
Symbole zu verwenden (z.B. icon für Sensor, Zeitereignis oder Gerät).
Use-Case: Ellipse: beschreibt eine Menge von Aktionen, die, schrittweise
ausgeführt, ein spezielles Verhalten des Systems darstellen und einem
Aktuer zur Verfügung gestellt warden kann.
System (Betrachtungsgegenstand): Rechteck: ist die Einheit, die das
Verhalten, welches durch Use-Cases beschrieben wird, realisiert und
anbietet.
Kommentar: verdeutlicht die Einzelschritte und stellt zusätzliche
Informationen (möglicherweise auch Bedingungen) zur Verfügung.
Include Beziehung: Pfeil von A nach B: Use-Case A schließt immer Use-Case B ein. B kann jedoch auch in verschiedenen Use-Cases genutzt werden.
Extend Beziehung: Pfeil von B nach A: Use-Case A kann, muss aber nicht durch
Use-Case B erweitert werden. A besitzt auslagerbare Sonderfälle.