Experten für intelligente Software Entwicklung
Wir lieben die Herausforderungen, die sich uns jeden Tag in Softwareprojekten stellen.
Das Verständnis für unsere Auftraggeber*innen ist uns sehr wichtig. Wir hören genau zu, was die tatsächlichen Anforderungen, Einflüsse und Nutzungsszenarien sind und versetzen uns in ihre Lage und die der Anwender*innen. Mit dem Verständnis für diesen Kontext entwickeln wir intuitiv bedienbare, sehr gut funktionierende und starke Software.
Alle Auftraggeber*innen kommen mit sehr individuellen und besonderen Aufgaben zu uns, für die es keine Standardlösung gibt. Das sind responsive Webanwendungen, performante Datenbank Anwendungen, intelligente Systeme zur Texterschließung und komplexe Systemlandschaften.
Unsere Arbeit macht uns großen Spaß, und das wünschen wir uns auch für die Benutzer*innen unserer Produkte. Unser Ziel ist es, Software zu entwickeln, die uns und anderen das Leben leichter macht - uns Aufgaben abnimmt. Dafür müssen unsere Produkte intuitiv verständlich sein und gerne bedient werden.
Wie wir arbeiten
Nur ein gut organisiertes Projekt wird ein voller Erfolg.
Wir setzen moderne Standardverfahren und Werkzeuge ein, um den Projekterfolg zu sichern. Dazu gehören Entwicklungsmodelle, Projektmanagement nach PRINCE2, Controlling, Tests, Wartung und Support.
Grundsätzlich verwenden wir folgende Modelle, um Projekte umzusetzen:
-
Agile Methoden/SCRUM
Sofern unsere Kund*innen dies mögen, verwenden wir in Auftragsprojekten agile Methoden. Bei der Entwicklung unserer eigenen Produkte gehen wir stets so vor.
In Zyklen (mehrmals jährlich) erstellen wir neue Releases unserer Produkte. Zur Sprintplanung nutzen wir Atlassian Jira Agile. Dieses Tool bietet ein Backlog und zeigt die geplanten Sprints mit den geplanten Aufwänden. Stories können definiert werden. Den Workflow zur Bearbeitung der einzelnen Issues passen wir an das Projekt an. In Auftragsprojekten verwenden wir einen erweiterten Workflow. -
Prototyping
Eine von uns vorwiegend bei der Erstellung von interaktiven Oberflächen verwendete Methode ist das Prototyping. Damit können wir die User Experience testen, bevor die Anwendung implementiert wird und daraufhin - wenn nötig - Verbesserungen vornehmen. Wir verwenden dazu das Tool Axure.
Aber auch im Rahmen unserer Solr Projekte verwenden wir Prototyping. Wenn es um Performance Aussagen geht, lässt sich damit die Machbarkeit von Konzepten im Bereich Big Data evaluieren.
-
Vorgehen bei großen Projekten
In großen Projekten mit einer Laufzeit von mehreren Personenjahren, eventuell auch mit verteilten länderübergreifenden Teams, hat es sich als sinnvoll erwiesen, den Rahmen des Projektes zu formalisieren, also linear vorzugehen und das Projekt in Phasen zu organisieren.
Oft ist es aus organisatorischen Gründen nicht anders möglich, da Entscheidungen auf Seite der Auftraggeber*innen Wochen, manchmal auch Monate dauern. Auf Änderungen in der Spezifikation, etc. wird dann klassisch in Form von Change Requests reagiert. -
Extreme-Programming
Extreme-Programming setzen wir hauptsächlich im Rahmen eines Refactorings oder Code Reviews ein.
Von besonderer Wichtigkeit ist uns dabei die Analyse-Phase. Wir nehmen uns die notwendige Zeit, die Anforderungen unserer Kunden*innen genau zu verstehen. Dies betrifft natürlich die technischen Anforderungen, aber auch das Umfeld der Kunden*innen, die Geschäftsprozesse und vieles mehr.
Wenn wir beispielsweise eine Solr Lösung implementieren, ist es uns wichtig zu verstehen, welche Geschäftsprozesse und Anwendungen auf Basis von Solr realisiert werden sollen. Häufig ergeben sich daraus Anforderungen an die Implementierung, an die selbst unsere Kunden*innen nicht gedacht haben.
Die Bausteine unseres Vorgehens sind:
-
Projektmanagementverfahren/PRINCE2
Wir arbeiten prozessorientiert nach der skalierbaren Projektmanagementmethode „PRojects IN Controlled Environments“ (PRINCE2).
Sie bildet einen strukturierten Rahmen für Projekte. Dem Projektmanagementteam werden anhand des Prozessmodells konkrete Handlungsempfehlungen für jede Phase gegeben. (Weitere Erläuterungen dazu finden Sie hier: http://de.wikipedia.org/wiki/PRINCE2)
-
Requirements, Konzeption und User Experience
Es ist unser Ziel, das tatsächliche Bedürfnis der Zielgruppe, nämlich der End-Anwender*innen, ohne Umwege und Einschränkungen zu erfüllen. Wenn wir ihnen ein schlichtes und elegantes Produkt geben, das genau zu ihren Bedürfnissen passt, werden sie Freude bei der Bedienung empfinden und es gerne benutzen. Sie werden häufig wiederkommen, weil dieses Produkt für sie eine Erleichterung bedeutet und einfach Spaß macht. Und sie werden das ihren Freunden weitererzählen.
Hervorragende User Experience geht über die Erfüllung der Wünsche der Auftraggeber*innen hinaus. Um dieses hohe Ziel zu erreichen, ist eine nahtlose Verbindung von Konzept, Interface Design und technischer Umsetzung erforderlich.
Wir untersuchen die Zielgruppe und filtern die Hauptinteressen heraus.Wir definieren Use Cases und User Stories, die die verschiedenen Anforderungen visualisieren und überprüfbar machen. Anschließend entwerfen wir Workflows an Klick Dummies und nähern uns in Iterationsstufen der perfekten Lösung an. Die Zwischenstände werden mit Zielpersonen getestet und kontinuierlich überprüft.
Unsere Leistungen beinhalten:
- Definition von Use Cases und User Stories
- Entwicklung von Informationsstrukturen und Navigationskonzepten
- Wireframes, semifunktionelle Prototypen
- Usability Testing
- Feinspezifikation
-
Projekt Controlling
Ticketmanagement und Aufgabenplanung
Wir planen unsere Aufgaben mit Atlassian Jira zusammen mit dem Greenhopper Plug-In für agile Methoden. Entsprechend der SCRUM Methoden definieren wir Sprintzyklen und ordnen die vorhandenen Tickets (Aufgaben, neue Features, Bugs etc.) den einzelnen Sprints zu.
Zu jedem Ticket werden die Angaben zur ursprünglichen Aufwandsschätzung, dem geleisteten sowie dem Restaufwand verwaltet.Zeiterfassung
Aufwände und Dauer von Projekten kontrollieren wir streng, um die Zusagen an unsere Auftraggeber*innen genau einzuhalten. Hierfür erfassen wir täglich unsere geleisteten Zeiten für ein Projekt. In Zusammenhang mit dem in Jira gepflegten verbleibenden Aufwand lässt sich jederzeit der Fortschritt des Projekts ermitteln und bewerten.
In der Zeiterfassung wird auch eine Beschreibung der täglich erbrachten Tätigkeiten verwaltet, so dass dort die Historie analysiert werden kann.Risikoanalysen
Vor Projektstart und während des Projektverlaufs wird das Risikoregister gepflegt. Darin sind potentielle Risiken mit ihrer Eintrittswahrscheinlichkeit und den möglichen Auswirkungen aufgelistet. Außerdem werden mögliche Maßnahmen zur Abmilderung der Risiken bewertet und getroffen.
-
Definierter Entwicklungsprozess: Continuous Deployment
Code verwalten wir in einem SVN, bei neueren Projekten in einem GIT-Respository. Wir schreiben Unit- und Integrationstests. Als Build-Tool verwenden wir Maven, als Integrationsserver Atlassian Bamboo.
Ein Check-In in das Source Code Repository führt zur Ausführung des Build-Planes in Bamboo. Der Code wird dort komplett neu ausgescheckt, gebaut und die vorhandenen Tests werden ausgeführt. Schlägt ein Test fehl, so erhält der*die Entwickler*in ein direktes Feedback. War der Build erfolgreich, gelangt er in das Code Repository Nexus.Einmal täglich wird für jedes Projekt ein Build-Plan in Bamboo abgearbeitet, der eine Analyse des Codes durch Sonar durchführt. Das Ergebnis ist eine Qualitätsanalyse des Quellcodes einschließlich Testabdeckung. Basierend auf diesen Ergebnissen passen wir unsere Tests an.
Für das Automatisieren des Deployments verwenden wir das Tool Ansible.Aufgrund der Komplexität unserer Produkte lassen sich diese nicht vollständig automatisch testen. Aus Bamboo heraus oder auch über die Kommandozeile führen wir manuell getriggert Deployments auf unserer Testplattform durch. Dort führen wir manuelle Tests sowie Langzeit Lauftests durch. Waren alle Tests erfolgreich, wird ein Release erzeugt.
Die Projekt Dokumentation pflegen wir in einem Wiki mit Atlassian Confluence.Die folgenden Informationen werden dabei stets aktuell gehalten:
- Übersicht über die Stakeholder mit Verantwortungsbereich
- Informationen zur IT-Systemumgebung
- Knowledge Base
- Prozessbeschreibungen
- Software Dokumentation
- Nutzer*innen- und Administrationsdokumentation
- Test- und Qualitätsmanagementsystem
-
Test- und Qualitätsmanagementsysteme
Durch den Einsatz verschiedener, teilweise automatisierter Testverfahren stellen wir eine hohe Qualität in allen Phasen des Projektes sicher. Jedes wird von einem*er Qualitätssicherungsbeauftragten begleitet.
Die folgenden Testverfahren kommen zum Einsatz:Usability-Tests
Den Anforderungen jedes Projektes entsprechend überprüfen wir unsere Annahmen und Lösungen mit Usability-Tests. Vor der Konzeption eines neuen Produktes oder Projektes untersuchen wir Benutzer*innengruppen und Nutzungskontexte. Während der Entwicklungsphase konzipieren wir Interaktionsabläufe mit Papierprototypen und Wireframes und testen diese anschließend mit semifunktionellen Prototypen. Fertig realisierte Lösungen untersuchen wir mit Benutzer*innentests, um kritische Nutzungssituationen zu beheben.Unit- und Integrationstests
Während der Entwicklung von Funktionalitäten implementieren wir Unit-Tests für den Code. Übergreifend werden Integrationstests implementiert, die das System quasi als Blackbox testen. Wir messen darüber hinaus die Testcoverage und teilen diese den Auftraggebern*innen mit.Last und Performance Tests
Während des Projektes werden Last und Performance Tests durchgeführt. Dazu verwenden wir die Software JMeter. Damit ist es möglich, vordefinierte Anfragen parallel an ein System zu senden und die jeweiligen Zeiten zu messen.
Die Messprotokolle stellen wir den Auftraggebern*innen zur Verfügung. Auf ihrer Basis können bei Bedarf Systemoptimierungen vorgenommen werden.
Softwaretests: ISTQB und Code Qualitätsanalyse
Um einen standardisierten und professionellen Prozess beim Testen der Software zu gewährleisten, arbeiten wir zur Erstellung und Durchführung von qualitativ hochwertigen Testmechanismen und Maßnahmen nach den Vorgaben des International Software Testing Qualifications Board (ISTQB).Zudem haben wir ein Verfahren zur Code Qualitätsanalyse eingeführt. Das ermöglicht es uns, Risiken bei der Softwareentwicklung frühzeitig zu erkennen und eine einheitliche Kommunikationsbasis zwischen Management und Fachabteilung zu schaffen.
Somit stellen wir sicher, dass die Fehlererkennung und -behebung frühzeitig und möglichst effektiv durchgeführt werden kann. Dabei testen wir z.B. funktionale Kriterien, nicht funktionale Merkmale sowie die Softwarestruktur.
Die Werkzeuge zur Durchführung der Tests sind auf Grundlage unserer mehrjährigen Erfahrungen stets weiter entwickelt worden. Dies wiederum steigert die Effizienz des Testmanagements kontinuierlich.ISO 9001:2008
Um eine hohe Qualität bei der Organisation und Durchführung von Dienstleistungen zu gewährleisten, haben wir ein Managementsystem nach den Vorgaben der ISO 9001:2008 entwickelt und vom TÜV zertifizieren lassen.
In dem integrierten System sind alle Prozesse vom Angebot bis zum Abschluss einer Dienstleistungserbringung enthalten. Die entwickelten Prozesse haben wir in die tägliche Arbeit integriert. Alle Mitarbeiter*innen tragen diese mit.
Die ausführliche „Beschreibung der outermedia Qualitätssicherungsprozesse“ senden wir auf Anfrage gern zu. info@outermedia.de