Software Engineering

Individual Software – der Maßanzug für Unternehmen

applied technologies unterstützt Sie bei der Erstellung Ihrer individuellen Softwarelösung. Ganz gleich, ob Sie nur Unterstützung für Ihr eigenes Team benötigen, einzelne Module oder Leistungen fremdvergeben wollen oder die gesamte Lösung schlüsselfertig erwerben wollen.
Unser Leistungsangebot umfasst alle Phasen des Software-Lebenszyklus von der Anforderungsanalyse, über die Spezifikation, dem Design & Prototyping, der eigentlichen Realisierung, Testing bis hin zur Integration und der Betriebsunterstützung.

Unser Ziel: Ihr Erfolg!

applied technologies ist ausgerichtet auf die Entwicklung maßgeschneiderter Individualsoftware. Mit einem Team unterschiedlicher Experten bieten wir Projektunterstützung, Lösungen sowie Beratung. Neben einem energiewirtschaftlichen Branchenschwerpunkt unterstützen wir Unternehmen aller Branchen mit Technologien und Software Engineering.
Im Jahr der Unternehmensgründung 2001 veröffentlichten mehrere Software-Experten das sogenannte „Agile Manifesto“. . Mit diesem Manifest erlangte die agile Softwareentwicklung unter Nutzung iterativer Vorgehensmodelle einen hohen Stellenwert. Wir befolgen die in diesem Manifest veröffentlichten Prinzipien in der Umsetzung unserer Lösungen.
So wird in verschiedenen Projekten das Vorgehensmodell SCRUM von zertifizierten SCRUM-Mastern angewendet. Methoden wie Test-Driven-Development mit Unit-Tests, Continuous Integration, Daily Builds, Refactoring und Configuration Management gehören zum Handwerkszeug der Entwickler.
Um auf dem Markt mit seinen sich ändernden Anforderungen und dem Druck des „time to market“ mit seinen Softwarelösungen bestehen zu können, ist es zwingend erforderlich, ein professionelles Software Engineering anzuwenden. Wir unterstützen Sie in allen Phasen der Softwareentwicklung. Der Konzeption, dem Entwurf, der Architektur, der Konstruktion, beim Test und dem Einsatz der Software. Wir übernehmen in Ihrem Projekt verschiedene Aufgaben bzw. begleiten Sie bei der Einführung von iterativen Vorgehensmodellen.

Unsere Dienstleistungen bieten wir Ihnen als Prozessexperten, Software-Ingenieure und -Architekten, Coach, Mentor oder als Projektleiter an.

Software Architekturen

Eine Software-System-Architektur beschreibt die Struktur und Grundelemente eines Systems, der Schnittstellen, Beziehungen und Kommunikationsstrategien. Die Architektur zählt somit zu den frühesten Design-Entscheidungen in einem Entwicklungsprozess. Die Modifizierbarkeit, Wartbarkeit und Performanz einer Lösung sind direkt von der Architektur abhängig.

SOA, ESB, BPM, Portale

Im Zusammenhang mit zukunftsfähigen Softwarearchitekturen spielen Service-Orientierte Architekturen (SOA), Enterprise Service Bus (ESB), Business Process Management (BPM) und Portale eine wichtige Rolle.

Technische Basis eines nutzbringenden Business Process Managements sind Plattformen zur Prozessausführung (wie z. B. Microsoft BizTalk Server, Microsoft SharePoint, Microsoft Workflow Foundation). In Kombination mit einer Serviceorientierten Architektur lassen sich mit der BPM-Plattform modulare Services zu längeren Prozessketten orchestrieren bzw. zusammensetzen.

Ein Enterprise Service Bus besteht im Kern aus einer Kommunikationskomponente (z. B. Microsoft BizTalk Server), über den Nachrichten ausgetauscht werden können. Services verbinden ihre Schnittstellen über Endpunkte mit dem Bus. Nutzer der Services (Clients) kommunizieren mit dem Serviceanbieter, indem Nachrichten über den Bus ausgetauscht werden.

Als Bedienoberfläche für die Interaktion mit Geschäftsprozessen kommen Portale (z. B. Microsoft SharePoint) zum Einsatz. Relevante Informationen aus Geschäftsprozessen und Applikationen werden zusammengestellt und der Öffentlichkeit bzw. einer definierten Zielgruppe über einen Webbrowser bzw. über Smartphones/Tablets zur Verfügung gestellt.

