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