Software-Entwicklung

Umsetzung der Algorithmen als Software-Modul in Ihrem Zielsystem

 

Software-Entwicklung     DOWNLOAD WHITEPAPER

Unsere Algorithmen in Ihrem Zielsystem

Neben der Algorithmen-Entwicklung bieten wir zusätzlich reine Software-Entwicklung für unsere Kunden an. Dadurch können wir die von uns entwickelten Algorithmen direkt in Ihr Zielsystem integrieren und aufbauend auf der prototypischen Implementierung zu validieren. Auch können wir während der Algorithmen-Entwicklung softwaretechnische Anforderung berücksichtigen und die Algorithmen entsprechend dieser auslegen.

 

Wir erstellen individuelle Software-Lösungen, die genau auf die Anforderungen und Bedürfnisse unserer Kunden aus den unterschiedlichsten Branchen angepasst sind.

 

Knowtion bietet Software-Entwicklung nach definierten Standards und Prozessen an, um ein hohes Maß an Software-Qualität – und damit Fehlerfreiheit – zu garantieren. Dies beinhaltet alle Phasen des Software-Entwicklungs-Prozesses, von der Aufnahme der Anforderungen bis zur Wartung.

Wir implementieren die Algorithmen als Software-Module auf allen Ebenen - von Embedded bis in die Cloud

Leistungsspektrum

Wir erstellen individuelle Software-Lösungen, die genau auf die Anforderungen und Bedürfnisse unserer Kunden aus den unterschiedlichsten Branchen angepasst ist. Hierbei reicht unser Leistungsspektrum von Embedded-Software bis zu skalierbaren Server- Architekturen, basierend auf unterschiedlichen Plattformen, Entwicklungsumgebungen, Technologien und Standards. Knowtion unterstützt Sie bei einzelnen Software-Modulen oder übernimmt die Entwicklung gesamter Software-Produkte.

Embedded-Software

Standalone-Software

Cloud-Software

Wir entwickeln Software-Module nach dokumentierten Prozessen und Standards

Software-Qualität

Zur Sicherstellung der Software-Qualität setzen wir u.a. die folgenden Techniken ein:

Softwareentwicklung gemäß dokumentierten Prozess und Standards (z. B. V-Modell XT)

Tool-Unterstützte Entwicklung

Nachverfolgbarkeit (Traceability) aller erstellten Artefakte über den gesamten Produktlebenszyklus

Regelmäßige Durchführung von Projektaudits

Verifikation der Anforderungen im gesamten Entwicklungsprozess (Verification Cross Reference Index)

Aufteilung der Entwicklung in zwei Phasen (Entwicklungs- und Test-Phase)

Reviews der Entwicklungsdokumente (4-Augen-Prinzip)

Prozesse zur Unterstützung der funktionalen Sicherheit (z. B. ED-153) und Fehlermöglichkeits- und -einflussanalyse (FMEA)

Wir wählen für die jeweilige Anwendung und Zielsystem den passenden Entwicklungsprozess

Unser Vorgehen bei der Entwicklung

Je nach Projekt kann es bei unserem Entwicklungsprozesse große Unterschiede geben, allerdings haben alle gemein, dass dieser Prozess im Vorfeld mit Ihnen abgestimmt und dokumentiert ist. Dabei umfassen unsere Software-Entwicklungs-Dienstleistungen den kompletten Entwicklungsprozess, von der Aufnahme der kundenspezifischen Anforderungen, über die Softwareentwicklung und der Qualitätssicherung, bis hin zur Installation und Inbetriebnahme der Anwendung.

 

Die optimale Wahl des Entwicklungs-Prozess in Abstimmung mit Ihnen hängt von den folgenden Aspekten ab:

Art, Umfang und Dauer des Entwicklungs-Projekts

Zielumgebung der Software-Module, beispielsweise auf Embedded oder in der Cloud

Ihre eigenen Vorgaben, Wünsche und Vorstellung

