nw  

IP-6 i4Ds13: Service-orientierter Assembler für Webrechner

Zusammenfassung

Webstebs bildet die Grundlage für Mikrorechnersysteme für die erst-semestrigen Studenten an der FHNW im Modul Computer Hardware and Programming. Der Assembler-Core wurde von einem IKVM.NET-Projekt in ein TypeScript-Projekt überführt. Zusätzlich gibt es nun auch ein IntelliSense-ähnliches Autocomplete-Feature im Editor.

Schlüsselbegriffe

TypeScript 2.7 / .NET v4.6 / SignalR / jQuery / CodeMirror / C# (ASP.NET) / Levenshtein-Distanz

Zielsetzung

Aus der Analyse des bereits bestehenden Webstebs und dessen Java-Assemblers soll eine neue TypeScript basierte Lösung entstehen.
Der Auftraggeber legt dabei Wert auf eine einfache Einbindung in die bestehende Architektur, die möglichst einfache Implementierung neuer Befehlsarten und das automatische Anzeigen von Fehlermeldungen. Aus der Arbeit sollen zwei Produkte hervorgehen: Die Implementierung eines neuen Assembler-Cores, geschrieben in TypeScript und ein IntelliSense-ähnlliches Autocomplete-Feature, das im Frontend integriert ist.
Hauptaugenmerk lag während dem Projekt auf einer einfachen, verständlichen, rückwärtskompatiblen und leicht konfigurierbaren Lösung, die es dem Auftraggeber nach Beendigung des Projekts erlaubt, Webstebs produktiv im Unterricht einzusetzen.

Ausgangslage

Das IP-6 Projekt i4Ds13 wurde von Herrn Ruedi Müller für das HS17 ausgeschrieben. Das Projekt befasst sich mit einer eigens für die FHNW entwickelten Applikation, einem Webrechner-Simulator. Dieser Simulator wird den Studierenden im ersten Semester im Modul Computer Hardware and Programming (chp) vorgestellt und dient dem Dozenten dazu, den Studierenden die Grundlagen von Mikrorechnersysteme beizubringen.
Webstebs benutzte einen in Java geschriebenen IKVM.NET Assembler, der es zuliess, den Befehlssatz des Assemblers zu erweitern.

Ergebnisse

Die Hauptergebnisse lassen sich in zwei Unterkategorien aufteilen.

     / Assembler-Core

Der vorhandene Java Assembler-Core ist neu in TypeScript 2.7 implementiert. Dies gewährt eine einfachere Erweiterung, eine schnellere Konfigurierbarkeit, vereinfachtes Debugging und eine clientseitige Ausführung. Durch den zusätzlichen Kompilier-Schritt der TypeScript Dateien, können, im Gegensatz zu JavaScript, Fehler vorgängig bemerkt und behoben werden. Ein netter Nebeneffekt ist der Performance-Boost, da früher bei jedem Arbeitsschritt viele Netzwerk-Übertragungen stattgefunden haben und wir jetzt auf die Browserinterne JavaScript-Engine zugreifen.

     / IntelliSense-ähnliches Autocomplete-Feature

Usability-Aspekte spielten bei diesem Produkt eine grosse Rolle, da dieses Modul direkten Einfluss auf die Benutzung von Webstebs hat. Wir liessen uns hierbei von der gängigen Praxis und bewährten Methoden beeinflussen und kamen so überein, dass während der Eingabe ein Dropdown erscheinen soll, welches maximal die fünf nächsten und gültigen Befehle dem User anzeigen soll. Sollte der User eine Fehleingabe machen, wird die Zeile rot unterstrichen und im Output-Pane wird die Fehler-Nachricht angezeigt. Bei einem Mouseover über die markierte Zeile erscheint zusätzlich ein Tooltip mit der Fehler-Beschreibung. Nach dem Assemblieren wird dem User das LIST File angezeigt, das neu auch eine Symbol-Table enthält. Für das Autocomplete-Feature haben wir uns des Levenshtein-Algorithmus bedient, der uns den nächstbesten Treffer, basierend auf der vorherigen Eingabe, liefert und somit dem User hilft, seine Aufgabe schneller zu lösen. Gerade für Studenten im ersten Semester werden diese Vorschläge sehr hilfreich sein.

Projektdaten

Auftraggeber

Herr Ruedi Müller, FHNW

Projektteam

Kontakt

Herr Ruedi Müller, ruedi.mueller@fhnw.ch

<< zurück