Softwareentwicklung, modern & agil
Lightware Solutions mit Sitz in Lyss fokussiert sich auf professionelle Softwareentwicklung unter Verwendung modernster Technologien und leichtgewichtiger Prozesse.Softwareentwicklung, modern & agil
Lightware Solutions mit Sitz in Lyss fokussiert sich auf professionelle Softwareentwicklung unter Verwendung modernster Technologien und leichtgewichtiger Prozesse. DienstleistungenKontakt aufnehmenUnternehmensprofil
Ich heisse Andreas Pfeuti und bin Ingenieur Informatik HTL. Als Inhaber von Lightware Solutions GmbH ist mir der direkte und persönliche Kontakt zu Ihnen wichtig.
Lightware Solutions GmbH ist ein Ingenieurbüro mit Sitz in Lyss, welches sich auf die professionelle Softwareentwicklung spezialisiert hat. Das englische Wort “light” ist ein sogenanntes Homonym und hat die Bedeutungen leicht und Licht. Es ist mir ein Anliegen im Sinne dieser Bedeutungen mit Ihnen zusammenzuarbeiten und Software zu entwickeln – leichtgewichtig und auf eine helle, smarte Art.
Lightware Solutions stellt unter Verwendung modernster Technologien und leichtgewichtiger Prozessen qualitativ hochstehende Software her. Die Verwendung von bewährten Methodiken wie Continuous-Integration und ALM ist für Lightware Solutions selbstverständlich. Lightware Solutions stellt Ihnen eine entsprechende Infrastruktur zur Verfügung, falls Sie (noch) keine besitzen und/oder nicht selbst eine betreiben wollen.
Andreas Pfeuti
Geschäftsinhaber
- Über 19 Jahre Erfahrung in der Softwareentwicklung (hauptsächlich im Java-Umfeld)
- Entwicklung von Backendsystemen und Webapplikationen
- Teamführung und Coaching, Scrum, UML
- Java, JEE, Spring, Hibernate, JPA, JSF, JSP, Activiti, Drools, Camel, JUnit, Cucumber, Selenium
- Tomcat, JBoss, Weblogic, NodeJS
- JavaScript, HTML, CSS, Vue.js, AngularJS, Express.js, Mapbox GL JS, Mapbox GL native (Node)
- SQL, Oracle, MySql
- XML, JSON, REST und SOAP-Webservices
- IntelliJ, Eclipse, Jenkins, Maven, Ant
- GIT, SVN, Jira, Confluence, Bitbucket
Dienstleistungen
In Ihrem Softwareentwicklungsprojekt untersütze ich Sie in sämtlichen Phasen. Bei der Verwendung eines modernen Softwareentwicklungsprozesses wie Scrum werden sämtliche Phasen mehrmals in sogenannten Iterationen von zwei bis vier Wochen durchlaufen. Ein Projekt wiederholt mehrere solche Iterationen.
- Konzept – Analyse
- Architektur – Design
- Realisierung – Programmierung
- Einführung in Betrieb
- Reviews
- Teamleitung / Coach
Bevor mit der Entwicklung einer Software begonnen wird, sollte ein grobes Konzept vorliegen. Dies muss nicht ein riesiger Papiertiger sein, die wichtigsten Punkte müssen jedoch geklärt sein:
- Was sind die Anforderungen? Erarbeiten der Anwendungsfälle (Use-Cases).
- Wer sind die Stakeholder?
- Wer sind die Benutzer des Systems?
- Wer betreibt das System?
- Mengen-/Häufigkeitsanalyse
- geforderte Verfügbarkeit
- Plattform- und Technologiefragen
Die zu entwicklende Software wird in Komponenten aufgeteilt und die Komponenten-Schnittstellen werden definiert. Paket-Strukturen sowie die zu verwendenen Frameworks (z. B. für die Datenpersistierung) werden bestimmt. Aufgrund des erwarteten Datenaufkommens (Mengen-/Häufigkeitsanalyse) und der geforderten Verfügbarkeit wird die Laufzeitumgebung (z. B. Single-Node oder Cluster) definiert.
Obwohl die Architektur-/Designphase bei jeder Iteration durchlaufen wird, und ggf. ein Refactoring stattfinden kann, ist es empfehlenswert die wichtigsten Fragestellungen zu Beginn des Projektes zu beantworten. So macht es z. B. keinen Sinn, sich während jeder Iteration für ein neues Persistenz-Framework oder eine andere GUI-Technologie zu entscheiden.
Gerne erarbeite ich für Sie die passende Architektur und das geeignete Design.
In der Realisierungsphase helfe ich in Ihrem Projekt tatkräftig mit oder realisiere kleinere Projekte selbstständig. Als Senior-Software-Engineer lasse ich Ihr Team an meinen Erfahrungen teilhaben und kann “Best practices” in den verschiedensten Aspekten der Softwareentwicklung einbringen. Laut den modernen iterativen Entwicklungsprozessen ist die Realisierung der wichtigste Teil der Softwareentwicklung. Denn was schlussendlich zählt, ist eine laufende Software.
Seit über 19 Jahren entwickle ich Software, hauptsächlich in Java / JEE / Spring. Profitieren Sie von meinen Erfahrungen.
Die Software wurde erstellt und entspricht den Qualitätskriterien. Unter Verwendung eines iterativen Entwicklungsprozess steht Ihnen alle zwei bis vier Wochen ein potentieller Software-Release zur produktiven Einführung zur Verfügung. Nun muss die Software installiert und betrieben werden. Eventuell ist eine vorgängige Datenmigration notwendig. Die laufende Software muss überwacht und falls nötig ein Administrator über das Verhalten der Software informiert und alarmiert werden.
Sie haben bereits ein Konzept für Ihr Projekt. Eventuell existieren erste Architektur- und Designdokumente. Möchten Sie noch eine Zweitmeinung bevor Sie mit der Realisierung so “richtig” loslegen?
Vielleicht existiert bereits Code und Sie möchten eine Analyse darüber. Folgende Fragen könnten Sie interessieren: Ist der Code (noch) wartbar? Welche Komponenten existieren und wie sehen deren Abhängigkeiten aus? Wie gross ist die automatische Testabdeckung? Gibt es Metriken, welche mich aufhorchen lassen sollten?
Verlangen Sie einen Review und holen Sie sich eine Second-Opinion.
Sie verfügen bereits über ein Entwicklungsteam, aber es fehlt Ihnen noch ein erfahrener Softwareingenieur, welcher das Team leitet und coacht? Ich achte darauf, dass Vorgaben und Richtlinien während der Softwareentwicklung vom Team eingehalten werden oder kann gegebenenfalls solche erlassen. Zwischen Ihrem Fachbereich und dem Entwicklungsteam trete ich als Bindeglied auf. Ich erstelle Aufwandschätzungen und plane anstehende Software-Releases.
Methoden
Zu meinen Methoden zählen: Teamführung und Coaching, Scrum und Extreme Programming (agile Entwicklungsprozesse), Continuous Integration/Delivery, Application Lifecylce Management und UML (objektorientiertes Design).
Continuous-Integration
Die grundlegende Idee hinter Continuous-Integration ist einfach: Die Software soll jederzeit neu gebaut und automatisch getestet werden. Mit ‘jederzeit’ ist gemeint, nach jeder Änderung am Code durch einen Entwickler/in und/oder durch eine zeitliche Auslösung (z. B. jede Nacht, sogenannte nightly builds). Die aktuellsten Resultate der automatisch ausgeführten Tests liegen sofort als Webseite vor.
So werden allfällige Probleme frühstmöglich erkannt und eine spätere aufwändige und kostspielige Fehleranalyse kann vermieden werden. Die Verwendung von Continuous-Integration ist eine Methodik, die bei modernen und leichtgewichtigen Entwicklungsprozessen zum Einsatz kommt.
Eine Continuous-Integration-Umgebung ist erstrebenswert, um nicht zu sagen Pflicht. Sie steht aber nicht jedem Entwicklungsteam zur Verfügung. Hier unterstützt Sie Lightware Solutions und stellt Ihnen die notwendige Infrastruktur zur Verfügung.
Application-Lifecylce-Management
Beim Application-Lifecylce-Management geht es darum, einerseits Änderungen an der Software planbar und anderseits rückverfolgbar zu machen. Weiterentwicklungen und die Behebung von allfälligen Bugs werden innerhalb von Iterationen geplant. Der Gesamtaufwand einer Iteration wird zu Beginn geschätzt und der Arbeitsfortschritt täglich nachgetragen. Mit Hilfe des Burn-Down-Charts wird frühzeitig ersichtlich, ob die Ziele der Iteration erreicht werden können, oder ob allenfalls Gegenmassnahmen einzuleiten sind.
Am Anfang jeder Codeänderung steht die Anforderung mit den entsprechenden Anwendungsfällen. Daraus werden verschiedene Entwicklungstasks definiert, welche schlussendlich die Codeänderung zur Folge haben. Alle diese Artefakte werden nun verknüpft:
Anforderung <-> Entwicklungstasks <-> Codeänderungen
Sämtliche Entwicklungstasks werden einem Release zugeordnet. Nun sind sämtliche Änderungen rückverfolgbar und folgende Fragen lassen sich einfach beantworten:
- In welchem Release wird die Anforderung X vollständig abgedeckt?
- Zu welchen Codeänderungen führte die Anforderung X?
- Oder vielleicht interessanter: Auf welche Anforderung oder Bugbehebung ist die Codeänderung Y zurückzuführen?
- Wie viele Bugs wurden durch die Anforderung X verursacht?
- In welchem Release ist Bug X behoben? Welche Codeänderung war dazu nötig?
- Wie gross war der zeitliche (und somit auch der finanzielle) Aufwand um Anforderung X umzusetzen?
- Steigt oder sinkt die Bugrate im Verlauf der Zeit?
- etc.
All dies ist möglich ohne schwerfällige Dokumentenschlacht, sondern lässt sich leichtgewichtig und auf eine natürliche Weise in den Entwicklungsprozess einfliessen.
Als Analogie können Sie ein Beispiel aus der Automobilindustrie betrachten: Ein Automobilhersteller verbaut tausende von Einzeilteilen, welche von verschiedensten Zulieferern hergestellt wurden, zu einem funktionstüchtigen Auto. Jedes Einzelteil besitzt eine Seriennummer. Der Hersteller weiss genau, welche Teile in welchem Auto verbaut sind. Umgekehrt weiss er auch, aus welchen Einzelteilen ein bestimmtes Auto besteht. Diese Informationen sind unerlässlich bei festgestellten Produktionsmängeln und den daraus resultierenden Rückrufaktionen.
Lightware Solutions stellt Ihnen eine Infrastruktur zur Verfügung, auf welcher Sie ALM abbilden können.
Referenzen
Ich habe Branchenerfahrung in Logistik, Öffentlicher Verkehr (Fare Collection), Krankenversicherung, Bank (internationaler Zahlungsverkehr), Verpackungsindustrie und mehr.