3. SE - Entwicklung von Software Flashcards
Was ist das Ziel der Softwarewiederverwendung?
Herstellkosten verringern
Wartungskosten verringern
Projektdauer verkürzen
Qualität erhöhen
Was kann bei einer Software wiederverwendet werden?
ganze Anwendungssysteme
Komponenten
einzelne Klassen
Was sind die Kriterien über Entscheidung über Wiederverwendung bestehender Software
Entwicklungszeit der Software: Bestehende Systeme integrieren geht meist schneller als neue zu schreiben
Nutzungsdauer der Software: Langfristig die Wartung zu garantieren ist schwierig, wenn Sourcecode der verwendeten Komponenten nicht hat
Erfahrungen und Kenntnisse des Entwicklungsteams
Kompromissbereitschaft der Kunden: funktionale Abweichungen von Anforderungen im Kauf genommen, um Wiederverwendung zu ermöglichen?
Was passiert in CASE-Tools? (Code-Generator)
Programmfragmente anhand von Designs generiert
In welchen Anwendungssystemen werden Reports anhand von Benutzereingaben generiert (Code-Generator)
In betriebswirtschaftlichen
Bedeutung API
Viele Standardsoftwaresysteme haben definierte Schnittstellen
Wie baut man umfangreiche Standardsoftwares auf?
indem man mehrere Standardsysteme miteinander verbindet
Woran scheitert die Verwendung von Standardsoftware oft?
Konfiguration nicht flexibel genug auf die Anforderungen anpassbar
Setzt sich die Wiederverwendung von einzelnen Klassen durch?
Überhaupt nicht. Klassen wären dann zwar flexibler aber im Einsatz sehr komplex
Wie kann ein Kompromiss bei der Wiederverwendung von Klassen aussehen?
Wiederverwendung von Komponenten mittlerer Größe. Diese werden unabhängig voneinander konzipiert und sollen zu einem Anwendungssystem integriert werden
Was zeigt das UML-Komponentendiagramm
Die von einer Komponenten benötigte (verwendete) und die von einer Komponente angebotene (bereitstellen) Schnittstellen
Komponenten VS. Klassen
Nenne die wichtigsten Daten von Komponenten
- nicht im Rahmen einer Anwendung kompiliert, sondern liegen kompiliert vor und werden dann auf Komponentenplattform installiert
- definieren keine Objekte
- Black Box. Ausschließlich über Schnittstellen ansprechbar
- auf manchen Komponentenplattformen sprachunabhängig
- standartisiert, müssen gemäss einem Komponentenmodell entwickelt werden
- implementieren i.d.R. größere Funktionalität als einzelne Klassen
Worin unterscheiden sich Parameter mit Komponenten?
- selbe Bezeichnung
- unterscheiden sich in Anzahl, Reihenfolge, Datentyp
Worin unterscheiden sich Operationen mit Klassen
Ihre Bezeichnung
Entwickelt sich ein freier Markt von Komponenten?
Kaum
Wo gibt es meistens Wiederverwendung für Komponenten
unternehmensintern
Bsp. Login, Suchfunktion
Gute Grundsätze objektorientierter Entwicklung
getter/setter Methoden, keine ungefangenen Exceptions
Was sollte man bei der Entwicklung von objektorientierter Entwicklung vermeiden?
Fließkommazahlen Pointer Dynamische Speicherallokationen Nebenläufigkeit Unbeschränkte Arrays
Was versteht man unter Defensive programming
In Code werden Überprüfungen aufgenommen, eig für Funktionieren des Algorithmus nicht nötig wären
- Fehler in Spezifikation werden nicht entdeckt
Neue Anforderungen nach dem GO LIVE eines Systems, die Wartung erforderlich machen
- aufgrund veränderter Geschäftsprozesse, neuer oder geänderter funktionaler Anforderungen
- zu Korrektur festgestellter Fehler
- zur Anpassung an eine andere Plattform
- zur Verbesserung der Performanz
Warum lohnt es sich während der Entwicklung in die Wartbarkeit zu investieren
- Mit Wartung betrauter Personen müssen speziellen Aspekte des Systems einarbeiten
- mit zunehmender Nutzungsdauer gibt es immer weniger Experten für System zugrundeliegenden Programmiersprachen, Plattformen, Schnittstellen, bei Dokumentation verwendeten Modellierungstechniken etc.
- mit zunehmender Nutzungsdauer verkompliziert die Wartungsarbeiten die Architektur und Struktur des Systems immer weiter. Zusätzlich Arbeiten werden dadurch noch aufwendiger
Vorteile Software Reengineering
Kosten geringer als bei vollständiger Neuentwicklung. Risiko geringer.
Warum werden hohe Kosten einer Neuentwicklung in Kauf genommen?
Um neue Funktionen zu berücksichtigen
Wann ist es sinnvoll Legacy-Systeme neu zu implementieren?
Bsp
Um Wartbarkeit bestehender Systeme zu verbessern
Bsp. Neue Dokumentationen, neue Architektur, andere Programmiersprache
Ändert sich die Funktionalität bei Software Reengineering
Nein
Strategie zur Weiterentwicklung von Legacy-Systemen (Unter welchen umständen soll was mit einem System passieren?)
- Geschäftsprozess seit Einführung zu sehr geändert dass kaum noch vom System abhängen = System komplett abschalten
- Weitere Wartungen mit vertretbaren Kosten = im betrieb bleiben und regelmäßig gewartet
- System nach viel Anpassung und Änderung unstrukturiert und schlecht wartbar, aber für wichtige Geschäftsprozesse gebraucht = Software Reengineering in Betracht ziehen
- Funktionalität eines Systems noch gebraucht, Funktionen im großen Umfang geändert oder erweitert werden oder mit vielen neuen Schnittstellen an neue Infrastruktur angepasst werden muss = ganz oder teilweise durch neues System ersetzt