Applikationen und Softwarearchitekturen unterscheiden sich hinsichtlich ihres Designs, der Technologieeinsatzes und der Zielumgebung. Diese Unterschiede beeinflussen sowohl die Auswahl der Werkzeuge als auch den Entwicklungsprozess erheblich. Im Folgenden werden die zentralen Merkmale verschiedener Applikationstypen und Softwarearchitekturen beschrieben und deren Einfluss auf Werkzeuge und Prozesse erklärt.

Wesentliche Merkmale von Applikationstypen

TypDefinitionMerkmaleEntwicklungstoolsTestingDeployment
Fat ClientEine Anwendung, die grösstenteils lokal auf einem Gerät läuft und nur teilweise mit einem Server interagiert.Lokale Ressourcen, Offline-Fähigkeit, Komplexe InstallationLokale Entwicklungsumgebungen wie Visual Studio, IntelliJ IDEAFokus auf Plattformkompatibilität und Hardware-RessourcenVerwendung von Installationspaketen oder automatisierten Tools wie Windows Installer
Thin ClientEine Anwendung, die grösstenteils auf einem Server läuft, während der Client lediglich die Benutzerschnittstelle bereitstellt.Zentrale Verwaltung, Geringe Anforderungen, NetzwerkabhängigkeitWebframeworks wie Angular, React, oder Vue.jsFokus auf Browserkompatibilität und NetzwerklatenzContinuous Integration/Continuous Deployment (CI/CD)
Mobile ClientEine speziell für mobile Geräte entwickelte Anwendung.Plattformabhängigkeit, Ressourcenoptimierung, IntegrationPlattformspezifische IDEs wie Android Studio oder Xcode, oder plattformübergreifende Frameworks wie Flutter oder React NativeFokus auf Usability, Performance und plattformspezifische FunktionenVeröffentlichung in App-Stores (Google Play, Apple App Store) mit entsprechenden Zertifizierungen

Wesentliche Merkmale von Softwarearchitekturen

TypDefinitionMerkmaleEntwicklungstoolsTestingDeployment
Web-ApplikationenAnwendungen, die über einen Webbrowser zugänglich sind und auf einem Webserver laufen.Zentraler Server, Cross-Plattform, SkalierbarkeitHTML, CSS, JavaScript, Django, Flask, Spring BootFunktionalität, Browserkompatibilität, Sicherheit, PerformanceHosting-Dienste wie AWS, Azure oder On-Premises
Mobile ApplikationenAnwendungen, die speziell für mobile Geräte wie Smartphones oder Tablets entwickelt wurden.Native oder plattformübergreifend, Offline-Funktionalität, Kleine BildschirmgrössenAndroid Studio, Xcode, Flutter, React NativePlattformübergreifende Funktionalität, Responsiveness, HardwaretestsStore-Zertifizierungen, Release-Management
3-Tier Enterprise-ApplikationenEnterprise-Applikationen mit einer typischen Dreischichtenarchitektur: Präsentationsschicht (UI), Logikschicht (Server) und Datenzugriffsschicht (Datenbank).Modularität, Verteilte Systeme, Hohe KomplexitätSpring, Hibernate, AngularIntegrationstests zwischen Schichten, Datenbanktests, LasttestsContainerisierung (Docker), Orchestrierung (Kubernetes)

Einfluss auf den Entwicklungsprozess

Einfluss auf den EntwicklungsprozessWeb-ApplikationenMobile AppsEnterprise-Systeme
TechnologieauswahlFlutter für mobile AppsSpring Boot für 3-Tier-Enterprise-Systeme 
TeamstrukturEntwickler mit Frontend- und Backend-KompetenzenSpezialisten für Android/iOS oder plattformübergreifende EntwicklungTeams mit Experten für Datenbanken, Middleware und UI
Testing-ProzesseCross-Browser-TestingGerätetests, ResponsivenessIntegration und Performance
Deployment-StrategienDeployment auf Servern oder in der CloudVeröffentlichung in App-StoresKomplexe Deployment-Pipelines mit Containern und Orchestrierung