Skip to content

Commit

Permalink
save quickref source to docs dir
Browse files Browse the repository at this point in the history
  • Loading branch information
bjornregnell committed Jan 9, 2025
1 parent a8dd657 commit 757ad81
Show file tree
Hide file tree
Showing 3 changed files with 278 additions and 3 deletions.
273 changes: 273 additions & 0 deletions docs/reqT-quickref.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,273 @@
%!TEX encoding = UTF-8 Unicode
\documentclass[a4paper,oneside]{article}

\usepackage[top=18mm,bottom=3mm, hmargin=10mm,landscape]{geometry}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{tgtermes}
\usepackage{lmodern}
\usepackage[scaled=0.9]{beramono} % inconsolata or beramono ???
\usepackage{microtype} % Slightly tweak font spacing for aesthetics

\usepackage{fancyhdr}
\pagestyle{fancy}
\chead{\url{http://github.com/reqT/reqT-lang/docs/reqT-quickref.pdf}}
\lhead{QuickRef reqT v4}
\rhead{Compiled \today}

\usepackage{hyperref}
\hypersetup{colorlinks=true, linkcolor=blue, urlcolor=blue}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\definecolor{entityColor}{RGB}{0,100,200}
\definecolor{attributeColor}{RGB}{0,100,50}
\definecolor{relationColor}{RGB}{160,0,30}

\usepackage{listings}
\lstdefinestyle{reqT}{
%belowcaptionskip=1\baselineskip,
breaklines=true,
%showstringspaces=false,
showspaces=false,
%breakatwhitespace=true,
basicstyle=\ttfamily\small,
emph={Actor,App,Barrier,Breakpoint,Class,Component,Configuration,Data,Design,Domain,Epic,Event,Feature,Field,Function,Goal,Idea,Image,Interface,Issue,Item,Label,Member,Module,Product,Prototype,Quality,Relationship,Release,Req,Resource,Risk,Scenario,Screen,Section,Service,Stakeholder,State,Story,System,Target,Task,Term,Test,UseCase,User,Variant,VariationPoint,WorkPackage},
emphstyle=\bfseries\color{entityColor},
emph={[2]binds,deprecates,excludes,has,helps,hurts,impacts,implements,interactsWith,is,precedes,relatesTo,requires,verifies},
emphstyle={[2]\bfseries\color{relationColor}},
emph={[3]Benefit,Capacity,Comment,Constraints,Cost,Damage,Deprecated,Example,Expectation,Failure,Frequency,Gist,Input,Location,Max,Min,Order,Output,Prio,Probability,Profit,Spec,Text,Title,Value,Why},
emphstyle={[3]\bfseries\color{attributeColor}},
}

\lstset{style=reqT}
\usepackage{multicol}

\setlength\parindent{0em}
\setlength\headsep{1em}
\setlength\footskip{0em}
\usepackage{titlesec}
\titlespacing{\section}{0pt}{3pt}{2pt}
\titlespacing{\subsection}{0pt}{3pt}{2pt}
\titlespacing{\subsubsection}{0pt}{3pt}{2pt}

\usepackage{graphicx}

\pagenumbering{gobble}

\renewcommand{\rmdefault}{\sfdefault}

\begin{document}

\fontsize{9.1}{11}\selectfont

\begin{multicols*}{4}

\section*{The reqT v4 meta-model}
\raggedright
A model is a sequence of elements. An element can be a node or a relation. A node can be an entity or an attribute. An entity has a type and an id. An attribute has a type and a value and it can be a string attribute or an integer attribute. A relation connects an entity to a sub-model via a relation type.

\noindent\hspace*{-2.1em}\includegraphics[width=8.2cm]{metamodel-Elem-GENERATED.pdf}

\section*{\texttt{enum EntType}}
\subsection*{\texttt{EntGroup.GeneralEnt}}
\hangindent=1em\lstinline+Epic+ A coherent collection of features, stories, use cases or issues. A large part of a release.

\hangindent=1em\lstinline+Feature+ A releasable characteristic of a product. A high-level, coherent bundle of requirements.

\hangindent=1em\lstinline+Goal+ An intention of a stakeholder or desired system property.

\hangindent=1em\lstinline+Idea+ A concept or thought, potentially interesting.

\hangindent=1em\lstinline+Image+ A visual representation, picture or diagram.

\hangindent=1em\lstinline+Interface+ A way to interact with a system.

\hangindent=1em\lstinline+Issue+ Something to be fixed or work to do.

\hangindent=1em\lstinline+Item+ An article in a collection, enumeration, or series.

\hangindent=1em\lstinline+Label+ A descriptive tag used to classify something.

\hangindent=1em\lstinline+Req+ Something needed or wanted. An abstract term denoting any type of information relevant to the (specification of) intentions behind system development. Short for requirement.

\hangindent=1em\lstinline+Section+ A part of a requirements document.

\hangindent=1em\lstinline+Term+ A word or group of words having a particular meaning in a particular domain.

\hangindent=1em\lstinline+Test+ A procedure to check if requirements are met.

\hangindent=1em\lstinline+WorkPackage+ A coherent collection of (development) activities.


\subsection*{\texttt{EntGroup.ContextEnt}}
\hangindent=1em\lstinline+Actor+ A role played by a user or external system that interacts with the system (product, app, or service) under development.

\hangindent=1em\lstinline+App+ A computer program, or group of programs designed for end users, normally with a graphical user interface. Short for application.

\hangindent=1em\lstinline+Domain+ The application area of a product with its surrounding entities, e.g. users or other systems.

\hangindent=1em\lstinline+Product+ An artifact offered to users or customers, e.g. an app, service or embedded system.

\hangindent=1em\lstinline+Release+ A specific version of a product offered to end users at a specific time.

\hangindent=1em\lstinline+Resource+ A capability of, or support for product development, e.g. a development team or some testing equipment.

\hangindent=1em\lstinline+Risk+ Something negative that may happen.

\hangindent=1em\lstinline+Scenario+ A narrative of foreseeable interactions of user roles (actors) and the system (product, app, or service) under development..

\hangindent=1em\lstinline+Service+ System use that provides value to stakeholders. System actions that stakeholders are willing to pay for.

\hangindent=1em\lstinline+Stakeholder+ A role, person or legal entity with a stake in the development or operation of a product.

\hangindent=1em\lstinline+System+ A set of software or hardware components interacting with users or systems.

\hangindent=1em\lstinline+User+ A human interacting with a system.


\subsection*{\texttt{EntGroup.DataEnt}}
\hangindent=1em\lstinline+Class+ An extensible template for creating objects. A set of objects with certain attributes in common. A category.

\hangindent=1em\lstinline+Data+ A data entity, type, class, or record stored or processed by a system.

\hangindent=1em\lstinline+Field+ A data attribute that is part of another entity, such as a class.

\hangindent=1em\lstinline+Member+ A data entity that is part of another entity. More specific alternatives: field, function.

\hangindent=1em\lstinline+Relationship+ A specific way that data types are connected.


\subsection*{\texttt{EntGroup.FunctionalEnt}}
\hangindent=1em\lstinline+Event+ Something that can happen in the domain or in the system.

\hangindent=1em\lstinline+Function+ A description of how input is mapped to output. A capability of a system to do something specific.

\hangindent=1em\lstinline+State+ A mode or condition of something in the domain or in the system. A configuration of data.

\hangindent=1em\lstinline+Story+ A description of what a user wants in order to achieve a goal. Short for user story.

\hangindent=1em\lstinline+Task+ A piece of work by users, potentially supported by a system. Short for user task

\hangindent=1em\lstinline+UseCase+ A goal-fulfilling interaction between users and a product in a specific usage context.


\subsection*{\texttt{EntGroup.QualityEnt}}
\hangindent=1em\lstinline+Barrier+ Something that makes it difficult to achieve a goal or a higher quality level.

\hangindent=1em\lstinline+Breakpoint+ A point of change, representing an important shift in the relation between quality and benefit.

\hangindent=1em\lstinline+Quality+ An aspect of system quality, distinguishing characteristic or degree of goodness.

\hangindent=1em\lstinline+Target+ A desired quality level or quality goal.


\subsection*{\texttt{EntGroup.DesignEnt}}
\hangindent=1em\lstinline+Component+ A composable part of a system architecture. A reusable, interchangeable system unit or functionality.

\hangindent=1em\lstinline+Design+ A specific realization. A description of an implementation.

\hangindent=1em\lstinline+Module+ A collection of coherent functions and interfaces.

\hangindent=1em\lstinline+Prototype+ A system with limited functionality used to demonstrate a design idea.

\hangindent=1em\lstinline+Screen+ A design of (a part of) a user interface.


\subsection*{\texttt{EntGroup.VariabilityEnt}}
\hangindent=1em\lstinline+Configuration+ A specific combination of variants.

\hangindent=1em\lstinline+Variant+ An object or system property that can be chosen from a set of options.

\hangindent=1em\lstinline+VariationPoint+ An opportunity of choice among variants.



\section*{\texttt{enum relType}}
\hangindent=1em\lstinline+deprecates+ Makes outdated. An entity deprecates (supersedes) another entity.

\hangindent=1em\lstinline+impacts+ Some unspecific influence. A new feature impacts an existing component.

\hangindent=1em\lstinline+excludes+ Prevents an entity combination. One feature excludes another in a release.

\hangindent=1em\lstinline+helps+ Positive influence. A goal supports the fulfillment of another goal.

\hangindent=1em\lstinline+binds+ Ties a value to an option. A configuration binds a variation point.

\hangindent=1em\lstinline+requires+ A requested combination. One function requires that a another function is also implemented.

\hangindent=1em\lstinline+interactsWith+ A communication relation. A user interacts with an interface.

\hangindent=1em\lstinline+is+ One entity inherits properties of another entity. A specialization, extension or subtype relation.

\hangindent=1em\lstinline+precedes+ Temporal ordering. A feature precedes (should be implemented before) another feature.

\hangindent=1em\lstinline+implements+ Realisation of an entity, e.g. a component implements a feature.

\hangindent=1em\lstinline+hurts+ Negative influence. A goal hinders another goal.

\hangindent=1em\lstinline+has+ Expresses containment, substructure, composition or aggregation. An entity contains another entity.

\hangindent=1em\lstinline+verifies+ Gives evidence of correctness. A test verifies the implementation of a feature.

\hangindent=1em\lstinline+relatesTo+ Some general, unspecific relation to another entity.


\section*{\texttt{enum StrAttrType}}
\hangindent=1em\lstinline+Comment+ A note with a remark or a discussion on an entity.

\hangindent=1em\lstinline+Constraints+ A collection of propositions that constrain a solution space or restrict possible attribute values.

\hangindent=1em\lstinline+Deprecated+ A description of why an entity should be avoided, often because it is superseded by another entity, as indicated by a 'deprecates' relation.

\hangindent=1em\lstinline+Example+ A description that illustrates some entity by a typical instance.

\hangindent=1em\lstinline+Expectation+ A required output of a test in order to be counted as passed.

\hangindent=1em\lstinline+Failure+ A description of a runtime error that prevents the normal execution of a system.

\hangindent=1em\lstinline+Gist+ A short and simple description. A summary capturing the essence of an entity.

\hangindent=1em\lstinline+Input+ Data consumed by an entity,

\hangindent=1em\lstinline+Location+ A location of a resource such as a web address or a path to a file of persistent data.

\hangindent=1em\lstinline+Output+ Data produced by an entity, e.g. a function or a test.

\hangindent=1em\lstinline+Spec+ A definition of an entity. Short for specification

\hangindent=1em\lstinline+Text+ An paragraph or general description.

\hangindent=1em\lstinline+Title+ A general or descriptive heading.

\hangindent=1em\lstinline+Why+ A description of intention or rationale of an entity.


\section*{\texttt{enum IntAttrType}}
\hangindent=1em\lstinline+Benefit+ A characterization of a good or helpful result or effect (e.g. of a feature).

\hangindent=1em\lstinline+Capacity+ An amount that can be held or contained (e.g. by a resource).

\hangindent=1em\lstinline+Cost+ An expenditure of something, such as time or effort, necessary for the implementation of an entity.

\hangindent=1em\lstinline+Damage+ A characterization of the negative consequences if some entity (e.g. a risk) occurs.

\hangindent=1em\lstinline+Frequency+ A number of occurrences per time unit.

\hangindent=1em\lstinline+Max+ A maximum estimated or assigned value.

\hangindent=1em\lstinline+Min+ A minimum estimated or assigned value.

\hangindent=1em\lstinline+Order+ An ordinal number (1st, 2nd, ...).

\hangindent=1em\lstinline+Prio+ A level of importance of an entity. Short for priority.

\hangindent=1em\lstinline+Probability+ A likelihood expressed as whole percentages that something (e.g. a risk) occurs.

\hangindent=1em\lstinline+Profit+ A gain or return of some entity, e.g. in monetary terms.

\hangindent=1em\lstinline+Value+ Some general integer value.


\end{multicols*}
\end{document}
4 changes: 2 additions & 2 deletions src/main/scala/02-meta-model.scala
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,7 @@ object meta:
|\\usepackage{fancyhdr}
|\\pagestyle{fancy}
|\\chead{\\url{http://github.com/reqT/reqT-lang/docs/reqT-quickref.pdf}}
|\\lhead{The reqT QuickRef}
|\\lhead{QuickRef reqT v4}
|\\rhead{Compiled \\today}
|
|\\usepackage{hyperref}
Expand Down Expand Up @@ -452,7 +452,7 @@ object meta:
|
|\\begin{multicols*}{4}
|
|\\section*{The reqT meta-model}
|\\section*{The reqT v4 meta-model}
|\\raggedright
|A model is a sequence of elements. An element can be a node or a relation. A node can be an entity or an attribute. An entity has a type and an id. An attribute has a type and a value and it can be a string attribute or an integer attribute. A relation connects an entity to a sub-model via a relation type.
|
Expand Down
4 changes: 3 additions & 1 deletion src/test/scala/generateLang.scala
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ val quickRefFile ="reqT-quickref.tex"
fixCmd(cmd).!

println(s"Generating $quickRefFile in $targetDir")
meta.QuickRef.toLatex.saveTo(targetDir + quickRefFile)
val latex = meta.QuickRef.toLatex
latex.saveTo(targetDir + quickRefFile)
latex.saveTo(docsDir + quickRefFile)

// TODO: This should be moved to publish:::
//println(os.proc("latexmk", "-pdf", "-silent", quickRefFile).call(cwd = os.pwd / targetDir.stripSuffix("/")))
Expand Down

0 comments on commit 757ad81

Please sign in to comment.