Individuelle & agile Softwareentwicklung
15 Jahre Erfahrung in der Softwareentwicklung
Seit 15 Jahren entwickeln wir Softwareprojekte, in dieser Zeit haben sich Art und Größe von webbasierten Anwendungen und Software insgesamt umglaublich gewandelt. Früher war Softwareentwicklung häufig noch eine komplizierte Angelegenheit, bei der es vor allem auf genaue Planung, gute Projektsteuerung und eine genaue Umsetzung ankam.
Dagegen entstehen heute häufig bei der Umsetzung von Softwareprojekten z.B. aufgrund schneller Marktveränderungen und vielfälltiger Abhängigkeiten und Schnittstellen eher komplexe, und somit kaum planbare, Aufgaben. Daher hilft eine genaue Vorabplanung wenig, wenn sich die Anforderungen oder Prioritäten bereits in dem Moment verändern können, wenn die Umsetzung beginnt. Daher bevorzugen wir die agile Softwareentwicklung um jederzeit auf Veränderungen reagieren zu können.
So arbeiten wir
Die Arbeitsweise der agilen Softwareentwicklung ist sehr transparent, der Kunde oder Auftraggeber wird kontinuierlich eingebunden und ist so stets auf dem aktuellen Stand der Entwicklung.
Neben der Softwareentwicklung sind wir gelernte Systemintegratoren und haben mit der Systemadministration Erfahrung seit 20 Jahren.
Ist die Anwendung einmal online und wird mit ihr aktiv gearbeitet, bieten wir Ihnen bei Bedarf gern ein individuelles Wartungs- & Betreuungskonzept an.
Die Vorteile der agilen Softwareentwicklung
Die Arbeitsweise der agilen Softwareentwicklung ist sehr transparent, der Kunde oder Auftraggeber wird kontinuierlich eingebunden und ist so stets auf dem aktuellen Stand der Entwicklung.
Im Kern geht es bei der agilen Softwareentwicklung darum, das gesamte Projekt zunächst nur grob zu vorauszuplanen und die Entwicklung in kleine Abschnitte, sogenannte Sprints von 2-4 Wochen zu unterteilen. Mit dem Kunden werden zu Beginn jeden Abschnitts gemeinsam die aktuellen Prioritäten und Anforderungen im Detail besprochen und geplant. Am Ende jedes Abschnitts werden die Ergebnisse gemeinsam durchgesprochen, bei Bedarf die Arbeitsweise optimiert und der nächste Abschnitt geplant.
Das Ergebnis jedes Abschnitts bzw. Sprints ist ein vollständig funktionierende Software. Es mag sein, dass die Software noch nicht viel kann aber das was sie kann funktioniert auch. So wir das Werkstück nach und nach um weitere Funktionen und Eigenschaften ergänzt.
Die Vorteile dieser Arbeitsweise liegen klar auf der Hand. Führten früher Änderungen im Projektverlauf zu hohen Mehrkosten, sind diese in agilen Projekten kein Problem, Änderungen sind sogar vorgesehen. Das Risiko wird auf die Länge eines Sprints reduziert – möchte der Auftraggeber den Dienstleister wechseln, so kann er das nach jedem Sprint tun und bekommt ein funktionierendes Stück Software, dass andere Entwickler weiterentwickeln können.
Hosting Ihrer Webanwendung
Neben der Softwareentwicklung sind wir gelernte Systemintegratoren und haben mit der Systemadministration Erfahrung seit 20 Jahren. Das Installieren, Konfigurieren und Betreiben von Serversystemen liegt uns im Blut. Daher können wir Server-Infrastrukturen entsprechend der Projekt- oder Kundenanforderungen konfigurieren, absichern und im weiteren Betrieb betreuen.
Nach der Aufnahme der Kriterien des Kunden erstellen wir bei Bedarf eine Nutzwertanalyse, in der neben finanziellen, auch nicht-monetäre Aspekte einbezogen, verglichen und unterschiedlich gewichtet werden können. Als Ergebnis dieser Auswertung bekommen Sie eine valide Entscheidungsgrundlage.
Wartung & Betreuung
Individuelle Konzepte
Ist die Anwendung einmal online und wird mit ihr aktiv gearbeitet, bieten wir Ihnen bei Bedarf gern ein individuelles Wartungs- & Betreuungskonzept an. Der Umfang hängt dabei häufig davon ab, ob sich beim Kunden eine eigene IT-Abteilung um die Systeme kümmert oder ein “Rundum-Glücklich-Paket” gewünscht wird. Dies kann somit lediglich das Systemmonitoring und das Einspielen kritischer Sicherheitsupdates beinhalten. Zudem gehört auch die regelmäßige Sicherung von Daten nach dem Generationsprinzip dazu.
Kontakt aufnehmen
Erzählen Sie von Ihrer Software und wir beraten Sie gerne!
Adrien
Geschäftsführer & Agiler Coach
Finja
Projektmangerin
Johannes
Product Owner
Ablauf einer agilen Softwareentwicklung
Ob ein Upgrade, ein Refactoring oder eine Neuentwicklung geplant ist, am Anfang steht immer die Erstellung einer IST Analyse und eines SOLL Konzepts. Nachdem wir eine Inventur gemacht haben, schlagen wir mögliche Lösungsoptionen vor und erläutern bei Bedarf die Vor- und Nachteile.
- Analyse
- Architektur
- Versionierung
- Reviews
- Testing
- Deployment
Am Anfang steht immer das Erstellen einer IST Analyse und eines SOLL Konzepts
Zu Beginn der Projekte steht die Analyse bzw. Erhebung des IST-Zustandes und des SOLL Konzeptes. Es hat sich gezeigt, dass ein Workshop gemeinsam mit Kunden und Entwicklern am Anfang des Projektes sehr hilfreich ist, wir nennen das den “Projekt-Kickoff Workshop”.
Hier kann z.B. die Projektvision formuliert und das Grundgerüst der Anwendung in einer Storymap erarbeitet und visualisiert werden. Gemeinsam werden auch die Prioritäten ermittelt und festgelegt. Danach ist klar, in welcher Reihenfolge die Umsetzung erfolgt.
Alle Anforderungen sammeln wir in UserStories, also einer sehr groben Beschreibung der Aufgabe, die für Nichttechniker und Entwickler gleichermaßen verständlich ist. Jede Userstory wird im weiteren Projektverlauf weiter ausdefiniert, bis die Aufgabenstellung glasklar ist, danach kann sie in die Umsetzung gehen.
Architektur & Design
Auf Basis dieses Grundgerüsts der Anforderungen, entwickeln die Software-Architekten einen Lösungsansatz. Das umfasst die Wahl der passenden Technologie und der richtigen Software-Architektur. Das kann man sich vorstellen wie bei einem Haus, das entweder aus unterschiedlichen Werkstoffen wie Holz, Stein oder Metall gebaut werden kann und je nach Einsatzzweck architektonisch verschieden geplant wird. So erfüllt ein Büro andere Anforderungen als ein Hotel oder ein Wohnhaus.
Stehen die Architektur und das Design, wird das Grundgerüst der Anwendung entsprechend der Prioritäten entwickelt. So werden je nach Bedarf beispielsweise eine Benutzerverwaltung, Schnittstellen zu anderen Systemen oder eine Auftragsverwaltung angelegt.
Dabei werden in der Regel zunächst die jeweiligen Basisfunktionen implementiert und das Ergebnis zunächst dem Kunden präsentiert und mit ihm besprochen. Auf dieser Basis werden dann die weiteren Funktionalitäten oder Prozesse geplant und iterativ, also nach und nach in den weiteren Sprints umgesetzt.
Förderung der Software-Qualität
Bei der Softwareentwicklung setzen wir auf den Einsatz unterschiedlicher Hilfsmittel zur Förderung der Software-Qualität. Sie sorgen für Transparenz, verringern das Fehlerpotential und fördern eine gute Zusammenarbeit – dadurch können wir gute Qualiät sicherstellen und nachweisen und unterstützen eine Lernkultur im Team.
Durch Systeme zur Code-Versionierung wie z.B. Git und Gitlab ist jeder Beitrag eines jeden Entwicklers zu jeder Zeit für alle sichtbar und nachvollziehbar. Jede Veränderung am Code wird nachgehalten und kann schnell und einfach mit vorherigen Versionen verglichen werden. So ist der gesamte Entwicklungsverlauf einfach nachvollziehbar.
Qualitätssteigerung der entwickelten Software/Webanwendung
Uns ist eine wertschätzende, offene und positive Fehlerkultur sehr wichtig – Fehler werden immer passieren und brauchen nicht kaschiert werden, denn aus Fehlern kann man am besten lernen. Es müssen lediglich die richtigen Maßnahmen ergriffen werden um sie frühzeitig zu erkennen.
Daher führen wir unter anderem regelmäßig gegenseitige Code-Reviews der Entwickler durch, bevor Code in den Produktivstamm der Anwendung übernommen wird. Dadurch steigt die Qualität und die Entwickler lernen kontinuierlich voneinander.
Verschiedene Arten von Testing
Um die beste Qualität unserer Software zu erzielen, folgen wir dem Test-Driven-Ansatz der Softwareentwicklung. Jede von uns implementierte Funktion wird eingehend auf Unit, Functional, Integration und Penetration getestet um ein optimales Qualitätsmanagement zu gewährleisten.
Dabei setzen wir auf unterschiedliche Arten von Tests, die größtenteils automatisch von Systemen ausgeführt werden, sobald ein Entwickler eine Änderung am Code beisteuern möchte. Um zu vermeiden, dass sich neue Fehler einschleichen wird dabei überprüft, ob alles was bisher fehlerfrei funktionierte auch weiterhin funktioniert.
Oder es wird durch eine Automatisierung überprüft, ob Code-Konventionen eingehalten wurden, wie z.B. Vermeidung schlecht lesbarer Funktionen oder einer bestimmte Schreibweise. Dadurch wird Code für jedermann gut und einfach änder- oder erweiterbar. Die Zeiten, als man von “dem einen Entwickler” abhing, der den Code versteht, sind damit längst Geschichte.
Continous Integration – Continous Deployment
Wir konzentrieren uns gern auf die Softwareentwicklung, indem wir das gesamte Potenzial moderner DevOps-Entwicklungsplattformen nutzen, um die Integrations- und Bereitstellungsprozesse (Continous Integration/Continous Deployment) zu automatisieren. Auf diese Weise kann unser Team einen höheren Beitrag zum eigentlichen Wert der Software leisten.
Dinge, die häufiger wiederholt werden, gehören automatisiert. Dazu gehört zum Beispiel neben dem Testen auch das Veröffentlichen der neuesten Software-Version auf dem Produktivsystem, das sogenannte Deployment. Ist der Vorgang bzw. der Prozess dafür einmal im CI/CD-Server konfiguriert, so kann er beliebig oft zuverlässig wiederholt werden.
Damit ist das Release einer neuen Version überhaupt keine Herausforderung mehr und kann theoretisch sogar vom Azubi durchgeführt werden, da die Ergebnisse vorhersehbar und planbar werden.