SoED
-
-
Set of flashcards Details
Flashcards | 56 |
---|---|
Language | Deutsch |
Category | Computer Science |
Level | University |
Created / Updated | 29.06.2017 / 09.07.2017 |
Weblink |
https://card2brain.ch/box/20170629_soed
|
Embed |
<iframe src="https://card2brain.ch/box/20170629_soed/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Create or copy sets of flashcards
With an upgrade you can create or copy an unlimited number of sets and use many more additional features.
Log in to see all the cards.
Design Thinking
Design Thinking ist ein Software Engineering Prozess welcher auf Requirements Engineering und Prototyping fokussiert ist.
Ziele von Requirements Engineering
Eine funktionale Beschreibung des System aus der User Perspektive mit folgenden Informationen:
Funktionell & nicht funktionale Requirements
Domain Requirements
Erste Ideen Sammeln für das UI
UML elemente in 4 Kategorien
- Structural elements (class, object, use case)
- Annotational elements (note)
- Grouping elements (package, module)
- Behavioral elements (activity, state)
External Perspective: Context Models
Sie zeigen, was außerhalb der Systemgrenzen liegt. Definition von "out of scope" auf Systemebene
Generalization
Wird verwendet um komplexität zu verringern.
Verwendung von Vererbungen (Inheritance)
Polymorphismus
Beudeutet dass ein object attribut oder methode während laufzeit verscheidene varianten haben kann
Abstrakte Klassen
Von dieser Klassen kann keine Instanz (Konstruktor) erstellt werden. Dient als Oberklasse von der dann geerbt wird. Z.B. Pizza wäre die Oberklasse und Margherita, Procuitto die Unterklassen die von Pizza erben. Public abstract class BLABLA
4 + 1 Ansicht “Software Architektur Model”
analysis and design view (logical view)
Zeigt die Grund Abstraktionen, als Objekte oder Klassen, auf.
Für funktionale Anforderungen.
process view
Zeigt auf wie das System sich währen der Laufzeit verhält
shows how, at run-time, the system is composed of interacting processesFür nicht funktionale Anforderungen
implementation view (development view)
Zeigt auf wie die Software aufgebaut und aufgeteilt ist für die Entwicklung
Für das Projekt Management
deployment view (physical view)
Zeigt auf wie die Komponenten auf die Hardware verteilt wird
Für die Entwicklung und verteilung der Software
relation of all views to use cases or scenarios (+1)
Für User und System Anforderungen
Object-Oriented Design (OOD)
OOD modelliert das System als zusammengesetzte Objekte. Das Informationsmodell (Systemzustand) wird somit auf verschiedene Objekte verteilt
UML Prinzipien
1) Use Cases zu System Inhalt
2) System Inhalt zu Architektur
3) Architektur zu Klassen model
4) Klassen zu Design Model
5) Design Model zu Implementation
Vergleichen Sie die beiden Arten von Softwareprodukten
- Generische Produke (Build to stock, BTS) vs. Kunden spezifische („angepasste“) Produkte (Build to order, BTO)
- BTS: Produkt wird hergestellt unabhängig davon ob ein Kundenstamm besteht
- Lizenzen werden verkauft
- SW Hersteller besitzt alle Lizenzrechte
- Analogie: Automobil
- BTO: Produkt wird für, und in Absprache mit Kunden hergestellt
- Arbeitszeit wird verkauft
- Kunde besitzt alle Lizenzrechte
- Analogie: Bauvorhaben
- BTS: Produkt wird hergestellt unabhängig davon ob ein Kundenstamm besteht
Nennen Sie die Gründe für Softwarevalidierung und -verifikation.
Verifikation: Zeigen dass das System den Spezifikationen entspricht
Validation: Zeigen/Sicherstellen dass das System den Anforderungen des Verwenders entspricht
Welche beiden Faktoren sind relevant damit die kosteneffiziente Änderung an einem Softwareprodukt gewährleistet werden kann?
- Change anticipation: Entwicklungsprozess beinhaltet Aktivitäten die eine Prognose zu den geplanten Änderungen erzeugt (e.g. Erstellung eines Prototyps mit Hauptfunktionen)
- Change tolerance: Die Prozesse sind so implementiert, dass Änderungen zu relativ geringen Kosten (= Zeit) umgesetzt werden können. Setzt einen inkrementellen Entwicklungsprozess voraus.
Beschreiben Sie den Begriff Prototyp in der Softwareentwicklung. In welchen Phasen des Entwicklungsprozesses werden Prototypen eingesetzt? Was sind Gefahren und Möglichkeiten eines Prototyps?
- Ein Prototyp ist eine initiale Version eines verwendeten Systems benutzt um bestimmte Konzepte und neue design Optionen zu demonstrieren. Meist werden eigene Sprachen und Tools fürs schnelle Prototyping verwendet. Ein Prototyp umfasst nicht alle Funktionalitäten des Endprodukts (Meist nur Prozesse die man besser verstehen möchte).
- Vorteile: Kostengünstige Tests und Kundenfeedback für neue Konzepte, Denken „Out of the Box“ (e.g. starke Umstrukturierung, neue Libraries) möglich
- Nachteile: Gefahr des Abschweifens vom Wesentlichen, (= unproduktive Zeit) Kundenfeedback kann unwesentlich sein („Dieser Button geht nicht“ etc.)
- Anwendung: Prototypen werde in den folgenden Phasen eingesetzt:
- Requirements engineering: Besseres Verständnis der Anforderungen
- Design: Design Optionen und UI Designs ausprobieren
- Test: Interface Integration Tests (?)
Wieso ist es sinnvoll Prototypen nach deren Verwendung zu verwerfen?
- Prototypen können meist nicht so verändert werden, dass alle non-funktionalen Anforderungen getroffen werden
- Prototypen sind in der Regel nicht dokumentiert
- Die Struktur des Prototyps ist meist schlecht, weil schnelle Resultate zählen
RUP die 3 Perspektiven
(1) Dynamische Perspektive: Zeigt Phasen im Laufe der Zeit
(2) Statische Perspektive: Zeigt Prozessaktivitäten
(3) Best Practice Perspektive: Schlägt bewährte Praktiken vor
Waterfall Model
Vorteile / Nachteile
Pro
- Kosten sind vorsehbar (Voraussetzung ist gute Planung)
- Einfach zu verwenden
- Kontrolle über die Fertigstellungszeit
Contra
- Funktioniert nur gut wenn sich Requirements nicht ändern. Wenn sie sich ändern ist es nicht empfehlenswert
- Fortschritt in den einzelnen Phasen schwer zu erkennen
- Falsche Zeiteinschätzung für die einzelnen Phasen kann grosse Zeitverschiebungen verursachen
Incremental Development
Vorteile / Nachteile
Pro
- Zwischenversionen können Kunden gezeigt werden und wenn gefordert, angepasst werden.
- Kostengünstigere Anpassung von Anforderungen
- Debug und Testen ist in kleinen Iterationen viel einfacher
Contra
- Kann sein dass Kunde jeden Tag etwas anderes will. So kommt man nie zu einer finalen Version
- Nicht geeignet wenn Ergebnis schon klar definiert ist. Da ist Waterfall geeigneter.
- Der Projektstatus ist nicht klar ersichtlich
RUP Iterationsphasen
- Inception (Anwendungsfall für das system definieren (eine analyse))
- Elaboration (Verständniss der Business umgebung und system architektur)
- Construction (System designen, programmieren, testen)
- Transition (System in die Umgebung einbinden)
RUP Best Practices Perspective
- Requirements im Dokument festhalten
- Wiederverwendbare Komponenten verwenden
- UML verwenden um Software abzubilden
- Kontrolle über Änderung der Software
- Softwarequalität sicherstellen
Agile Prinzipien
- Kunden involvieren (Im Entwicklungsprozess miteinbeziehen)
- Schrittweise Lieferung
- Leute nicht Prozesse (Mitglieder sollten frei sein zu programmieren)
- Veränderungen einbeziehen (Vorbereitet sein auf Systemänderungen)
- Einfachheit beibehalten (Komplexität verhindern im System)
Which are potential difficulties of agile principles?
Leute nicht Prozesse: Wenn „Cracks“ freie Hand haben heisst, das noch lange nicht das etwas Gutes dabei herauskommt.
Extreme Programming: Entwicklungsprozess
User stories: Kunde wird in Entwicklung eingebunden. User stories oder scenarios als user requirements
Break down: Diese werden dann vom Entwicklerteam zu kleinen Tasks gebrochen
Plan release: Kunde wählt die zu umsetzende Story für den nächsten release
Develop: Keine Requiremets Festhaltung sondern nur Storyboard Implementierung
Evaluate: Feedback vom Kunden
Requirements Engineering: Typen von Anforderungen
- Benutzeranforderungen (Systembeschreibung aus Kundensicht, Lastenheft)
- Systemanforderungen (Systembeschreibung aus technischer Sicht, Pflichtenheft)
Requirements Engineering: Functional and Non-functional Requirements
Funktionale Anforderungen
• Was soll das System leisten?
• Welche Dienste soll es anbieten?
• Eingaben, Verarbeitungen, Ausgaben
• Was es NICHT machen soll
Nicht-funktionale Anforderungen
Müssen messbar sein.
• Wie soll das System/einzelne Funktionen arbeiten?
• Qualitätsanforderungen wie Performanz und Zuverlässigkeit
Requirements Engineering: Non-functional Requirements Types
Es gibt drei Haupttypen von nun-functional Requirements
- Produkt Anforderungen
- Z.B. Antwortzeiten, Startzeiten, Ausfallsicherheit
- Organisatorische Anforderungen
- z.B. Prozessstandards, Implementationsanforderungen
- Externe Anforderungen
- z.B. Juristische Anforderungen, Kompatibilität mit Umsystemen
Requirements Engineering: Domain Requirements
Die Domäne setzt neue Anforderungen am System
- z.B. Bremskraft eines Zuges muss im Regen anders gehandelt werden als im Sommer
- Domäne Requirements können wiederum neue functional Requirements sein
- ISO Standards
Wenn Domänenanforderungen nicht erfüllt sind, kann das System nicht funktionieren.
Design Thinking: Prozess
- Scoping (Recherchemaßnahmen werden geplant und eingeleitet)
- Research (Hier gilt es, die Zielgruppe und deren Bedürfnisse zu verstehen)
- Synthesize (Durch Storytelling erzählen sich die Teammitglieder ihre Erkenntnisse und Erfahrungen
- Design (Ziel ist das Produzieren von möglichst vielen Ideen anhand von Storyboards)
- Prototype (Ideen anhand von Prototypen ausprobieren)
a.Low-Fidelity Prototyping
Bevorzugter Weg zum Prototypen in Design Thinking. Verwendet ein Medium, das im Gegensatz zum endgültigen Medium ist, z.B. Papier, Karton
b.Card-based Prototypes
Ausgehend von einem Storyboard, entwerfe eine Karte für jeden Schritt (Papierkarten). Oft für Software verwendet, wo der Benutzer durch verschiedene Fenster (Bildschirme) navigiert: Webseiten, mobile Anwendungen
- Validate (Feedback von Zielgruppe für Verbesserungen, Prototyp kann hier verworfen werden)
-
- 1 / 56
-