e2factory ist ein für industrielle Anforderungen optimiertes Software Management und Build System. e2factory unterstützt das gesamte Product Lifecycle Management der in einem Kundenprodukt enthaltenen Embedded Software-Komponenten, insbesondere, aber nicht nur, auf Board Support Package-Ebene.
Konsequenter Bottom-up Ansatz
Anders als bei einer Distributions-basierten Systementwicklung erfolgt die Zusammenstellung der benötigten Software in e2factory Bottom-up und gemäß den produktspezifischen Anforderungen auf Basis von qualifizierten Mainline-Sourcen. e2factory bietet eine klare Trennung von Build System, Sourcen, Anpassungen und Baurezepten.
e2factory unterliegt der GPLv3 und ist als Entwicklungswerkzeug frei verfügbar.
Entscheidend für den industriellen Einsatz sind in erster Linie die folgenden Eigenschaften und Zusatznutzen:
e2factory erlaubt eine leicht verständliche, komplexitätsreduzierte Nutzung und bietet hohe Transparenz des Build-Prozesses und der jeweiligen Build Results. Die Rückverfolgbarkeit von Änderungen und das stringente Versionsmanagement vereinfachen das Lifecycle-Management signifikant.
- einfache und transparente Nutzung
- geringe Komplexität bei fokussierter Funktionalität
- umfangreiche Dokumentation (e2factory professional)
- Multiuser-Fähigkeit durch Client-/Server-Architektur
- Pakete, Treiber, Bibliotheken aus unterschiedlichen Quellen können eingesetzt werden (z.B. Upstream, Yocto, Hardware-Hersteller)
- Transparente Zusammenstellung von komplexitätsreduzierten Linux Board Support Packages (BSPs)
- einfache Integration von Prozessor- und Board-spezifischen Anpassungen
- Erstellen valider Toolchains zur externen Nutzung mit z.B. Eclipse
- integriertes Versionsmanagement; beliebige Versionen eines Systems können in einem Projekt verwaltet werden
- valide Rückverfolgbarkeit von allen Änderungen
- Konfigurationen sind einfache anpassbar und nachvollziehbar
e2factory unterstützt die Verwendung von Mainline-Sourcen und einen Bottom-up-Prozess der Zusammenstelllung von Linux Board Support Packages (BSPs). Es erfolgt eine inhärente Härtung des Systems bei hoher Transparenz und minimalen Abhängigkeiten. Verbesserungen aus der Community können zeitnah und mit geringem Integrationsaufwänden übernommen werden.
- gezielte, qualitätsgesicherte Zusammenstellung eines BSPs ohne unerwünschte Patches, Versionskonflikte, Abhängigkeiten etc.
- Vorbereitet für Community-nahes Arbeiten (Mainline Compliance)
- die Auswahl von Komponenten erfolgt nach Requirements
- die Übernahme von Komponenten erfolgt gemäß architektonischer Vorgaben des Systemdesigns
- Sourcen können direkt vom Community upstream bezogen werden (kein Distributions Lock-in)
- Pakete, Treiber, Bibliotheken aus anderen Quellen (z. B. Yocto) können eingesetzt werden
- Open Source Compliance: e2factory unterstützt ein verlässliches Lizenzmanagement
- Aktualisierungen sind kontinuierlich über differentielle Updates einzelner Pakete möglich
e2factory vereinfacht die normenkonforme Entwicklung von Linux Systemen nach beispielsweise IEC 62304, WELMEC und Common Criteria:
- e2factory wird unter Nutzung einer eigenen Test-Suite entwickelt
- Baurechner- und Personenunabhängigkeit durch separiertes, verteiltes Bauen in Containern
- automatisierte Erzeugung technischer Dokumentationen und Zulassungsdokumente mit Übernahme von Informationen aus dem Build-Prozess
- automatisierte Systemintegration in Continuous Integration Systeme für Nightly Builds und automatisierte Tests
- durchgängige Nachverfolgbarkeit von Requirements, Buildergebnissen und zugehöriger Dokumentation (IEC62304)
- Requirements (-Nummern) fließen über Metadaten in Buildergebnis und Build-ID (Images und Dokumentation) ein
- Automatischer Bau von normativ geforderten Dokumentationen z.B. SOUP-Liste und Detailed-Design aus IEC62304
- Erzeugung von Paketlisten zum Abgleich mit Test-Protokollen (siehe TAF) zur Ermittlung der Test Abdeckung.
- Validierbare Integrität und Reproduzierbarkeit aller Software-Stände und deren Dokumentation durch Prüfsummencheck (Hash-Baum) sämtlicher Eingangsparameter (Sourcen, Buildscripte, Konfiguration, Bauumgebung)
- Eineindeutige Build-ID für jedes Build-Ergebnis (Wurzel-Prüfsumme des dazugehörigen Hash Baumes)
Der Grad der Prozesssicherheit und Automatisierung von Bau-, Integrations- und Testprozessen (Build- und Software Management) des Systems beeinflusst unmittelbar die Höhe der Personalkosten und die Personenunabhängigkeit der Wartung und Pflege. Mehraufwände und Risiken, die aus der wiederholten Anpassung, der häufig fehlenden Dokumentation und der hohen Komplexität einer Distribution entstehen, werden ausgeschlossen.
- hohe Transparenz der Software und des Bauprozesses
- effizientes und verlässliches Lifecycle Management über diverse Software-Stände
- Validierbare Integrität und Reproduzierbarkeit aller Software-Stände und deren Dokumentation durch eineindeutige Build-IDs
- auditierbares Tracking und Tracing von Änderungen
- Software Paket Management auf Host und Target (optional)
- Personen- und Baurechnerunabhängigkeit des Build-Prozesses
- Patches und Pakete aus dem Upstream können "barrierefrei" und ohne zeitlichen Verzug übernommen werden (Mainline Compliance)
- Pakete, Treiber, Bibliotheken aus anderen Quellen (z.B. Yocto, Hardware-Hersteller) können eingesetzt werden
- Integration in CI-Systeme wird unterstützt
- Lizenzänderungen lassen sich mit minimalem Aufwand mitpflegen
- Systemsoftware ist erheblich transparenter und einfacher testbar
Die Gewährleistung einer hohen IT-Sicherheit bei Netzwerk-integrierten Produkten wird durch den Einsatz von Sourcen aus der Community möglich. Ein Security-Monitoring wird erst durch die inhärente Härtung des BSPs und die nachverfolgbare Dokumentation wirtschaftlich sinnvoll durchführbar.
- zeitnahe Übernahme von Security-Patches und Paket-Updates aus der Upstream Community
- Inhärentes Härten des Board Support Packages (BSP) durch Bottom-up-Ansatz
- Einzelne Security-Patches können versionssicher integriert und ausgerollt werden (vollständige Rückverfolgbarkeit)
- auditierbares Software Change Management und Überprüfung der Integrität der Systemkonfiguration
- Bei Paket-Updates können durch den transparenten, reduzierten Aufbau mögliche Abhängigkeiten sofort aufgelöst/nachgezogen werden
- Security-Patches in der Wartungsphase sind reproduzierbar und rückverfolgbar
- e2factory ermöglicht ein wirtschaftliches Security Monitoring und Patch Management
Der Entwicklungs- und Wartungsaufwand wird stark von der Größe und Komplexität eines Embedded Linux BSPs beeinflusst. Auch die angewandte Entwicklungsmethodik (Distributions-basierte oder mainline-basierte Systementwicklung) beeinflusst stark die Art und Kosten der Maintenance und damit die Investitionssicherheit. Geringe Komplexität und Größe beeinflussen die Kostensituation positiv.
- Build Automation Management mit definierten Kosten
- definierte technische Prozesse für ein effektives Release und Software Change Management
- kostengünstige Open Source Compliance durch Mitführung von Lizenzinformationen und automatisierte Erzeugung von Komponentenlisten
- sicheres, verteiltes Arbeiten über verschiedene Standorte (e2factory workbench) ermöglicht den synchronen Einsatz knapper Entwicklungskapazitäten
- paralleles Arbeiten von Entwicklern (Multiuser-Fähigkeit) ermöglicht eine kürzere Time-to-Market
- kein Distributions Lock-in, keine Aufwände durch unerwünschte patches oder Versionskonflikte
- unterstützt die kostengünstige Wartung von Produktvarianten und -familien
- schnelle Reaktion auf Hardware-Änderungen durch die effiziente Pflege mehrere Varianten eines Systems auf identischer Code-Basis (Obsoleszenzmanagement)
- funktionale Erweiterungen des Systems zu planbaren Kosten durch differentielle Updates einzelner Komponenten
- keine unkontrollierten Aufwände durch Distributions-Upgrades
e2factory unterstützt in Verbindung mit einem Mainline- sowie einem Bottom-up-Ansatz eine Entwicklung, die den Anforderungen an eine Open Source Compliance genügt. Für die in einem Industrieprodukt enthaltenen Software-Komponenten können Informationen über Herkunft, Qualität sowie die exakte Bezeichnung und Version mitgeführt werden. Enthaltene Open Source-Lizenzen können valide und nachverfolgbar dokumentiert und administriert werden und sind Bestandteil der eindeutigen Build-ID.
- Aufbau und Pflege einer verlässlichen Software Supply Chain
- Verfügbarkeit von vertrauenswürdigen Compliance-Informationen
- Bottom-up-Ansatz und minimierte Abhängigkeiten erlauben ein vollumfängliches Lizenzmanagement
- Übernahme von Original-Sourcen und Make-Anweisungen
- Möglichkeit der Signatur des Build-Prozesses durch autorisierte Person
- Automatisierte Erstellung der Komponentenliste (Bill of Material) für Konformitäts- und Lieferantenerklärungen
- Nur qualifizierter Code ist Bestandteil des Systems
- Automatisierte Erstellung der Lizenzinformationen (OSS Declaration) inkl. automatisierter Zusammenstellung der Lizenztexte in Dateien
- vollständige Rückverfolgbarkeit von allen Änderungen auch von Lizenzen
- wirtschaftliches Lizenzmanagement über den Produktlebenszyklus
e2factory ist eine emlix-Marke und wird in emlix-Verantwortung kontinuierlich gewartet und weiterentwickelt. Hierbei gibt es klare Paradigmen im Bereich der Verlässlichkeit, Rückwärtskompatibilität und der Validierbarkeit mit zentralem Reviewing. e2factory-Updates werden sorgfältig geplant, gründlich getestet (umfangreiche Testsuite) und für jeden einzelnen Kunden abgestimmt.
Bei weniger strikten Anforderungen an die Prozesssicherheit über den Lebenszyklus und gleichzeitig der Notwendigkeit, auch anonymen Applikationsentwicklern eine geeignete Entwicklungsumgebung zur Verfügung zu stellen, stellt ein reduzierter Yocto-Ansatz mit dem Yocto-Bausystem BitBake sowie der Minimaldistribution Poky-Tiny eine Alternative dar.