Durch einen passenden Entwicklungsprozess entwickeln wir in kürzester Zeit Software-Module die die entsprechenden Qualitätsansprüchen genügen.

Agile Entwicklung (Scrum)

Bei der agilen Softwareentwicklung wird versucht die Transparenz und Flexibilität zu erhöhen und zu einem schnelleren Einsatz der entwickelten Systeme zu kommen, um dadurch die Risiken im Entwicklungsprozess zu minimieren. Kleine lauffähige und nützliche Software wird also schnell und kontinuierlich in Rahmen von Releases an den Kunden geliefert und führt dadurch neben der Risikominimierung zu einer höheren Akzeptanz und Zufriedenheit. Wichtigste Eigenschaft aller agilen Ansätze sind selbstorganisierende Teams sowie eine iterative und inkrementelle Vorgehensweise. Die wohl bekanntesten Vertreter der agilen Softwareentwicklung sind Scrum und Extreme Programming.

Stärken

Durch die konsequente und regelmäßige Priorisierung der Anforderungen auf Basis einer Kosten-Nutzen-Relation werden zuerst die Anforderungen umgesetzt, die einen hohen Nutzen bieten. Damit liegt schnell und früh ein nutzbares Ergebnis vor.

Durch die regelmäßige Fertigstellung (Release) am Ende von jedem Sprint wird stets ein testbares Zwischenprodukt realisiert.

Frühe und regelmäßige Lieferungen reduzieren das Risiko des Scheiterns und erlauben es frühzeitig zu erkennen ob das geplante Produkt auch den gewünschten Mehrwert liefert.

Frühes Feedback eliminiert unnötige Anforderungen und damit Verschwendung bei gleichzeitiger Möglichkeit auch Spezifikationslücken schnell zu erkennen und zu beheben.

Die ständige Aktualisierung der Spezifikation macht Spezifikationsänderungen einfach - und erlaubt es den Kunden, das Produkt auf die gewünschte Zielgerade zu lenken.

Auf das Wesentliche reduzierte Planungstechniken senken die Hürde für das Projektmanagement und ermöglichen damit Aktualität und Disziplin.

Die agile Projektentwicklung bietet die Fähigkeit, auf die sich ändernden Anforderungen des Projekts zu reagieren und so auch ggf. noch während des Projekts die Zielsetzung entsprechend der Anforderungen des Kunden zu adaptieren.

Es müssen keine Vermutungen zwischen dem Entwicklerteam und dem Kunden angestellt werden, da die Kommunikation regelmäßig von Angesicht zu Angesicht erfolgt und kontinuierliche Eingaben seitens des Kunden stattfinden.

Schwächen

Die ursprünglichen Einschätzungen werden permanent über- oder untertroffen.

Ob der agile Ansatz dazu führt, dass Produkte schnell, gut, günstig oder qualitativ hochwertig entwickelt werden, hängt davon ab, wie die gewonnenen Erkenntnisse angewendet werden.

Die Selbstorganisation im Entwicklungsteam impliziert, dass Hierarchien in Frage gestellt werden. Mitglieder, die nicht bereit sind, ihre bisherige Position innerhalb des Entwicklungsteams aufzugeben, können daher Konflikte erzeugen.

V-Modell

Im Gegensatz zu phasenorientierten Vorgehensmodellen wie beispielsweise das Wasserfallmodell werden im V-Modell lediglich Aktivitäten und Ergebnisse definiert und keine strikte zeitliche Abfolge gefordert. Die Entwicklung erfolgt nicht in einer linearen Achse, stattdessen drehen sich die Stufen nach Abschluss der Codierungsphase wieder nach oben. Dieser Entwicklungsprozess erlaubt es Software-Entwicklern und -Testern parallel zu arbeiten. Beispielsweise werden basierend auf den Anforderungen bereits zu einer frühen Projektphase die Testspezifikationen vorbereitet.

Stärken

