Die Realisierung anspruchsvoller Unternehmenslösungen erfordert den Einsatz von effektiven Software-Engineering-Methoden, das bedeutet eine exakte Planungsarbeit und Durchführung. In 20 Jahren Software Engineering haben sich bei BAYOOTEC zahlreiche Best Practice-Ansätze herauskristallisiert, aus denen ein termingerechter und qualitativ hochwertiger Softwareentwicklungsprozess entstanden ist.
Aus dieser langjährigen Erfahrung in der Applikationsentwicklung kennen wir die Erfolgsfaktoren und Risiken, sowohl der herkömmlichen als auch der agilen Arbeitsweisen, aus einer Vielzahl von Projekten. So können Sie sich darauf verlassen, dass wir für Ihre Anforderungen immer den richtigen Mix erfolgversprechender Methoden und Tools zum Einsatz bringen. Dabei begleiten wir unsere Kund:innen über alle Phasen des Software-Lebenszyklus und stellen so eine gleichmäßig hohe Qualität der Ergebnisse sicher.
Requirements Engineering
Probleme in einer IT-Landschaft werden von Anwender:innen und Verantwortlichen mitunter nur diffus wahrgenommen. Man merkt, dass etwas nicht wie gewünscht funktioniert, kann aber die Ursachen nicht klar identifizieren. Die Entwicklung zielgerichteter Maßnahmen zur Verbesserung der unbefriedigenden Situation ist dann kaum möglich. Um dem vorzubeugen, ist das vollständige Erfassen, Verstehen und Durchdringen einer Aufgabenstellung die Voraussetzung für das Finden wirkungsvoller Lösungen. In einem gemeinsamen Workshop arbeiten wir die wesentlichen Punkte aus. Die Dokumentation als Ergebnis des Workshops enthält die Ausgangssituation sowie die Problembeschreibung und Motivation für das Vorhaben. Sie nennt die Zielsetzungen des Projekts und die technischen und organisatorischen Anforderungen. Projektabgrenzungen und zu berücksichtigende Randbedingungen vervollständigen den Umfang.
Der gemeinsame Workshop fördert das Verständnis aller Beteiligten über das geplante Vorhaben und öffnet den Blick für mögliche Lösungen. Ergebnisse sind technische und organisatorische Vorschläge, die nach der im Anschluss folgenden Beratungsphase in ein konkretes Projektangebot münden.
Softwarearchitektur
Das Softwarearchitektur-Design ist einer der wichtigsten und kritischsten Schritte im Entwicklungsprozess einer Software. Aus diesem Grund beschäftigen sich bei BAYOOTEC nur die qualifiziertesten und erfahrensten Mitarbeiter:innen mit der Erstellung der Softwarearchitektur. Sie stellen so die Weichen, damit am Ende alles ineinandergreift und unsere Kund:innen von einer durchdachten und performanten Lösung profitieren.
Der Begriff „Architektur“ suggeriert zwar eine in sich abgeschlossene Phase – in unserer Auffassung handelt es sich jedoch um eine den gesamten Lebenszyklus begleitende Aufgabe.
Zu Anfang eines Projektes erstellen wir immer eine Systemarchitektur (Architekturentwurf) auf Basis der Anforderungen. Die Anforderungen werden dabei erneut analysiert und um architekturbedingte, „technische“ Anforderungen ergänzt. Der nächste Schritt besteht aus der Identifikation der Risiken, die sich anhand der Anforderungen ergeben, wie z.B. ein enger Zeitplan, widersprüchliche Anforderungen, Mehrdeutigkeit, mangelnde Dokumentation von Drittsystemen, etc. In unserem Verständnis der Architekt:innenrolle endet die Aufgabe nicht damit, auf die Risiken hinzuweisen. Vielmehr sollen mögliche Maßnahmen zu ihrer Minimierung geliefert werden.
Nachdem in den ersten Phasen die Frage hinreichend geklärt wurde, „was“ entwickelt werden soll, folgt der eigentliche Softwareentwurf, also die Klärung des „wie“. Auch hier bedienen wir uns eines analytischen Ansatzes und erstellen zunächst einen Grobentwurf, den wir anschließend zu einem Feinentwurf ausarbeiten. Diese Vorgehensweise ermöglicht es, ins Detail zu gehen, ohne dabei jedoch das „große Ganze“ aus den Augen zu verlieren. Bei dem Entwurf selbst setzen wir auf in der Praxis erprobte Entwurfsprinzipien und Patterns.
Nachdem ein Feinentwurf der Architektur erstellt worden ist, wird dieser mit allen Stakeholder:innen geteilt und verständlich gemacht. Während des eigentlichen Entwicklungsprozesses wird stets überwacht, ob die Implementierung der Architektur entspricht und ob sie eventuell angepasst werden muss. Es findet also eine ständige Bewertung der Architektur statt (z.B. anhand des „Architecture Tradeoff Analysis Method“-Verfahrens) mit anschließender Prüfung auf geänderte Anforderungen, die eine Architekturänderung nötig machen (Anforderungsanalyse). Somit wird der Entwurf stets in einer Balance zwischen der Implementierung und den (sich meistens ändernden) Anforderungen gehalten.
Software Engineering
Die Phase der Software-Implementierung beschäftigt sich mit der Konkretisierung und Umsetzung der Anforderungen. Am Ende steht die fertige Anwendung, die nur darauf wartet, im Business erfolgreich eingesetzt zu werden. Unsere Entwickler:innen beherrschen ihre Werkzeuge, sind methodenerprobt und überaus „sprachversiert“.
Validation und Verifikation
Jede neue Software soll am Ende sicher, fehlerfrei und mit Erfolg funktionieren. Deshalb arbeiten unsere Entwickler:innen mit automatisierten Tests, die von Anfang an und in allen Bereichen ihre Arbeit überwachen und ein direktes Feedback geben. „Böse Überraschungen“ gibt es bei uns nicht, denn Schwachstellen werden früh erkannt, die damit einhergehende Zeitersparnis sichert die Einhaltung der Projektlaufzeit von Anfang an.
Weiterentwicklung und Betrieb
Auch über die Fertigstellung und Auslieferung eines Projektes hinaus betreuen wir unsere Kund:innen im normalen Betriebsalltag. Oftmals lässt sich Optimierungspotenzial erst im laufenden Betrieb feststellen oder eine neue Plattform weckt Begehrlichkeiten, in Form neuer Funktionalitäten bei anderen Abteilungen. Mit der Maintenance der Software gewährleisten wir deren Verwendbarkeit und Betriebssicherheit sowie die reibungslose Weiterentwicklung.
Dabei stehen wir nicht nur für Maintenance Tasks zur Verfügung, sondern unterstützen den kompletten DevOps Prozess. Durch regelmäßige, neue Features und Anpassungen der Architektur ist die kontinuierliche Pflege gewährleistet und die Qualität immer auf dem besten und neuesten Stand.
- Monitoring und Support
- Entwicklung neuer Features
- Prozess- und Performance-Optimierung
- Continuous Integration und Continuous Delivery
- Testautomatisierung
- IT-Infrastruktur und -Wartung
Hierzu kommen feste Regelungen über Service Level Agreements zum Einsatz, die für uns zum normalen Projektgeschehen dazugehören.