Change Management

Das einzig konstante in der Softwareentwicklung ist „Änderung“. Mit der Erstellung eines Software-Konzepts über die Erstellung einer Software bis hin zur Wartung eines Systems ändert sich eine Software ständig. Erfolgreiche Projekte zeichnen sich dadurch aus, dass sie Änderungen managen.
as Thema Change Management läßt sich in zwei Aspekte unterteilen, das Software Konfigurationsmanagement sowie einen Prozess zur Kontrolle von Änderungen (Change Control Process).

Software Konfigurationsmanagement

Unter Software Konfigurationsmanagement wird die systematische Verwaltung und Kontrolle über Versionen, Workspaces, Builds und Releases von Software-Artefakten (Anforderungs-, Design-, Source-Dokumente/Dateien, Programme) verstanden. Wird das Konfigurationsmanagement korrekt installiert und angewendet, stellt es eine wesentliche Komponente für eine erfolgreiche Softwareentwicklung dar.
Häufig wird das Konfigurations-Management jedoch als zusätzlicher Aufwand zur Verwaltung signifikanter Versionen verstanden oder aber im schlimmsten Fall nur als Backup-Instrument eingesetzt. Eine Anwendung auf einem derart niedrigem Level führt dazu, dass Änderungen aus der Sicht des Projektmanagers nur passiv verfolgt werden können, in der Hoffnung, das zu erstellende System werde seinen Zweck erfüllen.
applied technologies unterstützt Sie bei der Einführung und Anwendung eines Software-Konfigurationsmanagements sowie der Auswahl geeigneter Konfigurationsmanagement-Tools.

Change Control Process

Änderungen an einer Software haben ihren Ursprung in einer von drei Kategorien:

  • geplante Entwicklung:
    Im Idealfall ergeben sich alle Änderungen an einer Software aufgrund einer geplanten Entwicklung auf Basis von Anforderungen und Spezifikationen.
  • unerwartete Probleme:
    Während des Lebenszyklus einer Software (Inception, Elaboration, Construction, Transition) werden Probleme auftreten, die zu beheben sind.
  • Erweiterungen:
    Jedes Softwareprojekt besteht zu einem gewissen Teil aus Forschung und Entwicklung. Dieser Aufwand führt zu Ideen und Vorschlägen, die das Erreichen eines Projektziels erleichtern, oder aber den Projekterfolg gefährden können. Ein Change Control Process ist ein formaler Mechanismus für den Umgang mit Änderungen. Änderungsanträge werden systematisch in ihrer Auswirkung auf ein System untersucht, bevor eine Entscheidung über die Realisierung gefällt wird.

Wir installieren in Ihrem Projekt einen Change Control Process, der Sie in die Lage versetzt, Projekt-Stakeholdern die Auswirkung (Zeit und Kosten) von Änderungen zu verdeutlichen, Änderungen zu managen und damit die Kontrolle über ein Projekt zu gewinnen.

Iterative Entwicklungsprozesse

Untersuchungen belegen, dass sich im Laufe eines Jahres 25% der Anforderungen an ein Softwaresystem verändern. Die Abwicklung von Projekten im Wasserfall-Modell (Analyse, Design, Realisierung, Test, Inbetriebnahme) führt dabei fast zwangsläufig zu Termin- und Budgetüberschreitungen.
Iterative, agile Entwicklungsprozesse (z. B. Rational Unified Process RUP, eXtreme Programming, Adaptive Software Development, Agile Alliance, SCRUM) bieten Lösungsansätze für die Problemstellungen der heutigen Zeit. In frühen Vorgehensmodellen wurde davon ausgegangen, dass die Erfüllung oder Einhaltung eines Plans mit der Zufriedenstellung des Kunden gleichzusetzen ist. Der Erfolg eines Projekts stellt sich einzig und allein durch die gelieferte Software dar. Ein Entwicklungsprozess muss in der Lage sein, auf Änderungen zu reagieren. Dies gilt nicht nur für veränderte Anforderungen des Kunden, auch der Entwicklungsprozess selbst muss sich den Gegebenheiten anpassen.

