05 - Entwicklung von Software Flashcards
Abkürzung: COTS
Commercial off the Shelf (Standardsoftware)
Ziele: Softwarewiederverwendung (4)
1) Herstellkosten verringern
2) Wartungskosten verringern
3) Projektdauer verkürzen
4) Qualität erhöhen
Entscheidungskriterien für die Softwarewiederverwendung (4)
1) Entwicklungszeit der Software
2) Nutzungsdauer der Software
3) Erfahrungen und Kenntnisse des Entwicklungsteams
4) Kompromissbereitschaft der Kunden
Wiederverwendungsansätze (11)
1) Entwurfsmuster
2) Komponentenbasiert
3) Anwendungsrahmen
4) Wrapper um Legacy-Systeme
5) Dienstorientierte Systeme
6) Anwendungsproduktlinien
7) COTS-Integration
8) Konfigurierbare vertikale Anwendungen
9) Programmbibliotheken
10) Programmgeneratoren
11) Aspektorientierte Softwareentwicklung
Definition: Anwendungsrahmen (Wiederverwendungsansätze)
Zusammenstellungen von abstrakten und konkreten Klassen, die angepasst und erweitert werden können, um Anwendungssysteme aufzubauen
Definition: Anwendungsproduktlinien (Wiederverwendungsansätze)
Ein Anwendungstyp wird mit Hilfe einer gemeinsamen Architektur verallgemeinert, so dass er an verschiedene Kunden angepasst werden kann.
Definition: Aspektorientierte Softwareentwicklung (Wiederverwendungsansätze)
Gemeinsam genutzte Komponenten werden bei der Kompilierung des Programms an verschiedenen Stellen “eingewoben”.
Beispiele: Code-Generatoren (2)
1) Bei CASE (Computer Aided Software Engineering) Anwendungen können oft anhand von Designs Codeblöcke generiert werden.
2) Generieren von Reports bei Benutzereingaben für ERP Systeme
Beispiel: COTS-Integration
Bereitgestellte APIs von der COTS Software, die dem Entwickler ermöglichen Umfangreiche Softwaresysteme durch das verbinden von mehreren COTS Schnittstellen.
Definition: Komponentenbasiertes SE
Hier werden Komponenten die einiges kleiner sind als Klassen wiederverwendet (FUBAs) die unabhängig voneinander konzipiert wurden und somit in ein Anwendungssystem integrierbar sind.
Eigenschaften: Komponenten (6)
1) Werden nicht im Rahmen einer Anwendung kompiliert, sondern sie liegen kompiliert vor und werden dann auf einer Komponentenplattform installiert.
2) Definieren keine Objekte
3) Sind eine Black-Box und somit ausschließlich über ihre Schnittstellen ansprechbar.
4) Auf manchen Komponentenplattformen sprachunabhängig
5) Standardisiert
6) Implementieren in der Regel eine größere Funktionalität als einzelne Klassen
Komponenten in der Praxis (2)
1) Es entwickelt sich kaum ein freier Markt für Komponenten
2) Werden nur Unternehmensintern verwendet z.B. Login
Fehleranfällige Konstrukte (Verlässliche Entwicklung) (5)
1) Fließkommazahlen
2) Pointer
3) Dynamische Speicherallokation (C++)
4) Nebenläufigkeit
5) Unbeschränkte Arrays
Definition: Defensive Programming
Es wird nach Sachen geprüft, die eigentlich gar nicht nach Ausführung des Quelltextes passieren sollten. Dennoch könnnen Spezifikationsfehler hiermit nicht erkannt werden.
Gründe für Weiterentwicklung (4)
1) Veränderungen in Geschäftsprozessen
2) Korrektur für festgestellte Fehler
3) Anpassung an eine andere Plattform
4) Verbesserung der Performanz
Kostenprinzip: Wartung von Software
Sollte durchaus während der Entwicklung hier investiert werden, dazu muss man aber feststellen dass je mehr Wartungskosten in das System einfließen, desto zunehmend weniger haben diese Investitionen eine spürbare Wirkung.
Definition: Software Reengineering
Hier entscheidet man sich Legacy-Systeme neu zu implementieren. Es ändern sich zwar die Dokumentation, Architektur und Programmiersprache, aber die Funktionalitäten sollen gleich bleiben. Dieser Ansatz ist eigentlich unbeliebt, da die höheren Kosten von einer Neuentwicklung eher in Kauf genommen werden, damit neue Funktionen entwickelt werden können.
Strategien zur Weiterentwicklung von Legacy-Systemen (4)
1) System abschalten - zu viel hat sich an den Geschäftsprozessen geändert.
2) Wartung fortsetzen - bei überschaubaren Kosten
3) Reengineering - Nach vielen Anpassungen und Änderungen wirkt das Legacy-System unwartbar und unstrukturiert
4) Neuentwicklung - System wird noch gebrauch aber es sind neue Funktionen gewollt