diff --git a/application/templates/consensus.html b/application/templates/consensus.html index ca581833e9ddb49a5893071bf17dd7014cbc8042..230156161dad8f9cbd7377fdc7e40e7ee4e77dbc 100644 --- a/application/templates/consensus.html +++ b/application/templates/consensus.html @@ -6,27 +6,6 @@ <!-- CSS based on getbootstrap.com --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script> - <style> - .card { - margin-bottom: 10px; - } - - .aspectwrapper { - display: inline-block; /* shrink to fit */ - width: 100%; /* whatever width you like */ - position: relative; /* so .content can use position: absolute */ - } - .aspectwrapper::after { - padding-top: 56.25%; /* percentage of containing block _width_ */ - display: block; - content: ''; - } - .content { - position: absolute; - top: 0; bottom: 0; right: 0; left: 0; /* follow the parent's edges */ - outline: thin dashed green; /* just so you can see the box */ - } - </style> </head> <body> <header> @@ -73,17 +52,31 @@ </header> <div class="row"> - {% for source in sources %} + {% for info in sourceInformation %} <div class="col-sm-6 mb-3 mb-sm-0"> <div class="card"> <div class="card-body"> - <h5 class="card-title">{{ source }}</h5> - <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> + {% for str in info %} + {% if loop.index == 1 %} + <h5 class="card-title">{{ str }}</h5> + {% endif %} + {% if loop.index == 2 %} + <p class="card-text">Author(s): {{ str }}</p> + {% endif %} + {% if loop.index == 3 %} + <p class="card-text">Year: {{ str }}</p> + {% endif %} + {% if loop.index == 4 %} + <p class="card-text">Link: {{ str }}</p> + {% endif %} + {% if loop.index == 5 %} <div> <form action="/getAQMSubgraphForConsensus" method="post"> - <button class="btn btn-primary" name="{{ source }}" type="submit">Visualize</button> + <button class="btn btn-primary" name="{{ str }}" type="submit">Visualize</button> </form> </div> + {% endif %} + {% endfor %} </div> </div> </div> diff --git a/application/templates/index2.html b/application/templates/index2.html deleted file mode 100644 index 4f316af916b083f28983540fa42c3f8c9f379278..0000000000000000000000000000000000000000 --- a/application/templates/index2.html +++ /dev/null @@ -1,62 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8"> - <title>AQM Interaction - Lightweight Demo Tool</title> - <!-- CSS based on getbootstrap.com --> - <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> - <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script> - <style> - .section { - height: 100vh; - display: flex; - align-items: center; - justify-content: center; - font-size: 3rem; - font-weight: bold; - cursor: pointer; - color: white - } - .section-1 { - background: linear-gradient(45deg, #00CCD2, #00B1B6); - position: relative; - } - .section-2 { - background: linear-gradient(45deg, #009195, #007175); - position: relative; - } - .section-3 { - background: linear-gradient(45deg, #005B5F, #004043); - position: relative; - } - .a { - display: block; - color: inherit; - text-decoration: inherit; - } - </style> - </head> - <body> - <div class="container-fluid p-0"> - <div class="row no-gutters"> - <div class="col-md-4 section section-1"> - <div> - <a class="a" href="./consensus">Consensus</a> - </div> - </div> - - <div class="col-md-4 section section-2"> - <div> - <a class="a" href="./scope">Scope</a> - </div> - </div> - <div class="col-md-4 section section-3"> - <div> - <a class="a" href="./measurement">Measurement</a> - </div> - </div> - </div> - </div> - </body> -</html> - diff --git a/application/templates/measurement.html b/application/templates/measurement.html index 9f875ef2700c8070bdf7e4e0f0ace19259fe60b7..4fd8cf32897f5f1c253df764dfc6fa04ebc45393 100644 --- a/application/templates/measurement.html +++ b/application/templates/measurement.html @@ -6,27 +6,6 @@ <!-- CSS based on getbootstrap.com --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script> - <style> - .card { - margin-bottom: 10px; - } - - .aspectwrapper { - display: inline-block; /* shrink to fit */ - width: 100%; /* whatever width you like */ - position: relative; /* so .content can use position: absolute */ - } - .aspectwrapper::after { - padding-top: 56.25%; /* percentage of containing block _width_ */ - display: block; - content: ''; - } - .content { - position: absolute; - top: 0; bottom: 0; right: 0; left: 0; /* follow the parent's edges */ - outline: thin dashed green; /* just so you can see the box */ - } - </style> </head> <body> <header> @@ -73,17 +52,31 @@ </header> <div class="row"> - {% for source in sources %} + {% for info in sourceInformation %} <div class="col-sm-6 mb-3 mb-sm-0"> <div class="card"> <div class="card-body"> - <h5 class="card-title">{{ source }}</h5> - <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> + {% for str in info %} + {% if loop.index == 1 %} + <h5 class="card-title">{{ str }}</h5> + {% endif %} + {% if loop.index == 2 %} + <p class="card-text">Author(s): {{ str }}</p> + {% endif %} + {% if loop.index == 3 %} + <p class="card-text">Year: {{ str }}</p> + {% endif %} + {% if loop.index == 4 %} + <p class="card-text">Link: {{ str }}</p> + {% endif %} + {% if loop.index == 5 %} <div> - <form action="/getAQMSubgraphForMeasurement" method="post"> - <button class="btn btn-primary" name="{{ source }}" type="submit">Visualize</button> + <form action="/getAQMSubgraphForCMeasurement" method="post"> + <button class="btn btn-primary" name="{{ str }}" type="submit">Visualize</button> </form> </div> + {% endif %} + {% endfor %} </div> </div> </div> diff --git a/application/templates/scope.html b/application/templates/scope.html index 64176e0a187e0f0546a25f29de1c69d0c141edd5..8512b0554e907d23c12c576bb4504c11b77ae12b 100644 --- a/application/templates/scope.html +++ b/application/templates/scope.html @@ -6,27 +6,6 @@ <!-- CSS based on getbootstrap.com --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script> - <style> - .card { - margin-bottom: 10px; - } - - .aspectwrapper { - display: inline-block; /* shrink to fit */ - width: 100%; /* whatever width you like */ - position: relative; /* so .content can use position: absolute */ - } - .aspectwrapper::after { - padding-top: 56.25%; /* percentage of containing block _width_ */ - display: block; - content: ''; - } - .content { - position: absolute; - top: 0; bottom: 0; right: 0; left: 0; /* follow the parent's edges */ - outline: thin dashed green; /* just so you can see the box */ - } - </style> </head> <body> <header> @@ -73,17 +52,31 @@ </header> <div class="row"> - {% for source in sources %} + {% for info in sourceInformation %} <div class="col-sm-6 mb-3 mb-sm-0"> <div class="card"> <div class="card-body"> - <h5 class="card-title">{{ source }}</h5> - <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> + {% for str in info %} + {% if loop.index == 1 %} + <h5 class="card-title">{{ str }}</h5> + {% endif %} + {% if loop.index == 2 %} + <p class="card-text">Author(s): {{ str }}</p> + {% endif %} + {% if loop.index == 3 %} + <p class="card-text">Year: {{ str }}</p> + {% endif %} + {% if loop.index == 4 %} + <p class="card-text">Link: {{ str }}</p> + {% endif %} + {% if loop.index == 5 %} <div> - <form action="/getScopeComparision" method="post"> - <button class="btn btn-primary" name="{{ source }}" type="submit">Visualize</button> + <form action="/getScopeComparison" method="post"> + <button class="btn btn-primary" name="{{ str }}" type="submit">Visualize</button> </form> </div> + {% endif %} + {% endfor %} </div> </div> </div> diff --git a/main.py b/main.py index 035e39f79d2ffe576cbb4680a485136b434e5af4..dac0fb29545ab6b000d56f2a6a15942ba9fd628c 100644 --- a/main.py +++ b/main.py @@ -4,6 +4,19 @@ import os import shutil import time +sourceInformation = [["People, Organizational and Technological Dimensions of Software Requirements Specification", "F. Belfo", "2012", "https://doi.org/10.1016/j.protcy.2012.09.034", "[Bel12]"], +["Identifying and measuring quality in a software requirements specification", "A. Davis et al.", "1993", "https://doi.org/10.1109/METRIC.1993.263792", "[DOJ+93]"], +["ECSS-Q-HB-80-04A Space product assurance - Software metrication programme definition and implementation", "European Cooperation for Space Standardization (ECSS)", "2011", "https://ecss.nl/hbstms/ecss-q-hb-80-04a-software-metrication-handbook/", "[ECSS-Q-HB-80-04C]"], +["ISO 29148 Systems and software engineering – Life cycle processes – Requirements engineering", "International Standard ISO/IEC/IEEE", "2018", "https://doi.org/10.1109/IEEESTD.2018.8559686", "[ISO/IEC/IEEE29148:2018]"], +["Quality of software requirements specification in agile projects: A cross-case analysis of six companies", "J. Medeiros, A. Vasconcelos, C. Silva, and M. Goulão", "2018", "https://doi.org/10.1016/j.jss.2018.04.064", "[MVSG18]"], +["Requirements clinic: Third party inspection methodology and practice for improving the quality of software requirements specifications", "S. Saito, M. Takeuchi, M. Hiraoka, T. Kitani, and M. Aoyama", "2013", "htpps://doi.org/10.1109/RE.2013.6636732", "[STH+13]"], +["Assessing the Quality of Software Requirements Specifications for Automotive Software Systems", "A. Takoshima and M. Aoyama", "2015", "https://doi.org/10.1109/APSEC.2015.57", "[TA15]"], +["Requirements metrics: the basis of informed requirements engineering management", "R. J. Halligan", "1993", "-", "[Hal93]"], +["A new quality model for natural language requirements specifications", "D. M. Berry, A. Bucchiarone, S. Gnesi, G. Lami, and G. Trentanni", "2006", "-", "[BBG+06]"], +["A systematic literature review on quality criteria for agile requirements specifications", "P. Heck and A. Zaidman", "2018", "https://doi.org/10.1007/s11219-016-9336-4", "[HZ18]"], +["Handbook for the CPRE Foundation Level according to the IREB Standard", "M. Glinz, H. van Loenhoud, S. Staal, and S. Bühne", "2020", "-", "[GLSB20]"]] + + app = Flask(__name__, template_folder="./application/templates", static_folder="./application/static") @app.after_request @@ -29,21 +42,21 @@ def consensus_page(): sources = ["[Bel12]", "[DOJ+93]", "[ECSS-Q-HB-80-04C]", "[ISO/IEC/IEEE29148:2018]", "[MVSG18]", "[STH+13]", "[TA15]", "[Hal93]", "[BBG+06]", "[HZ18]", "[GLSB20]"] - return render_template('consensus.html', sources=sources) + return render_template('consensus.html', sourceInformation=sourceInformation) @app.route("/scope") def scope_page(): sources = ["[Bel12]", "[DOJ+93]", "[ECSS-Q-HB-80-04C]", "[ISO/IEC/IEEE29148:2018]", "[MVSG18]", "[STH+13]", "[TA15]", "[Hal93]", "[BBG+06]", "[HZ18]", "[GLSB20]"] - return render_template('scope.html', sources=sources) + return render_template('scope.html', sourceInformation=sourceInformation) @app.route("/measurement") def measurement_page(): sources = ["[Bel12]", "[DOJ+93]", "[ECSS-Q-HB-80-04C]", "[ISO/IEC/IEEE29148:2018]", "[MVSG18]", "[STH+13]", "[TA15]", "[Hal93]", "[BBG+06]", "[HZ18]", "[GLSB20]"] - return render_template('measurement.html', sources=sources) + return render_template('measurement.html', sourceInformation=sourceInformation) @app.route("/explore") def explore_page():