Iterative und agile Entwicklungsprozesse zeichnen sich durch folgende Eigenschaften aus:

  • kontinuierliche Lieferung von Software mit business value:
    das höchste Ziel eines Dienstleisters ist die Zufriedenstellung des Kunden. In der Softwareentwicklung kann dies durch frühzeitige und ständige Lieferung von sinnvoll nutzbarer Software ermöglicht werden. Der Kunde wird frühzeitig in die Lage versetzt, Teile der Software anzuwenden. In kurzen Iterationen (abhängig von Größe und Laufzeit des Projekts) zwischen drei und acht Wochen werden weitere Softwarebausteine in Betrieb genommen. Dieses Vorgehen ermöglicht ein frühes Feedback, Erkenntnisse über weiteres Anwendungspotenzial und es wird der im Wasserfall-Modell übliche Big-Bang vermieden.
  • akzeptieren geänderter Anforderungen:
    Eine der größten Herausforderungen der heutigen Zeit stellt die Unvorhersagbarkeit der Entwicklung in der „new economy“ dar. Änderungen der Technologie und des Business führen zu Turbulenzen, denen man sich verweigern oder sie als Chance betrachten kann. Agile Entwicklungsprozesse haben zur Einsicht geführt, dass es effektiver ist Änderungen anzunehmen, statt sie zu verhindern.
  • enge Zusammenarbeit zwischen Kunde und Entwicklungsteam:
    Im Wasserfall-Modell wird der Kunde in die Analyse-Phase eingebunden; hier werden die Anforderungen „eingefroren“, das Design erstellt, eine Software konstruiert und nach abschließendem Test beim Kunden in Betrieb genommen. Unter Umständen bleibt der Kunden lange Zeit „unbehelligt“, bevor dann mit einem Big-Bang eine umfangreiche Software installiert wird. Iterative, agile Entwicklungsprozesse führen zu häufiger Kommunikation zwischen den Beteiligten; dies stärkt das Verantwortungsgefühl des Kunden für das neue System und gibt den Entwicklern zusätzliche Sicherheit in der Umsetzung von Kundenanforderungen.
  • funktionierende Software ist das Maß für den tatsächlichen Projektfortschritt:
    Mit jeder Iteration wird ein Inkrement, die auszuliefernde Software, erstellt. Das Projekt gelangt frühzeitig zur Erkenntnis, wie sich die weitere Entwicklung des Systems darstellen oder ob das Projekt scheitern wird. Im überholten Wasserfall-Modell gibt es häufig erst kurz vor Auslieferung einer Software ein böses Erwachen.
  • gleichmäßige Belastung des Projektteams:
    Die IT-Branche ist gekennzeichnet von langen Nächten und Wochenenden, an denen Entwickler versuchen, Fehler, die durch nicht angepasste Planung entstanden sind, zu korrigieren oder in den Griff zu bekommen. Iterative Entwicklung führt zu einer gleichmäßig verteilten Belastung des Teams. Es sollte ein Rhythmus (ca. 40 Stunden/Woche) gefunden werden, der es dem Team ermöglicht eine dauerhaft gute Leistung zu erbringen, denn es sind die Menschen, die ein Projekt zum Erfolg führen.
  • regelmäßige Prüfung der Effektivität:
    In einem iterativen, agilen Entwicklungsprozess führt das Team regelmäßig Überprüfungen der Effektivität durch. Dabei werden Prozessaktivitäten bewertet und störende Elemente aus dem Prozess herausgenommen oder verändert. Dadurch wird die Zufriedenheit der Mitarbeiter ebenso wie die Effektivität gesteigert.

DEN Entwicklungsprozess für ein Unternehmen kann es nicht geben. Jedes Projekt hat spezielle Eigenschaften, die es einzigartig machen (z. B. Projektteam, Qualitäts- und Performanceanforderungen, Termine, Budget, technologische Herausforderungen, Komplexität der Anwendung, spezielle Risiken etc.). Diese Faktoren spielen bei der Festlegung eines Entwicklungsprozess für ein Projekt eine wichtige Rolle. Abhängig von diesen Faktoren wird der Formalisierungsgrad des Entwicklungsprozesses festgelegt.

applied technologies unterstützt Sie bei der Einführung eines iterativen Entwicklungsprozesses und schneidert Prozessframeworks maßgerecht auf Ihre individuelle Situation zu. Außerdem können wir das in Ihrem Projekt eingesetzte Verfahren bewerten und Vorschläge zur Risikominimierung unterbreiten.