7a9821e3ba536f78a27c47123cce7ae7e35dc245
[Mograsim.git] / REQUIREMENTS.MD
1 # Rechnerarchitektur GP 2019
2 #### Modularer Grafischer Schaltkreis Simulator (für die MI-Maschine)
3
4 ## Anforderungen
5
6 ### Pflichtfeatures
7 1.  Emulation der MI-Maschine (siehe Am2900ME)
8 2.  Visualisierung der MI-Maschine sehr ähnlich dem Bild der VL
9 3.  sehr gute Website, Dokumentation, Hilfe aus dem Kontextmenü heraus
10 4.  Hilfreiche Fehlermeldungen, Warnungen bei gefährlichen Operationen  
11     für uns/Entwickler: gutes Loggen, Absturzberichte
12 5.  Immer hilfreiche Tooltips zu fast allem.
13     
14
15 ### Sollte möglich sein
16 1.  Export der Ansicht
17 2.  Sicht des Assemblerprogrammierers, spezifizieren einer ISA und Nutzung
18 3.  Farben, Schriftgröße & Co. einstellbar (für Präsentation, Hell/Dunkel, Farbenblind/…)
19 4.  Entwurf eines Schaltkreises mit einem Editor
20 5.  Sprache ändern (für nicht Muttersprachler, internat. Potenzial, Erweiterungsmögl.)
21 6.  Sehr einfache Installation (Eclipse Marketplace)
22 7.  Editor sollte tooltip Einstellung erlauben
23 8.  Rückgängig
24     
25
26 ### Wunschfeatures
27 1.  Debuggen im Sinne von Breakpoints & Co.
28 2.  interaktives Tutorial in der GUI
29 3.  Zurückspulen der Simulation / Zeitleiste
30 4.  Wiederherstellungspunkt (Status)
31
32 ### Weiterführende Ideen
33 1.  x86 Modell
34 2.  ARM Modell
35
36
37 ### Szenarios
38 <details><summary>
39 Alle Szenarios Anzeigen...
40 </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>
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>.
53
54 ### Fügt hier eure eigenen dazu, fortlaufend nummeriert und ggf. mit <sup>[A,B,C,..]</sup> genauer spezifiziert.
55
56 </p></details>
57
58 ## Technologie-Stack
59 *   Git (anscheinend über Gitlab)
60 *   Eclipse RCP
61     -  (noch zu testen)
62 *   Java
63     -   Version 8?
64     -   Version 10?
65     -   Version 12?
66 *   Bibliotheken
67     -   Lombok? [https://projectlombok.org/features/all](https://projectlombok.org/features/all)
68         Sauberer und sicherer Code; aber zusätzliche Dep.
69     -   JUnit 5.4.x ? AssertJ? [http://joel-costigliola.github.io/assertj/index.html](http://joel-costigliola.github.io/assertj/index.html)
70     - (Apache Commons?)
71     Sehr weit verbreitete und gut designte & getestete Lib;  
72     aber zusätzliche Dep.
73     - Sonstiges? Logging? Log4j
74 -   Automatischer Build mit Maven? Wohl eher nicht, wegen ERPC Build
75
76 ## Meilensteine
77
78 ## Außenwirkung
79 ### Name, Abkürzung
80 ### Signet, Logo
81 ### Beschreibung
82
83 ## Sonstiges
84 ### Nützliche Links
85 - [https://wiki.eclipse.org/Rich_Client_Platform](https://wiki.eclipse.org/Rich_Client_Platform) -Links
86 - [https://wiki.eclipse.org/User_Interface_Guidelines](https://wiki.eclipse.org/User_Interface_Guidelines) - etwas alt, aber nützlich
87 - [https://download.eclipse.org/eclipse/downloads/](https://download.eclipse.org/eclipse/downloads/) - Eclipse Project
88 - [https://www.vogella.com/tutorials/EclipseRCP/article.html](https://www.vogella.com/tutorials/EclipseRCP/article.html) - **Eclipse RPC Tutorial**
89 - [https://github.com/eclipse/gef/wiki](https://github.com/eclipse/gef/wiki) - **Wiki für das Grafikframework**
90 - [https://github.com/eclipse/MaisiKoleni/Am2900ME](https://github.com/eclipse/MaisiKoleni/Am2900ME)
91
92 ### Rechtliches
93 <details><summary>MIT Lizenz? - [https://choosealicense.com/licenses/mit/](https://choosealicense.com/licenses/mit/)</summary><p>
94
95 >MIT License
96 >
97 >Copyright (c) 2019 Christian Femers, Daniel Kirschten, Fabian Stemmler
98 >
99
100 >
101 >Permission is hereby granted, free of charge, to any person obtaining a copy
102 >of this software and associated documentation files (the "Software"), to deal
103 >in the Software without restriction, including without limitation the rights
104 >to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
105 >copies of the Software, and to permit persons to whom the Software is
106 >furnished to do so, subject to the following conditions:
107 >
108 >The above copyright notice and this permission notice shall be included in all
109 >copies or substantial portions of the Software.
110 >
111 >THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
112 >IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
113 >FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
114 >AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
115 >LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
116 >OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
117 >SOFTWARE.
118
119 </p></details>
120 Muss ggf. Eclipse Public License verwendet werden wegen Copyleft?