From dc4e93c8a7821144838f700570918df95a0d06f3 Mon Sep 17 00:00:00 2001 From: Beyersdorffer <patrick.beyersdorffer@reutlingen-university.de> Date: Wed, 15 Mar 2023 16:33:34 +0100 Subject: [PATCH] Added information per quality model --- application/templates/consensus.html | 43 ++++++++---------- application/templates/index2.html | 62 -------------------------- application/templates/measurement.html | 45 ++++++++----------- application/templates/scope.html | 45 ++++++++----------- main.py | 19 ++++++-- 5 files changed, 72 insertions(+), 142 deletions(-) delete mode 100644 application/templates/index2.html diff --git a/application/templates/consensus.html b/application/templates/consensus.html index ca58183..2301561 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 4f316af..0000000 --- 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 9f875ef..4fd8cf3 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 64176e0..8512b05 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 035e39f..dac0fb2 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(): -- GitLab