Softwareentwicklung (Windows, Linux)
Softwareentwicklung - Training & Coaching:
Softwareentwicklung - Fachwissen:
C++ Programmierung: Dynamische oder statische Polymorphie?
Mit steigender Komplexität von Embedded-Software erlangt die Erfüllung von Qualitätsmerkmalen, wie Änderbarkeit, Erweiterbarkeit, Anpassbarkeit und Wiederverwendbarkeit, eine immer größere Bedeutung. Ein wichtiges Mittel, um diese Software-Qualitätsanforderungen zu erfüllen, ist die Anwendung von polymorphen Strukturen in der Architektur, im Design und in der Implementierung. Die Softwareentwicklung unterscheidet dynamische und statische Polymorphie.
Design for Test und Design for Safety – Software-Architektur nach Maß
Unser Alltag ist heute wie selbstverständlich von miteinander vernetzten Geräten und Systemen geprägt. Ob man mit dem Smartphone unterwegs den schnellsten Weg zum Ziel findet, auf dem Sofa mit dem Tablet die Zeitung liest oder die smarte Heizung über eine App auf dem Smartphone steuert, diese Systeme machen unser Leben komfortabler. Der Gewinn an Komfort erfordert jedoch auch strengere Security- und Safety-Anforderungen, mit denen die Entwickler solcher Systeme Schritt halten müssen. Dies gilt besonders für das autonome Fahren – hier haben schlüssige Safety-Konzepte oberste Priorität.
Embedded-Software-Redesign Guide
Manchmal ist es nicht mehr damit getan, alten Code zu erweitern: Eine Rundumerneuerung muss her. Diese Beitragsreihe beschreibt Vorgehen rund um das Embedded-Software-Redesign und erläutert dabei die Begriffe Reverse-Engineering, Refactoring und Reengineering.
Design Patterns in der Praxis richtig anwenden
Design Patterns sind Lösungen für häufig wiederkehrende Aufgabenstellungen des objektorientierten Softwareentwurfs. So gesehen spielen sie eine ähnliche Rolle wie das kleine Einmaleins, das man auswendig lernt, um die Ergebnisse für häufig vorkommende Rechenaufgaben nicht immer wieder neu berechnen zu müssen.
Programmierrichtlinien – Fluch oder Segen?
In Vorträgen, Artikeln und Büchern wird immer darauf hingewiesen, dass die Qualität des Codes ein entscheidender Faktor für den Erfolg des Projektes ist. Deshalb wird immer wieder versucht, Regularien einzuführen, die die Codequalität verbessern. Doch der Code, der von vielen Entwicklern abgeliefert wird, sieht alles andere als schön aus. Ein Ansatz, um die Qualität des Codes zu sichern, ist das Verwenden von Programmierrichtlinien.
Entwicklungsprozesse als Basis moderner Softwareentwicklung
Im professionellen Software Engineering sind die Entwicklungs- und Prozess-Schritte vor der Software-Implementierung essentiell. Begriffe wie Softwareanalyse und Softwaredesign bzw. Software-Grobdesign und Software-Feindesign aus den Entwicklungsprozessen (beispielsweise dem V-Modell XT oder dem branchenspezifischen V-Modell Automotive) stehen genau dafür.
Requirements Engineering und Management
Anforderungen erfassen und verwalten ist ein wesentlicher Schlüssel zu erfolgreichen Projekten. Egal ob im klassischen oder agilen Prozessumfeld – professionelles Requirements Engineering und Management für Embedded- und Echtzeitsysteme verkürzt Ihre Projektlaufzeiten und spart Entwicklungs- sowie Wartungskosten ein. Stellen Sie sich dieser Herausforderung!
Mit durchdachter Software-Usability Wettbewerbsvorteile erzielen
Die Qualität von industrieller Software stellt für Unternehmen einen entscheidenden Wettbewerbsfaktor dar. Der Projekterfolg steht dabei im direkten Zusammenhang mit einer hohen Bedienqualität. Die Kommunikation zwischen Mensch und Computer basiert auf Kenntnissen der Informatik, Psychologie, Ergonomie und Arbeitswissenschaft. Entwickler können auf bewährte Prozesse, Tests und Analysen zugreifen, die ihnen wertvolle Einsichten liefern.
Hinweise auf drohende Software-Erosion und was Sie dagegen tun können
Erfolgreiche Embedded-Software wird meist über einen langen Zeitraum hinweg entwickelt. Dabei kann es passieren, dass hin und wieder Beziehungen in den Code eingebaut werden, die dort nichts zu suchen haben. Mit der Zeit weicht die Software immer stärker von der geplanten Architektur ab – die Software-Erosion befindet sich in vollem Gange.
Neuen Schwung ins Embedded-Projekt mit C++11
Viele Embedded-Projekte arbeiten noch mit älteren (und veralteten) Umgebungen, die den Entwicklern nicht die Möglichkeit bieten, einen neuen C++ Standard zu nutzen. Das ist ein Versäumnis. Denn damit fehlen den Programmierern nicht nur die neu hinzugefügten Features – in C++11 wurden einige Dinge grundlegend verbessert.
Sensoren mit Linux ansprechen – Setzen Sie aktuelles Embedded-Linux-Knowhow direkt in Ihren Projekten ein
Ihre Aufgabe ist der erfolgreiche Einsatz des Betriebssystems Linux in Ihrem Embedded-Projekt. Die Herausforderung beim Einsatz realer Hardware unter Echtzeitbedingungen besteht darin, die korrekte Nutzung von Embedded-Linux zu verstehen und die verfügbaren Linux-Betriebssystem-Mechanismen richtig auszuwählen.
Wichtiger denn je: In Systemen und Architekturen denken
Der Blick in die Gegenwart und die Zukunft zeigt deutlich, dass die Embedded-Welt und die IT-Welt miteinander verflochten sind und sich immer mehr verflechten werden. Embedded-Systeme werden zum Bestandteil des Internet of Things, das sich zu einem Internet of Everything entwickelt und Brutstätte vieler neuer Geschäftsideen sein wird. Die große Herausforderung liegt darin, in immer komplexeren und dynamischeren Systemen zu denken und die immer rasanteren technischen und unternehmerischen Aspekte zu neuen Systemen und Geschäftsideen zu kombinieren. Unsere Trainer haben sich dazu ein paar Gedanken gemacht.
Größer und universeller: Alles über "Modernes C++"
Mit C++11 hat vor sechs Jahren eine neue Zeitrechnung für C++ begonnen. MicroConsult bringt Licht ins Dunkel der modernen C++ Standards und bringt Sie mit einem eigens dafür entwickelten Training auf den neuesten Stand zu C++17.
Tipp für STM32-Entwickler: Konvertieren Sie Ihr Projekt von C in C++ mit STM32CubeMX und Open System Workbench for STM32
Diesen Tipp haben wir für Entwickler zusammengestellt, die mit der Workbench for STM arbeiten und ihr Projekt mit C++ kompilieren wollen.
So binden Sie das Surface Dial in die eigene Applikation ein
Das Surface Dial ist ein neues Eingabegerät von Microsoft, das die Arbeit mit grafischen und auch technischen Applikationen erleichtern soll. Es verbindet die Funktion eines Drehknopfes mit der der Enter-Taste. Bereits im Herbst 2016 wurde es vorgestellt, jetzt ist es auch bei uns erhältlich.
Software-Architektur braucht Verantwortung und Können: Welche Themen sollte der Software-Architekt beherrschen?
Mit der steigenden Produktkomplexität und immer leistungsfähigerer Hardware erhöhen sich ebenfalls der Umfang und die Komplexität der Software von Embedded-Systemen. In vielen Produkten setzt die Software den wesentlichen Teil der Funktionalität um.
- Vortrag: Software-Architektur (ESE Kongress 2016, PDF)
- Tagungsband-Skript: Software-Architektur (PDF)
Wie geht es weiter mit C++? - Beschlossene und geplante Änderungen des C++-Standards
Seit der Version 11 bewegt sich wieder etwas im Hause C++. Wurde lange Zeit die Weiterentwicklung des C++ Standards von der (Programmier-) Öffentlichkeit kaum wahrgenommen, hat die Version 11 von C++ der Programmiersprache neuen Schwung verliehen.
- Vortrag: Wie geht es weiter mit C++ (ESE Kongress 2016, PDF)
- Tagungsband-Skript: Wie geht es weiter mit C++ (PDF)
Windows en miniature - Was steckt hinter Windows 10 IoT?
Microsoft hat im letzten Jahr mit großem Getöse "Windows 10 IoT" vorgestellt. Eine Version – Windows 10 IoT Core – ist sogar auf der beliebten Bastelplattform Raspberry Pi verfügbar. Was steckt nun hinter "Windows 10 IoT Core"?
- Vortrag: Was steckt hinter Windows 10 IoT (ESE Kongress 2016, PDF)
- Tagungsband-Skript: Was steckt hinter Windows 10 IoT (PDF)
Von C nach Embedded-C: Das Ziel bestimmt den Weg
Natürlich ist Embedded-C auch C. Der Umstieg von C auf Embedded-C bedeutet aber, dass der Programmierer sich beim Einsatz an den Erfordernissen der jeweiligen Embedded-Anwendung orientieren muss. Dies sind beispielsweise Echtzeitfähigkeit, geringer Speicherbedarf oder hohe Betriebssicherheit. Gleichzeitig stellt die Wiederverwendbarkeit von Software auch in der Embedded-Welt ein wichtiges Qualitätsmerkmal dar. Die richtige Anwendung der C-Schlüsselwörter spielt dabei eine bedeutende Rolle.
Objektbasiert oder objektorientiert? - Moderne Low-Level-Treiberprogrammierung mit C/C++
Die Programmiersprache C ist in der Embedded-Welt sehr weit verbreitet. Eine Vielzahl von Embedded-Systemen wurde in der Vergangenheit – und wird sicher auch noch in Zukunft – in C programmiert. Der Zugriff auf die im Mikrocontroller vorhandenen Peripheriemodule (Steuer-, Status- und Arbeitsregister) kann in unterschiedlichsten Formen durchgeführt werden. Für die modernen, zum Teil sehr komplexen Embedded-Systeme muss darauf geachtet werden, dass gut lesbarer, wiederverwendbarer, leicht erweiterbarer Code entsteht. Hier kommt als Programmier-Paradigma die "objektbasierte Programmierung" ins Spiel. Und dann stellt sich als nächstes die Frage, ob nicht gleich "objektorientiert" programmiert werden soll.
- Vortrag: Moderne Low-Level-Treiberprogrammierung mit C/C++ (ESE Kongress 2015, PDF)
- Tagungsband-Skript: Moderne Low-Level-Treiberprogrammierung mit C/C++ (PDF)
Implementierung von Zustandsautomaten in C++
Für Steuerungsaufgaben werden heutzutage in vielen Programmen Zustandsautomaten eingesetzt. Die Programmiersprache C++ setzt sich auch im Embedded-Bereich immer mehr durch, viele Projekte steigen von C auf C++ um. Das Kompaktseminar vermittelt einen Einblick in die Programmierung von Zustandsautomaten mithilfe der Programmiersprache C++. Es wird gezeigt, welche Alternativen zu Switch-Case und Zustands-Pattern existieren. Weiterhin werden Vor- und Nachteile der einzelnen Lösungen diskutiert.
Prinzipien für Embedded-Softwarearchitekturen
Die SOLID-Prinzipien: 5 Grundsätze für bessere Software
Die Qualität der Software ist nicht in allen Projekten ideal, und deshalb werden in vielen Bereichen Anstrengungen unternommen, eine Verbesserung zu erreichen. Der Einsatz von Software Engineering soll den Code in allen seinen Aspekten verbessern.
- Vortrag: Die SOLID-Prinzipien (ESE Kongress 2014, PDF)
- Tagungsband-Skript: Die SOLID-Prinzipien (PDF)
Das Rad nicht immer neu erfinden - Architekturmuster im Embedded-Umfeld
Da Embedded-Projekte sehr klein starten, wird dort oft kein Gedanke an die Software-Architektur verschwendet. Etwas soll schnell funktionieren – und die Probleme mit der neuen Hardware sind ja auch noch zu lösen. Solch ein Vorgehen rächt sich schnell. Spätestens bei der nächsten Kundenanforderung merkt man, dass ein bisschen Struktur in der Applikation die Änderungen erleichtert hätte – aber wir haben ja jetzt keine Zeit mehr, etwas zu ändern, denn der Kunde wartet. So geht es dann weiter - und jedes Mal wird der Aufwand immer größer.
- Vortrag: Architekturmuster im Embedded-Umfeld (ESE Kongress 2013, PDF)
- Tagungsband-Skript: Architekturmuster im Embedded-Umfeld (PDF)
Entwurfsmuster – Design Pattern
Bei der objektorientierten Entwicklung der Software-Architektur, des Software-Designs und der objektorientierten Programmierung (OOP) einer strukturierten Software-Entwicklungsmethode stößt man immer wieder auf gleichartige Aufgaben und Entwurfsprobleme, die durch den Einsatz von wiederverwendbaren Entwurfsmustern (praxisbewährte Lösungs-Schablonen) einen sich wiederholenden Software-Programmieraufwand verhindern.
Apps plattformunabhängig entwickeln - Möglichkeiten und Grenzen von HTML5 und JavaScript
Applikationen unabhängig vom Betriebssystem entwickeln, ohne dass eine spezielle Laufzeitumgebung installiert ist – das wäre doch super. Warum ersetzen wir nicht das Betriebssystem durch den Browser - den gibt es überall? Jeder Browser versteht HTML, und seit vielen Jahren kann jeder Browser JavaScript. Damit ist doch alles vorhanden. Wir beschreiben die Benutzeroberfläche mit HTML und programmieren mit JavaScript. – Alles wird gut: schnellere Entwicklungszeiten, billige Entwickler (man muss ja keine exotischen Programmiersprachen beherrschen) und keine Sonderlösungen für eine spezielle Plattform. Aber: Wie immer steckt der Teufel im Detail. Deshalb wird in diesem Artikel der Mythos HTML5 etwas näher betrachtet und die Möglichkeiten und Grenzen der Applikationsentwicklung speziell für mobile Geräte werden aufgezeigt.
- Vortrag: Apps plattformunabhängig entwickeln (ESE Kongress 2013, PDF)
- Tagungsband-Skript: Apps plattformunabhängig entwickeln (PDF)
Das Embedded Software Engineering Kochbuch
Anti-Aging für Embedded-Software - Tipps für langlebige Software
Software-Paradigmen: Was programmiere ich da eigentlich?
Ein SW-Paradigma ist ein grundsätzlicher Programmierstil - also die Art und Weise, wie ein Programmierer seinen Code schreibt. Die Unterschiede der Paradigmen liegen im Umgang mit den Daten und ihrer Repräsentation bzw. in der Darstellung des Kontrollflusses. Die verschiedenen Paradigmen schließen sich nicht grundsätzlich gegenseitig aus, sondern lassen sich häufig miteinander kombinieren. Bei der Bezeichnung der Paradigmen herrscht oft Verwirrung. Einige Namen werden falsch verwendet, bei anderen herrscht Unklarheit, wo neben der großen Ähnlichkeit nun der Unterschied besteht. Dieser Artikel erläutert einige der heute gebräuchlichen SW-Paradigmen.
Software Engineering mit UML & C: Praxisgerechter Einsatz für kleine Embedded-Systeme
In vielen Köpfen ist die UML verknüpft mit objektorientierter Programmierung und Hochsprachen wie C++, Java oder C#. Das ist natürlich auch richtig, aber die UML ist ebenso bestens für die Modellierung und Implementierung von kleinen Embedded-Applikationen mit prozeduraler Programmierung in ANSI-C einsetzbar. Wie das im Einzelnen für typische Software-Elemente aussieht und wie die Vorgehensweise dazu ist, zeigt dieser Beitrag.
- Vortrag: Software Engineering mit UML & C (ESE Kongress 2012, PDF)
- Tagungsband-Skript: Software Engineering mit UML & C (PDF)
Gesunde Software