Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
139 commits
Select commit Hold shift + click to select a range
c54e62c
Minor fix
OndrejVane Jul 17, 2021
4073888
#1 Add links to AP Detail
OndrejVane Jul 18, 2021
003e1a0
#3 Add link to catalogue to AP detail
OndrejVane Jul 18, 2021
b64857d
#3 Add link to catalogue to AP detail
OndrejVane Jul 20, 2021
7201c8b
#1 Add links to AP Detail
OndrejVane Jul 20, 2021
1b4cb4c
#4 Allow reparameterization in AP detail
OndrejVane Jul 20, 2021
595e5f2
#4 Allow reparameterization in AP detail
OndrejVane Jul 20, 2021
8810bb1
Merge pull request #13 from OndrejVane/dev
OndrejVane Jul 20, 2021
bdd2b0f
#2 Implement check of used vs. set parameters
OndrejVane Jul 29, 2021
a038107
#2 Implement check of used vs. set parameters
OndrejVane Jul 30, 2021
add3b45
#6 Allow for String AP parameters
OndrejVane Jul 30, 2021
c0c50ef
#3 Add link to catalogue to AP detail
OndrejVane Jul 30, 2021
0b61292
#4 Allow reparameterization in AP detail
OndrejVane Jul 30, 2021
4987440
#6 Allow for String AP parameters
OndrejVane Aug 15, 2021
b95b30b
#6 Allow for String AP parameters
OndrejVane Aug 15, 2021
a00992e
#5 Implement user input checks
OndrejVane Aug 15, 2021
efbc32c
#5 Implement user input checks
OndrejVane Aug 16, 2021
e15a664
#9 Split SQL scripts
OndrejVane Sep 5, 2021
7a26781
#5 Implement user input checks
OndrejVane Sep 5, 2021
48a86d4
#7 Comment rigorously all code
OndrejVane Sep 5, 2021
135aa0d
Minor fix
OndrejVane Nov 8, 2021
ae95d52
db name change
stepanekp Mar 14, 2022
e4db247
bug fix
stepanekp Mar 14, 2022
c7eb5d0
CSS and JS moved to separate files
stepanekp Mar 14, 2022
24c3740
#15 Collect relevant data from AP catalogue implemented
stepanekp Mar 14, 2022
408ea56
#16 Rich text field for AP operationalization details implemented
stepanekp Mar 14, 2022
e46d554
Configurations of antipatterns moved to separate json files
stepanekp Mar 16, 2022
2a508be
Login page added
stepanekp Mar 16, 2022
979da4b
#14 User login added
stepanekp Mar 20, 2022
d2ad296
Navigation edit
stepanekp Mar 23, 2022
d040154
minor changes
stepanekp Mar 23, 2022
efecfcb
Minor changes
stepanekp Mar 28, 2022
ccdbd51
Moving user credentials to separate file and creating service
stepanekp Mar 28, 2022
8be7e89
#14 Configuration service and config dropdown added
stepanekp Mar 29, 2022
8dd83ad
#14 Configurations dropdown editing
stepanekp Mar 30, 2022
cd3f21e
Configuration renamed to Threshold
stepanekp Mar 31, 2022
da68beb
Functions renamed
stepanekp Mar 31, 2022
927147a
#14 Configuration repository and service functions added
stepanekp Mar 31, 2022
20a4d17
Description from cataloque get function moved
stepanekp Mar 31, 2022
49158b9
pom.xml edited, resources added
stepanekp Apr 1, 2022
8a60bc8
Structure of the antipattern service and repository edited
stepanekp Apr 1, 2022
345955a
#14 Loading configuration from json edit
stepanekp Apr 1, 2022
38cde13
#14 Adding possibilty to use configurations from external files in an…
stepanekp Apr 2, 2022
7956c61
#14 Display of configuration threshold values
stepanekp Apr 2, 2022
31e7567
#14 Saving configuration threshold values added
stepanekp Apr 2, 2022
e72cefc
#14 Saving configurations to files added
stepanekp Apr 3, 2022
cc904d0
#14 Saving configurations to new files
stepanekp Apr 3, 2022
38a0541
#14 Saving configuration thresholds in AP detail added
stepanekp Apr 4, 2022
b9d9484
#16 inserting pre tag edited
stepanekp Apr 4, 2022
50dbb61
#16 Bugfix
stepanekp Apr 4, 2022
a72aa02
#16 Operationalization text clean from possible xss
stepanekp Apr 4, 2022
7ae54e7
#16 Adding timestamp to image name
stepanekp Apr 5, 2022
bc1cb4b
#14 Unused parts of code removed
stepanekp Apr 6, 2022
1e4fafc
Minor changes
stepanekp Apr 6, 2022
b9635ea
#14 Saving function moved
stepanekp Apr 6, 2022
6136d07
Minor changes
stepanekp Apr 6, 2022
8e87e63
Methods commented
stepanekp Apr 6, 2022
abfd651
Minor change
stepanekp Apr 6, 2022
5129e35
Paths to external files edited
stepanekp Apr 7, 2022
c3914f4
Reading anti-patterns from json files modified
stepanekp Apr 7, 2022
9904ea4
Configuration reading from files edited
stepanekp Apr 7, 2022
e1b24c8
Project structure changes for Docker
stepanekp Apr 8, 2022
f1f46aa
Change of resource files location
stepanekp Apr 9, 2022
8ec14d4
Change of resource files location
stepanekp Apr 9, 2022
0788c20
Docker volume added
stepanekp Apr 10, 2022
80ee821
Configuration view edited
stepanekp Apr 11, 2022
0210fee
Name changed
stepanekp Apr 11, 2022
f55cdc1
Configuration view edited
stepanekp Apr 11, 2022
cfd4e4b
Unknown Poster antipattern detection added
stepanekp Apr 12, 2022
855c113
Unknown Poster antipattern detection added
stepanekp Apr 12, 2022
c3c022c
New anti-pattern detectors added
stepanekp Apr 19, 2022
24f1a07
Adding images folder
stepanekp Apr 19, 2022
bc97507
#16 Pre tag replaced by code tag
stepanekp Apr 19, 2022
63f62fb
#16 Operationalization edit only for logged users
stepanekp Apr 19, 2022
766ffe5
New AP detectors minor changes
stepanekp Apr 20, 2022
bc8630a
Minor changes for Docker
stepanekp Apr 20, 2022
1a9b6c6
Redundant imports deleted
stepanekp Apr 20, 2022
6ad61e2
Bystander tasks ratio to percentage
stepanekp Apr 20, 2022
912e76c
Tests for configurations and json parsing added
stepanekp Apr 20, 2022
27518fc
Docker minor changes
stepanekp Apr 22, 2022
6767b4e
Minor changes
stepanekp Apr 28, 2022
45c112a
Detection detail added
stepanekp Apr 29, 2022
ccd8173
Minor changes
stepanekp Apr 29, 2022
33097c5
db dump change
stepanekp May 2, 2022
a26d9f9
#22 Terminology fixed
stepanekp May 14, 2022
ccb54b7
Release information edit
stepanekp May 14, 2022
d6de820
#27 No project/anti-pattern message added
stepanekp May 21, 2022
7b82ace
#22 Terminology fixed
stepanekp May 21, 2022
fb07040
#28 extendable configurations added
stepanekp May 22, 2022
6e62bdf
#27 configutation select box hidden for unlogged users
stepanekp May 22, 2022
9115737
#28 minor change
stepanekp May 22, 2022
3374af1
#23 selection page edited
stepanekp May 22, 2022
f6bfbd3
new DB scripts
stepanekp May 22, 2022
9644b73
Title change
stepanekp May 25, 2022
9b4d599
#23 Tables sorted alphabetically
stepanekp May 25, 2022
9039435
#23 Alphabetical sorting case insensitive
stepanekp May 27, 2022
824250f
#23 Select All checkbox moved to table footer
stepanekp May 27, 2022
9913995
#27 Configuration menu item not shown if AP list is empty
stepanekp Jun 4, 2022
c2ca53a
bugfix
stepanekp Jun 9, 2022
1e5caa5
Project id removed from results table
stepanekp Jun 9, 2022
429a972
bugfix
stepanekp Jun 12, 2022
afe7e57
updated java_doc added
stepanekp Jun 13, 2022
004a4e8
docker-compose file updated
stepanekp Jun 15, 2022
19a997a
bugfix
stepanekp Jun 19, 2022
20f290b
configuration files edited
stepanekp Jun 21, 2022
2739d15
#11 prepared class for UI tests. Only scenarios need to be added.
Jun 21, 2022
8694e97
#10 prepared Unit tests for model.types (yet) - more unit tests will…
Jun 21, 2022
d1e653c
#10 created some unit tests for module.type Percentage
Jun 21, 2022
905f8ab
#10 created new possible unit tests
Jun 22, 2022
69798f5
#34 checking if configuration name even exists before creating SQL query
Jun 22, 2022
2b46a05
#25 created CustomErrorController.java and own templates for http sta…
Jun 22, 2022
ab32fe3
#25 created and customized error templates.
Jun 23, 2022
7873388
#20 created home page template including FOOTER! and added newer vers…
Jun 24, 2022
f69fe10
#20 created home page template including FOOTER! and added newer vers…
Jun 24, 2022
4258978
#20 upgraded bootstrap version to 5.2 beta. Edited basic UI stuff for…
Jun 24, 2022
c5111d8
#26 Adding logging mechanism
Jun 27, 2022
da53e1a
#43 Added back column ID of each project but HIDDEN.
Jun 27, 2022
2aabf54
#41 Created new .js function which takes care of "middle option" --> …
Jun 28, 2022
3747eff
#41 renamed Select All to Quick Select so it's more logical
Jun 28, 2022
0315a6a
#41 edited quick select in /detect page
Jun 30, 2022
7ad13a9
#43 added links to AP and projects - to their pages.
Jul 4, 2022
a00c02d
#30 created .js files for saving detect selections. NOT FOR SESSION -…
Jul 5, 2022
de518a0
repaired bug in index.html template
Jul 5, 2022
8e78fe9
repaired bug in index.html template
Jul 5, 2022
b9bf3a8
#11 created UI test for testing elements on detect page
Jul 5, 2022
2dbb7e6
#11 created UI test for testing elements on configuration page
Jul 6, 2022
f7f24bb
#44 separated plugin versions into properties tag.
Jul 6, 2022
0d89497
#44
Jul 6, 2022
5fb7a48
#30 refactor of previous .js file.
Jul 13, 2022
7fade40
#43 added underline on mouse hover to AP and project links.
Jul 13, 2022
b834cf5
#41 added border-bottom to quick select row and made it wider, remove…
Jul 13, 2022
8dd5f99
Merge branch 'custom-err-template' into dev
Jul 13, 2022
28d7d98
Merge branch 'input-checks' into dev
Jul 13, 2022
1e24f29
merge
Jul 13, 2022
aff5b63
Merge branch 'ui-tests' into dev
Jul 13, 2022
a91cb03
Merge branch 'custom-home-template' into dev
Jul 13, 2022
5363614
merge
Jul 13, 2022
9456601
merge
Jul 13, 2022
d60ee7b
merge
Jul 13, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ FROM maven:3.6.3-jdk-11-slim AS build
RUN mkdir -p /workspace
WORKDIR /workspace
COPY pom.xml /workspace
#RUN mvn -f pom.xml dependency:resolve
COPY src /workspace/src
RUN mvn -f pom.xml clean package -Dmaven.test.skip=true

