5.3 Entwurfsentscheidungen zu Systemfunktionen
5.3.10 Metriken zur Beurteilung der Vollst¨ andigkeit des Entscheidungswissens berechnen
Dieser Abschnitt beschreibt den Entwurf und die dabei getroffenen Entscheidungen zu System-funktion 10 aus Kapitel 4.2.2.10 auf Seite 27. Abbildung 5.22 illustriert das wichtigste Entschei-dungsproblem zu dieser Systemfunktion. Tabelle 5.18 listet weitere EntscheiEntschei-dungsprobleme auf.
Abbildung 5.23 zeigt alle n¨otigen Klassen f¨ur diese Systemfunktion.
JIRA bietet verschiedene Berichte (hier: Reports) an, um Auswertungen wie bspw. Burndown Charts von ausgew¨ahlten Projekten zu erstellen. Es ist m¨oglich, neue Reports in diese Aus-wertungen einzuf¨ugen. Die NutzerIn soll eine M¨oglichkeit bekommen, verschiedene Kennzahlen zum Entscheidungswissen im ausgew¨ahlten Projekt einzusehen. Es wurde entschieden, diese Kennzahlen mit Boxplots und Kuchendiagrammen zu visualisieren. In diesem Zuge stellte sich das Entscheidungsproblem, ob diese Grafiken auf Serverseite oder Nutzerseite erzeugt werden sollen. Abbildung 5.22 beschreibt dieses Entscheidungsproblem.
Die erste M¨oglichkeit erzeugt Grafiken auf Serverseite. Die Grafiken werden in Bin¨ardateien konvertiert und mit einem Velocity Template an die Clientseite ¨ubertragen. Diese Aufgabe ist technisch anspruchsvoll und erh¨oht die Netzwerklast, da viele Bilder an die Nutzerseite
¨ubertragen werden.
Eine Alternative ist der Aufbau von Grafiken auf Nutzerseite mit JavaScript. Daf¨ur werden lediglich die zugrunde liegenden Kennzahlen an die Nutzerseite ¨ubertragen. Diese M¨oglichkeit nutzt JavaScript Bibliotheken f¨ur ansehnliche Grafiken die Nutzerinteraktionen erlauben. Aus diesem Grund wurde entschieden die Grafiken auf Nutzerseite mit JavaScript zu erzeugen.
Aufgrund der Open-Source Lizenz und der guten Dokumentation, wurde entschieden die Java Script Bibliothek ECharts7einzusetzen.
Issue ¡
Wo sollen die Grafiken mit Kennzahlen erzeugt werden?
Alternative ¡ Serverseitig
Einfache Anzeige auf Nutzerseite
Bild
¨
ubertragung durch Templates
Entscheidung ¡ Clientseitig
Sch¨one Darstellung
Grafik-interatkion
Neue JS Bibliothek
Abbildung 5.22: Entscheidungsbaum zur Entscheidung von Links zwischen verschiedenen Ele-menten des Entscheidungswissens.
7ECharts:https://ecomfe.github.io/echarts-doc/public/en/index.htmlZuletzt aufgerufen am 17.12.2018
5 Entwurf und Implementierung
Folgende Metriken sollen berechnet und dargestellt werden:
• Kommentare pro JIRA-Issue
Beschreibt das Diskussionsverhalten der NutzerInnen
• Commits pro Issue
Beschreibt die Anzahl der n¨otigen Anderungen f¨¨ ur ein JIRA-Issue
• Link Distanz
Beschreibt die Komplexit¨at einer Ent-scheidung. Wird f¨ur die Entscheidungs-typen Issue, Alternative, Entscheidung berechnet
• Verteilung der Wissenstypen
Beschreibt die Quantit¨at der jeweiligen Wissenstypen.
• Vollst¨andigkeit der Entscheidungen Beschreibt f¨ur je Issue, Alternative, Ent-scheidung, welche Entscheidungselemen-te verlinkt sind
• Anzahl S¨atze mit Entscheidungselemen-ten
Beschreibt die Nutzung von Kommenta-ren zu Entscheidungsdokumentation.
Die Metrik f¨ur die Anzahl der Commits pro Issue stellte eine besondere Herausforderung dar.
Die Voraussetzung zum Einsatz dieser Metrik ist das JIRA-Plug-In
”Git Integration for JI-RA“8. Dieses muss installiert und eingerichtet (Das gew¨unschte JIRA-Projekt muss mit einem GIT Server verbunden) sein. Dieses Plug-In bietet eine REST-Schnittstelle, um Commits im JSON-Format zu gew¨unschten JIRA-Issues anzufragen. Jedoch sind REST-Abfragen von Ser-verseite standardm¨aßig nicht authentifiziert. Eine M¨oglichkeit dieses Problem zu l¨osen ist die explizite Aufforderung an die NutzerIn ihren Nutzernamen und Passwort einzugeben. Eine wei-tere M¨oglichkeit ist die Verwendung der OAuth-Methode9. Dieses Verfahren erm¨oglicht es den JIRA-Server mit anderen Anwendungen zu verbinden und ¨uber ein Public und Private Key Paar eine sichere Verbindung herzustellen. Da Oauth nur einmalig eingerichtet werden muss und einen h¨oheren Sicherheitsstandard sowie Komfort bietet als die Eingabe der Nutzeran-meldeinformationen, wurde entschieden OAuth zu verwenden. Um OAuth auch f¨ur zuk¨unftige Nutzungsf¨alle zug¨anglich zu machen, wurden entsprechende Methoden entwickelt die beliebige REST-Schnittstellen ansprechen k¨onnen. Die entsprechenden Sicherheitsmechanismen muss die NutzerIn einmalig in Ansicht WS1.1 All Projects Admin View einrichten.
Zudem wurde entschieden der NutzerIn die M¨oglichkeit zu bieten, die zugrundeliegenden Kenn-zahlen einzusehen. Die NutzerIn kann die Zahlen anschließend bspw. in Excel kopieren oder LaTeX-Tabellen erzeugen. Zur Anzeige muss die NutzerIn die gew¨unschte Grafik selektieren und erh¨alt anschließend die Kennzahlen in einem Pop-Up.
F¨ur diese Anzeige wurde entschieden, den jeweiligen JIRA-Issue-Schl¨ussel zu jeder Kennzahl zu pr¨asentieren. Dies erm¨oglicht es der NutzerIn einzusehen, welche Entscheidungselemente weitere Aufmerksamkeit ben¨otigen.
8Git Integration for JIRA:https://bigbrassband.com/api-doc.htmlZuletzt aufgerufen am 17.12.2018
9JIRA OAuth:https://developer.atlassian.com/server/jira/platform/oauth/ Zuletzt aufgerufen am 17.12.2018
58
5.3 Entwurfsentscheidungen zu Systemfunktionen
Tabelle 5.18: Entscheidungsprobleme zu Systemfunktion 10
Entscheidungsproblem Entscheidung
In welcher Ansicht sollen Metriken gezeigt werden?
Ansicht WS1.5: Decision Knowledge Report View
Wie sollen Metriken pr¨asentiert werden? Boxplots und Kuchendiagramme bieten verst¨andliche und ansehnliche Darstellung.
Welche Bibliothek soll zur Grafikerzeugung benutzt werden?
Echarts.js bietet geeignete Funktionalit¨at und ist frei zug¨anglich.
Wie k¨onnen die zugrunde liegenden Daten-reihen eingebunden werden?
JIRA-Issue Schl¨ussel mit entsprechendem Wert.
Wie k¨onnen die zugrunde liegenden Daten-reihen angezeigt werden?
Datenreihe bei Selektion der Grafik in Popup anzeigen.
Welche Technologie soll zur Authentifizie-rung genutzt werden?
OAuth bietet besten Sicherheitsstandard nach einmaliger Registrierung durch Appli-cation Link.
ConDecLinkManager activeObjects: ActiveObjects
+insertLink(link: Link):boolean
+getAllLinksForElement(element: DecisionKnowledgeElement): List DecisionKnowledgeElement¡
+deleteLinksForElement(link: Link):boolean
ActiveObjectsManager activeObjects: ActiveObjects
+getAllElementsForIssue(issueId: long): List Sentence¡
–getAllElementsByType(type: KnowledgeType): List Sentence¡
DecisionKnowledgeReport projectId: Long
+DecisionKnowledgeReport(projectManager: ProjectManager) –getLinksToIssueByType():Map String,Integer¡
–getNumberOfRelevantSentences():Map String,Integer¡
–getNumberOfElementyPerType(type: KnowledgeType):Map String,Integer¡
–getNumberOfCommitsPerIssue():Map String,Integer¡
–getLinkDistanceByType(type: KnowledgeType):Map String,Integer¡
–getLinksFromTypeToType(typeFrom: KnowledgeType, typeTo: KnowledgeType):Map String,Integer¡
OAuthManager invalidCredentials: Boolean
+OAuthManager()
+retrieveRequestToken(consumerKey: String, privateKey: String): String
+retrieveAccessToken(tmpToken: String, secret: String, consumerKey: String, privateKey: String): String +startRequest(urlToCall: String): String
PropertiesClient CONSUMER KEY: String PRIVATE KEY: String REQUEST TOKEN: String ACCESS TOKEN: String SECRET: String JIRA HOME: String +toMap():Map String,String¡
+getProperties():Properties OAuthClient
result: JSONObject
+OAuthClient(propertiesClient: PropertiesClient, jiraOAuthClient JIRAOAuthClient) +getProperties():Properties +execute(command: Command, paramters: List String¡)
–parseResponse(response: HTTPResponse)
JIRAOAuthClient jiraBaseUrl: String
+JIRAOAuthClient(propertiesClient: PropertiesClient)
+getAndAuthorizeTemporaryToken(consumerKey: String, privateKey: String): String + getAccessToken(tmpToken: String, secret: String, consumerKey: String, privateKey: String)
Abbildung 5.23: Klassendiagramm zu allen relevanten Klassen f¨ur Systemfunktion 10
5 Entwurf und Implementierung