Bei der Realisierung von Webanwendungen kommen unterschiedliche Programmiersprachen und Datenbanksysteme zum Einsatz. Die Quellwerke GmbH hat sich auf die Webentwicklung auf Basis von PHP spezialisiert und setzt hierfür konsequent auf etablierte Enterprise Frameworks wie ZEND oder Symfony. Da eine Webanwendung nicht nur aus der serverseitigen Entwicklung besteht, setzen wir für die Frontendentwicklung ebenfalls bewährte Frameworks und Technologien ein. Hierzu zählen zum Beispiel Twitter Bootstrap für Responsive Designs, AngularJS, ExtJS oder, je nach Anforderung, weitere Frameworks. Unser Portfolio umfasst ebenfalls die Datenbank-Entwicklung, wobei wir hierbei nicht auf ein spezifisches Datenbanksystem angewiesen sind. Unsere Lösungen werden so konzipiert, dass das zugrundeliegende Datenbanksystem einfach ausgetauscht werden kann. Die von uns erstellten Webanwendungen erhalten damit eine entsprechende Skalierbarkeit und wachsen mit den Anforderungen.
E-Commerce Lösungen
Onlineshops / Webshops
Enterprise-Resource-Planning Systeme (ERP)
Customer-Relationship-Management (CRM)
Content-Management-Systeme (CMS)
Product Information Management Systeme (PIM)
Multichannel Lösungen
Digital-Asset-Management (DAM)
Online-Portale / Web-Plattformen
Webservices
Middleware Lösungen
Portalserver
M2M Plattformen (Machine 2 Machine Kommunikation)
Online Konfiguratoren
Online Buchungsportale / Jobportale
Schnittstellen
Bei der Entwicklung webbasierter Software setzen wir auf etablierte Enterprise Frameworks wie z.B. Symfony. Unsere Software-Architekten schaffen dabei stets belastbare, skalierbare und sichere Fundamente. Unsere Kompetenz in der Webentwicklung liegt in der Realisierung von kundenspezifischen Webanwendungen wie beispielsweise B2B & B2C Webshops, Webportale oder maßgeschneiderte Lösungen zur Erfüllung individueller Digitalisierungsstrategien. Unsere webbasierte Software wird dabei stets mit einem Höchstmaß an Flexibilität, Skalierbarkeit, Sicherheit und Verfügbarkeit versehen, sodass diese langfristige Investitionen darstellen.
Unseren Kunden stehen wir vor einem Projekt beratend, während einem Projekt ausführend und nach einem Projekt betreuend zur Seite. Über ein aktives Projektmanagement können interne und externe Ressourcen geplant und dem Kunden der jeweilige Projektverlauf dargestellt werden. Je nach Anforderungen und Konstellation übernehmen wir auch die Koordination von weiteren Agenturen, Dienstleistern oder Herstellern.
Rich Internet Applications (RIAs) stehen einer Desktop-Anwendung in nichts nach.
Ermöglicht wird dies durch Funktionalitäten wie z.B. Drag-and-Drop, etablierten Tastenkombinationen oder der lokalen Speicherung von Informationen direkt im Browser (Local Storage). Wir setzen hierzu auf innovative, nachhaltige UI-Frameworks wie z.B. ExtJS, Twitter Bootstrap und / oder SCSS.
Symfony und ZEND sind die führenden Application Frameworks für unsere Webentwicklung, mit denen wir z.B. serviceorientierte Architekturen unter Verwendung des Model-View-Controller Pattern realisieren. Wir programmieren ausschließlich objektorientiert, trennen strikt die Logik von der Präsentation und versionieren unsere Webanwendungen via GIT. Das Resultat sind hochperformante, clusterfähige und skalierbare Webanwendungen.
Datenbanken sind die Basis einer Webanwendung und sollten äußerst sorgfältig geplant werden. Unsere Datenbank-Spezialisten kümmern sich um die Datenbank-Modellierung und erstellen relationale Modelle. Um unabhängig von dem zugrundeliegenden Datenbanksystem (MySQL, MariaDB, SQLite, Microsoft SQL Server, Oracle, DB2, etc.) zu bleiben, abstrahieren wir den Datenbankzugriff. Weiterhin kommen, je nach Anforderung, etablierte ORM Frameworks (Object Relational Mapper) wie z.B. Doctrine zum Einsatz.
In der Webentwicklung kommt es häufig vor, dass externe System wie z.B. SAP, CRM, ERP, Datev über Schnittstellen angebunden und angesprochen werden müssen. Dies kann einerseits über Webservices (z.B. SOAP oder REST) oder durch einen Import-Export Prozess erfolgen.
Darüber hinaus realisieren wir Machine-to-Machine Interfaces via Bluetooth, WiFi oder RS232.
Aus unserer Erfahrung heraus bieten wir sehr gerne Pflichten- bzw. Lastenheftworkshops an, in denen wir gemeinsam mit Ihnen die Fachschale der zu erstellenden Webanwendung definieren.
Die Auswahl der richtigen Technologie ist ein wichtiger Aspekt für den Erfolg Ihrer Webanwendung. Hierbei beraten wir Sie ausgehend von unserer langjährigen Erfahrung.
Auf Wunsch übernehmen wir die Erstellung eines Lasten- oder Pflichtenhefts für Sie. Eine Pflichtenhefterstellung übernehmen wir auch dann, wenn wir die Anwendung nicht selbst realisieren sollen.
Hohe Usability, Responsive Design und User Experience spielen eine tragende Rolle bei der Entwicklung eines Frontends. Unsere UI Experten helfen Ihnen das Optimum Ihrer Webanwendung herauszuholen.
Auch im Backend ist eine hohe Benutzerfreundlichkeit von zentraler Bedeutung. Hinzukommen Themen wie Sicherheit, Verfügbarkeit und Skalierbarkeit.
Für die Interaktionen mit Drittsystemen müssen Schnittstellen definiert und implementiert werden. Hierfür kommen unter andrem Webservices wie zum Beispiel SOAP oder REST zum Einsatz.
Der Aufbau einer Datenbankstruktur muss zu 100 % durchdacht und konzipiert sein. Losgelöst vom Datenbanksystem designen wir Datenbankstrukturen, die einen hohen Normalisierungsgrad erreichen.
Unsere Expertise in der Webentwicklung bieten wir Ihnen auch als externe Agentur an. Wir beraten Ihre Entwicklungsabteilung, schulen diese in neuen Technologien oder unterstützen bei der Programmierung.
Individuelle Webanwendungen sind Maßanfertigungen und müssen als solche gut geplant, strukturiert und designed werden. Gemeinsam mit Ihnen erarbeiten wir hierfür ein schlüssiges, ganzheitliches Konzept sowie ein optimales Design (User Interface).
Seit 2004 erstellen wir für unsere Kunden webbasierte Software und haben damit umfangreiche Erfahrung in deren Realisierung. Diese langjährige Erfahrung ermöglicht es uns unsere Kunden bestmöglich zu beraten. Darüber hinaus übernehmen wir auf Wunsch die fachliche und technische Spezifikation, erstellen Machbarkeitsanalysen, Prototypen, Mockups, Wireframes oder schreiben Lasten- und / oder Pflichtenhefte.
In der ersten Projektphase geht es primär um die Aufnahme Ihrer Anforderungen und Prozesse. In enger Zusammenarbeit ermitteln wir den gewünschten Funktionsumfang und halten diesen in einem Pflichtenheft fest. Anhand dieser Informationen erstellen wir Ihnen ein passgenaues Datenbank- und Anwendungskonzept. In dieser Phase beraten wir Sie aktiv und analysieren Optimierungspotenziale.
In den Bereich einer Machbarkeitsanalyse fallen z.B. Fragestellungen wie:
Bei einem Proof of Concept geht es um den Nachweis (proof), ob Ihr Projekt (concept) in der Praxis umsetzbar ist.
Prototyping hat zum Ziel, schnell zu ersten Ergebnissen zu gelangen, um frühzeitig zu erkennen, ob sich eine Anwendung für das Erreichen seiner Ziele eignet oder nicht. Vorteile von Prototyping sind z.B.:
Gemeinsam besprechen wir Ihre Anforderungen, Ziele und Wünsche. Wir beraten Sie dabei stets proaktiv, um das volle Potenzial Ihrer Webanwendung herauszuholen.
Gerne übernehmen wir auch die Ausformulierung von Lasten- und / oder Pflichtenheften für unsere Kunden. Wir lassen dabei sowohl die fachlichen als auch die technischen Anforderungen einfließen.
Sowohl Häuser als auch (webbasierte) Software benötigen einen guten Architekten, der die Basis für die erwartete Traglast schafft. In unserem Team kümmern sich Software- & Datenbankarchitekten um das Fundament Ihrer Webanwendung.
Unter einem Wireframe (Drahtgerüst) versteht man einen sehr frühen konzeptionellen Entwurf einer Website oder eines Software-Frontends. Dabei spielen die Gestaltung und Funktion noch keine Rolle. Das Augenmerk liegt auf der Anordnung von Elementen und der Benutzerführung (UX, Benutzererfahrung).
User Experience beschreibt somit das komplette Nutzungserlebnis, welches ein User bei der Nutzung eines digitalen Produktes (Website, Webanwendung, Mobile App, Webshop...) erfährt. Das Nutzungserlebnis wiederum ist ein wesentlicher Faktor der Vertrauensbildung. Eine gute Usability und eine gute User Experience sind Grundlage für ein gutes User Interface und sorgen dafür, dass der User schnell und hindernisfrei an sein Ziel gelangt und dabei gleichzeitig Spaß an der Anwendung hat. Man spricht dabei vom so genannten "Joy of use".
Diese Frage lässt sich leicht beantworten: "Indem man den Benutzer analysiert, versteht und in den Fokus setzt." Der Benutzer ist in allen Phasen der Entwicklung konsequent einbezogen und dessen Bedürfnisse / Anforderungen werden in den Mittelpunkt gestellt (User-Centered Design).
Das User-Interface-Design befasst sich mit der Gestaltung von Benutzeroberflächen und ist damit die Schnittstelle zwischen den Anwendern und der Technik. Ein UI-Designer beschäftigt sich mit Layouts, Farben, Typographie, interaktiven Schaltflächen (Buttons), Bildsprache, Illustration oder Videoelementen.
Obwohl man UX und UI Design fachlich unterscheiden kann, gehören beide Disziplinen doch zusammen. Ohne ein gutes UI wird es keine gute UX geben und umgekehrt. UX- und UI-Designer arbeiten bei uns daher Hand in Hand, um das Optimum Ihres Projekts herauszuarbeiten.
Projektplanend, -begleitend und -nachbereitend setzen wir auf ein webbasiertes Projektmanagement Tool, in welches unsere Kunden aktiv mit eingebunden werden können. Aufgrund dieser Kollaboration kann sich der Kunde jederzeit über den Projektfortschritt informieren, neue Tickets erstellen oder zur Freigabe gekennzeichnete Tickets prüfen und als erledigt markieren. Weiterhin hat der Kunde Zugriff auf Dokumentation, Diskussion und Zeitplanung. Da alle Informationen über Active Collab (= Projektmanagement-Software) zusammenlaufen, ergibt sich ein flexibler, schlanker und transparenter Entwicklungsprozess. Das Projektteam organisiert sich dabei stets selbst und sorgt somit für einen geringen bürokratischen Aufwand.
Zertifizierung
SCRUM Foundation
Zertifizierter
SCRUM Product Owner
Zertifizierter
SCRUM Master
Sofern die Anforderungen an ein Projekt noch nicht hinreichend bekannt sind, mit der Umsetzung jedoch bereits begonnen werden soll, bietet sich die Methodik des Extreme Programming an. Durch kurze, fortlaufende Entwicklungszyklen ist es dem Kunden möglich, sich jederzeit in den Projektverlauf einzuklinken und kurzfristige Änderungen vorzunehmen. Hierdurch erhält der Kunde eine stets den aktuellen Anforderungen entsprechende Lösung.
Extrem Programming bietet sich somit insbesondere dann an, wenn sich die Anforderungen im Laufe der Entwicklung mit großer Wahrscheinlichkeit ändern und darauf kurzfristig reagiert werden muss. Das Vorrangige Ziel eines Extreme Programming ist es, schnell eine funktionsfähige, wenn auch nicht vollständige, Anwendung zu erhalten. Das Augenmerk liegt also auf den Kernfunktionen, Nice To Have oder Sekundär-Features werden zurückgestellt.
Der Prozess der Qualitätssicherung wird leider oftmals nur rudimentär durchlaufen und führt dadurch häufig zu unnötig schlechteren Lösungen. Wir möchten uns von diesem halbherzigen Ansatz abheben und unsere Websites, Webanwendungen und Mobile Apps fortwährend in der Qualität sichern. Dem klassischen Ansatz, eine Anwendung erst nach deren Fertigstellung zu testen, steht die agile Qualitätssicherung gegenüber. Die agile Qualitätssicherung führt zu einer deutlich verbesserten und zielführenderen Zusammenarbeit zwischen dem Entwicklungsteam und dem QS-Team. Das QS Team schlüpft dabei in die Rolle des Kunden und vertritt damit dessen Ansprüche und Sichtweisen. Die gewonnenen Erfahrungen und Resultate werden sodann mit dem Entwickler-Team abgestimmt, um die für den Kunden optimale Lösung zu erarbeiten.
Definitionen für Qualitätssicherung gibt es viele. Wir verstehen darunter die stetige Überprüfung, Identifizierung sowie Lösung von Softwarefehlern mit dem Ziel der Bereitstellung einer einwandfreien Website, Webanwendung oder Mobile App. Als Fehler sind dabei nicht nur Fehler technischer Natur, sondern auch Mangelhaftigkeit an Usability zu verstehen.
Bei einem Test-Driven-Development (kurz TDD) oder ins Deutsche übersetzt: testgetriebene Entwicklung, werden Software-Tests vor der eigentlichen Programmierung der späteren Lösung entwickelt. Der Ablauf dieser Methode ist zyklisch und inkrementell. D.h. die Anwendung wird Schritt für Schritt entwickelt und immer wieder gegen zuvor erstelle Testfälle geprüft. Nach Bestehen eines Testfalls wird die Anwendung um weitere Funktionalitäten erweitert und durchläuft danach erneut einen Test. TDD wird häufig bei der agilen Entwicklung angewendet und verfolgt das Ziel der Qualitätsoptimierung von Software - in unserem Fall webbasierter Software.
Vorteile von TDD
Testautomatisierung (Automated Unit Test) ist ebenfalls ein fester Bestandteil agiler Qualitätssicherung und kann Entwicklungsprozesse erheblich optimieren. Obwohl der initiale Aufwand zunächst höher ausfällt, hat sich dieser Kostenfaktor aufgrund der daraus resultierenden Zeitersparnis für Tests schnell amortisiert. Im Gegenzug zur TDD Methode werden bei Automated Unit Tests begleitend zur Softwareentwicklung (in unserem Fall Webentwicklung), stetig weitere Tests generiert und dem Testzyklus hinzugefügt.
Vorteile von Automated Unit Tests (Testautomation)
Zur Qualitätssicherung innerhalb der Webentwicklung gehört auch die Planung und Umsetzung von Backup- sowie Fallback Strategien. Unsere Webanwendungen sind von ihrer Architektur her so aufgebaut, dass sie auf mehrere Systeme (Server) verteilt werden können. Dies ermöglicht es einerseits mit steigenden Anforderungen zu skalieren (Performance Optimierung) und andererseits einen Ausfall eines Servers abzufangen. Ein Heart-Beat-System oder Cluster könnten hier als Beispiele angeführt werden. Darüber hinaus planen und realisieren wir automatische, cronjob-gesteuerte Backups von Datenbanken und Anwendungsdaten. Auch eine Versionierung Ihrer Webanwendung stellt eine Form des Backups dar. Wie Sie Ihre Daten und Anwendungen am besten absichern und für ein Höchstmaß an Verfügbarkeit sorgen, erörtern wir Ihnen gerne in einem persönlichen Gespräch.
Entwicklung von Backup- & Verfügbarkeitsstrategien
Nach erfolgreich verlaufenen Einzel- bzw. Modultests steht der Test des Gesamtsystems an. Bei diesen sogenannten Integrationstests wird das System erstmals mit allen Komponenten und deren Interaktion bzw. Abhängigkeiten geprüft. Integrationstests müssen jedoch nicht zwangsläufig erst am Ende eines Projekts erfolgen. Sobald ein weiteres Modul einer Webanwendung fertig implementiert wurde, kann ein anschließender Integrationstest bereits das Zusammenspiel mit anderen Modulen überprüfen.
Vorteile von Integrationstests
Da auch Webanwendungen dem stetigen technologischen Fortschritt unterliegen, sollten bestehende Webapplikationen von Zeit zu Zeit einem Sicherheits- bzw. Optimierungs-Check unterzogen werden. Insbesondere sollte dabei großer Wert auf das Thema Sicherheit in Webanwendungen gelegt werden. Neue Angriffsvektoren und technische Möglichkeiten erfordern entsprechende Gegenmaßnahmen.
Lassen Sie Ihr System durch uns überprüfen, wir decken Schwachstellen auf und zeigen Ihnen, wie Sie diese effizient beseitigen können. Eine Quellcodeanalyse kann darüber hinaus zu Verbesserungen hinsichtlich Performance und Stabilität führen. In diesem Zuge ergeben sich möglicherweise ebenfalls Chancen, die Benutzerfreundlichkeit zu erhöhen.
Je nach Anforderung müssen die Anwendung sowie zugehörige Webservices in die lokale Systemlandschaft eingebettet werden. Unsere Webagentur hilft Ihnen bei all diesen Integrationsaufgaben. Wir setzen für Sie die Laufzeitumgebung für die Webanwendung entweder direkt auf vorhandener physikalischer Hardware oder als virtuelle Maschine auf. Sollte die Integration auf einem Online-Server nötig sein, können wir dies ebenfalls durch unsere angemieteten Managed Server abdecken.
Für Webprojekte ab einer bestimmten Größe und Komplexität, lohnt sich das Aufsetzen eines Staging Systems. Unter einem Staging System (Staging Environment) versteht man eine Serverumgebung innerhalb derer eine (Web-)Anwendung unter annähernd realen Bedingungen getestet werden kann. Im Idealfall besteht eine Staging Instanz aus der gleichen Hard- & Softwareumgebung wie das finale Serversystem, unter der die Webanwendung live betrieben werden soll.
Ziel des Staging ist die Simulation und Überprüfung einer Webanwendung, unabhängig von der Entwicklungsumgebung. In der Regel werden drei Staging Instanzen betrieben: Development, Test und Production. Bei Bedarf können weitere Instanzen zwischengeschaltet werden.
Das Dev- bzw. Development Environment (oder zu Deutsch: die Entwicklungsinstanz), ist die Arbeitsversion der Webanwendung. Diese kann auf einem lokalen Server oder Desktop-PC liegen und ist hauptsächlich für Entwickler gedacht. Die Datenbasis ist in der Regel gegenüber der Live-Instanz stark reduziert. Arbeiten mehrere Entwickler an dem Projekt, wird zusätzlich eine Versionierungssoftware eingesetzt. In unserem Fall setzen wir dabei auf GIT, um Änderungen und Updates zu synchronisieren.
Arbeitsversionen werden häufig mit Compiler und Debugging-Tools betrieben und sind damit ausschließlich in dieser Umgebung lauffähig.
Das Test-Environment stellt einen ausgewählten Kreis an Testusern, dies können Projektmitarbeiter, externe Tester oder der Kunde selbst sein, die Webanwendung in einer dem finalen System äquivalenten Umgebung zur Verfügung. Die Daten sind dabei häufig mit denen der Live Instanz identisch oder zumindest annähernd vergleichbar. Änderungen oder Erweiterungen aus der Dev-Instanz werden auf die Test-Instanz übertragen, sodass die Testgruppe diese prüfen und Einfluss darauf nehmen kann.
Die Anwendung läuft bei einer Test-Instanz losgelöst von Debugging-Tools oder Compilern. Die Anwendung läuft somit autark und simuliert den Live-Betrieb.
Das Prod-Environment (Productive) ist die Live-Instanz einer Webanwendung. Auf diesem System arbeiten die "echten" Kunden und Mitarbeiter des Betreibers. Der Datenbestand ist hierbei selbstverständlich vollumfänglich. Die auf dem Test-Environment geprüfte und freigegebenen Funktionen können im Rahmen des Lifecycle-Managements auf die Live-Instanz transportiert (deployed) werden.
Im Gegenzug zum Deploy von Dev nach Test ist bei dem Transport von Test nach Prod keine bidirektionale Synchronisation vorgesehen. D.h. vom Prod System erfolgt kein Transport zurück zum Testsystem.
Unsere Expertise auf dem Gebiet der Webentwicklung, Content-Management-Systemen und der Mobile App Entwicklung geben wir gerne in Form von Schulungen bzw. Workshops weiter. Sie profitieren von unserer langjährigen Erfahrung und praxisorientierten Beispielanwendungen.
Wir verstehen uns nicht als Seminaranbieter, sondern bieten Schulungen bzw. mehrtägige Workshops auf individuelle Nachfragen hin an. Dadurch können wir die Trainingsinhalte exakt auf Ihre Bedürfnisse ausrichten. Wir unterstützen Einsteiger wie auch Fortgeschrittene Anwendergruppen gleichermaßen. Ebenso sind wir flexibel was den Veranstaltungsort angeht. Gerne führen wir das Training in Ihren eigenen 4 Wänden, in unserem Seminarraum oder an einem neutralen Veranstaltungsort durch.
Sollten Sie Interesse an einem bestimmten Training haben, zögern Sie nicht uns anzusprechen. Wir erstellen Ihnen gerne ein individuelles Trainingsangebot.
weitere Schulungen bieten wir Ihnen gerne auf Anfrage, individuell auf Sie abgestimmt, an.
Selbstverständlich übergeben wir unsere individuellen Webentwicklungen nicht ohne eine entsprechende Einweisung oder Schulung an unsere Kunden. Je nach Projektgröße, Anforderung oder Komplexität unterscheiden wir dabei zwischen einem Training für Anwender und einer Schulung der Administratoren.
Dokumentationen können auf unterschiedliche Art und Weise erstellt werden. Häufig werden diese als Word oder PDF Dateien erstellt und auf einem Netzwerkspeicher abgelegt. Dynamischer wird das Ganze, wenn die Dokumentation in Form eines Wiki-Systems fortlaufend gepflegt wird. Bei der Entwicklung und Dokumentation von APIs ( Application Programming Interface oder Deutsch: Programmierschnittstelle ) setzen wir häufig auch das Open Source Framework Swagger ein.
Egal in welcher Form Ihre Dokumentation auch immer vorliegt oder erstellt werden soll, wichtig ist, dass sie überhaupt vorhanden ist. Gerne übernehmen wir für Sie diese oftmals nervige Aufgabe. Idealerweise entsteht eine Dokumentation nicht erst nach Abschluss eines Projekts, sondern bereits vorher und projektbegleitend.