Softwaretechnik (Fach) / SoftwareTechnik (Lektion)

In dieser Lektion befinden sich 22 Karteikarten

Informatik

Diese Lektion wurde von GettingBetter erstellt.

Lektion lernen

  • Was ist im Sinne der Softwaretechnik ein Modell Ein Modell ist ein zielgerichtetes Abbild eines Systems, dass die Realität durch Abstraktion auf die problemrelevanten Aspekte vereinfacht. Es steht nur das drin, was wir zur Lösung unseres Problems brauchen. Hierzu ähnliche Beobachtungen und Aussagen ermöglicht wie das Ausgangssystem. Die Definition stammt von Andreas Winter. Ein Modell ist zielgerichtet, was bedeutet dass es nicht das Modell gibt, sondern dass es davon abhängt was man machen will und wofür man es braucht.
  • Softwarelebenslauf (Aktivitäten und Phasen)   Problemstellung ->(Problemstellung) analysieren Studie -> (Anforderung) definieren Anforderungsdefinition -> entwerfen und spezifizieren Architektur und Bausteine -> implementieren und integrieren fertiges System -> installieren fertiges System in der Zielumgebung -> betreiben und warten    
  • Analysieren   Verstehen und Erfassen der Aufgabenstellung und Abschätzen der Durchführbarkeit und der Erfolgsaussichten.
  • Problemanalyse   –  Durchführbarkeitsstudie (soll 3 Fragen beantworten): (a)  LeistetdasSystemeinenBeitragzurVerwirklichungderGesamtzieleeinesUn- ternehmens? (b)  KanndasSystemmitderaktuellenTechnologie,undinnerhalbderKosten-Zeit- Beschränkungen realisiert werden? (c)  Kann das System mit anderen Systemen zusammenarbeiten, die schon im Be- trieb sind?   –  Glossar: Lexikonartige Beschreibung der wesentlichen Begriffe des Anwendungs- bereiches, dient der Kommunikation zwischen Auftraggeber und Auftragnehmer   –  Lastenheft: grobes Pflichtenheft, enthält Anforderungslisten   –  Anforderungsliste: einenummerierteundgruppierteListevonAnforderungen(mög- lichst vollständig, redundanzfrei und widerspruchsfrei). – Anwendungsfalldiagramme: Ein Anwendungsfall (use case) ist eine Klasse von Abläufen, die eine Funktionalität realisieren und zu beobachtbaren Ereignissen füh- ren. Alle use cases zusammen decken die gesamte Funktionalität des Systems ab.
  • Definieren   Aufstellen der Anforderungen zur Lösung der Aufgabenstellung.
  • Anforderungsdefinition (Pflichtenheft)   –  Verfeinerung der Dokumente, die in derAnalyse-Phase entstanden sind(z.B.durch Szenarien) und daraus erste Verantwortlichkeiten der Klassen herleiten. –  Pflichtenheft: (a) enthält die Anforderungen an das Produkt (das Was und nicht das Wie) (b) stellt die Grundlage für die Entwicklung dar (c) ist die Vertragsgrundlage zwischen Auftraggeber und Hersteller   –  je nach Methode grobes Produktmodell (Klassendiagramm und/oder Datenfluss- diagramm) –  durchgängige Protokollierung projektrelevanter Gespräche
  • Entwerfen und Spezifizieren   –  Entwerfen : erfolgt nach dem Zerlegungsprinzip Identifikation der Hauptkomponenten Bausteine und Beziehungen identifizieren (d.h. das Konkretisieren eines Bausteins durch weitere Bausteine und deren Beziehungen) ist erfahrungsbasiert. Es existiert keine generelle Entwurfsme- thode. Je nach Sicht geht man mit Strukturierter Analyse oder Objektorientiertem Entwurf vor. Man kann verschiedene Architekturstile verwenden, bestehend aus der Angabe einer Architektursicht (Paradigma) und einer Architekturstruktur. –  Spezifizieren das genaue Beschreiben was die Bausteine tun (Signatur) (d.h. das Präzisieren von Anforderungen, die an einen Baustein ge- stellt werden) kann natürlichsprachlich oder formal (d.h. algebraisch oder kon- struktiv) erfolgen.
  • Architektur und Bausteinspezifikation   – Unterscheidung nach [Balzert]: ∗  Architektur: die strukturierte oder hierarchische Anordnung der Systemkom- ponenten und ihre Beziehungen untereinander ∗  Spezifikation jeder Systemkomponente: Festlegung von Schnittstelle, Funktions- und Leistungsumfang
  • Implementieren und Integrieren   –  Beim Implementieren werden die Prinzipien der Softwaretechnik berücksichtigt, man hält sich an Programmier-Konventionen, verwendet Design-Patterns und führt ständiges Refactoring durch. Implementieren heißt Bausteine in eine Programmiersprache umsetzen, Generell heißt Implementieren entwickeln. Da man ein großes zerlegtes System hatte , geht das Implementieren den Weg hierarchich wieder zurück –  Beim Integrieren (d.h. dem Montieren und Validieren von Bausteinen) geht man inkrementell und nach einer Integrationsstrategie vor. Das Zerlegen war Top Down, zerlegt wurde in lauter Einzelbausteine, die hat man spezifiziert und entwickelt und jetzt muss man die wiederzusammenfügen. Das meint man mit Integrieren.
  • (fertiges) System + Dokumentation liegt zwischen: Implementieren und Integrieren (fertiges) System und Dokumentation Installieren
  • Installieren   Einrichten des Systems in seine Zielumgebung.
  • System in der Zielumgebung Liegt zwischen: Installieren System in der Zielumgebung Betreiben und Warten
  • Welche ist die aufwändigste Phase im Softwarelebenslauf? Wie lange im Verhältnis?   Der Aufwand zwischen Entwicklung und Wartung/Pflege verteilt sich im Verhältnis 0.33 - 0.66 Entwicklung Wartung: 0.33 Pflege: 0.66
  • Generelle Vorgehensweise bei Problemstellung/Aufgabenstellung Zerlegen in kleinere Probleme Überprüfung auf Lösbarkeit gibt es schon eine Lösung/Software die das Problem (besser) löst in theoretischer Informatik gibt es unlösbare Probleme, so einen Auftrag nicht annehmen
  • Was macht ingenieurwissenschaften aus? Ingenieurwissenschaften macht aus, dass man Anforderungen erhebt und präzise erarbeitet, was man machen muss.
  • Ist der Softwarelebenslauf schon ein Vorgehensmodell?   Nein, es handelt sich um ein konzeptuelles Modell, das die wesentlichen Aktivitäten erfassen soll. In einem Vorgehensmodell wird festgelegt, welche Aktivitäten in welcher Reihenfolge von welchen Personen erledigt werden und welche Ergebnisse (Artefakte) dabei entstehen und wie diese in der Qualitätssicherung überprüft werden. Es können anzuwendende Standards, Methoden und Tools festgelegt werden. [Balzert] z.B: Scrum, extremeProgramming etc sind Vorgehensmodelle Vorgehensmodelle sind nützliche Abstraktionen, die benutzt werden können, um verschie- dene Ansätze der Softwareentwicklung zu erläutern. [Sommerville]
  • Was sind Anforderungen? Wie würden Sie in der Anforderungsanalyse vorgehen? Welche Dokumente entstehen bei der Analyse / Anforderungsdefinition? Erklären Sie die Dokumente! Was notiert man noch zu den Anforderungen? Stakeholder identifizieren Gespräche führen Dokumente analysieren Vorgänge erheben Kreativitätstechniken einsetzen Ergebnis: Vision (kurzer Text, dient der Orientierung) Anforderungsliste Glossar (erklärt Begriffe der Anforderungsliste/Lexikonartie Beschreibung) Ist alles Teil des Pflichtenheftes == Anforderungsdefinition
  • Stakeholder   Stakeholder (Betroffene, Beteiligte) sind Personen oder Personengruppen, die ein System benutzen, in Betrieb halten, entwickeln oder sonst irgendein Interesse daran haben.
  • Anforderungen erstellen - Gespräche führen   Um die Anforderungen von den Stakeholdern zu erheben, sollte man alle Mittel der Kommunikation nutzen: Selbstaufschreibung Interviews Fragebögen Massen E-Mail ...
  • Anforderungen erstellen - Dokumente analysieren   Unter Dokumentenanalyse versteht man das Sammeln und Verarbeiten vorhandener Dokumente zur Erhebung von Anforderungen. Man sollte fragen, ob man die Dateien haben kann die der Anwender verwendet Beispiele: – Formulare – Excel‐Dateien – Statistiken – Übersichten – vorhandene Software   Die Dokumentenanalyse hilft, das Glossar zu füllen ein erstes Informationsmodell (Domänenmodell) zu erstellen gute Fragen in den Gesprächen zu stellen  
  • Anforderungen erfassen - Vorgänge erheben   Unter Ablauferhebung versteht man das Erfassen und Darstellen der wesentlichen (vorhandenen) Vorgänge (Abläufe, Geschäftsprozesse). Techniken: Beobachtung Beteiligung   Die Ablauferhebung hilft, – die Domäne besser zu verstehen – die Anwendungsfälle zu identifizieren – gute Fragen in Gesprächen zu stellen
  • Anforderungen erfassen - Kreativitätstechniken (Soft Skills (Soziale Kompetenz)) Brainstorming MindMapping MetaPlan (Variante des Brainstorming für grössere Gruppen 15-20, geht länger) Wie kann man mit Gruppen interagieren, etc