Commit c3d1ca53 authored by Andreas Zwinkau's avatar Andreas Zwinkau

Topic: url shortening

parent cba53e69
......@@ -19,6 +19,7 @@
\newcounter{criterium}
\newcounter{functionality}
\newcounter{test}
\newcounter{teststep}[test]
% document macros
\newcommand\criterium[2]{
......@@ -28,8 +29,8 @@
\AddProperty{pfl:crtname}{#1}
\AddPropertyEx{pfl:crtid}{C\arabic{criterium}}
\IfProperty{#2}{pfl:is-fulfilled}{%
Fulfilled by: \Bind{?f}{pfl:fulfills}{#2}{ \functionalitylink{\GetVal{?f}} }
}{{\color{red}{NOT FULFILLLED}}}
\\ Fulfilled by: \Bind{?f}{pfl:fulfills}{#2}{ \functionalitylink{\GetVal{?f}} }
}{{\color{red}{NOT FULFILLED}}}
\par}
\newcommand\functionality[2]{
......@@ -39,8 +40,8 @@
\AddProperty{pfl:fncname}{#1}
\AddPropertyEx{pfl:fncid}{F\arabic{functionality}}
\IfProperty{#2}{pfl:is-tested}{%
Tested by: \Bind{?t}{pfl:tests}{#2}{ \testlink{\GetVal{?t}} }
}{{\color{red}{NOT TESTED}}}
\\ Tested by: \Bind{?t}{pfl:tests}{#2}{ \testlink{\GetVal{?t}} }
}{{\color{red}{NOT TESTED}}\\}
Fulfills: \Bind{#2}{pfl:fulfills}{?c}{ \criteriumlink{\GetVal{?c}} }
\par}
......@@ -50,5 +51,14 @@
\marginpar{T\arabic{test}}
\AddProperty{pfl:tstname}{#1}
\AddPropertyEx{pfl:tstid}{T\arabic{test}}
Testing: \Bind{#2}{pfl:tests}{?f}{ \functionalitylink{\GetVal{?f}} }
\\ Testing: \Bind{#2}{pfl:tests}{?f}{ \functionalitylink{\GetVal{?f}} }
\par}
\newcommand\teststep[3]{\stepcounter{teststep}
{T\arabic{test}.\arabic{teststep}}
\begin{minipage}[t]{0.8\textwidth}\raggedright
\textbf{Stand:} #1\par
\textbf{Aktion:} #2\par
\textbf{Reaktion:} #3\par
\end{minipage}
\par}
\documentclass[parskip=full]{scrartcl}
\usepackage[utf8]{inputenc}
\title{ATURL: Actually Tiny URLs}
\author{Kaylee Frye, Derrial Book}
\usepackage[T1]{fontenc}
\usepackage[german]{babel}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{xcolor}
\usepackage{graphicx}
\hypersetup{
pdftitle={Pflichtenheft},
bookmarks=true,
}
\usepackage{csquotes}
\usepackage{amsmath} % for $\text{}$
\newcommand\urlpart[2]{$\underbrace{\text{\texttt{#1}}}_{\text{#2}}$}
\usepackage{pflichtenheft}
\begin{document}
\maketitle
\section{Einleitung}
Wir brauchen ein \LaTeX\ Paket für Pflichtenhefte in PSE.
Das Universum braucht einen besseren URL Shortener.
URL Shortening erzeugt kurze URLs,
die nur Weiterleitungen sind zu sehr viel längeren URLs.
Das ist nützlich, weil Kurz-URLs besser zu merken sind
und leichter mündlich weiterzugeben.
Ebenfalls nützlich sind sie,
wenn URLs im Text auftauchen (bspw. IRC).
Eine URL besteht aus mehreren Komponenten:
\begin{center}
\urlpart{http}{protocol}%
\texttt{://}%
\urlpart{web.io}{host}%
\texttt{/}%
\urlpart{index}{path}%
\texttt{?}%
\urlpart{argument=somevalue}{parameter}%
\texttt{\#}%
\urlpart{theAnchor}{fragment}
\end{center}
Für Kurz-URLs ist der path (engl.\ Pfad) relevant.
Das Protokoll ist HTTP oder HTTPS, abhängig vom Besucher.
Die Wahl des host-Namens ist nicht Teil der Softwareentwicklung,
sondern des Betreibers.
Parameter und Fragment werden nicht genutzt,
da es mindestens einen zusätzlichen Buchstaben braucht
und damit die URL verlängert.
Im weiteren Text nehmen wir an,
dass der Dienst unter dem Hostnamen \texttt{atu.rl} angeboten wird.
\pagebreak
\section{Kriterien}
\rdflabel{sec:funktionen}
\subsection{Muss}
\rdflabel{sec:muss}
\criterium{Querverweise}{crt:crossref}
\criterium{Beschränkte Länge}{crt:length}
Der Pfad von Kurz-URLs ist exakt 3 ASCII Buchstaben oder Ziffern lang.
Das beschränkt die Anzahl der möglichen URLs auf knapp 200.000 Kurz-URLs.
\criterium{Schnelle Weiterleitung}{crt:fast}
Insbesondere das Weiterleitung von Kurz- zu Lang-URL muss sehr schnell funktionieren.
\criterium{Margin Annotationen}{crt:marginanno}
\criterium{Authentifizieren mit E-Mail}{crt:login}
Für das Erstellen von Kurz-URLs muss ein Benutzer sich authentifizieren.
Zu jeder Kurz-URL speichert der Dienst die E-Mailaddresse des Erstellenden.
\criterium{Facebook-Login}{crt:facebook}
Einloggen via Facebook ist möglich.
\criterium{Rechlichte Vorgaben werden eingehalten}{crt:tmg}
Der Dienst befolgt alle in Deutschland geltenden Richtlinien,
insbesondere das Telemediengesetz.
\subsection{Kann}
\rdflabel{sec:kann}
\criterium{Github-Login}{crt:github}
Einloggen via Github ist möglich.
\criterium{Seite mit Betreiberinfo}{crt:about}
Der Dienst bietet eine Seite \enquote{Über Uns},
mit Informationen zum Betreiber.
%%%%%%%%%%%
\section{Funktionen}
\functionality{Foo}{fnc:foo}
\fulfills{crt:crossref}
\functionality{O1 Zugriff für Weiterleitung}{fnc:o1}
\fulfills{crt:fast}
\functionality{Bar}{fnc:bar}
Um zu einer Kurz- die Lang-URLs zu finden,
benutzt der Dienst einen $O(1)$ Mechanismus.
Es wird sichergestellt,
dass mit einer zunehmenden Anzahl von Kurz-URLs im System
das Finden nicht länger dauert.
\functionality{Baz}{fnc:baz}
\functionality{Login-Möglichkeit auf Homepage}{fnc:login}
\fulfills{crt:login}
\fulfills{crt:facebook}
\fulfills{crt:github}
Auf der Homepage \texttt{http://atu.rl/} sieht ein Besucher
einen \enquote{Login via Facebook} Knopf.
Weitere Knöpfe wie \enquote{Login via Github} sind möglich.
Siehe \cref{fig:homepage}.
\functionality{Auf jeder Seite ist ein Link \enquote{Impressum}}{fnc:impressum-link}
\fulfills{crt:tmg}
Entsprechend Telemediengesetz (TMG) §1
müssen gewisse Informationen über einen Betreiber jederzeit verfügbar sein.
Die inzwischen etablierte Vorgehensweise ist auf allen (!) Seiten
einen Link mit dem Text \enquote{Impressum} anzubieten.
Dieser Link für auf eine Seite mit entsprechender Erklärung.
\functionality{Auf jeder Seite ist ein Link \enquote{Datenschutz}}{fnc:datenschutz-link}
\fulfills{crt:tmg}
Entsprechend Telemediengesetz (TMG) §13
muss der Betreiber den Nutzer Speicherung und Verarbeitung seiner personenbezogenen Daten unterrichten.
Die inzwischen etablierte Vorgehensweise ist auf allen (!) Seiten
einen Link mit dem Text \enquote{Datenschutz} anzubieten.
Dieser Link für auf eine Seite mit entsprechender Erklärung.
%%%%%%%%%%%
\section{Tests}
\rdflabel{sec:tests}
\test{First Start}{tst:first}
\tests{fnc:bar}
\test{Kurz-URL Erstellen}{tst:create}
\tests{fnc:login}
\teststep{Besucher \enquote{Zoe Washburne} hat einen Browser geöffnet.}
{Zoe navigiert auf die Homepage \texttt{http://atu.rl/}.}
{Die Homepage wird angezeigt.}
\teststep{Zoe hat einen Facebook-Account.}%
{Zoe drückt den \enquote{Login via Facebook} Knopf.}%
{Zoe wird eingeloggt und auf die Erstellseite weitergeleitet.}
\teststep{}
{Zoe befüllt das Feld \enquote{URL} mit \texttt{sehrlangedomain.com/undganzlangeURL.html} und drückt auf \enquote{Kurz-URL erstellen}.}%
{Ihr wird eine Kurz-URL angezeigt wie z.B.\ \texttt{atu.rl/abc}.
Statt \enquote{abc}, dürfen beliebe andere Buchstaben und Zahl angezeigt werden, allerdings exakt drei.}
\teststep{}
{Zoe navigiert auf die eben generierte Kurz-URL, z.B.\ \texttt{http://atu.rl/abc}.}
{Sie wird zu \texttt{sehrlangedomain.com/undganzlang eURL.html} weitergeleitet.}
\test{Trial}{tst:trial}
\tests{fnc:bar}
\test{Betreiberinfos lesen}{tst:tmg}
\tests{fnc:impressum-link}
\tests{fnc:datenschutz-link}
\teststep{Besucher \enquote{Jayne Cobb} ist auf der Homepage}
{Er folgt dem Link mit dem Text \enquote{Datenschutz}}
{Ein Text mit allen Datenschutzinformationen wird ihm angezeigt.}
\teststep{}
{Jayne folgt dem Link mit dem Text \enquote{Impressum}}
{Ein Text mit Informationen des Betreibers wird ihm angezeigt.}
%%%%%%%%%%%%%
\pagebreak
\section{GUIs}
% made via https://gomockingbird.com/projects/mnf0cwf/4gXVnC
\begin{figure}[hb]
\fbox{\includegraphics[width=\textwidth]{image/login.png}}
\caption{\label{fig:homepage}
Homepage mit Login-Funktion
}
\end{figure}
\begin{figure}[hb]
\fbox{\includegraphics[width=\textwidth]{image/form.png}}
\caption{\label{fig:homepage}
Formular zur Generierung einer Kurz-URL.
}
\end{figure}
\test{The End}{tst:end}
\tests{fnc:foo}
\begin{figure}[hb]
\fbox{\includegraphics[width=\textwidth]{image/generated.png}}
\caption{\label{fig:homepage}
Anzeige der generierten Kurz-URL.
}
\end{figure}
\end{document}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment