Consilia ist ein kundenorientiertes Unternehmen für Softwareentwicklung

Wir bieten schlüsselfertige Entwicklung oder unterstützen nur in bestimmten Phasen.

Consilia hilft seinen Kunden, ihr Budget für die Softwareentwicklung zu senken.

Wir entwickeln seit vielen Jahren Anwendungen und eingebettete Firmware.

Eine übliche Frage für Entwickler elektronischer Produkte, die Dienstleistungen von einer Softwareentwicklungsfirma bestellen, ist, wie Software in Hardware eingebettet werden kann.

Sie müssen sich nicht mit mehreren Lieferanten herumschlagen

Wir können SW und HW in einem eingebetteten Gerät integrieren und bieten auch Systemtests an.
Wir finden Lösungen, wo andere scheitern.
Unser Team von Ingenieuren folgt den neuesten Trends in der Softwareentwicklung, um unsere Produkte einfacher, wiederverwendbar und leicht modifizierbar zu machen.

Software-Entwicklungsdienste

Wir können Ihr Softwareentwicklungsprojekt in vielen Bereichen beschleunigen

Wir konzentrieren uns auf eingebettete Anwendungen.

Wir entwickeln auch ihre Software-Gegenstücke für Host-PCs, um unseren Kunden eine vollständige Servicekette zu bieten (einschließlich der Integration von Hardware und Software).

Liste der Dienstleistungen

Backend-Design
Entwicklung von Linux-Anwendungen
Softwaretest
Linux BSP-Erstellung und Prozessorportierung
Firmware-Entwicklung
Treiberentwicklung für Windows und Linux
Frontend-Design

Embedded Systems Testing

Möchten Sie sicherstellen, dass Ihr Embedded-Produkt stabil, maximal zuverlässig und funktional ist? Unsere ISTQB-zertifizierten Tester decken versteckte Probleme frühzeitig auf, sparen Ihnen Kosten für spätere Korrekturen und helfen sicherzustellen, dass Ihr Produkt pünktlich auf den Markt kommt.

Was wir für Ihr Produkt tun können

Wir bieten Dienstleistungen in jeder Phase des Lebenszyklus der Softwareentwicklung.

Es hängt vom Kunden ab, ob er eine schlüsselfertige Lösung benötigt, d. h. ob er unsere gesamte Prozesskette oder nur einige unserer Dienstleistungen in Anspruch nehmen möchte, insbesondere wenn der Kunde über ein eigenes Team mit einer Lücke in einer bestimmten Kompetenz verfügt (z. B. Softwaretests).

Unser typischer Arbeitsablauf basiert auf den folgenden kontrollierten Prozessen:

01.

Studien zur Durchführbarkeit

Vor der Realisierung des Projekts analysieren wir sorgfältig, ob und welche Technologien alle Anforderungen erfüllen können, einschließlich der Herstellbarkeit und der Produktionskosten.

Für eine solche Analyse benötigen wir bestimmte Angaben vom Kunden - z. B. technische Anforderungen, Zielkosten und Zeitplan.

02.

Entwurf einer Software-Architektur

Wir betrachten den Entwurf der SW-Architektur als einen wichtigen Teil, bei dem wir in der Anfangsphase einen angemessenen Aufwand betreiben und später viele Kosten sparen.

Wir skizzieren die Schichten der Software, schlagen die Funktionsblöcke vor und definieren die Beziehungen zwischen ihnen.

03.

Nachweis der Machbarkeit

In einigen Fällen erstellen wir einen schnellen Prototyp, der uns (und natürlich dem Kunden) zeigt, ob der Systemarchitekturkandidat eine große Chance hat, die Schlüsselfunktionalitäten und Anforderungen zu erfüllen.

Bei einem solchen POC (Proof of Concept) testen und messen wir auch kritische Punkte, z. B. die mechanische Stabilität, die Reaktionsfähigkeit des Systems, den Datendurchsatz und den Stromverbrauch.

04.

Datenflussmodelle

Auf der Grundlage der Softwarearchitektur erstellen wir detaillierte Datenflussmodelle, bei denen wir genau sehen, ob sie den Anforderungen entsprechen.

Wir verwenden die Ergebnisse dieser Phase als Grundlage für die Erstellung der Module/Einheiten und des Komponententestplans.

05.

‍Forschung zu Lösungen

Viele Marketingmodelle lassen sich auf verschiedene Weise realisieren.

Wir analysieren immer mehrere Lösungen oder Konzepte, um eine Art internen Wettbewerb zwischen ihnen anzuregen und die beste von ihnen auszuwählen.

06.

Umsetzung

Wir implementieren die Software unter weitgehender Verwendung eines Revisionskontrollsystems. Wir haben seit vielen Jahren sehr viel Erfahrung mit Git.

Beim Zusammenführen der Feature-Branches in den Master-Branch unterstützt uns das System insbesondere bei Code-Reviews.

07.

Unit-Tests

Unser Team kümmert sich intern um die Unit-Tests.

Wir verwenden die Unit-Tests, um die Unit/ das Modul auf der niedrigstmöglichen Ebene zu debuggen, was für uns einer der kostensparendsten Wege zu stabiler und zuverlässiger Software ist.

08.

Vertikale Integration der Komponenten

In Projekten, in denen der agile Ansatz als der beste gewählt wurde, führen wir eine vertikale Integration der Komponenten durch, um alle ein bis zwei Wochen ein sichtbares Merkmal oder eine Funktionalität zu erhalten.

So kann der Produktverantwortliche verfolgen, ob das Projekt geradlinig verläuft, und mögliche kritische Pfade so schnell wie möglich aufdecken.

09.

Integration mit HW

Die Zusammenarbeit des Software- und Hardwareteams ist unsere Stärke.

Unsere Hardware-Kollegen sind sehr erfahren in der Entwicklung eigener Hardware-Module und der Planung von Hardware-/Software-Schnittstellen im Voraus.

Daher führen wir in der Regel eine nahtlose Hardware-/Software-Integration durch und vermeiden, dass kritische Systemfehler zu spät entdeckt werden.

10.

Funktionstests

Im Rahmen der vertikalen Integration testen wir die Systemfunktionen auf der Grundlage des Funktionstestplans.

Wenn es sich anbietet, erstellen wir unser eigenes Testsystem und implementieren die Tests so, dass sie jederzeit wiederverwendet und wiederholt werden können.

11.

Regressionstests

Wenn wir neue Funktionen hinzufügen und implementieren, testen wir auch die bestehenden, damit das gesamte System in all seinen Teilen zuverlässig funktioniert.

Im Grunde sind Regressionstests für uns regelmäßig wiederholte Funktionstests.

Daher verwenden wir das Testsystem und die Testfälle aus den Funktionstests wieder.

01.

Studien zur Durchführbarkeit

Für eine solche Analyse benötigen wir bestimmte Angaben vom Kunden - z. B. technische Anforderungen, Zielkosten und Zeitplan.

02.

Entwurf einer Software-Architektur

Wir skizzieren die Schichten der Software, schlagen die Funktionsblöcke vor und definieren die Beziehungen zwischen ihnen.

03.

Nachweis der Machbarkeit

Bei einem solchen POC (Proof of Concept) testen und messen wir auch kritische Punkte, z. B. die mechanische Stabilität, die Reaktionsfähigkeit des Systems, den Datendurchsatz und den Stromverbrauch.

04.

Datenflussmodelle

Wir verwenden die Ergebnisse dieser Phase als Grundlage für die Erstellung der Module/Einheiten und des Komponententestplans.

05.

‍Forschung zu Lösungen

Wir analysieren immer mehrere Lösungen oder Konzepte, um eine Art internen Wettbewerb zwischen ihnen anzuregen und die beste von ihnen auszuwählen.

06.

Umsetzung

Beim Zusammenführen der Feature-Branches in den Master-Branch unterstützt uns das System insbesondere bei Code-Reviews.

07.

Unit-Tests

Wir verwenden die Unit-Tests, um die Unit/ das Modul auf der niedrigstmöglichen Ebene zu debuggen, was für uns einer der kostensparendsten Wege zu stabiler und zuverlässiger Software ist.

08.

Vertikale Integration der Komponenten

So kann der Produktverantwortliche verfolgen, ob das Projekt geradlinig verläuft, und mögliche kritische Pfade so schnell wie möglich aufdecken.

09.

Integration mit HW

Unsere Hardware-Kollegen sind sehr erfahren in der Entwicklung eigener Hardware-Module und der Planung von Hardware-/Software-Schnittstellen im Voraus.

Daher führen wir in der Regel eine nahtlose Hardware-/Software-Integration durch und vermeiden, dass kritische Systemfehler zu spät entdeckt werden.

10.

Funktionstests

Wenn es sich anbietet, erstellen wir unser eigenes Testsystem und implementieren die Tests so, dass sie jederzeit wiederverwendet und wiederholt werden können.

11.

Regressionstests

Im Grunde sind Regressionstests für uns regelmäßig wiederholte Funktionstests.

Daher verwenden wir das Testsystem und die Testfälle aus den Funktionstests wieder.

Erhalten Sie Unterstützung von unseren Experten in allen Phasen der Softwareentwicklung und heben Sie Ihr Projekt auf die nächste Stufe.

Technologien und Plattformen

Für die Softwareentwicklung verwenden wir immer das Bugtracking-System JIRA und Bitbucket (beide von Atlassian). Alle anderen Technologien unterscheiden sich je nach Anwendung (Embedded, Native, Web), Plattform (ARM Cortex M0 - M4, ARM Cortex A7 - A73, ST32) und Programmiersprache (C, C++, C#, Python, JavaScript).

Weitere Informationen darüber, welche Technologien, Plattformen und Programmiersprachen wir für die Entwicklung von Software verwenden, finden Sie auf der Entwicklungwerkzeuge.

Zehntausende

Zeilen eingebetteten Codes

Unsere Software-Ingenieure wissen jedoch, dass Software-Entwicklung nicht nur aus Codierung besteht.