Removed unused import
[Mograsim.git] / REQUIREMENTS.MD
1 # Rechnerarchitektur GP 2019
2 #### Modularer Grafischer Schaltkreis Simulator (für die MI-Maschine)
3
4 *Ihr könnt hier gerne nach belieben Dinge ändern, haltet euch nicht zurück^^*
5
6 ## Anforderungen
7
8 ### Pflichtfeatures
9 1.  Emulation der MI-Maschine (siehe Am2900ME)
10 2.  Visualisierung der MI-Maschine sehr ähnlich dem Bild der VL
11 3.  sehr gute Website, Dokumentation, Hilfe aus dem Kontextmenü heraus
12 4.  Hilfreiche Fehlermeldungen, Warnungen bei gefährlichen Operationen  
13     für uns/Entwickler: gutes Loggen, Absturzberichte
14 5.  Immer hilfreiche Tooltips zu fast allem.
15     
16
17 ### Sollte möglich sein
18 1.  Export der Ansicht
19 2.  Sicht des Assemblerprogrammierers, spezifizieren einer ISA und Nutzung
20 3.  Farben, Schriftgröße & Co. einstellbar (für Präsentation, Hell/Dunkel, Farbenblind/…)
21 4.  Entwurf eines Schaltkreises mit einem Editor
22 5.  Sprache ändern (für nicht Muttersprachler, internat. Potenzial, Erweiterungsmögl.)
23 6.  Sehr einfache Installation (Eclipse Marketplace)
24 7.  Editor sollte tooltip Einstellung erlauben
25 8.  Rückgängig
26     
27
28 ### Wunschfeatures
29 1.  Debuggen im Sinne von Breakpoints & Co.
30 2.  interaktives Tutorial in der GUI
31 3.  Zurückspulen der Simulation / Zeitleiste
32 4.  Wiederherstellungspunkt (Status)
33
34 ### Weiterführende Ideen
35 1.  x86 Modell
36 2.  ARM Modell
37 3.  Signalgraphen
38
39 ### Use Cases
40 <details><summary><strong>Alle Use Cases anzeigen</strong></summary><p>
41
42 #### 01. Installation
43 Das Programm lässt sich entweder über den Eclipse Marketplace einfach installieren (oder als Eclipse Projekt) oder als eigenes Eclipse RPC Projekt direkt herunterladen (ggf. entpacken) und starten.<sup>[A]</sup> Das Programm / Plugin lässt sich auf Windows (7+), MacOS und Linux ausführen; alle verbreitete Hardware nach 2010 mit 64 Bit OS sollte funktionieren.<sup>[B]</sup> Es muss auf den Rechnern in den TUM Rechnerhallen funktionieren.<sup>[C]</sup>
44
45 #### 02. Deinstallation
46 Das Programm muss sich ohne nennenswerten Aufwand oder Kentnisse vom Benutzer rückstandslos entfernen lassen.<sup>[A]</sup>
47
48 #### 03. Programmstart
49 Das Programm bzw. Plugin startet schnell (unter 10 sec.; besser unter 5 sec).<sup>[A]</sup> Bei dem ersten Programmstart ist ein Willkommensfenster zu sehen, das auf erklärende Resourcen verweist, den Nutzer grüßt und ggf. auf die (Sprach-)Einstellungen hinweist.<sup>[B]</sup> Es wird bestenfalls auf ein Beispielprojekt verwiesen (kann erstellt werden?) um dem Nutzer zu ermöglichen, sich damit vertraut zu machen.<sup>[C]</sup> Ein schnell Link zum Erstellen eines neuen Projekts/Simulation/... wird angezeigt.<sup>[D]</sup>
50
51 #### 04. Programmende
52 Sollten bei Beenden des Programms oder Programmabsturz nicht persistierte Daten vorliegen, muss dafür gesorgt werden, dass diese nicht verloren gehen.<sup>[A]</sup> Enweder durch einen Dialog<sup>[B]</sup>, oder durch erzeugte Recovery-Dateien<sup>[C]</sup>. Bei Absturz des Programms wird eine passende und aufschlussreiche Fehlermeldung angezeigt, bestenfalls mit Link zu einer Report-Möglichkeit.<sup>[D]</sup>
53
54 #### 05. Einstellungen
55 Die Hauptextfarbe und Schriftgröße muss einstellbar sein<sup>[A]</sup>, besser noch Hintergrund- und Markierungsfarben und Schriftstil.<sup>[B]</sup> Die Einstellung der Sprache muss möglich sein.<sup>[C]</sup>
56
57 #### 06. Einstieg
58 Das Einstiegsprojekt zeigt zu Beginn die passende Ansicht an, die Mikroprogrammierung ist wie bei dem Am2900ME ungehindert möglich.<sup>[A]</sup> Bestenfalls ist dieses beim (erstmaligen) Start direkt geöffnet.<sup>[B]</sup> Wichtige Fenster (v.a. die grafische Darstellung) sind direkt sichtbar, oder zumindest in einem Tab geöffnet (müssen nicht gesucht werden).<sup>[C]</sup>
59
60 #### 07. Nutzung der Visualisierung
61 Die Visualisierung soll möglichst der Vorlesung entsprechen.<sup>[A]</sup> Sie lässt sich transformieren (z.B. Zoom mit dem Mausrad, Verschieben mit Mausklick oder Mausklick und Alt) und wieder zurücksetzen.<sup>[B]</sup>
62
63 #### 08. Hilfestellung
64 Mit dem Produkt wird eine offline-Dokumentation mitgeliefert. (bestenfalls DE und EN)<sup>[A]</sup> Mit Rechtsklick lässt sich über ein Kontextmenü der Teil der Dokumentation öffnen, der das angeklickte und seine Funktion beschreibt (Vorbild Cinema4D). Dies sollte mit fast allem möglich sein.<sup>[B]</sup> Bleibt man mit der Maus länger über einem GUI-Bestandteil, wird eine kurze Beschreibung/Hilfe dazu angezeigt (Tooltip).<sup>[C]</sup>
65
66 #### 09. Dateihandhabung
67 Die Dateien sollten möglichst menschenlesbar sein, z.B. in CSV-Format, um Kommunikation mit anderer Software und Änderungen durch den Nutzer zu ermöglichen.<sup>[A]</sup> Die Dateien enthalten eine Versionsnummer, um Abwärtskompatibilität und hilfreiche Fehlermeldungen zu ermöglichen.<sup>[B]</sup>
68
69 #### 10. Entwicklerunterstützung
70 Das Projekt soll sich einfach bauen/kompilieren/exportieren lassen, es muss beschrieben werden wie das möglich ist.<sup>[A]</sup> Die Verbreitung zur Anwendung soll ebenfalls unproblematisch sein.<sup>[B]</sup>
71
72 #### Fügt hier eure eigenen dazu, fortlaufend nummeriert und ggf. mit <sup>[A,B,C,..]</sup> genauer spezifiziert.
73
74 </p></details>
75
76 ### UML und Ähnliches
77 #### Grobe Struktur
78 ![image](https://user-images.githubusercontent.com/11130248/57186855-aae24600-6ee6-11e9-88b4-371622d43adc.png)
79
80 ## Technologie-Stack
81 *   Git (anscheinend über Gitlab)
82 *   Eclipse RCP
83     -  (noch zu testen)
84 *   Java
85     -   Version 8?
86     -   Version 10?
87     -   Version 12?
88 *   Bibliotheken
89     -   JUnit 5.4.x ? AssertJ? [http://joel-costigliola.github.io/assertj/index.html](http://joel-costigliola.github.io/assertj/index.html)
90     - (Apache Commons?)
91     Sehr weit verbreitete und gut designte & getestete Lib;  
92     aber zusätzliche Dep.
93     - Sonstiges? Logging? Log4j
94 -   Automatischer Build mit Maven? Wohl eher nicht, wegen ERPC Build
95
96 ## Meilensteine
97
98 ## Außenwirkung
99 ### Name, Abkürzung
100 ### Signet, Logo
101 ### Beschreibung
102
103 ## Sonstiges
104 ### Nützliche Links
105 - [https://wiki.eclipse.org/Rich_Client_Platform](https://wiki.eclipse.org/Rich_Client_Platform) -Links
106 - [https://wiki.eclipse.org/User_Interface_Guidelines](https://wiki.eclipse.org/User_Interface_Guidelines) - etwas alt, aber nützlich
107 - [https://download.eclipse.org/eclipse/downloads/](https://download.eclipse.org/eclipse/downloads/) - Eclipse Project
108 - [https://www.vogella.com/tutorials/EclipseRCP/article.html](https://www.vogella.com/tutorials/EclipseRCP/article.html) - **Eclipse RPC Tutorial**
109 - [https://github.com/eclipse/gef/wiki](https://github.com/eclipse/gef/wiki) - **Wiki für das Grafikframework**
110 - [https://github.com/eclipse/MaisiKoleni/Am2900ME](https://github.com/eclipse/MaisiKoleni/Am2900ME) - der geistige Vorgänger
111 - [https://github.com/Haspamelodica/Am2900ME_swt](https://github.com/Haspamelodica/Am2900ME_swt) -  ... auch mit SWT
112
113 ### Rechtliches
114 <details><summary>
115 MIT Lizenz? - https://choosealicense.com/licenses/mit/
116
117 </summary><p>
118
119 >MIT License
120 >
121 >Copyright (c) 2019 Christian Femers, Daniel Kirschten, Fabian Stemmler
122 >
123
124 >
125 >Permission is hereby granted, free of charge, to any person obtaining a copy
126 >of this software and associated documentation files (the "Software"), to deal
127 >in the Software without restriction, including without limitation the rights
128 >to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
129 >copies of the Software, and to permit persons to whom the Software is
130 >furnished to do so, subject to the following conditions:
131 >
132 >The above copyright notice and this permission notice shall be included in all
133 >copies or substantial portions of the Software.
134 >
135 >THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
136 >IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
137 >FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
138 >AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
139 >LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
140 >OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
141 >SOFTWARE.
142
143 </p></details>
144 Muss ggf. Eclipse Public License verwendet werden wegen Copyleft?