### STAGE 2: RUN ###
FROM adoptopenjdk:11-jre-hotspot
COPY --from=build /workspace/target/*.war app.war

EXPOSE 8080
ENTRYPOINT ["java","-jar","app.war"]
ENTRYPOINT ["java","-jar","app.war", "--spring.config.location=/application.properties"]
73 changes: 52 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
# AntiPatternDetectionApp
This application was created as part of the thesis. It is used for analysis and detection of anti-patterns in project data.
# ReliSA - SPADe-Web-GUI
This application was is used for analysis and detection of anti-patterns in project data.

## Thesis abstract
The goal of this thesis is to analyze and automatically detect anti-patterns in the data of project management tools using SPADe tools. The SPADe tool is used to collect data from ALM tools and search for bad practices (anti-patterns) in project data. In order to develop this thesis, an analysis of the available anti-patterns was performed and then a subset was selected for further investigation. In the next part, the detection of the analyzed anti-patterns was implemented using SQL queries and Java programming language was used to process the results of these queries. As an extra feature of this thesis, going beyond the scope of the original assignment, a support web application for running the detection process of implemented anti-patters and results presentation was also developed. Furthermore, an experiment was performed on a selected sets of anti-patterns and project data. The success of the detection was verified by comparing the results to those from a manual anti-pattern detection in project data from the source ALM tools. Detection success was successful at 93.65 % compared to manual control.

## Analyzed Anti-Patterns
In version 1.0.0 of this application, the detection of the following Anti-Patterns is implemented:
* Business As Usual
* Long Or Non-Existant Feedback Loops
Expand All @@ -14,19 +10,54 @@ In version 1.0.0 of this application, the detection of the following Anti-Patter
* Too Long Sprint
* Varying Sprint Length

## Run
### Tools to run
It will need the following tools to run the application:
* Docker
* Docker Compose
### Run application
The following list describes the steps to run (you will need):
1. Open terminal.
2. Move to the root folder of this project (AntiPatternDetectionApp).
3. Build docker images with command `docker-compose build`.
4. Create and run all containers with command `docker-compose run`.
5. Open phpMyAdmin on docker address on port 8082.
6. Create database with name spade using command `CREATE DATABASE spade;`.
7. Restore database from file `db_dump.sql` located in project root folder.
8. Run all commands from file `config.sql` located in project root folder.
# Basic architecture of app

# Installation guide

# Add new Anti-Pattern

# User guide
## Analyze projects
1) On home page select project to analyze (you can use check box for select/deselect all projects)
TODO obrázek
2) Select Anti-Patterns to analyze (you can use check box for select/deselect all Anti-Patterns)
TODO obrázek
3) Click to button Analyze
TODO obrázek
4) Table with detections result
TODO obrázek
5) Show details of detection
6) Show detail of Anti-Pattern

## Configuration of Anti-Patterns
1) Go to Configuration page
TODO obrázek
2) Change corresponding threshold values
TODO obrázek
3) Click button Save or press Enter
TODO obrázek
4) If the values ​​are set correctly, a message is displayed stating that the values ​​were saved successfully
TODO obrázek
5) If the values ​​are set incorrectly, a error message is displayed and the corresponding values ​​are highlighted in red with error message
TODO obrázek

## Show Anti-Pattern detail
1) Go to Anti-Pattern detail page
1) On Home page click on anchor Show next to corresponding Anti-Pattern
2) On result page slick on Anti-Pattern name and anchor Detail
2) Anti-Pattern detail page is shown (name, description, anchor to catalogue, configuration values)
3) Configuration values can be updated also in this page
1) Change corresponding threshold values
2) Click button Save or press Enter
4) If the values ​​are set correctly, a message is displayed stating that the values ​​were saved successfully
TODO obrázek
5) If the values ​​are set incorrectly, a error message is displayed and the corresponding values ​​are highlighted in red with error message
TODO obrázek

## Show project detail
1) On home page click on anchor Show, next to corresponding project
TODO obrázek
2) Project details is shown (project id, name, description)
TODO obrázek


3 changes: 0 additions & 3 deletions config.sql

This file was deleted.

146 changes: 146 additions & 0 deletions data/configurations/Default.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
{
"configuration": [
{
"antiPattern": "TooLongSprint",
"thresholds": [
{
"thresholdName": "maxIterationLength",
"value": "21"
},
{
"thresholdName": "maxNumberOfTooLongIterations",
"value": "0"
}
]
},
{
"antiPattern": "VaryingSprintLength",
"thresholds": [
{
"thresholdName": "maxDaysDifference",
"value": "7"
},
{
"thresholdName": "maxIterationChanged",
"value": "1"
}
]
},
{
"antiPattern": "BusinessAsUsual",
"thresholds": [
{
"thresholdName": "divisionOfIterationsWithRetrospective",
"value": "66.66f"
},
{
"thresholdName": "searchSubstringsWithRetrospective",
"value": "%retr%||%revi%||%week%scrum%"
}
]
},
{
"antiPattern": "SpecifyNothing",
"thresholds": [
{
"thresholdName": "minNumberOfWikiPagesWithSpecification",
"value": "1"
},
{
"thresholdName": "minNumberOfActivitiesWithSpecification",
"value": "1"
},
{
"thresholdName": "minAvgLengthOfActivityDescription",
"value": "150"
},
{
"thresholdName": "searchSubstringsWithProjectSpecification",
"value": "%dsp%||%specifikace%||%specification%||%vize%proj%||%vize%produ%"
}
]
},
{
"antiPattern": "RoadToNowhere",
"thresholds": [
{
"thresholdName": "minNumberOfWikiPagesWithProjectPlan",
"value": "1"
},
{
"thresholdName": "minNumberOfActivitiesWithProjectPlan",
"value": "1"
},
{
"thresholdName": "searchSubstringsWithProjectPlan",
"value": "%plán projektu%||%project plan%||%plan project%||%projektový plán%"
}
]
},
{
"antiPattern": "LongOrNonExistentFeedbackLoops",
"thresholds": [
{
"thresholdName": "divisionOfIterationsWithFeedbackLoop",
"value": "50.00f"
},
{
"thresholdName": "maxGapBetweenFeedbackLoopRate",
"value": "2f"
},
{
"thresholdName": "searchSubstringsWithFeedbackLoop",
"value": "%schůz%zákazník%||%předvedení%zákazník%||%zákazn%demo%||%schůz%zadavat%||%inform%schůz%||%zákazn%||%zadavatel%"
}
]
},
{
"antiPattern": "NinetyNinetyRule",
"thresholds": [
{
"thresholdName": "maxDivisionRange",
"value": "1.25f"
},
{
"thresholdName": "maxBadDivisionLimit",
"value": "2"
}
]
},
{
"antiPattern": "UnknownPoster",
"thresholds": [
{
"thresholdName": "searchSubstringsInvalidNames",
"value": "%unknown%||%anonym%"
}
]
},
{
"antiPattern": "BystanderApathy",
"thresholds": [
{
"thresholdName": "searchSubstringsInvalidContributors",
"value": "%dependabot%"
},
{
"thresholdName": "maximumPercentageOfTasksWithoutTeamwork",
"value": "30f"
}
]
},
{
"antiPattern": "YetAnotherProgrammer",
"thresholds": [
{
"thresholdName": "maxNumberOfNewContributors",
"value": "5"
},
{
"thresholdName": "numberOfFirstMonthsWithoutDetection",
"value": "2"
}
]
}
]
}
1 change: 1 addition & 0 deletions data/operationalizations/BusinessAsUsual.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Operationalization description will be placed here.
1 change: 1 addition & 0 deletions data/operationalizations/BystanderApathy.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Operationalization description will be placed here.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Operationalization description will be placed here.
1 change: 1 addition & 0 deletions data/operationalizations/NinetyNinetyRule.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Operationalization description will be placed here.
1 change: 1 addition & 0 deletions data/operationalizations/RoadToNowhere.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Operationalization description will be placed here.
1 change: 1 addition & 0 deletions data/operationalizations/SpecifyNothing.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Operationalization description will be placed here.
1 change: 1 addition & 0 deletions data/operationalizations/TooLongSprint.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Operationalization description will be placed here.
1 change: 1 addition & 0 deletions data/operationalizations/UnknownPoster.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Operationalization description will be placed here.
1 change: 1 addition & 0 deletions data/operationalizations/VaryingSprintLength.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Operationalization description will be placed here.
1 change: 1 addition & 0 deletions data/operationalizations/YetAnotherProgrammer.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Operationalization description will be placed here.
Empty file.
2 changes: 2 additions & 0 deletions db/spade-config.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
USE spade;
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Loading