IGIS
Grundlagen der industriellen Softwaretechnik
Grundlagen der industriellen Softwaretechnik
-
- 1 / 135
-
Lernkarten
Standards für Zeichendarstellung?
z.B. ASCII, UTF-8 oder Unicode
Berechnung einer Dezimalzahl?
Eimgabe -> Umwandlung in eine Binärzahl -> Berechnung -> Umwandlung des Ergebnisses in eine Dezimalzahl -> Ausgabe
Physikalische & elektronische Möglichkeiten zur Darstellung des Binärsystems?
-Lichtschalter (ein & aus)
-Lampe (ein & aus)
-CD / DVD / BluRay (Wechsel zwischen hoch & tief)
-Magnetische Bereiche die in zwei unterschiedliche Zustände gebracht werden können
Boollsche Operatoren?
UND, ODER, NICHT
Von-Neumann-Architektur?
Speicher, Ein-/Ausgabe, Bus, CPU (ALU & Steuerwerk)
Allgemeines Konzept zur Konstruktion von universellen Rechnern
Ablauf von Berechnungen in der Von-Neumann-Architektur?
Befehler werden von dem Steuerwerk aus dem Speicher in die ALU geladen und dort ausgeführt
Nach Ausführung lädt das Steuerwerk den nächsten Befehl
Verteiltes Softwaresytem?
Ein System das nur im Zusammenspiel mehrerer über ein Kommunikationsnetz verbundener Rechner genutzt werden kann
Typische Elemente eines verteilten Softwaresystem?
-Server (bietet an)
-Client (fragt an)
-Kommunikationsnetz (Kabel, Wellen, Router, etc.)
-Netzwerkschnittstelle
-Nachricht (wird in Datenpakete zerlegt)
Referenzmodelle für Kommunikationsnetze?
Diese beschreiben über mehrere Schichten wie eine Nachrichtenaaustausch abzulaufen hat. Diese Netzwerkarchitekturen als Gerüst ermöglichen den Austausch von Nachrichten plattformübergreifend möglich zu machen.
z.B. OSI-Referenzmodell oder TCP-/IP-Referenzmodell
Protokolle? (Kommunikationsnetze)
Protokolle sind Funktionen die für das Codieren & Decodieren von Nachrichten in einer Sdchicht eingesetzt werden.
OSI-Referenzmodell?
-allgemeingültiges Referenzmodell für Netzwerkarchitekturen
-besteht aus 7 Schichten:
-Anwendungsschicht
-Darstellungsschicht
-Sitzungsschicht
-Transportschicht
-Vermittlungsschicht
-Sicherungsschicht
-Bitübertragungsschicht
TCP-/IP-Referenzmodell?
-In der Praxis häufig verwendetes Referenzmodell für Netzwerkarchitekturen
-besteht aus 4 Schichten:
-Anwendungsschicht
-Transportschicht
-Internetschicht
-Host-zu-Netz-Schicht
Transportschicht?
Die Schicht in der die eigentlich Übertragung zwischen Server & Client stattfindet und überprüft wird
Vermittlungsschicht?
Schicht auf der die technische Komponenten der Datenvermittlung arbeiten
Betriebliche Informationssysteme?
ein gewerblich eingesetztes Software-System:
-Kommunikationssysteme
-Querschnittsysteme (eingesetzte Standardsoftware)
-Operative Systeme (unterstützen gezielt Geschäftsprozesse & Aktivitäten)
-Dispositive Systeme (unterstützen Planungs- & Entscheidungsprozesse)
Einfluss auf die Anforderungen eines Softwaresystems?
-Stakeholder
-rechtliche Vorgaben
-technologische Entwicklungen
-Marktsituation
->sich ändernde und widersprechende Anforderungen
Hinsichten der Komplexität eines industriellen Softwaresystems?
-vielfältige Funktionen
-komplexe Anwendungslandschaft mit viele Schnittstellen
-viele Anwender
-vielfältige Geräte / OS
-soll erweiterbar sein
-viele an der Erstellung Beteiligte
-viele Komponenten & Teilsysteme
-immateriell
Von Softwaresystemen geforderte Eigenschaften?
-Wartbarkeit
-Korrektheit
-Usability
-Zuverlässigkeit
-Performance
-Robustheit -> Keine Fehler / Falschausgaben bei falscher Handhabe
-Wiederverwendbarkeit
-Portierbarkeit
-Interoperabilität
Softwaretechnik?
die strukturierte & methodische Planung, Erstellung & Weiterentwicklung von Softwaresystemen, sowie deren Betrieb.
Softwarekrise?
Aufgrund der immer mächtigeren Hardware entstand das Problem, dass die Software immer komplexer werden musste und viele Projekte scheiterten. Gelöst wird diese Problematik durch die Entwicklung neuer Methoden & Strategien zur Erstellung von Softwaresystemen.
Patterns?
organisatorische & technische Strukturen, die sich über mehrere Projekte hinweg bewährt haben.
Grenzen der Softwaretechnik?
Kaum natürliche, physikalische Grenzen wie z.B. Schwerkraft, Widerstand oder Reibung.
Die größten Einschränkungen liegen bei der Abstraktions- & Kommunikationsfähigkeit der beteiligten Personen.
Gründe für die steigende Komplexität von Softwaresystemen?
-leistungsfähigere Hardware
-ausdrucksmächtigere Programmiersprachen
-Mobilisierung von Rechnersystemen
-steigende Vernetzung von Rechnersystemen
Unterschied zwischen Software Engineering & anderen Ingeneursdisziplinen?
kaum natürliche Einschränkungen, hauptsächlich Einschränkungen bei den beteiligten Personen
Risiken die zum Abbruch vor der Fertigstellung führen können?
-Zentrale Anforderungen sind nicht realisierbar
-Kosten laufen völlig aus dem Rahmen, keine belastbaren Angaben zu erwartenden Kosten
-Streitigkeiten zwischen Beteiligten des Projekts, welche eine konstruktive Zusammenarbeit nicht mehr möglich machen
Risiken die dazu führen können, dass ein ausgeliefertes System nicht eingesetzt werden kann?
-Fachfunktionen fehlen oder sind falsch umgesetzt
-geforderte Qualitätseigenschaften wurde nicht erfüllt
-Anwender lehnen das System ab
Risiken die dazu führen, dass bei der Wartung / Weiterentwicklung mehr Fehler erzeugt, als Probleme gelöst werden?
-Mangelnde Dokumentation verhindert abschätzbare Handlungen
-interne Struktur des Systems ist degeneriert und fordert enormen Aufwand, selbst bei kleinen Änderungen
-Mangelndes Wissen über im System eingesetzte Technologien
Wesentlicher Einflussfaktor für Projektrisiken neben Komplexität und Immaterialtät.
Software Engineering ist ein stark erkenntnisgetriebener Prozess.
Problem der Plurabilität von Stakeholdern?
Die viele Stakeholder haben oft konkurrierende Wünsche & Erwartungen an das System.
Technologiezentriertheit?
Es wird ein zu starker Fokus auf die technische Aspekte gelegt, statt auf Anforderungen & Fachfunktionen. (fehlendes Fachwissen der Entwickler)
Bedeutung eines ausgeprägten Kommunikationsmanagements?
-Management von unterschiedlichen Zielvorstellungen, bedeutsam damit wichtige Entscheidungen rechtzeitig getroffen werden.
-Persönliche Konflikte dürfen sich nicht auf das Projekt auswirken
Wesentliche Herausforderungen im Software Engineering?
-Wirtschaftliche Ungewissheit
-Technologische Ungewissheit
-Kommunikation
-Zielkonflikte
-Komplexität
Wirtschaftliche Ungewissheit?
-"Cone of Uncertainty"
-Erst im Verlauf eines Projektes lassen sich genaue Abschätzungen über das Projekt abgeben
-je früher die Kosten geschätzt werden, desto weiter weicht die Schätzung von den tatsächlichen Kosten ab
Technologische Ungewissheit?
-Vergleichbar mit der wirtschaftlichen Ungewissheit, lediglich im Bezug auf die Schätzung wie das System hinterher aussieht
-Die Realisierung des Systems entwickelt sich im Verlauf des Projekts
Herausforderungen im Software Engineering:
Kommunikation
Viele Beteiligte / Stakeholder und deren Wünsche müssen unter einen Hut gebracht werden
Herausforderungen im Software Engineering:
Zielkonflikte
-das "magische Dreieck"
-Qualität, Termin, Kosten
-nur zwei lassen sich umsetzen
Herausforderungen im Software Engineering:
Komplexität
Viele technische Komponenten, Schnittstellen zu anderen Systemen und implementierte Funktionen, sowie die Immaerialität stellt Anforderungen an das menschliche Abstraktionsvermögen
Phasen des Software-Lebenszyklus?
Planung
Entwicklung
Betrieb
Wartung
Abschaltung
Nutzung des Modells des Softwarelebenszyklus?
-für mittel- und langfristige Projektplanung
-Basis für Personal-, Ressourcen-, & Investitionsplanung
-Bestimmung phasentypischer Aktivitäten
Bedarfsermittlung für ein Softwaresystem? Typische Anlässe?
-Ablösung bestehender Altsysteme
-Nachfrage der Fachabteilungen
-Technologische Weiterentwicklungen