diff --git a/docker/Dockerfile b/docker/Dockerfile index 66d97319736bc06fac8897af3a054314d136f252..61d7768e1eede033383ead4e3ba109009bdca1ea 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -29,6 +29,7 @@ COPY migrations/ migrations/ COPY public/ public/ COPY templates/ templates/ COPY translations/ translations/ +COPY docs/templates/paris docs/templates/paris # Set environment variables ENV PORT 8213 diff --git a/docs/templates/paris/dienstleistung.json b/docs/templates/paris/dienstleistung.json new file mode 100644 index 0000000000000000000000000000000000000000..0198d938b99d9640afae66bd799cb52d3b0feebe --- /dev/null +++ b/docs/templates/paris/dienstleistung.json @@ -0,0 +1,234 @@ +{ + "id": "dienstleistung", + "type": "ebt", + "name": "Dienstleistung", + "version": "0.1.0", + "authors": [ + "Jens Heise", + "Oliver Linssen" + ], + "license": "MIT", + "description": "Dienstleistung bedeutet in PARIS eine Anforderung im Bezug auf das Ergebnis eines Verhaltens oder einer Tätigkeit, die durch eine Person, eine Personengruppe, eine Körperschaft, Organisation oder Institution bereitgestellt wird.", + "rules": { + "bedingung": { + "name": "Bedingung", + "type": "placeholder", + "hint": "Unter welcher Bedingung wird etwas getan?", + "explanation": "Beschreibung der Bedingung, unter der die Dienstleistung erbracht wird. Beispiel: Während der Durchführung des Auftrags", + "size": "full" + }, + "bedingung-large": { + "name": "Bedingung", + "type": "placeholder", + "hint": "Unter welcher Bedingung wird etwas getan?", + "explanation": "Beschreibung der Bedingung, unter der die Dienstleistung erbracht wird. Beispiel: Während der Durchführung des Auftrags", + "size": "large" + }, + "modalitaet": { + "name": "Modalität", + "type": "equalsAny", + "value": [ + "muss", + "soll", + "sollte", + "kann", + "wird" + ], + "size": "small" + }, + "diensterbringer": { + "name": "Diensterbringer", + "type": "placeholder", + "hint": "Wer tut es?", + "explanation": "Beschreibung des Diensterbringers. Beispiel: der Auftragnehmer", + "size": "medium" + }, + "fuer": { + "name": "für", + "type": "equalsAny", + "value": [ + "für den", + "für die", + "dem", + "den" + ], + "size": "small" + }, + "dienstabnehmer": { + "name": "Dienstabnehmer", + "type": "placeholder", + "hint": "Für wen wird es getan?", + "explanation": "Beschreibung des Dienstabnehmers. Beispiel: für den Auftraggeber", + "size": "medium" + }, + "ermoeglichen": { + "name": "ermöglichen", + "type": "equalsAny", + "value": [ + "ermöglichen," + ], + "size": "medium", + "optional": true + }, + "in-der-lage-sein": { + "name": "In der Lage sein", + "type": "equals", + "value": "in der Lage sein,", + "size": "medium" + }, + "in-der-lage-sein-small": { + "name": "In der Lage sein", + "type": "equals", + "value": "in der Lage sein,", + "size": "small" + }, + "selbstaendig": { + "name": "selbständig", + "type": "equalsAny", + "value": [ + "selbständig" + ], + "optional": true, + "size": "medium" + }, + "selbstaendig-small": { + "name": "selbständig", + "type": "equalsAny", + "value": [ + "selbständig" + ], + "optional": true, + "size": "small" + }, + "objektbeschreibung": { + "name": "Objektbeschreibung", + "type": "placeholder", + "hint": "Woran / Womit wird es getan?", + "explanation": "Beschreibung des Objekts der Dienstleistung. Beispiel: das Ergebnis seiner Arbeit", + "size": "medium" + }, + "objektbeschreibung-optional": { + "name": "Objektbeschreibung", + "type": "placeholder", + "hint": "Woran / Womit wird es getan?", + "explanation": "Beschreibung des Objekts der Dienstleistung. Beispiel: das Ergebnis seiner Arbeit", + "size": "medium", + "optional": true + }, + "prozessbeschreibung": { + "name": "Prozessbeschreibung", + "type": "placeholder", + "hint": "Was wird getan?", + "explanation": "Beschreibung des Prozesses. Beispiel: dokumentieren,", + "size": "medium" + }, + "begruendung": { + "name": "Begründung", + "type": "placeholder", + "hint": "Warum wird es getan?", + "explanation": "Begründung für die Dienstleistung. Beispiel: damit der Auftraggeber für erbrachte Leistungen Teilzahlungen bezahlt", + "optional": true, + "ignoreMissingWhenOptional": true, + "size": "large" + }, + "punkt": { + "name": "Punkt", + "type": "equals", + "value": ".", + "size": "small" + } + }, + "variants": { + "dienstleistung-mit-bedingung": { + "name": "Dienstleistung mit Bedingung", + "description": "Eine Dienstleistung, die unter einer bestimmten Bedingung erbracht wird.", + "example": "Während der Durchführung des Auftrags muss der Auftragnehmer für den Auftraggeber das Ergebnis seiner Arbeit dokumentieren, damit der Auftraggeber für erbrachte Leistungen Teilzahlungen bezahlt.", + "rules": [ + "bedingung", + "modalitaet", + "diensterbringer", + "fuer", + "dienstabnehmer", + "ermoeglichen", + "objektbeschreibung", + "prozessbeschreibung", + "begruendung", + "punkt" + ] + }, + "dienstleistung-ohne-bedingung": { + "name": "Dienstleistung ohne Bedingung", + "description": "Eine Dienstleistung, die ohne Bedingung erbracht wird.", + "example": "Der Auftragnehmer muss für den Auftraggeber das Ergebnis seiner Arbeit dokumentieren, damit der Auftraggeber für erbrachte Leistungen Teilzahlungen bezahlt.", + "rules": [ + "diensterbringer", + "modalitaet", + "fuer", + "dienstabnehmer", + "ermoeglichen", + "objektbeschreibung", + "prozessbeschreibung", + "begruendung", + "punkt" + ] + }, + "dienstleistungs-schnittstelle-mit-bedingung": { + "name": "Dienstleistungs-Schnittstelle mit Bedingung", + "description": "Eine Dienstleistung die unter einer bestimmten Bedingung für beliebige Personen erbracht wird.", + "example": "Bei allen abgerechneten Leistungen muss der Auftragnehmer in der Lage sein, Arbeitsberichte zu liefern, damit der Auftraggeber für erbrachte Leistungen Teilzahlungen bezahlt.", + "rules": [ + "bedingung-large", + "modalitaet", + "diensterbringer", + "in-der-lage-sein", + "objektbeschreibung-optional", + "prozessbeschreibung", + "begruendung", + "punkt" + ] + }, + "dienstleistungs-schnittstelle-ohne-bedingung": { + "name": "Dienstleistungs-Schnittstelle ohne Bedingung", + "description": "Eine Dienstleistung die ohne Bedingung für beliebige Personen erbracht wird.", + "example": "Der Auftragnehmer muss in der Lage sein, Arbeitsberichte zu liefern, damit der Auftraggeber für erbrachte Leistungen Teilzahlungen bezahlt.", + "rules": [ + "diensterbringer", + "modalitaet", + "in-der-lage-sein-small", + "objektbeschreibung-optional", + "prozessbeschreibung", + "begruendung", + "punkt" + ] + }, + "selbstaendige-dienstleistung-mit-bedingung": { + "name": "Selbständige Dienstleistung mit Bedingung", + "description": "Eine Dienstleistung, die unter einer Vorbedingung, selbständig von einem Diensterbringer ausgeführt wird.", + "example": "Bei allen Arbeiten mit Säuren muss der Auftragnehmer selbständig für das Tragen der Schutzkleidung gem. XXX sorgen, um Arbeitsunfälle zu verhindern.", + "rules": [ + "bedingung-large", + "modalitaet", + "diensterbringer", + "selbstaendig", + "objektbeschreibung-optional", + "prozessbeschreibung", + "begruendung", + "punkt" + ] + }, + "selbstaendige-dienstleistung-ohne-bedingung": { + "name": "Selbständige Dienstleistung ohne Bedingung", + "description": "Eine Dienstleistung, die ohne Vorbedingung, selbständig von einem Diensterbringer ausgeführt wird.", + "example": "Der Auftragnehmer muss selbständig für das Tragen der Schutzkleidung gem. XXX sorgen, um Arbeitsunfälle zu verhindern.", + "rules": [ + "diensterbringer", + "modalitaet", + "selbstaendig-small", + "objektbeschreibung-optional", + "prozessbeschreibung", + "begruendung", + "punkt" + ] + } + } +} diff --git a/docs/templates/paris/eigenschaft.json b/docs/templates/paris/eigenschaft.json new file mode 100644 index 0000000000000000000000000000000000000000..f4e83b97923f65689efd46e969c6074f0b40e7bd --- /dev/null +++ b/docs/templates/paris/eigenschaft.json @@ -0,0 +1,107 @@ +{ + "id": "eigenschaft", + "type": "ebt", + "name": "Eigenschaft", + "version": "0.1.0", + "authors": [ + "Jens Heise", + "Oliver Linssen" + ], + "license": "MIT", + "description": "Eigenschaft bedeutet in PARIS eine Anforderung an die Beschaffenheit eines Systems, eines Teils eines Systems oder eines Stakeholders, die nicht durch Qualitätsanforderungen oder durch funktionale Anforderungen abgedeckt wird.", + "rules": { + "bedingung": { + "name": "Bedingung", + "type": "placeholder", + "hint": "Unter welcher Bedingung?", + "explanation": "Beschreibung der Bedingung, unter der die Eigenschaft gilt. Beispiel: Falls das System XYZ in tropischen Regionen des Landes eingesetzt wird,", + "size": "full" + }, + "modalitaet": { + "name": "Modalität", + "type": "equalsAny", + "hint": "Mit welcher Verbindlichkeit?", + "value": [ + "muss", + "soll", + "sollte", + "kann", + "wird" + ], + "size": "medium" + }, + "system-stakeholder": { + "name": "System/Stakeholder", + "type": "placeholder", + "hint": "Erfüllt Gegenstand, Sache, System, Stakeholder?", + "explanation": "Beschreibung des Systems oder Stakeholders. Beispiel: das Aggregat UVW", + "size": "medium" + }, + "die-eigenschaft-haben": { + "name": "Die Eigenschaft haben", + "type": "equals", + "value": "die Eigenschaft haben,", + "size": "medium" + }, + "objektbeschreibung": { + "name": "Objektbeschreibung", + "type": "placeholder", + "hint": "Welche Eigenschaft?", + "explanation": "Beschreibung der geforderten Eigenschaft. Beispiel: dass sein Gehäuse", + "size": "medium" + }, + "name-eigenschaft-bedingung": { + "name": "Name der Eigenschaft & zu erfüllende Bedingung", + "type": "placeholder", + "hint": "Welche Bedingung?", + "explanation": "Beschreibung der Bedingung die erfüllt wird. Beispiel: aus einem korrosionsbeständigen Material besteht", + "size": "full" + }, + "begruendung": { + "name": "Begründung", + "type": "placeholder", + "hint": "Warum wird die Eigenschaft gefordert?", + "explanation": "Begründung für die geforderte Eigenschaft. Beispiel: weil das Aggregat ohne Einhausung betrieben wird", + "optional": true, + "ignoreMissingWhenOptional": true, + "size": "large" + }, + "punkt": { + "name": "Punkt", + "type": "equals", + "value": ".", + "size": "small" + } + }, + "variants": { + "eigenschaft-mit-bedingung": { + "name": "Eigenschaft mit Bedingung", + "description": "Eine Eigenschaft, die unter einer bestimmten Bedingung gilt.", + "example": "Falls das System XYZ in tropischen Regionen des Landes eingesetzt wird, muss das Aggregat UVW die Eigenschaft haben, dass sein Gehäuse aus einem korrosionsbeständigen Material besteht, weil das Aggregat ohne Einhausung betrieben wird.", + "rules": [ + "bedingung", + "modalitaet", + "system-stakeholder", + "die-eigenschaft-haben", + "objektbeschreibung", + "name-eigenschaft-bedingung", + "begruendung", + "punkt" + ] + }, + "eigenschaft-ohne-bedingung": { + "name": "Eigenschaft ohne Bedingung", + "description": "Eine Eigenschaft, die unabhängig von Bedingungen gilt.", + "example": "Das System Pkw muss die Eigenschaft haben, dass das Auto die Farbe rot hat.", + "rules": [ + "system-stakeholder", + "modalitaet", + "die-eigenschaft-haben", + "objektbeschreibung", + "name-eigenschaft-bedingung", + "begruendung", + "punkt" + ] + } + } +} diff --git a/docs/templates/paris/esfa.json b/docs/templates/paris/esfa.json index c7e0b7d9f18e08d8c794213d19692453d9d6c1e0..8c309fb5c561745403e4778bdc802c2b154645e5 100644 --- a/docs/templates/paris/esfa.json +++ b/docs/templates/paris/esfa.json @@ -52,6 +52,13 @@ "explanation": "Beispiel: das System Libri", "size": "medium" }, + "system-2": { + "name": "System", + "type": "placeholder", + "hint": "Wer tut es?", + "explanation": "Beispiel: das System Rep2Print", + "size": "medium" + }, "benutzer": { "name": "Benutzer", "type": "placeholder", @@ -75,6 +82,7 @@ "name": "Selbständig", "type": "equals", "value": "selbständig", + "optional": true, "size": "small" }, "objektbeschreibung": { @@ -152,7 +160,7 @@ "bedingung", "modalitaet", "system", - "system", + "system-2", "ermoeglichen", "objektbeschreibung", "prozessbeschreibung", @@ -167,7 +175,7 @@ "rules": [ "system", "modalitaet", - "system", + "system-2", "ermoeglichen", "objektbeschreibung", "prozessbeschreibung", diff --git a/docs/templates/paris/glossar.json b/docs/templates/paris/glossar.json index 3a56fe2a1cb6345130b1275509c3a290bf8fc17b..ff4112890c7bbaecbc81e8c899d1f3363192e06c 100644 --- a/docs/templates/paris/glossar.json +++ b/docs/templates/paris/glossar.json @@ -61,11 +61,23 @@ "size": "small" }, "bereich": { - "name": "Bereich", + "name": "Eigenname", "type": "placeholder", "hint": "Wird für welchen Bereich?", - "explanation": "Bezug, auf den sich der zu erklärende Begriff bezieht. Beispiel: im System Libri", - "size": "small" + "explanation": "Eigenname des Bereichs, auf den sich der zu erklärende Begriff bezieht. Beispiel: Libri", + "size": "medium" + }, + "geltungsbereich": { + "name": "Bezug", + "type": "equalsAny", + "hint": "Wird für welchen Bereich?", + "explanation": "Bezug, auf den sich der zu erklärende Begriff bezieht. Beispiel: im System", + "value": [ + "Domäne" + ], + "size": "medium", + "optional": true, + "ignoreMissingWhenOptional": true }, "bereich-vereinfacht": { "name": "Bereich", @@ -92,6 +104,13 @@ "explanation": "Erklärung des zu erklärenden Begriffs. Beispiel: eine natürliche Person,", "size": "medium" }, + "definiens-large": { + "name": "Definiens", + "type": "placeholder", + "hint": "Wie definiert?", + "explanation": "Erklärung des zu erklärenden Begriffs. Beispiel: eine natürliche Person, die berechtigt ist, Medien auszuleihen,", + "size": "large" + }, "spezifikation-definiens": { "name": "Spezifikation des Definiens", "type": "placeholder", @@ -131,9 +150,10 @@ "uebersetzung", "bedeutet", "prae-bereich", + "geltungsbereich", "bereich", "prae-definiens", - "definiens", + "definiens-large", "spezifikation-definiens", "begruendung", "punkt" diff --git a/docs/templates/paris/kontext.json b/docs/templates/paris/kontext.json new file mode 100644 index 0000000000000000000000000000000000000000..20904c2cb495780f97ad7aa20ebef7d1c2e0db04 --- /dev/null +++ b/docs/templates/paris/kontext.json @@ -0,0 +1,121 @@ +{ + "id": "kontext", + "type": "ebt", + "name": "Kontext", + "version": "0.1.0", + "authors": [ + "Jens Heise", + "Oliver Linssen" + ], + "license": "MIT", + "description": "Kontext bedeutet in PARIS Informationen über die Umgebung, die für die Umsetzung von Anforderungen relevant ist. Diese Schablone dokumentiert die unterschiedlichen Aspekte im Kontext eines Systems und legt fest, welche Aspekte als relevant betrachtet werden.", + "rules": { + "bedingung": { + "name": "Bedingung", + "type": "placeholder", + "hint": "Unter welcher Bedingung?", + "explanation": "Beschreibung der Bedingung, unter der der Kontext relevant ist. Beispiel: Falls das Smartphone als Outdoor-Gerät bezeichnet wird,", + "size": "large" + }, + "modalitaet": { + "name": "Modalität", + "type": "equalsAny", + "hint": "Mit welcher Verbindlichkeit?", + "value": [ + "muss", + "soll", + "sollte", + "kann", + "wird" + ], + "size": "small" + }, + "modalitaet-medium": { + "name": "Modalität", + "type": "equalsAny", + "hint": "Mit welcher Verbindlichkeit?", + "value": [ + "muss", + "soll", + "sollte", + "kann", + "wird" + ], + "size": "medium" + }, + "system": { + "name": "System", + "type": "placeholder", + "hint": "Ist für welchen Gegenstand, Sache, System?", + "explanation": "Beschreibung des Systems. Beispiel: die Komponente Außenhülle", + "size": "medium" + }, + "system-full": { + "name": "System", + "type": "placeholder", + "hint": "Ist für welchen Gegenstand, Sache, System?", + "explanation": "Beschreibung des Systems. Beispiel: die Komponente Außenhülle", + "size": "full" + }, + "relevanz": { + "name": "Relevanz", + "type": "equalsAny", + "value": [ + "als relevant betrachten, dass", + "als nicht relevant betrachten, dass" + ], + "size": "medium" + }, + "abgrenzung": { + "name": "Abgrenzung", + "type": "placeholder", + "hint": "Welcher Aspekt in welcher Form relevant / nicht relevant?", + "explanation": "Beschreibung des relevanten Aspekts. Beispiel: das System Smartphone bei einer Umgebungstemperatur von -20°C bis 40°C betrieben wird", + "size": "full" + }, + "begruendung": { + "name": "Begründung", + "type": "placeholder", + "hint": "Warum ist es [nicht] relevant?", + "explanation": "Begründung für die Relevanz oder Nicht-Relevanz. Beispiel: …", + "optional": true, + "ignoreMissingWhenOptional": true, + "size": "large" + }, + "punkt": { + "name": "Punkt", + "type": "equals", + "value": ".", + "size": "small" + } + }, + "variants": { + "kontext-mit-bedingung": { + "name": "Kontext mit Bedingung", + "description": "Ein Kontext, der unter einer bestimmten Bedingung relevant ist.", + "example": "Falls das Smartphone als Outdoor-Gerät bezeichnet wird, muss die Komponente Außenhülle als relevant betrachten, dass das System Smartphone bei einer Umgebungstemperatur von -20°C bis 40°C betrieben wird, …", + "rules": [ + "bedingung", + "modalitaet", + "system", + "relevanz", + "abgrenzung", + "begruendung", + "punkt" + ] + }, + "kontext-ohne-bedingung": { + "name": "Kontext ohne Bedingung", + "description": "Ein Kontext, der unabhängig von Bedingungen relevant ist.", + "example": "Das System Z muss als relevant betrachten, dass die Eingabedaten von einem IBM-Großrechner geliefert werden.", + "rules": [ + "system-full", + "modalitaet-medium", + "relevanz", + "abgrenzung", + "begruendung", + "punkt" + ] + } + } +} diff --git a/docs/templates/paris/stakeholder.json b/docs/templates/paris/stakeholder.json new file mode 100644 index 0000000000000000000000000000000000000000..1c009b3b2474a75db190e202ede63598cac05493 --- /dev/null +++ b/docs/templates/paris/stakeholder.json @@ -0,0 +1,129 @@ +{ + "id": "stakeholderanforderung", + "type": "ebt", + "name": "Stakeholderanforderung", + "version": "0.1.0", + "authors": [ + "Jens Heise", + "Oliver Linssen" + ], + "license": "MIT", + "description": "Stakeholderanforderung bedeutet in PARIS eine Anforderung eines Stakeholders, durch den ein Wunsch oder eine Vorgabe dokumentiert wird.", + "rules": { + "bedingung": { + "name": "Bedingung", + "type": "placeholder", + "hint": "Unter welcher Bedingung wird etwas getan?", + "explanation": "Beschreibung der Bedingung, unter der die Anforderung gestellt wird. Beispiel: Falls die XYZ AG Flugzeuge bauen will,", + "size": "large" + }, + "stakeholder": { + "name": "Stakeholder", + "type": "placeholder", + "hint": "Fordert wer?", + "explanation": "Beschreibung des Stakeholders, der die Anforderung stellt. Beispiel: der Gesetzgeber", + "size": "small" + }, + "forderung": { + "name": "Forderung", + "type": "equalsAny", + "value": [ + "fordert", + "fordern" + ], + "size": "small" + }, + "anforderungsquelle": { + "name": "Anforderungsquelle", + "type": "placeholder", + "hint": "Wo?", + "explanation": "Spezifikation der Anforderungsquelle. Beispiel: in § 235 des Luftfahrtsicherheitsgesetzes,", + "optional": true, + "size": "medium" + }, + "dass": { + "name": "dass", + "type": "equals", + "value": ", dass", + "size": "small" + }, + "inhalt": { + "name": "Inhalt der Forderung", + "type": "placeholder", + "hint": "Was?", + "explanation": "Beschreibung des Inhalts der Forderung. Beispiel: die RM-Verfahren des RISKIT eingehalten werden", + "size": "large" + }, + "modalitaet": { + "name": "Modalität", + "type": "equalsAny", + "value": [ + "muss", + "soll", + "sollte", + "kann", + "wird" + ], + "size": "small", + "optional": true, + "ignoreMissingWhenOptional": true + }, + "begruendung": { + "name": "Begründung", + "type": "placeholder", + "hint": "Warum wird es gefordert?", + "explanation": "Begründung für die Forderung. Beispiel: weil sich das Unternehmen sonst Schadensersatzansprüchen gegenübersieht", + "optional": true, + "ignoreMissingWhenOptional": true, + "size": "large" + }, + "begruendung-medium": { + "name": "Begründung", + "type": "placeholder", + "hint": "Warum wird es gefordert?", + "explanation": "Begründung für die Forderung. Beispiel: weil sich sonst kein sachverständiger Dritter innerhalb angemessener Zeit einen Überblick über die Geschäftsvorfälle und über die Lage des Unternehmens verschaffen kann", + "optional": true, + "ignoreMissingWhenOptional": true, + "size": "medium" + }, + "punkt": { + "name": "Punkt", + "type": "equals", + "value": ".", + "size": "small" + } + }, + "variants": { + "stakeholderanforderung-mit-bedingung": { + "name": "Stakeholderanforderung mit Bedingung", + "description": "Eine Stakeholderanforderung, die unter einer bestimmten Bedingung gestellt wird.", + "example": "Falls die XYZ AG Flugzeuge bauen will, fordert der Gesetzgeber in § 235 des Luftfahrtsicherheitsgesetzes, dass die RM-Verfahren des RISKIT eingehalten werden müssen, weil sich das Unternehmen sonst Schadensersatzansprüchen gegenübersieht.", + "rules": [ + "bedingung", + "forderung", + "stakeholder", + "anforderungsquelle", + "dass", + "inhalt", + "modalitaet", + "begruendung", + "punkt" + ] + }, + "stakeholderanforderung-ohne-bedingung": { + "name": "Stakeholderanforderung ohne Bedingung", + "description": "Eine Stakeholderanforderung, die unabhängig von Bedingungen gestellt wird.", + "example": "Der Gesetzgeber fordert in § 238 HGB (Buchführungspflicht), dass jeder Kaufmann Bücher führen muss, weil sich sonst kein sachverständiger Dritter innerhalb angemessener Zeit einen Überblick über die Geschäftsvorfälle und über die Lage des Unternehmens verschaffen kann.", + "rules": [ + "stakeholder", + "forderung", + "anforderungsquelle", + "dass", + "inhalt", + "modalitaet", + "begruendung-medium", + "punkt" + ] + } + } +} diff --git a/docs/templates/paris/technische-eigenschaft.json b/docs/templates/paris/technische-eigenschaft.json new file mode 100644 index 0000000000000000000000000000000000000000..17bdf72b651177e11eb4075ea72528b11d23464e --- /dev/null +++ b/docs/templates/paris/technische-eigenschaft.json @@ -0,0 +1,124 @@ +{ + "id": "technische-eigenschaft", + "type": "ebt", + "name": "Technische Eigenschaft", + "version": "0.1.0", + "authors": [ + "Jens Heise", + "Oliver Linssen" + ], + "license": "MIT", + "description": "Technische Eigenschaft bedeutet in PARIS eine Eigenschaft im Bezug auf die zu verwendende Technik, die bei der Erfüllung der funktionalen Anforderungen, Qualitätsanforderungen, Stakeholderanforderungen oder Eigenschaften eingehalten werden muss.", + "rules": { + "bedingung": { + "name": "Bedingung", + "type": "placeholder", + "hint": "Unter welcher Bedingung?", + "explanation": "Beschreibung der Bedingung, unter der die Eigenschaft gilt. Beispiel: Falls das System XYZ in tropischen Regionen des Landes eingesetzt wird, ...", + "size": "large" + }, + "modalitaet": { + "name": "Modalität", + "type": "equalsAny", + "value": [ + "muss", + "soll", + "sollte", + "kann", + "wird" + ], + "size": "small" + }, + "modalitaet-medium": { + "name": "Modalität", + "type": "equalsAny", + "value": [ + "muss", + "soll", + "sollte", + "kann", + "wird" + ], + "size": "medium" + }, + "system": { + "name": "System", + "type": "placeholder", + "hint": "Erfüllt Gegenstand, Sache, System, Stakeholder?", + "explanation": "Beschreibung des Systems. Beispiel: das Aggregatgehäuse uvw", + "size": "medium" + }, + "technisch-die-eigenschaft-haben": { + "name": "technisch die Eigenschaft haben", + "type": "equals", + "value": "technisch die Eigenschaft haben,", + "size": "medium" + }, + "technisch-die-eigenschaft-haben-full": { + "name": "technisch die Eigenschaft haben", + "type": "equals", + "value": "technisch die Eigenschaft haben", + "size": "full" + }, + "objektbeschreibung": { + "name": "Objektbeschreibung", + "type": "placeholder", + "hint": "Welche Eigenschaft?", + "explanation": "Beschreibung der technischen Eigenschaft. Beispiel: dass das Gehäuse aus 1,5 mm starkem nichtrostendem Stahlblech V4A besteht, ...", + "size": "full" + }, + "name-der-eigenschaft": { + "name": "Name der Eigenschaft & zu erfüllende Bedingung", + "type": "placeholder", + "hint": "Welche Bedingung?", + "explanation": "Beschreibung der zu erfüllenden Bedingung der Eigenschaft.", + "size": "full" + }, + "begruendung": { + "name": "Begründung", + "type": "placeholder", + "hint": "Warum wird die Eigenschaft gefordert?", + "explanation": "Begründung für die technische Eigenschaft. Beispiel: weil das Aggregat ohne Einhausung betrieben wird.", + "optional": true, + "ignoreMissingWhenOptional": true, + "size": "large" + }, + "punkt": { + "name": "Punkt", + "type": "equals", + "value": ".", + "size": "small" + } + }, + "variants": { + "technische-eigenschaft-mit-bedingung": { + "name": "Technische Eigenschaft mit Bedingung", + "description": "Eine technische Eigenschaft, die unter einer bestimmten Bedingung gilt.", + "example": "Falls das System XYZ in tropischen Regionen des Landes eingesetzt wird, muss das Aggregatgehäuse uvw technisch die Eigenschaft haben, dass das Gehäuse aus 1,5 mm starkem nichtrostendem Stahlblech V4A besteht, weil das Aggregat ohne Einhausung betrieben wird.", + "rules": [ + "bedingung", + "modalitaet", + "system", + "technisch-die-eigenschaft-haben", + "objektbeschreibung", + "name-der-eigenschaft", + "begruendung", + "punkt" + ] + }, + "technische-eigenschaft-ohne-bedingung": { + "name": "Technische Eigenschaft ohne Bedingung", + "description": "Eine technische Eigenschaft, die unabhängig von Bedingungen gilt.", + "example": "Das Aggregatgehäuse uvw muss technisch die Eigenschaft haben, dass das Gehäuse aus 1,5 mm starkem nichtrostendem Stahlblech V4A besteht.", + "rules": [ + "system", + "modalitaet-medium", + "technisch-die-eigenschaft-haben-full", + "objektbeschreibung", + "name-der-eigenschaft", + "begruendung", + "punkt" + ] + } + } +} diff --git a/docs/templates/paris/technische.json b/docs/templates/paris/technische.json new file mode 100644 index 0000000000000000000000000000000000000000..228c68530f72c1bacac838580277ecfcffddab39 --- /dev/null +++ b/docs/templates/paris/technische.json @@ -0,0 +1,259 @@ +{ + "id": "technische-anforderung", + "type": "ebt", + "name": "Technische Anforderung", + "version": "0.1.0", + "authors": [ + "Jens Heise", + "Oliver Linssen" + ], + "license": "MIT", + "description": "Technische Anforderung bedeutet in PARIS eine Eigenschaft oder Anforderung im Bezug auf die zu verwendende Technik, die bei der Erfüllung der funktionalen Anforderungen, Qualitätsanforderungen, Stakeholderanforderungen oder Eigenschaften eingehalten werden muss.", + "rules": { + "bedingung": { + "name": "Bedingung", + "type": "placeholder", + "hint": "Unter welcher Bedingung wird etwas getan?", + "explanation": "Beschreibung der Bedingung, unter der die technische Anforderung gilt. Beispiel: Falls es sich um Arbeitsplätze mit hohem Schutzbedarf handelt, ...", + "size": "large" + }, + "modalitaet": { + "name": "Modalität", + "type": "equalsAny", + "value": [ + "muss", + "soll", + "sollte", + "kann", + "wird" + ], + "size": "small" + }, + "modalitaet-medium": { + "name": "Modalität", + "type": "equalsAny", + "value": [ + "muss", + "soll", + "sollte", + "kann", + "wird" + ], + "size": "medium" + }, + "system": { + "name": "System", + "type": "placeholder", + "hint": "Wer tut es?", + "explanation": "Beschreibung des Systems. Beispiel: das System TopSec", + "size": "medium" + }, + "system-2": { + "name": "System", + "type": "placeholder", + "hint": "Wer tut es?", + "explanation": "Beschreibung des Systems. Beispiel: das System SopTec", + "size": "medium" + }, + "benutzer": { + "name": "Benutzer", + "type": "placeholder", + "hint": "Für wen wird es getan?", + "explanation": "Beschreibung des Benutzers. Beispiel: dem Anwender", + "size": "medium" + }, + "technisch-ermoeglichen": { + "name": "technisch ermöglichen", + "type": "equals", + "value": "technisch ermöglichen,", + "size": "medium" + }, + "technisch-in-der-lage-sein": { + "name": "technisch in der Lage sein", + "type": "equals", + "value": "technisch in der Lage sein,", + "size": "medium" + }, + "technisch": { + "name": "technisch", + "type": "equals", + "value": "technisch", + "size": "small" + }, + "selbständig": { + "name": "selbstständig", + "type": "equals", + "value": "selbstständig", + "size": "small", + "optional": true + }, + "objektbeschreibung": { + "name": "Objektbeschreibung", + "type": "placeholder", + "hint": "Woran / Womit wird es getan?", + "explanation": "Beschreibung des Objekts der Anforderung. Beispiel: über einen Browser Google Chrome Ver.X mit deaktiviertem Javascript", + "size": "medium", + "optional": true + }, + "prozessbeschreibung": { + "name": "Prozessbeschreibung", + "type": "placeholder", + "hint": "Was wird getan?", + "explanation": "Beschreibung des Prozesses. Beispiel: zu interagieren, ...", + "size": "medium" + }, + "prozessbeschreibung-full": { + "name": "Prozessbeschreibung", + "type": "placeholder", + "hint": "Was wird getan?", + "explanation": "Beschreibung des Prozesses. Beispiel: zu interagieren, ...", + "size": "full" + }, + "prozessbeschreibung-small": { + "name": "Prozessbeschreibung", + "type": "placeholder", + "hint": "Was wird getan?", + "explanation": "Beschreibung des Prozesses. Beispiel: zu interagieren, ...", + "size": "small" + }, + "begruendung": { + "name": "Begründung", + "type": "placeholder", + "hint": "Warum wird es getan?", + "explanation": "Begründung für die technische Anforderung. Beispiel: weil dadurch eine Vielzahl von Bedrohungen ausgeschlossen werden.", + "optional": true, + "ignoreMissingWhenOptional": true, + "size": "large" + }, + "punkt": { + "name": "Punkt", + "type": "equals", + "value": ".", + "size": "small" + } + }, + "variants": { + "technische-benutzeranforderung-mit-bedingung": { + "name": "Technische Benutzeranforderung mit Bedingung", + "description": "Dem Anwender wird, unter einer bestimmten Bedingung, etwas technisch ermöglicht.", + "example": "Falls es sich um Arbeitsplätze mit hohem Schutzbedarf handelt, muss das System TopSec dem Anwender technisch ermöglichen, über einen Browser Google Chrome Ver.X mit deaktiviertem Javascript zu interagieren, weil dadurch eine Vielzahl von Bedrohungen ausgeschlossen werden.", + "rules": [ + "bedingung", + "modalitaet", + "system", + "benutzer", + "technisch-ermoeglichen", + "objektbeschreibung", + "prozessbeschreibung-full", + "begruendung", + "punkt" + ] + }, + "technische-benutzeranforderung-ohne-bedingung": { + "name": "Technische Benutzeranforderung ohne Bedingung", + "description": "Dem Anwender wird, unabhängig von Bedingungen, etwas technisch ermöglicht.", + "example": "Das System TopSec muss dem Anwender technisch ermöglichen, über einen Browser Google Chrome Ver.X mit deaktiviertem Javascript zu interagieren.", + "rules": [ + "system", + "modalitaet-medium", + "benutzer", + "technisch-ermoeglichen", + "objektbeschreibung", + "prozessbeschreibung", + "begruendung", + "punkt" + ] + }, + "technische-inter-system-anforderung-mit-bedingung": { + "name": "Technische Inter-System-Anforderung mit Bedingung", + "description": "Eine technische Anforderung zwischen Systemen, die unter einer bestimmten Bedingung gilt.", + "example": "Falls das System XYZ in einem bestimmten Netzwerk betrieben wird, muss es dem System ABC technisch ermöglichen, Daten im JSON-Format zu empfangen, um eine bessere Integration zu gewährleisten.", + "rules": [ + "bedingung", + "modalitaet", + "system", + "system-2", + "technisch-ermoeglichen", + "objektbeschreibung", + "prozessbeschreibung-full", + "begruendung", + "punkt" + ] + }, + "technische-inter-system-anforderung-ohne-bedingung": { + "name": "Technische Inter-System-Anforderung ohne Bedingung", + "description": "Eine technische Anforderung zwischen Systemen, die unabhängig von Bedingungen gilt.", + "example": "Das System Rep2Print muss dem System Libri technisch ermöglichen, die Auswertung 0234 im XYZ-Format zu empfangen.", + "rules": [ + "system", + "modalitaet-medium", + "system-2", + "technisch-ermoeglichen", + "objektbeschreibung", + "prozessbeschreibung", + "begruendung", + "punkt" + ] + }, + "technische-schnittstellenanforderung-mit-bedingung": { + "name": "Technische Schnittstellenanforderung mit Bedingung", + "description": "Eine technische Anforderung an die Schnittstelle eines Systems, die unter einer bestimmten Bedingung gilt.", + "example": "Falls das System XYZ in einer spezifischen Netzwerkumgebung betrieben wird, muss das System XYZ technisch in der Lage sein, mit dem Protokoll TLS 1.3 zu kommunizieren, um die Datensicherheit zu erhöhen.", + "rules": [ + "bedingung", + "modalitaet", + "system", + "technisch-in-der-lage-sein", + "objektbeschreibung", + "prozessbeschreibung", + "begruendung", + "punkt" + ] + }, + "technische-schnittstellenanforderung-ohne-bedingung": { + "name": "Technische Schnittstellenanforderung ohne Bedingung", + "description": "Eine technische Anforderung an die Schnittstelle eines Systems, die unabhängig von Bedingungen gilt.", + "example": "Das System muss technisch in der Lage sein, Daten über eine REST-Schnittstelle zu empfangen.", + "rules": [ + "system", + "modalitaet-medium", + "technisch-in-der-lage-sein", + "objektbeschreibung", + "prozessbeschreibung-full", + "begruendung", + "punkt" + ] + }, + "technische-selbststaendige-systemaktivitaet-mit-bedingung": { + "name": "Technische selbstständige Systemaktivität mit Bedingung", + "description": "Eine technische Anforderung, die beschreibt, was ein System unter bestimmten Bedingungen selbstständig tun muss.", + "example": "Falls das System XYZ in einem bestimmten Modus betrieben wird, muss das System XYZ technisch selbstständig eine Sicherheitsüberprüfung alle 24 Stunden durchführen.", + "rules": [ + "bedingung", + "modalitaet", + "system", + "technisch", + "selbständig", + "objektbeschreibung", + "prozessbeschreibung", + "begruendung", + "punkt" + ] + }, + "technische-selbststaendige-systemaktivitaet-ohne-bedingung": { + "name": "Technische selbstständige Systemaktivität ohne Bedingung", + "description": "Eine technische Anforderung, die beschreibt, was ein System selbstständig tun muss, unabhängig von Bedingungen.", + "example": "Das System XYZ muss technisch selbstständig eine Sicherheitsüberprüfung alle 24 Stunden durchführen.", + "rules": [ + "system", + "modalitaet", + "technisch", + "selbständig", + "objektbeschreibung", + "prozessbeschreibung-small", + "begruendung", + "punkt" + ] + } + } +} diff --git a/docs/templates/paris/ziel.json b/docs/templates/paris/ziel.json new file mode 100644 index 0000000000000000000000000000000000000000..7b1416e192d2e21c0188750ce26eca6f592fc9b3 --- /dev/null +++ b/docs/templates/paris/ziel.json @@ -0,0 +1,168 @@ +{ + "id": "ziel", + "type": "ebt", + "name": "Ziel", + "version": "0.1.0", + "authors": [ + "Jens Heise", + "Oliver Linssen" + ], + "license": "MIT", + "description": "Ziel bedeutet in PARIS ein angestrebter Zustand, der durch die Erfüllung von Anforderungen erreicht werden soll.", + "rules": { + "bedingung": { + "name": "Bedingung", + "type": "placeholder", + "hint": "Unter welcher Bedingung?", + "explanation": "Beschreibung der Bedingung, unter der das Ziel gilt. Beispiel: Falls das System für den europäischen Markt entwickelt wird,", + "size": "full" + }, + "es-gross": { + "name": "es", + "type": "equals", + "value": "Es", + "size": "small" + }, + "es-klein": { + "name": "es", + "type": "equals", + "value": "es", + "size": "small" + }, + "modalitaet": { + "name": "Modalität", + "type": "equalsAny", + "hint": "Mit welcher Verbindlichkeit?", + "value": [ + "muss", + "soll", + "sollte", + "kann", + "wird" + ], + "size": "small" + }, + "ein-kein": { + "name": "ein/kein", + "type": "equalsAny", + "hint": "Ist es ein Ziel oder ein Nicht-Ziel?", + "value": [ + "ein", + "kein" + ], + "size": "small" + }, + "zielart": { + "name": "Zielart", + "type": "equalsAny", + "hint": "Welche Art von Ziel ist es?", + "value": [ + "Ziel", + "Projektziel" + ], + "optional": true, + "size": "small" + }, + "des-der": { + "name": "des/der", + "type": "equalsAny", + "value": [ + "des", + "der" + ], + "size": "small" + }, + "bezug": { + "name": "Bezug", + "type": "equalsAny", + "value": [ + "Projekts", + "Systems", + "Komponente", + "Baugruppe", + "Moduls", + "Subsystems", + "Objekts", + "Service", + "Stakeholders" + ], + "optional": true, + "size": "small" + }, + "eigenname": { + "name": "Eigenname", + "type": "placeholder", + "hint": "Worauf bezieht sich das Ziel?", + "explanation": "Eigener Name des Ziels. Beispiel: ABC", + "optional": true, + "size": "small" + }, + "sein": { + "name": "Sein", + "type": "equals", + "value": "sein,", + "size": "small" + }, + "zu-erreichender-zustand": { + "name": "Zu erreichender Zustand", + "type": "placeholder", + "hint": "Was ist das angestrebte Ziel?", + "explanation": "Beschreibung des zu erreichenden Zustands. Beispiel: dass das System die chinesische Alltagsschrift verarbeiten kann,", + "size": "full" + }, + "begruendung": { + "name": "Begründung", + "type": "placeholder", + "hint": "Warum wird dieses Ziel verfolgt?", + "explanation": "Begründung für das Ziel. Beispiel: weil dies erheblichen Mehraufwand in der Entwicklung verursacht", + "optional": true, + "ignoreMissingWhenOptional": true, + "size": "large" + }, + "punkt": { + "name": "Punkt", + "type": "equals", + "value": ".", + "size": "small" + } + }, + "variants": { + "ziel-mit-bedingung": { + "name": "Ziel mit Bedingung", + "description": "Ein Ziel, das unter einer bestimmten Bedingung erreicht werden soll.", + "example": "Falls das System für den europäischen Markt entwickelt wird, muss es kein Ergebnisziel des Systems Abrakadabra sein, dass das System die chinesische Alltagsschrift verarbeiten kann, weil dies erheblichen Mehraufwand in der Entwicklung verursacht.", + "rules": [ + "bedingung", + "modalitaet", + "es-klein", + "ein-kein", + "zielart", + "des-der", + "bezug", + "eigenname", + "sein", + "zu-erreichender-zustand", + "begruendung", + "punkt" + ] + }, + "ziel-ohne-bedingung": { + "name": "Ziel ohne Bedingung", + "description": "Ein Ziel, das unabhängig von Bedingungen erreicht werden soll.", + "example": "Es soll ein Ziel des Moduls ABC sein, die konfigurierbaren Parameter in einer XML-Datei abzulegen, damit die Konfiguration des Moduls nicht neu kompiliert werden muss.", + "rules": [ + "es-gross", + "modalitaet", + "ein-kein", + "zielart", + "des-der", + "bezug", + "eigenname", + "sein", + "zu-erreichender-zustand", + "begruendung", + "punkt" + ] + } + } +} diff --git a/src/app/template/web/service.go b/src/app/template/web/service.go index a56ab6bb88de25fb8d2395a9b2eacee98a848c52..df68c9f52094ac2bed6f225c606a60b9724eed16 100644 --- a/src/app/template/web/service.go +++ b/src/app/template/web/service.go @@ -5,7 +5,6 @@ import ( "encoding/json" "errors" "github.com/google/uuid" - "github.com/org-harmony/harmony/src/app/eiffel" "github.com/org-harmony/harmony/src/app/template" "github.com/org-harmony/harmony/src/app/user" "github.com/org-harmony/harmony/src/core/event" @@ -14,6 +13,7 @@ import ( "github.com/org-harmony/harmony/src/core/validation" "github.com/org-harmony/harmony/src/core/web" "os" + "path/filepath" ) var ( @@ -131,23 +131,6 @@ func CopyTemplate(ctx context.Context, tmpl *template.Template, tmplSetID, usrID } func ImportDefaultParisTemplates(ctx context.Context, tmplSetRepo template.SetRepository, tmplRepo template.Repository, usrID uuid.UUID) error { - defaultAK, err := os.ReadFile("templates/default/paris/ak.json") - if err != nil { - return ErrDefaultTemplateDoesNotExist - } - defaultESFA, err := os.ReadFile("templates/default/paris/esfa.json") - if err != nil { - return ErrDefaultTemplateDoesNotExist - } - defaultESQUA, err := os.ReadFile("templates/default/paris/esqua.json") - if err != nil { - return ErrDefaultTemplateDoesNotExist - } - defaultGlossar, err := os.ReadFile("templates/default/paris/glossar.json") - if err != nil { - return ErrDefaultTemplateDoesNotExist - } - tmplSet, err := tmplSetRepo.Create(ctx, &template.SetToCreate{ Name: "PARIS", Version: "0.6.2", @@ -158,33 +141,35 @@ func ImportDefaultParisTemplates(ctx context.Context, tmplSetRepo template.SetRe return web.ErrInternal } - _, err = tmplRepo.Create(ctx, &template.ToCreate{ - TemplateSet: tmplSet.ID, - Type: eiffel.BasicTemplateType, - Config: string(defaultAK), - CreatedBy: usrID, - }) + // read each json file from the default paris template directory for import and create a template from it + dir, err := os.ReadDir("docs/templates/paris") + if err != nil { + return ErrDefaultTemplateDoesNotExist + } - _, err = tmplRepo.Create(ctx, &template.ToCreate{ - TemplateSet: tmplSet.ID, - Type: eiffel.BasicTemplateType, - Config: string(defaultESFA), - CreatedBy: usrID, - }) + for _, file := range dir { + if file.IsDir() { + continue + } - _, err = tmplRepo.Create(ctx, &template.ToCreate{ - TemplateSet: tmplSet.ID, - Type: eiffel.BasicTemplateType, - Config: string(defaultESQUA), - CreatedBy: usrID, - }) + jsonCfg, err := os.ReadFile(filepath.Join("docs/templates/paris/", file.Name())) + if err != nil { + return ErrDefaultTemplateDoesNotExist + } - _, err = tmplRepo.Create(ctx, &template.ToCreate{ - TemplateSet: tmplSet.ID, - Type: eiffel.BasicTemplateType, - Config: string(defaultGlossar), - CreatedBy: usrID, - }) + tmpl, err := template.ToCreateFromConfig(string(jsonCfg)) + if err != nil { + return ErrDefaultTemplateDoesNotExist + } + + tmpl.TemplateSet = tmplSet.ID + tmpl.CreatedBy = usrID + + _, err = tmplRepo.Create(ctx, tmpl) + if err != nil { + return web.ErrInternal + } + } return nil } diff --git a/templates/default/paris/ak.json b/templates/default/paris/ak.json deleted file mode 100644 index ec595ed31e54c10235653519e9ac4c9e325d82ce..0000000000000000000000000000000000000000 --- a/templates/default/paris/ak.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "id": "ak", - "type": "ebt", - "name": "Abnahme-/Akzeptanzkriterien", - "version": "0.1.0", - "authors": [ - "Jens Heise", - "Oliver Linssen" - ], - "license": "MIT", - "description": "Abnahme-/Abnahmekriterium bedeutet in PARIS ein Merkmal, mit dessen Hilfe entschieden wird, ob eine Anforderung erfüllt ist. Abnahmekriterien werden – insbesondere zu Beginn der Anforderungsanalyse – häufig formfrei formuliert.", - "rules": { - "prae-bedingung": { - "name": "Prä-Bedingung", - "type": "equalsAny", - "value": [ - "Ausgangssituation:", - "Angenommen", - "Angenommen,", - "Gegeben", - "Gegeben," - ], - "optional": true, - "ignoreMissingWhenOptional": true, - "size": "small" - }, - "prae-bedingung-kurz": { - "name": "Prä-Ausgangssituation", - "type": "equals", - "value": "Ausgangssituation:", - "size": "small" - }, - "bedingung": { - "name": "Bedingung", - "type": "placeholder", - "hint": "Welche Situation liegt vor?", - "explanation": "Beschreibung der Situation vor dem Ereignis. Beispiel: Angenommen, der Anwender X hat ein Meeting für den Anwender X für den 1.3.201x von 13:00 bis 15:00 angelegt.", - "size": "large", - "optional": true, - "ignoreMissingWhenOptional": true - }, - "prae-ereignis": { - "name": "Prä-Ereignis", - "type": "equalsAny", - "value": [ - "Ereignis:", - "Wenn", - "Prüfe" - ], - "optional": true, - "ignoreMissingWhenOptional": true, - "size": "small" - }, - "prae-ereignis-kurz": { - "name": "Prä-Ereignis", - "type": "equals", - "value": "Ereignis:", - "size": "small" - }, - "ereignis": { - "name": "Ereignis", - "type": "placeholder", - "hint": "Was soll passieren?", - "explanation": "Beschreibung Ereignis(se) bzw. Aktion(en). Beispiel: Wenn ein anderer Anwender Y für den Anwender X ein zweites Meeting für den 1.3.201x von 13:00 bis 15:00 anlegen will,", - "size": "large", - "optional": true, - "ignoreMissingWhenOptional": true - }, - "prae-ergebnis": { - "name": "Prä-Ergebnis", - "type": "equalsAny", - "value": [ - "Ergebnis:", - "Dann", - "dann" - ], - "optional": true, - "ignoreMissingWhenOptional": true, - "size": "small" - }, - "prae-ergebnis-kurz": { - "name": "Prä-Ergebnis", - "type": "equals", - "value": "Erwartetes Ergebnis:", - "size": "small" - }, - "ergebnis": { - "name": "Ergebnis", - "type": "placeholder", - "hint": "Welches Ergebnis wird erwartet?", - "explanation": "Beschreibung Situation nach Ergebnis(sen). Beispiel: dann wird kein zweites Meeting angelegt,", - "size": "large" - }, - "begruendung": { - "name": "Begründung", - "type": "placeholder", - "hint": "Warum ist es so?", - "explanation": "Beschreibung der Begründung für das Ergebnis. Beispiel: weil ein Anwender immer nur in einem Meeting gleichzeitig anwesend sein kann.", - "size": "large", - "optional": true, - "ignoreMissingWhenOptional": true - }, - "punkt": { - "name": "Punkt", - "type": "equals", - "value": ".", - "size": "small", - "extra": { - "before": "", - "after": "" - } - } - }, - "variants": { - "akzeptanzkriterium": { - "name": "Abnahme-/Akzeptanzkriterium", - "description": "Ein Abnahme-/Akzeptanzkriterium ist ein Merkmal, mit dessen Hilfe entschieden wird, ob eine Anforderung erfüllt ist. Abnahmekriterien werden – insbesondere zu Beginn der Anforderungsanalyse – häufig formfrei formuliert.", - "example": "Angenommen, der Anwender X hat ein Meeting für den Anwender X für den 1.3.201x von 13:00 bis 15:00 angelegt. Wenn ein anderer Anwender Y für den Anwender X ein zweites Meeting für den 1.3.201x von 13:00 bis 15:00 anlegen will, dann wird kein zweites Meeting angelegt, weil ein Anwender immer nur in einem Meeting gleichzeitig anwesend sein kann.", - "rules": [ - "prae-bedingung", - "bedingung", - "prae-ereignis", - "ereignis", - "prae-ergebnis", - "ergebnis", - "begruendung", - "punkt" - ] - }, - "akzeptankriterium-vereinfacht-vollstaendig": { - "name": "Abnahme-/Akzeptanzkriterium (vereinfacht, vollständig)", - "description": "Ein Abnahme-/Akzeptanzkriterium ist ein Merkmal, mit dessen Hilfe entschieden wird, ob eine Anforderung erfüllt ist. Abnahmekriterien werden – insbesondere zu Beginn der Anforderungsanalyse – häufig formfrei formuliert.", - "example": "Angenommen, der Anwender X hat ein Meeting für den Anwender X für den 1.3.201x von 13:00 bis 15:00 angelegt. Wenn ein anderer Anwender Y für den Anwender X ein zweites Meeting für den 1.3.201x von 13:00 bis 15:00 anlegen will, dann wird kein zweites Meeting angelegt, weil ein Anwender immer nur in einem Meeting gleichzeitig anwesend sein kann.", - "rules": [ - "prae-bedingung-kurz", - "bedingung", - "prae-ereignis-kurz", - "ereignis", - "prae-ergebnis-kurz", - "ergebnis", - "begruendung", - "punkt" - ] - } - } -} \ No newline at end of file diff --git a/templates/default/paris/esfa.json b/templates/default/paris/esfa.json deleted file mode 100644 index c7e0b7d9f18e08d8c794213d19692453d9d6c1e0..0000000000000000000000000000000000000000 --- a/templates/default/paris/esfa.json +++ /dev/null @@ -1,237 +0,0 @@ -{ - "id": "esfa", - "type": "ebt", - "name": "Erweiterte Schablone für funktionale Anforderungen (ESFA)", - "version": "0.1.0", - "authors": [ - "Jens Heise", - "Oliver Linssen" - ], - "license": "MIT", - "description": "Die erweiterte Schablone für funktionale Anforderungen (ESFA) dient der präzsien Beschreibung verschiedener Arten von funktionalen Anforderungen.", - "rules": { - "bedingung": { - "name": "Bedingung", - "type": "placeholder", - "hint": "Unter welcher Bedingung wird etwas getan?", - "explanation": "Beispiel: Am letzten Tag des Monats", - "size": "full" - }, - "modalitaet": { - "name": "Modalität", - "type": "equalsAny", - "hint": "Mit welcher Verbindlichkeit wird es getan?", - "explanation": "Beispiel: muss", - "value": [ - "muss", - "soll", - "sollte", - "kann", - "wird" - ], - "size": "medium" - }, - "small-modalitaet": { - "name": "Modalität", - "type": "equalsAny", - "hint": "Mit welcher Verbindlichkeit wird es getan?", - "explanation": "Beispiel: muss", - "value": [ - "muss", - "soll", - "sollte", - "kann", - "wird" - ], - "size": "small" - }, - "system": { - "name": "System", - "type": "placeholder", - "hint": "Wer tut es?", - "explanation": "Beispiel: das System Libri", - "size": "medium" - }, - "benutzer": { - "name": "Benutzer", - "type": "placeholder", - "hint": "Für wen wird es getan?", - "explanation": "Beispiel: dem Administrator", - "size": "medium" - }, - "ermoeglichen": { - "name": "Ermöglichen", - "type": "equals", - "value": "ermöglichen,", - "size": "medium" - }, - "in-der-lage-sein": { - "name": "In der Lage sein", - "type": "equals", - "value": "in der Lage sein,", - "size": "small" - }, - "selbstaendig": { - "name": "Selbständig", - "type": "equals", - "value": "selbständig", - "size": "small" - }, - "objektbeschreibung": { - "name": "Objektbeschreibung", - "type": "placeholder", - "hint": "Woran / Womit wird es getan?", - "explanation": "Beispiel: eine Auswertung der Verbrauchsdaten", - "optional": true, - "size": "large" - }, - "prozessbeschreibung": { - "name": "Prozessbeschreibung", - "type": "placeholder", - "hint": "Was wird getan?", - "explanation": "Beispiel: zu erzeugen", - "size": "small" - }, - "begruendung": { - "name": "Begründung", - "type": "placeholder", - "hint": "Warum wird es getan?", - "explanation": "Beispiel: weil dieser manuell nach Auffälligkeiten suchen will", - "optional": true, - "ignoreMissingWhenOptional": true, - "size": "large" - }, - "punkt": { - "name": "Punkt", - "type": "equals", - "value": ".", - "size": "small", - "extra": { - "before": "", - "after": "" - } - } - }, - "variants": { - "benutzeranforderung-mit-bedingung": { - "name": "Benutzeranforderung mit Bedingung", - "description": "Eine funktionale Benutzeranforderung mit Bedingung", - "example": "Am letzten Tag des Monats muss das System Libri dem Administrator ermöglichen, eine Auswertung der Verbrauchsdaten zu erzeugen, weil dieser manuell nach Auffälligkeiten suchen will.", - "rules": [ - "bedingung", - "modalitaet", - "system", - "benutzer", - "ermoeglichen", - "objektbeschreibung", - "prozessbeschreibung", - "begruendung", - "punkt" - ] - }, - "benutzeranforderung-ohne-bedingung": { - "name": "Benutzeranforderung ohne Bedingung", - "description": "Eine funktionale Benutzeranforderung ohne Bedingung", - "example": "Das System Libri muss dem Administrator ermöglichen, eine Auswertung der Verbrauchsdaten zu erzeugen, weil dieser manuell nach Auffälligkeiten suchen will.", - "rules": [ - "system", - "modalitaet", - "benutzer", - "ermoeglichen", - "objektbeschreibung", - "prozessbeschreibung", - "begruendung", - "punkt" - ] - }, - "inter-system-anforderung-mit-bedingung": { - "name": "Inter-System-Anforderung mit Bedingung", - "description": "Eine Inter-System-Anforderung mit Bedingung", - "example": "Nachdem das System Libri die Auswertung der Verbrauchsdaten erzeugt hat, muss das System Rep2Print dem System Libri ermöglichen, die Auswertung 0234 zu drucken.", - "rules": [ - "bedingung", - "modalitaet", - "system", - "system", - "ermoeglichen", - "objektbeschreibung", - "prozessbeschreibung", - "begruendung", - "punkt" - ] - }, - "inter-system-anforderung-ohne-bedingung": { - "name": "Inter-System-Anforderung ohne Bedingung", - "description": "Eine Inter-System-Anforderung ohne Bedingung", - "example": "Das System Kaffee4All muss einem verbundenen Smartphone ermöglichen, den Befehl, einen Kaffee zuzubereiten, auszuführen.", - "rules": [ - "system", - "modalitaet", - "system", - "ermoeglichen", - "objektbeschreibung", - "prozessbeschreibung", - "begruendung", - "punkt" - ] - }, - "schnittstellenanforderung-mit-bedingung": { - "name": "Schnittstellenanforderung mit Bedingung", - "description": "Eine Schnittstellenanforderung mit Bedingung", - "example": "Wenn ein Kaffee mit Milch angefordert wird, muss das System Kaffee-Vollautomat in der Lage sein, dem Milchbehälter Milch zu entnehmen.", - "rules": [ - "bedingung", - "small-modalitaet", - "system", - "in-der-lage-sein", - "objektbeschreibung", - "prozessbeschreibung", - "begruendung", - "punkt" - ] - }, - "schnittstellenanforderung-ohne-bedingung": { - "name": "Schnittstellenanforderung ohne Bedingung", - "description": "Eine Schnittstellenanforderung ohne Bedingung", - "example": "Am letzten Tag des Monats muss das System in der Lage sein, eine Auswertung der Verbrauchsdaten zu erzeugen.", - "rules": [ - "system", - "small-modalitaet", - "in-der-lage-sein", - "objektbeschreibung", - "prozessbeschreibung", - "begruendung", - "punkt" - ] - }, - "selbstaendige-aktivitaet-mit-bedingung": { - "name": "Selbständige Aktivität mit Bedingung", - "description": "Eine selbständige Aktivität mit Bedingung", - "example": "Am letzten Tag des Monats muss das System Libri selbständig eine Auswertung der Verbrauchsdaten erzeugen.", - "rules": [ - "bedingung", - "small-modalitaet", - "system", - "selbstaendig", - "objektbeschreibung", - "prozessbeschreibung", - "begruendung", - "punkt" - ] - }, - "selbstaendige-aktivitaet-ohne-bedingung": { - "name": "Selbständige Aktivität ohne Bedingung", - "description": "Eine selbständige Aktivität ohne Bedingung", - "example": "Das System Libri muss selbständig eine Auswertung der Verbrauchsdaten erzeugen.", - "rules": [ - "system", - "small-modalitaet", - "selbstaendig", - "objektbeschreibung", - "prozessbeschreibung", - "begruendung", - "punkt" - ] - } - } -} \ No newline at end of file diff --git a/templates/default/paris/esqua.json b/templates/default/paris/esqua.json deleted file mode 100644 index f7c1e96eeeea73366e53a904237d52ec5610898b..0000000000000000000000000000000000000000 --- a/templates/default/paris/esqua.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "id": "esqua", - "type": "ebt", - "name": "Erweiterte Schablone für Qualitätsanforderungen (ESQUA)", - "version": "0.1.0", - "authors": [ - "Jens Heise", - "Oliver Linssen" - ], - "license": "MIT", - "description": "Qualitätsanforderung bedeutet in PARIS eine Anforderung, die sich auf ein Qualitätsmerkmal bezieht. Qualitätsanforderungen bestehen immer aus einem Qualitätsmerkmal und 1-n Qualitätskriterien.", - "rules": { - "bedingung": { - "name": "Bedingung", - "type": "placeholder", - "hint": "Unter welcher Bedingung?", - "explanation": "Beispiel: Wenn der Dienstvertrag mit einem Betreiber neu ausgeschrieben wird,", - "size": "large" - }, - "modalitaet": { - "name": "Modalität", - "type": "equalsAny", - "hint": "Mit welcher Verbindlichkeit?", - "explanation": "Beispiel: muss", - "value": [ - "muss", - "soll", - "sollte", - "kann", - "wird" - ], - "size": "small" - }, - "modalitaet-medium": { - "name": "Modalität", - "type": "equalsAny", - "hint": "Mit welcher Verbindlichkeit?", - "explanation": "Beispiel: muss", - "value": [ - "muss", - "soll", - "sollte", - "kann", - "wird" - ], - "size": "medium" - }, - "was-oder-wer": { - "name": "System/Stakeholder", - "type": "placeholder", - "hint": "Muss was oder wer?", - "explanation": "Beispiel: der Kantine", - "size": "medium" - }, - "was-oder-wer-full": { - "name": "System/Stakeholder", - "type": "placeholder", - "hint": "Muss was oder wer?", - "explanation": "Beispiel: die Kantine", - "size": "full" - }, - "qualitaetsmerkmal-besitzen": { - "name": "Das Qualitätsmerkmal besitzen", - "type": "equals", - "value": "das Qualitätsmerkmal besitzen", - "size": "medium" - }, - "qualitaetsmerkmal-besitzen-medium": { - "name": "Das Qualitätsmerkmal besitzen", - "type": "equals", - "value": "das Qualitätsmerkmal besitzen", - "size": "medium" - }, - "qualitaetsmerkmal": { - "name": "Qualitätsmerkmal", - "type": "placeholder", - "hint": "Welches qualitative Merkmal besitzen?", - "explanation": "Beispiel: das Qualitätsmerkmal besitzen, leistungsfähig zu sein,", - "size": "full" - }, - "begruendung": { - "name": "Begründung", - "type": "placeholder", - "hint": "Warum?", - "explanation": "Beispiel: weil die Mitarbeiter in Ihren Pausen keine Wartezeiten tolerieren", - "optional": true, - "ignoreMissingWhenOptional": true, - "size": "large" - }, - "punkt": { - "name": "Punkt", - "type": "equals", - "value": ".", - "size": "small", - "extra": { - "before": "", - "after": "" - } - }, - "prae-qualitaetsindikator": { - "name": "Prä-Qualitätsindikator", - "type": "equals", - "value": "Qualitätsindikator:", - "size": "small" - }, - "qualitaetsindikator": { - "name": "Qualitätsindikator", - "type": "placeholder", - "hint": "Was ist ein Indikator?", - "explanation": "Maß, welches zur Bewertung der Qualität verwendet wird. Beispiel: Qualitätsindikator: Zeit, die man an der Essensausgabe wartet.", - "size": "large" - }, - "prae-messverfahren": { - "name": "Prä-Messverfahren", - "type": "equals", - "value": "Messverfahren:", - "size": "small" - }, - "messverfahren": { - "name": "Messverfahren", - "type": "placeholder", - "hint": "Wie würde man messen?", - "explanation": "Art der Messung. Beispiel: Messverfahren: Zufällige Zeitmessung zwischen 12:00 und 13:30 an der Ausgabe für Hauptgerichte. Die Zeitmessung beginnt, wenn sich der Kunde an der Schlange der Hauptausgabe anstellt. Die Zeitmessung endet, wenn der Zahlvorgang an der Kasse abgeschlossen ist.", - "size": "large" - }, - "prae-masseinheit": { - "name": "Prä-Maßeinheit", - "type": "equals", - "value": "Maßeinheit:", - "size": "small" - }, - "masseinheit": { - "name": "Maßeinheit", - "type": "placeholder", - "hint": "Welche Maßeinheit?", - "explanation": "Maßeinheit, die im Messverfahren verwendet wird. Beispiel: Maßeinheit: Sekunden.", - "size": "large" - }, - "prae-ziel": { - "name": "Prä-Ziel", - "type": "equals", - "value": "Ziel:", - "size": "small" - }, - "ziel": { - "name": "Ziel", - "type": "placeholder", - "hint": "Was muss erreicht werden?", - "explanation": "Welche/n Wert/e der Qualitätsindikator erreichen muss. Beispiel: Ziel: Voll erfüllt: x <= 360. Nicht erfüllt: x > 360.", - "size": "large" - } - }, - "variants": { - "qualitaetsmerkmal-mit-bedingung": { - "name": "Qualitätsmerkmal mit Bedingung", - "description": "Qualitätsmerkmal mit Bedingung", - "example": "Wenn der Dienstvertrag mit einem Betreiber neu ausgeschrieben wird, muss die Kantine das Qualitätsmerkmal besitzen, leistungsfähig zu sein, weil die Mitarbeiter in Ihren Pausen keine Wartezeiten tolerieren.", - "rules": [ - "bedingung", - "modalitaet", - "was-oder-wer", - "qualitaetsmerkmal-besitzen", - "qualitaetsmerkmal", - "begruendung", - "punkt" - ] - }, - "qualitaetsmerkmal-ohne-bedingung": { - "name": "Qualitätsmerkmal ohne Bedingung", - "description": "Qualitätsmerkmal ohne Bedingung", - "example": "Die Kantine muss das Qualitätsmerkmal besitzen, leistungsfähig zu sein.", - "rules": [ - "was-oder-wer-full", - "modalitaet-medium", - "qualitaetsmerkmal-besitzen-medium", - "qualitaetsmerkmal", - "begruendung", - "punkt" - ] - }, - "qualitaetskriterium": { - "name": "Qualitätskriterium", - "description": "Qualitätskriterium", - "example": "Qualitätsindikator: Zeit, die man an der Essensausgabe wartet. Messverfahren: Zufällige Zeitmessung zwischen 12:00 und 13:30 an der Ausgabe für Hauptgerichte. Die Zeitmessung beginnt, wenn sich der Kunde an der Schlange der Hauptausgabe anstellt. Die Zeitmessung endet, wenn der Zahlvorgang an der Kasse abgeschlossen ist. Maßeinheit: Sekunden. Ziel: Voll erfüllt: x <= 360. Nicht erfüllt: x > 360.", - "rules": [ - "prae-qualitaetsindikator", - "qualitaetsindikator", - "prae-messverfahren", - "messverfahren", - "prae-masseinheit", - "masseinheit", - "prae-ziel", - "ziel" - ] - } - } -} \ No newline at end of file diff --git a/templates/default/paris/glossar.json b/templates/default/paris/glossar.json deleted file mode 100644 index 3a56fe2a1cb6345130b1275509c3a290bf8fc17b..0000000000000000000000000000000000000000 --- a/templates/default/paris/glossar.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "id": "glossar", - "type": "ebt", - "name": "Glossareintrag", - "version": "0.1.0", - "authors": [ - "Jens Heise", - "Oliver Linssen" - ], - "license": "MIT", - "description": "Glossareintrag bedeutet in PARIS eine Definition, mit der ein Begriff, eine Abkürzung oder ein Verb für einen bestimmten Geltungsbereich erklärt wird.", - "rules": { - "definiendum": { - "name": "Definiendum", - "type": "placeholder", - "hint": "Welcher Begriff?", - "explanation": "Ein zu erklärender Begriff, eine Abkürzung oder ein Verb. Beispiel: Kunde", - "size": "medium" - }, - "definiendum-vereinfacht": { - "name": "Definiendum", - "type": "placeholder", - "hint": "Welcher Begriff?", - "explanation": "Ein zu erklärender Begriff, eine Abkürzung oder ein Verb. Beispiel: Kunde (Synonyme: Ausleiher, Besucher, Leser) (engl. Reader)", - "size": "large" - }, - "synonyme": { - "name": "Synonyme", - "type": "placeholder", - "hint": "Mit welchen Synonymen?", - "explanation": "Synonyme für den zu erklärenden Begriff. Beispiel: (Synonyme: Ausleiher, Besucher, Leser)", - "optional": true, - "ignoreMissingWhenOptional": true, - "size": "medium" - }, - "uebersetzung": { - "name": "Übersetzung", - "type": "placeholder", - "hint": "Mit welchen Übersetzungen?", - "explanation": "Übersetzung des zu erklärenden Begriffs. Beispiel: (engl. Reader)", - "optional": true, - "ignoreMissingWhenOptional": true, - "size": "medium" - }, - "bedeutet": { - "name": "Bedeutet", - "type": "equals", - "value": "bedeutet", - "size": "small" - }, - "prae-bereich": { - "name": "Prä-Bereich", - "type": "equalsAny", - "value": [ - "im", - "in", - "in der" - ], - "optional": true, - "ignoreMissingWhenOptional": true, - "size": "small" - }, - "bereich": { - "name": "Bereich", - "type": "placeholder", - "hint": "Wird für welchen Bereich?", - "explanation": "Bezug, auf den sich der zu erklärende Begriff bezieht. Beispiel: im System Libri", - "size": "small" - }, - "bereich-vereinfacht": { - "name": "Bereich", - "type": "placeholder", - "hint": "Wird für welchen Bereich?", - "explanation": "Bezug, auf den sich der zu erklärende Begriff bezieht. Beispiel: im System Libri", - "size": "medium" - }, - "prae-definiens": { - "name": "Prä-Definiens", - "type": "equalsAny", - "value": [ - "die Abkürzung", - "den Prozess" - ], - "optional": true, - "ignoreMissingWhenOptional": true, - "size": "small" - }, - "definiens": { - "name": "Definiens", - "type": "placeholder", - "hint": "Wie definiert?", - "explanation": "Erklärung des zu erklärenden Begriffs. Beispiel: eine natürliche Person,", - "size": "medium" - }, - "spezifikation-definiens": { - "name": "Spezifikation des Definiens", - "type": "placeholder", - "hint": "Was bedeutet das?", - "explanation": "Spezifikation des Definiens. Beispiel: die berechtigt ist, Medien auszuleihen,", - "optional": true, - "size": "full" - }, - "begruendung": { - "name": "Begründung", - "type": "placeholder", - "hint": "Warum ist es so festgelegt?", - "explanation": "Begründung für die Definition. Beispiel: weil juristische Personen nicht zur Ausleihe zugelassen sind", - "optional": true, - "ignoreMissingWhenOptional": true, - "size": "large" - }, - "punkt": { - "name": "Punkt", - "type": "equals", - "value": ".", - "size": "small", - "extra": { - "before": "", - "after": "" - } - } - }, - "variants": { - "glossareintrag": { - "name": "Glossareintrag", - "description": "Glossareintrag definiert einen Begriff, eine Abkürzung oder ein Verb für einen bestimmten Geltungsbereich.", - "example": "Kunde (Synonyme: Ausleiher, Besucher, Leser) (engl. Reader) bedeutet im System Libri eine natürliche Person, die berechtigt ist, Medien auszuleihen, weil juristische Personen nicht zur Ausleihe zugelassen sind.", - "rules": [ - "definiendum", - "synonyme", - "uebersetzung", - "bedeutet", - "prae-bereich", - "bereich", - "prae-definiens", - "definiens", - "spezifikation-definiens", - "begruendung", - "punkt" - ] - }, - "glossareintrag-vereinfacht": { - "name": "Glossareintrag vereinfacht", - "description": "Glossareintrag vereinfacht definiert einen Begriff, eine Abkürzung oder ein Verb für einen bestimmten Geltungsbereich.", - "example": "Kunde (Synonyme: Ausleiher, Besucher, Leser) (engl. Reader) bedeutet im System Libri eine natürliche Person, die berechtigt ist, Medien auszuleihen, weil juristische Personen nicht zur Ausleihe zugelassen sind.", - "rules": [ - "definiendum-vereinfacht", - "bedeutet", - "bereich-vereinfacht", - "definiens", - "spezifikation-definiens", - "begruendung", - "punkt" - ] - } - } -} \ No newline at end of file