\documentclass[12pt, titlepage]{article} \usepackage{amsmath, mathtools} \usepackage[round]{natbib} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{graphicx} \usepackage{colortbl} \usepackage{xr} \usepackage{hyperref} \usepackage{longtable} \usepackage{xfrac} \usepackage{tabularx} \usepackage{float} \usepackage{siunitx} \usepackage{booktabs} \usepackage{multirow} \usepackage[section]{placeins} \usepackage{caption} \usepackage{fullpage} \hypersetup{ bookmarks=true, % show bookmarks bar? colorlinks=true, % false: boxed links; true: colored links linkcolor=red, % color of internal links (change box color with linkbordercolor) citecolor=blue, % color of links to bibliography filecolor=magenta, % color of file links urlcolor=cyan % color of external links } \usepackage{array} \input{../../Comments} \newcommand{\progname}{Program Name} \begin{document} \title{Module Interface Specification for ...} \author{Author Name} \date{\today} \maketitle \pagenumbering{roman} \section{Revision History} \begin{tabularx}{\textwidth}{p{3cm}p{2cm}X} \toprule {\bf Date} & {\bf Version} & {\bf Notes}\\ \midrule Date 1 & 1.0 & Notes\\ Date 2 & 1.1 & Notes\\ \bottomrule \end{tabularx} ~\newpage \section{Symbols, Abbreviations and Acronyms} See SRS Documentation at \wss{give url} \wss{Also add any additional symbols, abbreviations or acronyms} \newpage \tableofcontents \newpage \pagenumbering{arabic} \section{Introduction} The following document details the Module Interface Specifications for \wss{Fill in your project name and description} Complementary documents include the System Requirement Specifications and Module Guide. The full documentation and implementation can be found at \url{...}. \wss{provide the url for your repo} \section{Notation} \wss{You should describe your notation. You can use what is below as a starting point.} The structure of the MIS for modules comes from \citet{HoffmanAndStrooper1995}, with the addition that template modules have been adapted from \cite{GhezziEtAl2003}. The mathematical notation comes from Chapter 3 of \citet{HoffmanAndStrooper1995}. For instance, the symbol := is used for a multiple assignment statement and conditional rules follow the form $(c_1 \Rightarrow r_1 | c_2 \Rightarrow r_2 | ... | c_n \Rightarrow r_n )$. The following table summarizes the primitive data types used by \progname. \begin{center} \renewcommand{\arraystretch}{1.2} \noindent \begin{tabular}{l l p{7.5cm}} \toprule \textbf{Data Type} & \textbf{Notation} & \textbf{Description}\\ \midrule character & char & a single symbol or digit\\ integer & $\mathbb{Z}$ & a number without a fractional component in (-$\infty$, $\infty$) \\ natural number & $\mathbb{N}$ & a number without a fractional component in [1, $\infty$) \\ real & $\mathbb{R}$ & any number in (-$\infty$, $\infty$)\\ \bottomrule \end{tabular} \end{center} \noindent The specification of \progname \ uses some derived data types: sequences, strings, and tuples. Sequences are lists filled with elements of the same data type. Strings are sequences of characters. Tuples contain a list of values, potentially of different types. In addition, \progname \ uses functions, which are defined by the data types of their inputs and outputs. Local functions are described by giving their type signature followed by their specification. \section{Module Decomposition} The following table is taken directly from the Module Guide document for this project. \begin{table}[h!] \centering \begin{tabular}{p{0.3\textwidth} p{0.6\textwidth}} \toprule \textbf{Level 1} & \textbf{Level 2}\\ \midrule {Hardware-Hiding} & ~ \\ \midrule \multirow{7}{0.3\textwidth}{Behaviour-Hiding} & Input Parameters\\ & Output Format\\ & Output Verification\\ & Temperature ODEs\\ & Energy Equations\\ & Control Module\\ & Specification Parameters Module\\ \midrule \multirow{3}{0.3\textwidth}{Software Decision} & {Sequence Data Structure}\\ & ODE Solver\\ & Plotting\\ \bottomrule \end{tabular} \caption{Module Hierarchy} \label{TblMH} \end{table} \newpage ~\newpage \section{MIS of \wss{Module Name}} \label{Module} \wss{Use labels for cross-referencing} \subsection{Module} \wss{Short name for the module} \subsection{Uses} \subsection{Syntax} \subsubsection{Exported Access Programs} \begin{center} \begin{tabular}{p{2cm} p{4cm} p{4cm} p{2cm}} \hline \textbf{Name} & \textbf{In} & \textbf{Out} & \textbf{Exceptions} \\ \hline \wss{accessProg} & - & - & - \\ \hline \end{tabular} \end{center} \subsection{Semantics} \subsubsection{State Variables} \subsubsection{Access Routine Semantics} \noindent \wss{accessProg}(): \begin{itemize} \item transition: \wss{if appropriate} \item output: \wss{if appropriate} \item exception: \wss{if appropriate} \end{itemize} \newpage \bibliographystyle {plainnat} \bibliography {../../../ReferenceMaterial/References} \newpage \section{Appendix} \label{Appendix} \wss{Extra information if required} \end{document}