2. Entwicklung von Softwaresystemen Flashcards
Was ist Software Engineering?
Software Engineering ist das systematische, disziplinierte und quantifizierbare Vorgehen zur Entwicklung, zum Betrieb und zur Wartung von Software, kurz: die Arbeit an Software nach Ingenieurprinzipien.
Warum scheitern Softwareprojekte und welche Herausforderungen gibt es in der Entwicklung?
Gründe für Misserfolg:
- Fehlende Erfolgsabschätzung.
- Überschreitung von Zeit und Budget.
- Erwartete Funktionalität nicht erreicht.
Herausforderungen in der Entwicklung:
- Anfangszeit: Software nur vom Ersteller vollständig verstanden.
- Steigende Komplexität erfordert Zusammenarbeit im Team.
- Notwendigkeit geordneter Prozesse und systematischer Vorgehensweisen.
Vorgehensmodell in Softwareentwicklung
Definiert systematisch die Schritte und Zusammenarbeit der Entwickler und Stakeholder. Software Engineering umfasst zudem Bereiche wie Anforderungsmanagement, Projektmanagement, Qualitäts- und Testmanagement sowie die Dokumentation.
Besonderheiten des Softwareentwicklungsprozesses
- Abstrakte Produkte: Software ist nicht greifbar, was Anforderungen und Tests komplexer macht.
- Kostenstruktur: Keine Materialkosten, jedoch Lizenz- und Betriebskosten.
- Entwicklungszyklen: Schnellere Zyklen im Vergleich zu klassischen Ingenieursdisziplinen.
Was ist Software Entwicklung?
Eng gefasst als reine Programmierung verstanden; im weiteren Sinne umfasst es den gesamten Prozess von Anforderungsdefinition bis zum fertigen Produkt.
Warum ist ein systematisches Entwicklungsprozess notwendig?
Softwareentwicklung ohne einen strukturierten Prozess führt oft zu hohen Ausfallquoten und deutlichen Überschreitungen von Budget und Zeit.
Was sind Webanwendungen?
Webanwendungen sind Applikationen, die über das Internet bereitgestellt werden und über einen Browser aufgerufen werden.
Welche Vorteile bieten Webanwendungen?
- Keine Installation oder manuelle Updates notwendig.
- Plattformunabhängig (ein Browser genügt).
- Zentrale Datenhaltung ermöglicht Zugriff von verschiedenen Geräten und reduziert Datenausfallrisiken.
Was sind wichtige Aspekte bei der Entwicklung von Webanwendungen?
- Kompatibilität (Browser, Endgeräte, Bildschirmgrößen) - Responsive Design
- Performance (Netzwerkverbindung, Datenübertragung & Latenz minimieren)
- Releasezyklus (Ohne eingreifen des Nutzers, Erwartungen hoch, Fehlerbehebung schnell > bei Entwicklung bedenken)
- Sicherheit und Datenschutz (Datenübertragung im öffentlichen Netzwerk)
Was sind wichtige Aspekte bei der Entwicklung von mobiler/nativer Apps?
- Betriebssystemwahl: Android und iOS, meist für beide entwickelt
- verschiedene Herangehensweisen:
o native Appentwicklung (einzeln für das jeweilige Betriebssystem optimiert entwickelt)
o hybride Appentwicklung (Kosten- und Zeitvorteile, aber nicht optimiert > schlechtere Performance oder weniger Funktionalität) - User Interface beachten (Apps für kleine Bildschirme und Touchbedienung)
- mobile Nutzung (Batterieverbrauch, instabile Internetverbindung > offline Nutzung planen)
- Endgerät Funktionalitäten Nutzern (Rotation, GPS, Kamera)
- Sicherheit & Datenschutz
- Vertrieb (Appstore erhält Provision)
Web Apps vs. Native Apps
Web-Apps:
- Werden über den Browser aufgerufen,
- Können unabhängig vom Gerät und Betriebssystem genutzt werden, solange ein Browser ausgeführt werden kann,
- Können unabhängig vom Nutzer aktualisiert werden.
Native Apps:
- Laufen direkt auf dem Betriebssystem des Endgeräts,
- Können einfach auf gerätespezifische Hardware zugreifen (z. B. Kamera, GPS, Beschleunigungssensor),
- Werden in einem App-Store angeboten,
- Können Offline-Funktionalitäten haben.
Wann sind native Apps besser geeignet als Web-Apps?
Native Apps sind besser bei komplexen Anwendungsszenarien, die großen Rechenbedarf haben und auf Gerätehardware zugreifen müssen.
Was sind wichtige Entscheidungen bei der Entwicklung einer App?
Entwicklungsmethodik: Auswahl eines geeigneten Vorgehensmodells für die App-Entwicklung.
Teamzusammensetzung: Sicherstellung, dass alle erforderlichen Fähigkeiten im Team vertreten sind.
Technologieauswahl: Entscheidung zwischen nativer App (für Qualität) oder hybrider App (für Geschwindigkeit und Plattformverfügbarkeit).
User Experience und Testing: Sicherstellung einer positiven Benutzererfahrung und Testen der Bedienbarkeit durch frühe Nutzerrückmeldungen.
Sicherheits- und Datenschutzaspekte: Berücksichtigung dieser Themen vor Markteintritt, um Risiken zu minimieren und Compliance zu gewährleisten.
Problematik bei Start-Up Entwicklung
Start-ups setzen auf schnelle Prototypentwicklung, um Kunden und Investoren zu gewinnen.
Dies steht im Spannungsfeld zu den strukturierten Prinzipien des Software-Engineerings.
Welche Methoden gibt es, um die Kundenakzeptanz neuer Anwendung zu messen?
- Umfragen (schriftlich, in der Anwendung selbst, per Online-Fragebogen…),
- Interviews (Einzel, Gruppen),
- Beobachtung (Eye-Tracking, Nutzungsstatistiken, etc.).