Entwicklung von Software Flashcards
Definition Softwareentwicklung
Auf Grundlage des Entwurfs wird ein Softwaresystem in einer Programmiersprache entwickelt
Ziele der Softwarewiederverwendung
- Herstellkosten verringern
- Wartungskosten verringern
- Projektdauer verkürzen
- Qualität erhöhen
–> Wiederverwendung von ganzen Anwendungen, Klassen, Komponenten
Kriterien für Entscheidung über Wiederverwendung
- Entwicklungszeit der Software
- Nutzungsdauer der Software
- Erfahrungen und Kenntnisse des Entwicklungsteams
- Kompromissbereitschaft der Kunden
Softwarewiederverwendung mithilfe von..
- Schnittstellen (APIs)
- Code-Generatoren
Komponentenbasiertes Softwareengineering
- unabhängig konzipierte Komponenten werden zu einem Anwendungssystem integriert
- Standardsoftware oft nicht flexibel genug
UML-Komponentendiagramm
zeigt die von einer Komponente benötigten und die von einer Komponente angebotenen Schnittstellen
Komponenten vs. Klassen
- werden bereits kompiliert auf Komponentenplattform installiert
- definieren keine Objekte
- nur über Schnittstellen ansprechbar (Blackbox)
- entwickelt gemäß Komponentenmodell (standardisiert)
- größere Funktionalität als Klassen
Inkompatibilität zwischen Komponenten
- Bezeichnung von Operationen unterscheiden sich
- unterschiedliche Parameter
Prinzipien verlässlicher Entwicklung
- getter/setter-Methoden
- keine ungefangenen Exceptions
- Vermeidung von Fließkommazahlen, Pointern, Nebenläufigkeit
Defensive programming
- Überprüfungen im Code, die für Algorithmus nicht notwendig wären
- Fehler in Spezifikation werden damit nicht entdeckt
Weiterentwicklung von Software
nach Go-live:
- Fehlerbehebung
- Softwareanpassung oder Plattformanpassung
- Hinzufügen oder Ändern von Funktionen
Weiterentwicklung von Software: Wartbarkeit
- teuer, daher: während Entwicklung darauf achten
- Experten für Technik (werden weniger)
- Struktur und Architektur wird mit der Zeit aufwendiger
Weiterentwicklung von Software: Reengineering
- Neuimplementierung von Legacy-Systemen
- geringeres Risiko und Kosten als Neuentwicklung
- Funktionalität ändert sich nicht
Strategien zur Weiterentwicklung von Legacy-Systemen
- Abschalten des Systems bei großer Änderung der Geschäftsprozesse seit Einführung
- regelmäßige Wartung bei akzeptablen Kosten (bleibt in Betrieb)
- System unstrukturiert + schlecht wartbar, aber geschäftskritisch: Software Reengineering
Revision Control System (RCS)
- Software zu Versionsverwaltung von Dateien und Dokumentation von Änderungen
- verwaltet einzelne Dateien, keine Projekte
- keine Checksumme, daher anfälliger für Fehler
- mittlerweile von CVS abgelöst