Alle Anforderungen an die Software sind aufgestellt und klar und eindeutig formuliert bevor die Entwicklung beginnt.

Jede Phase ist in einem festgelegten Zeitraum abgeschlossen und es wird zur nächsten Phase übergegangen. Dies gibt für das Projekt eine gewisse Planungssicherheit.

Software-Tester sind bereits bei der Erstellung der Anforderungen involviert. Dadurch wird eine hohe Test-Abdeckungsquote und damit hohe Zuverlässigkeit und Qualität der Software erreicht.

Änderungen der Anforderungen sind während der Projektlaufzeit möglich.

Verbesserung der Kommunikation zwischen allen Beteiligten: Die detaillierte Beschreibung aller Bestandteile des V-Modell und die Definition der verwendeten Begriffe sind die Basis des wechselseitigen Verständnisses aller Projektbeteiligten.

Reibungsverluste zwischen Auftraggeber und Auftragnehmer werden durch eine gemeinsame Sprache und ein abgestimmtes Vorgehen reduziert.

Minimierung der Projektrisiken: Durch die Vorgabe von Ergebnissen, verantwortlichen Rollen, standardisierten Vorgehensweisen und Entscheidungspunkten im Projekt erhöht das V-Modell die Projekttransparenz und verbessert die Planbarkeit des Projekts. Planungsabweichungen und Risiken werden so frühzeitig erkannt.

Zum Abschluss jeder Projektphase erfolgt die Dokumentation und dadurch wird eine hohe Qualität der Entwicklung erreicht.

Schwächen

Der größte Nachteil des V-Modells ist, dass es sehr steif und am wenigsten flexibel ist.

Wenn sich während der Projektlaufzeit etwas ändert, müssen nicht nur die Anforderungsdokumente, sondern auch die Testdokumentation aktualisiert werden.

Bei vielen Änderungen während der Projektlaufzeit und die Notwendigkeit von Reviews erfordern für eine konsistente Dokumentation einen sehr hohen Aufwand.

Dieses Vorgehensmodell ist nicht für kurzfristige Projekte geeignet, da in jeder Phase Reviews und Überprüfungen erforderlich sind.

Wasserfallmodell

Ein Wasserfallmodell bei der Software-Entwicklung ist ein lineares Vorgehensmodell, das den gesamten Entwicklungsprozess in aufeinander folgenden Projektphasen organisiert. Dabei gehen die Ergebnisse der Phasen wie bei einem Wasserfall immer als bindende Vorgabe für die nächsttiefere Phase ein. Zum Beispiel müssen alle Anforderungen aufgestellt sein bevor zur Design-Phase übergegangen wird oder die Software muss komplett implementiert sein bevor diese in der Test-Phase evaluiert werden kann. Die Dokumentation erfolgt am Ende jeder Phase damit eine hohe Projektqualität sichergestellt werden kann.

Stärken

Alle Anforderungen an die Software sind aufgestellt und klar und eindeutig formuliert bevor die Entwicklung beginnt.

Jede Phase ist in einem festgelegten Zeitraum abgeschlossen und es wird zur nächsten Phase übergegangen. Dies gibt für das Projekt eine gewisse Planungssicherheit.

Da es sich hier um ein lineares Vorgehensmodell handelt, ist es einfach um zu setzen.

Der zur Umsetzung dieses Vorgehensmodells erforderliche Ressourcenaufwand ist minimal.

Nach jeder Phase erfolgt die Dokumentation und dadurch wird eine hohe Qualität der Entwicklung erreicht.

Schwächen

Die Fehler und Probleme in einer Phase werden in dieser Phase nie vollständig gelöst und treten auf nachdem eine Phase abgeschlossen wurde. Dies führt häufig zu einem schlecht strukturierten System.

Änderungen an die Anforderungen während der Projektlaufzeit kann nicht mehr in der aktuellen Entwicklung berücksichtigt werden.



Wollen Sie mehr erfahren?
KONTAKT