Ich beginne mit der Programmierung eingebetteter Software mit einem RTOS und da ich bereits Entwickler für Desktop-Anwendungen bin, habe ich mich immer wieder gefragt, wie es ist, eingebettete Software mit UML-Diagrammen wie Aktivitätsdiagrammen, Sequenzdiagrammen, Anwendungsfällen usw. zu modellieren.
Wird eingebettete Software mit UML entworfen, so wie es Desktop-Anwendungen tun? Ist es die beste Option oder gibt es eine bessere? Kann ich einige Beispiele haben?
Gibt es dafür ein spezielles Tool?
Es gibt Echtzeit-Erweiterungen für UML, die von einer Firma populär gemacht wurden, deren Name mir im Moment nicht bekannt ist. Ich erinnere mich, dass ich vor einigen Jahren eine Arbeit darüber geschrieben habe. Bruce Powell Douglass hat einige Bücher zum Thema Modellierung eingebetteter Systeme mit UML geschrieben, aber seine Firma ist nicht diejenige, an die ich denke.
Allerdings, um Wouter zu wiederholen, ist eingebettete Software an sich nichts Besonderes. Ich schreibe jeden Tag eingebettete Software für ein System, das auf Prozessoren der Pentium-Klasse läuft; UML ist durchaus anwendbar. Denken Sie auch daran, dass UML im Laufe der Zeit viele Aspekte der Steuerungssoftware hinzugefügt wurden: Es gibt eine Syntax zur Angabe synchroner oder asynchroner Ereignisse zusammen mit der Reaktionszeit in Sequenzdiagrammen, Petrinetz-artiges Verhalten kann in Aktivitätsdiagrammen gefunden werden, Zustandsdiagramme modellieren das Verhalten sogar noch besser als Zustandsdiagramme können usw.
OTOH, viele Leute ziehen es vor, eingebettete Software mit strukturiertem Design und Datenflusskonzepten zu modellieren. Es dreht sich alles um die Art des Systems, das Sie entwerfen und was am besten funktioniert.
Wenn wir uns einem RTOS zuwenden, haben wir es normalerweise mit einer Anwendung zu tun, die viele gleichzeitige Aufgaben hat, die optimal geplant werden müssen, damit jede von ihnen ihre Fristen pünktlich einhält oder Ressourcen sicher teilt. Das von Ihnen gewählte RTOS-Framework implementiert einen Aufgabenplaner, und Ihre Aufgabe besteht (normalerweise) darin, diese einzelnen Aufgaben mit einem bestimmten Satz von Eigenschaften (Zeitraum, Priorität usw.) zu schreiben und sie dann an den Planer zu übergeben. Für die Dokumentation wäre der Ansatz, den ich wählen würde, jede Aufgabe sorgfältig zu dokumentieren.
Die meiste eingebettete Software und, soweit ich weiß, die meisten Echtzeitbetriebssysteme sind nicht in einer objektorientierten Sprache geschrieben und profitieren daher möglicherweise nicht von vielen Dingen, die darauf ausgerichtet sind, wie zum Beispiel Klassendiagramme.
Beim Dokumentieren Ihrer RTOS-Aufgaben wäre jedoch jedes Diagramm, das die Aufgabe gut beschreibt, von großem Vorteil. Ich könnte mir vorstellen, dass zum Beispiel ein Sequenzdiagramm für jede Aufgabe sehr hilfreich sein könnte. Darüber hinaus könnten Sie seine harten Anforderungen wie Zeitraum/Häufigkeit, Priorität, alle gemeinsam genutzten Ressourcen, die es möglicherweise verwendet, Präemptionsanforderungen usw. Maschine seines Planungsalgorithmus.
Nehmen Sie jeden dieser Ratschläge, wie Sie möchten, ich habe seit meiner College-Zeit nicht mehr mit RTOS-Sachen herumgespielt und die Arbeit nie wirklich "dokumentiert".
Beim Modeln dreht sich alles um
wissen, was in Ihrer Anwendung schwierig und komplex ist,
Finden eines Modellierungswerkzeugs/einer Sprache/Abstraktion/Konvention/Notation, die für diesen Aspekt geeignet ist
diesen Aspekt zu entwerfen
Daher ist kein Modellierungswerkzeug/Ansatz/etc. für alle Situationen geeignet. Ein Satellit wird wahrscheinlich ein Echtzeit-Multitasking-System sein, wahrscheinlich mit mehr als einem Prozessor. Aufgabenstrukturdiagramme, STDs und Sequenzdiagramme sind wahrscheinlich nützlich (um nur einige zu nennen). Wenn das Projekt in C durchgeführt wird, ist ein Klassendiagramm wahrscheinlich weniger nützlich (wenn es sich als sehr nützlich herausstellt, war die Wahl für C wahrscheinlich falsch). Ich bin kein großer Freund von UseCases, und ein Satellit hat an-sich keinen Benutzer. Anwendungsfälle eignen sich am besten in einer Situation, in der Sie die Anforderungen für Ihr System mit einem technisch nicht versierten Benutzer besprechen möchten. Wenn dies die Situation ist, in der Sie sich bei einem Satellitenprojekt befinden, ist etwas schief gelaufen.
Ich habe nichts entworfen, was weltraumtauglich ist. Aber ich habe für einen Luft- und Raumfahrtzulieferer des Verteidigungsministeriums (DoD) gearbeitet, und viele meiner Entwürfe waren flugqualifiziert. Sie verlangen eine Menge Dokumentation zu Ihren Entwürfen und stellen Data Item Descriptions (DIDs) zur Verfügung, die genau das beschreiben, was sie sehen möchten.
Sie können die DoD ASSIST-Schnellsuche verwenden , um alle DIDs für die möglicherweise erforderlichen Dokumente anzuzeigen, wenn Sie „Software“ in das Feld „Wort(e) im Titel“ eingeben und auf „Senden“ klicken. (Ich finde es lustig, dass eine DoD-Site eine Zertifikatssicherheitswarnung ausgibt, aber ich versichere Ihnen, es ist sicher).
Da Sie speziell nach einem Designdokument fragen, ist hier die Software Design Description (SDD) DID. Sie betonen die Verwendung von Wörtern, um jeden Teil des Designs zu beschreiben. Aber wenn die Verwendung von UML, Zustandsdiagrammen, Flussdiagrammen, Pseudocode usw. das Verständnis des Designs verbessern kann, möchten sie natürlich, dass Sie es einbeziehen.
Welche Modellierungsmethode Sie wählen, hängt, wie andere bereits gesagt haben, von Ihrem Design ab. Aber ich dachte, dass das Sehen einer DID für Luft- und Raumfahrtsoftware Ihnen beim Schreiben Ihres Designdokuments helfen könnte, da Ihr Projekt weltraumbezogen ist.
Wouter van Ooijen
HikeOnPast
Kassio
drxzcl
Raketenmagnet
drxzcl
Kassio
drxzcl
drxzcl