%\documentclass[handout]{beamer} 
\documentclass[t,12pt,numbers,fleqn]{beamer}
%\documentclass[ignorenonframetext]{beamer}

\newif\ifquestions
%\questionstrue
\questionsfalse

\usepackage{pgfpages} 
\usepackage{hyperref}
\hypersetup{colorlinks=true,
    linkcolor=blue,
    citecolor=blue,
    filecolor=blue,
    urlcolor=blue,
    unicode=false}
\urlstyle{same}

\usepackage{booktabs}
\usepackage{hhline}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{array}
\usepackage{listings}
\usepackage{bm}
\usepackage{colortbl}
\usepackage{bnf}
\newcommand{\colA}{2.1cm}
\newcommand{\colB}{6.9cm}
\newcommand{\colC}{1.1cm} %do not need this column if binding time is not listed
\newcommand{\colAwidth}{0.15\textwidth}
\newcommand{\colBwidth}{0.7\textwidth}

\newcounter{temp}
\setcounter{temp}{0}

\bibliographystyle{plain}

%\usetheme{Iimenau}

\useoutertheme{split} %so the footline can be seen, without needing pgfpages

%\pgfpagesuselayout{resize to}[letterpaper,border shrink=5mm,landscape]  %if this is uncommented, the hyperref links do not work

\mode<presentation>{}

\input{../def-beamer}

\newcommand{\topic}{06 Program Families Continued}

\input{../titlepage}

\begin{document}

\input{../footline}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Program Families Continued}

\bi
\item Administrative details
\item Questions?
\item Family of Linear Solvers
\item Proposed Family Methods
\item Family of Mesh Generators
\item Family of Material Behaviour Models
\ei
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Administrative Details}

\bi
\item \href{http://avenue.mcmaster.ca/index.html}{Marking scheme for SRS}
\bi
\item You should be able to see it in Avenue
\item Do NOT submit on Avenue
\ei
% \item \href{http://avenue.mcmaster.ca/index.html}{Grade columns in Avenue}
% \bi
% \item Presentation questions worth 1\%
% \ei
\ei

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Administrative Details: Report Deadlines}
~\newline
\begin{tabular}{l l l}
\textbf{SRS} & Week 06 & Oct 7\\
System VnV Plan & Week 08 & Oct 28\\
MG + MIS & Week 10 & Nov 25\\
Final Documentation & Week 14 & Dec 9\\
\end {tabular}

\bi
\item The written deliverables will be graded based on the repo contents as of
11:59 pm of the due date
\item If you need an extension, please ask
\item Two days after each major deliverable, your GitHub issues will be due
\item Domain expert code due 1 week after MIS deadline
\ei

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Administrative Details: Presentations}

~\newline
\begin{tabular}{l l l}
\textbf{SRS Present} & Week 05 & Week of Sept 30\\
Syst.\ VnV Present & Week 07 & Week of Oct 21\\
MG + MIS Syntax Present & Week 9 & Week of Nov 4\\
MIS Semantics Present & Week 11 & Week of Nov 18\\
Unit VnV or Impl.\ Present & Week 12/13 & Week of Nov 28\\
\end {tabular}

\bi
\item Informal presentations with the goal of improving everyone's written
  deliverables
\item Domain experts and secondary reviewers (and others) will ask questions
  (listed in Repos.xlsx file)
\ei

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Administrative Details: Presentation Schedule}

\bi
\item SRS (or CA) Present
\bi
\item \textbf{Monday: Deema, Sharon, Bo}
\item \textbf{Thursday: Sasha, Colin, Zhi}
\ei
\item Syst V\&V Plan Present
\bi
\item Monday: Deema, Peter
\item Thursday: Sharon, Ao
\ei
\item MG + MIS Syntax Present
\bi
\item Monday:  Deema, Bo
\item Thursday: Colin, Sasha
\ei
\item MIS Syntax + Semantics Present
\bi
\item Monday: Zhi, Peter
\item Thursday:  Sharon, Ao
\ei
\item Unit VnV Plan or Impl.\ Present
\bi
\item Monday: Bo, Sasha, Colin
\item Thursday: Zhi, Peter, Ao
\ei
\ei

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Questions?}
\begin{itemize}
\item Questions about SRS?
\item Questions about CA?
\item Any questions on the 
  \href{https://gitlab.cas.mcmaster.ca/smiths/cas741/blob/master/BlankProjectTemplate/docs/SRS/SRS-Checklist.pdf}
  {SRS Checklist?}
\item Questions about presentations?
\item Questions about tools (git, GitHub, LaTeX)?
\end{itemize}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Goal Statements for a Family of Linear Solvers?}

\structure{What would be a good goal statement for a library of linear solvers?}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Goal Statements for a Family of Linear Solvers}

\begin{itemize}
	
\item[G1] Given a system of $n$ linear equations represented by matrix $A$ and
  column vector $b$, return $x$ such that $Ax = b$, if possible

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Theoretical Model for a Family of Linear Solvers?}

\begin{itemize}
	
\item \structure{Is the theoretical model a commonality or a variability?}
\item \structure{What is the theoretical model for a family of linear solvers?}
    
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Theoretical Model for a Family of Linear Solvers}

Given a square matrix $A$ and column vector $b$, the possible
solutions for $x$ are as follows:

\begin{enumerate}
\item A unique solution $x = A^{-1} b$, if $A$ is nonsingular
\item An infinite number of solutions if $A$ is singular and $b \in span(A)$
\item No solution if $A$ is singular and $b \notin span(A)$
\end{enumerate}

\cite{Anton1987}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Instance Model for a Family of Linear Solvers?}

\begin{itemize}
	
\item \structure{Is there an instance model for a family of linear solvers?}
    
\end{itemize}

% No

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Symbols and Terminology for a Family of Linear Solvers?}

\begin{itemize}
	
\item \structure{What symbols and terminology will you need to define?}
    
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Sample Symbols and Terminology}

\begin{table}[h]
\begin{tabular}{ l p{7.5cm}}
$n: \mathbb{N}$ & number of linear equations/number of unknowns\\
$A: \mathbb{R}^{n \times n}$ & $n \times n$ real matrix\\
$x: \mathbb{R}^{n \times 1}$ & $n \times 1$ real column vector\\
$b: \mathbb{R}^{n \times 1}$ & $n \times 1$ real column vector\\
$I: \mathbb{R}^{n \times n}$ & an $n \times n$ matrix where all entries are $0$, except for the diagonal entries, which
are $1$\\
$|| v || $ & the norm (estimate of magnitude) of vector $v$\\
$A^{-1}: \mathbb{R}^{n \times n}$ & the inverse matrix, with the property that $A^{-1} A = I$\\
singular & matrix $A$ is singular if $A^{-1}$ does not exist\\
residual & $|| b - A x ||$\\
\end{tabular}
%\caption{Terminology for a Linear Solver}\label{Term_LinSolv}
\end{table}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{What Would be the Most General Binding Time?}

\begin{itemize}
	
\item \structure{What would be the most general binding time for the variabilities?}
    
\end{itemize}

% build time or run time
% scope time has already set some variabilities - a different sub-family could
% have different variabilities

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{What Are Some Potential Input Variabilities?}

\begin{itemize}
	
\item \structure{What are some potential input variabilities?  What are the
    associated parameters of variation?}
    
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\newcommand{\colA}{1.7cm}
%\newcommand{\colB}{5.6cm}
%\newcommand{\colC}{1.1cm} %do not need this column if binding time is not listed

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
%\frametitle{Input Variabilities}

\begin{table}
\begin{tabular}{| p{\colA} | p{\colB} | }
\hline
\textbf{Variability} & \textbf{Parameter of Variation} \\
\hline
Allowed structure of $A$ & Set of \{ full, sparse, banded, tridiagonal, block triangular,
block structured, diagonal, upper triangular, lower triangular, Hessenberg \} \\
\hline
Allowed definiteness for $A$ & Set of \{ not definite, positive definite, positive semi-definite,
negative definite, negative semi-definite \} \\
\hline
Allowed class of $A$ & Set of \{ diagonally dominant, Toeplitz, Vandermonde \} \\
\hline
Symmetric? & boolean \\
\hline
Values for $n$ & set of $\mathbb{N}$ \\
\hline
Entries in $A$ & set of $\mathbb{R}$ \\
\hline
Entries in $b$ & set of $\mathbb{R}$ \\
\hline
\end{tabular}
%cl\caption{Variabilities for Input Assumptions}\label{Var_Table_Input}
\end{table}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
%\frametitle{Input Variabilities}

\begin{table}
\begin{tabular}{| p{\colA} | p{\colB} | }
\hline
\textbf{Variability} & \textbf{Parameter of Variation} \\
\hline
Source\newline of input & Set of \{ from a file, through the user interface, passed in memory \} \\
\hline
Encoding of input & Set of \{binary, text \} \\
\hline
Format\newline of input $A$ & Set of \{arbitrary, by row, by column, by diagonal \} \\
\hline
Format\newline of input $b$ & Set of \{arbitrary, ordered \} \\
\hline
\end{tabular}
%cl\caption{Variabilities for Input Assumptions}\label{Var_Table_Input}
\end{table}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{What Are Some Potential Output Variabilities?}

\begin{itemize}
	
\item \structure{What are some potential output variabilities? What are the
    associated parameters of variation?}
    
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Output Variabilities}

\begin{table}
\begin{tabular}{| p{\colA} | p{\colB} | }
\hline
\textbf{Variability} & \textbf{Parameter of Variation} \\
\hline
Destination for output $x$ & Set of \{ to a file, to the screen, to memory \} \\
\hline
Encoding of output $x$ & Set of \{binary, text \} \\
\hline
Format of output $x$ & Set of \{arbitrary, ordered \} \\
\hline
Output residual & boolean (true if the program returns the residual) \\
\hline
Possible entries in $x$ & set of $\mathbb{R}$ \\
\hline
\end{tabular}
%\caption{Variabilities for Output}\label{Var_Table_Output}
\end{table}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{What Are Some Potential Calculation Variabilities?}

\begin{itemize}
	
\item \structure{What are some potential calculation variabilities? What are the
    associated parameters of variation?}
    
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Calculation Variabilities}

\begin{table}
\begin{tabular}{| p{\colA} | p{\colB} | }
\hline
\textbf{Variability} & \textbf{Parameter of Variation} \\
\hline
Check input? & boolean (false if the input is assumed to satisfy the input assumptions)\\ 
\hline
Exceptions generated? & boolean (false if the goal is non-stop arithmetic)\\ 
\hline
Norm used for residual & Set of \{1-norm, 2-norm, $\infty$-norm \} \\
\hline
\end{tabular}
%\caption{Variabilities for Calculation}\label{Var_Table_Calc}
\end{table}

\bi
\item Algorithms are not listed, but they could be
\item If they were, they would be in a separate table, to show they are design variabilities
\ei
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Is SC Suited to a Program Family Approach?}

Based on criteria from Weiss \cite{ArdisAndWeiss1997, Weiss1997, Weiss1998,
  CukaAndWeiss1997,WeissAndLai1999}
\begin{itemize}
\item The redevelopment hypothesis
\begin{itemize}
\item A significant portion of requirements, design and code should be common between family members
\item Common model of software development in SC is to rework an existing program
\item Progress is made by removing assumptions
\end{itemize}

\item The oracle hypothesis
\begin{itemize}
\item Likely changes should be predictable
\item Literature on SC, example systems, mathematics
\end{itemize}

\item The organizational hypothesis
\begin{itemize}
\item Design so that predicted changes can be made independently
\item Tight coupling between data structures and algorithms
\item Need a suitable abstraction
\end{itemize}

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{CA Template From \cite{Smith2006}}

\scalebox{1.0}{
\begin{minipage}{0.94\columnwidth}
\begin{enumerate}

\item{Reference Material:}
{a) Table of Contents}
{b) Table of Symbols}
{c) Abbreviations and Acronyms}

\item{Introduction:} 
{a) Purpose of the Document}
{b) Organization of the Document}

\item{General System Description:}
{a) \structure{Potential} System Contexts}
{b) \structure{Potential} User Characteristics}
{c) \structure{Potential} System Constraints}

\item Commonalities:
{a) Background Overview}
{b) Terminology Definition}
\structure{c) Goal Statements}
\structure{d) Theoretical Models}

\item \structure{Variabilities:
{a) Input Assumptions}
{b) Calculation}
{c) Output}}

\item \structure{Requirements (added to template)}

%\item \structure{Likely Changes}

\item{Traceability Matrix}

%\item{References}

\end{enumerate}
\end{minipage}
}
% highlight parts to talk about
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Abstract Requirements}

% explain how CAnal addresses this challenge
\begin{itemize}
\item Appropriate level of abstraction by refining from goal to theory to input assumptions
\item A goal is a functional objective the software should achieve: \newline
\structure{\textbf{G1:} Find the roots of an equation}
\item Goals are refined into theoretical models: \newline
% presented as they would be presented in a mathematics textbook 
\structure{\textbf{T1:} Given a function $f(x)$ and an interval $ \{ x | x_{lower} \leq x_{upper} \} $,
return the points where $f(x) = 0$}
\item Introduce simplifying assumptions to allow theoretical model to be solved:\newline
\structure{\textbf{VA1,2:} $f(x)$ is continuous on the interval and/or $f(x)$ has at least one sign change on the
interval}
%traceability matrix?
\end{itemize}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Abstract Requirements (Continued)}

\begin{itemize}
\item Each variability has an associated parameter of variation and a binding time
\begin{itemize}
\item Specification (scope) time
\item Compile/generation time
\item Run time
\end{itemize}
\end{itemize}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Capture Existing Knowledge}

\begin{itemize}
\item Systematic consideration from general to specific
\item Communication between experts
\item Standard template allows comparison
\item Convenient framework for summarizing existing literature
\item Eventually a library of requirements documentation
% \item Same goal may have different theoretical models
\item CA refined by a family of SRSs
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{System Requirements Specification (SRS)}

\begin{itemize}

\item Based on IEEE Standard 830 and Volere requirements specification template
\item Sections from CA are refined in SRS
\item ``Potential'' descriptions are made specific
\item Variabilities are set
\item Binding times are set

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{SRS Template}

\scalebox{1.0}{
\begin{minipage}{0.94\columnwidth}
\begin{enumerate}

\item{Reference Material}%:
%{a) Table of Contents}
%{b) Table of Symbols}
%{c) Abbreviations and Acronyms}

\item{Introduction}%:
%{a) Purpose of the Document}
%{b) Scope of the Software Product}
%{c) Organization of the Document}

\item{General System Description}%:
%{a) System Context}
%{b) User Characteristics}
%{c) System Constraints}

\item {Specific System Description:}
{a) Background Overview,}
{b) Terminology Definition,}
{c) Goal Statements}
{d) Theoretical Models,}
{e) Assumptions,}
{f) Data Constraints,}
{g) System Behaviour}

\structure{\item Non-functional Requirements:
{a) Accuracy of Input Data,}
{b) Sensitivity of the Model,}
{c) Tolerance of Solution,}
{d) Performance,}
{...}
{i) Portability,}}

\structure {\item {Solution Validation Strategies, (moved to separate document)}}

\item{Other System Issues:}
%{ Open Issues}
%{ Off-the-Shelf Solutions}
%{ New Problems}
%{ Waiting Room}

\item{Traceability Matrix}

%\item List of Possible Changes in the Requirements

%\item{Values of Auxiliary Constants}

%\item{References}

\end{enumerate}
\end{minipage}
}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{NFRs}

\begin{itemize}

\item Rather than absolute quantification of NFRs, use relative comparison between other program family members
\item Specify requirements in big O notation
% makes the requirement validatable
%\item Identify benchmark test problems %system test plan
%\item A posteriori description, rather than a priori specification
\item Relative importance between NFRs using Analytic Hierarchy Process (AHP) \cite{Saaty1980}
\begin{itemize}
\item Addresses challenge of comparing attributes that are measured in different (or hard to quantify) units
\item Series of pair-wise comparisons between attributes
\item 1 for equal importance, 3 for moderately strong importance, ..., 9 for extreme importance
\end{itemize}

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Validatable Requirements}

\begin{itemize}

%\item Rather than absolute quantification of NFRs, use relative comparison between other program family members
% makes the requirement validatable
\item Relative comparison between programs is a validatable requirement
\item Focus on a posteriori description, rather than a priori specification
% experiment with the software, as experiment with nature
\item Solution validation strategies
\begin{itemize}
\item Solve using different techniques
\item Identify benchmark test problems %system test plan
\item Test cases built starting from assumed solutions (Method of Manufactured Solutions)
\item Partially validate for a simpler subset where the solution is known
\end{itemize}

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Mesh Generating Software}
\begin{figure}
\begin{center}
\rotatebox{0}
{
 \includegraphics[width=0.9\textwidth]{../Figures/ExampleMesh.pdf}
}
%\caption{Example finite element mesh}
\end{center}
\end{figure}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Commonality Analysis for a Mesh Generator}

From Chen's work \cite{Chen2003, SmithAndChen2004, SmithAndChen2004b}.
Alternate approach in \cite{BastarricaAndHitschfeld2006, RosselEtAl2014,
  BastarricaAndHitschfeld-Kahler2004,
  Bastarrica2002, BastarricaAndHitschfeld2004}

\begin{itemize}

\item Terminology
\begin{itemize}
\item requirement
\item structured mesh, ...
\end{itemize}

\item Commonalities
\begin{itemize}
\item discretization
\item input from user is required, ...
\end{itemize}

\item Variabilities
\begin{itemize}
\item shape of elements
\item coordinate system used, ...
\end{itemize}

\item Parameters of variation
\begin{itemize}
\item line, triangle, quadrilateral, tetrahedral, hexahedral
\item Cartesian, polar, spherical, ...
\end{itemize}

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Definition of a Mesh}
Let $\Omega$ be a closed bounded domain in $\mathbb{R}$ or $\mathbb{R}^2$ or $\mathbb{R}^3$
and let $K$
be a simple shape, such as a line segment in 1D, a triangle or a quadrilateral in 2D, or a tetrahedron or hexahedron
in 3D.  A mesh of $\Omega$, denoted by $\tau$, has the following properties:
\begin{enumerate}
\item $\Omega \approx \cup(K | K \epsilon \tau : K)$, where $\cup$ is first closed and then opened
\item the length of every element $K$, of dimension 1, in $\tau$ is greater than zero
\item the interior of every element $K$, of dimension 2 or greater, in $\tau$ is nonempty
\item the intersection of the interior of two elements is empty
\end{enumerate}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Example Commonality}

\newcommand{\colACwidth}{0.25\textwidth}
\newcommand{\colBCwidth}{0.7\textwidth}

\begin {tabular}{| p{\colACwidth} | p{\colBCwidth}|}
\hline
{\bf Item Number} & C1\\
\hline
{\bf Description} & A mesh generator discretizes a given computational domain (closed boundary $\Omega$) into a covering
up of a finite number of simpler shapes.\\
\hline
{\bf Related Variability} & V6, V8, V12, V14, V15, V16, V17, V18\\
\hline
{\bf History} & Created - May 7, 2004\\
\hline
\end {tabular}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}

\frametitle{Mesh Generator (MG) Goals}

\begin{enumerate}[G1]

\item Input spatial domain $\Omega$ output a mesh $M$ that covers this domain.

\item Transform information on the materials, material properties and the
locations of the different materials

\item Transform information on the boundary condition types, values and locations

\item Transform system information, such as numerical algorithm parameters
%values needed by the subsequent
%processing step (for instance initial time, time step size, degree of implicitness, etc.)

\end{enumerate}

\end{frame}

% TO DO - add a slide for the theoretical model? - no room
% TO DO - mention output file format variability via XSLT? - mention during talk, but no room on slides
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Element Variability}

Location of nodes: sequence of LocationT \\
Number of dof at nodes: sequence of $\mathbb{N}$ \\
LocationT = tuple of ($L_1: \mbox{natT}$, $L_2: \mbox{natT}$, $L_3: \mbox{natT}$)\\
natT = \{ $s: \mathbb{R} | 0 \leq s \leq 1 : s$ \}\\

\begin{center}
%\rotatebox{-90}
{
 \includegraphics[width=0.5\textwidth]{../Figures/TriangleElement.pdf}
}
\end{center}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Local Topology Variability}

\begin{center}
{
\includegraphics[width=0.65\textwidth]{../Figures/TopologyPatterns.pdf}
}
\end{center}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}[fragile]

\frametitle{DSL Using XML}

\lstset{language=XML,linewidth=.9\textwidth,xleftmargin=0.5cm}
\begin{lstlisting}%[frame=single]

<elementSet>
    <geometrySpec>
        <shape>triangle1</shape>
        <nodeGeo count="3">
            <node id="1">
                <location>1,0,0</location>
            </node>
            <node id="2">
                <location>0,1,0</location>
            </node>
            ...
        </nodeGeo>
    </geometrySpec>
</elementSet>
\end{lstlisting}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Proof of Concept Implementation}

From Cao's work \cite{Cao2006, SmithMcCutchanAndCao2007}
\begin{itemize}
\item XML document that customizes a Java object
\item The Java object customizes the general purpose MG as it is loaded
\item General purpose MG
\begin{itemize}
\item All variabilities bound at run-time
\item Corresponds to an empty XML specification
\end{itemize}
\end{itemize}

\begin{center}
{
\includegraphics[width=0.4\textwidth]{../Figures/elementdialog2.png}
}
\end{center}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% \begin{frame}
% \frametitle{Linear Systems of Equations}

% $$A x = b$$

% Commonality analysis presented in \cite{Smith2006}

% \end{frame}

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\begin{frame}

%\frametitle{Terminology}

%\begin{tabular}{ l p{5.5cm}}
%$n: \mathbb{N}$ & number of linear equations and the number of unknowns\\
%$A: \mathbb{R}^{n \times n}$ & $n \times n$ real matrix\\
%$x: \mathbb{R}^{n \times 1}$ & $n \times 1$ real column vector\\
%$b: \mathbb{R}^{n \times 1}$ & $n \times 1$ real column vector\\
%$I: \mathbb{R}^{n \times n}$ & an $n \times n$ matrix where all entries are $0$, except for the diagonal entries, which
%are $1$\\
%$A^{-1}: \mathbb{R}^{n \times n}$ & the inverse matrix, with the property that $A^{-1} A = I$\\
%$|| v || $ & the norm (estimate of magnitude) of vector $v$\\
%residual & $|| b - A x ||$\\
%singular & matrix $A$ is singular if $A^{-1}$ does not exist\\
%\end{tabular}

%\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% \begin{frame}

% \frametitle{Goal and Theoretical Model}

% \textbf{G1}: Given a system of $n$
% linear equations represented by matrix $A$ and column vector $b$, return $x$ such that $A x = b$, if possible

% \textbf{T1}: Given square matrix $A$ and column vector $b$, the possible
% solutions for $x$ are as follows:

% \begin{enumerate}
% \item A unique solution $x = A^{-1} b$, if $A$ is nonsingular
% \item An infinite number of solutions if $A$ is singular and $b \in span(A)$
% \item No solution if $A$ is singular and $b \notin span(A)$
% \end{enumerate}

% \end{frame}

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% \begin{frame}

% \frametitle{Variabilities for Input Assumptions}

% \begin{tabular}{| p{\colA} | p{\colB} | }
% \hline
% \textbf{Variability} & \textbf{Parameter of Variation} \\
% \hline
% Allowed structure  $A$ & Set of \{ full, sparse, banded, tridiagonal, block triangular, ...,
% %block structured, diagonal, upper triangular, lower triangular, 
% Hessenberg \} \\
% \hline
% Allowed definiteness $A$ & Set of \{ not definite, positive definite, ...,
% %positive semi-definite, negative definite, 
% negative semi-definite \} \\
% \hline
% Allowed class of $A$ & Set of \{ diagonally dominant, Toeplitz, Vandermonde \} \\
% \hline
% Symmetry\newline assumed? & boolean \\
% \hline
% Possible values for $n$ & set of $\mathbb{N}$ \\
% \hline
% Possible entries in $A$ & set of $\mathbb{R}$ \\
% \hline
% ... & ... \\
% %Possible entries in $b$ & set of $\mathbb{R}$ \\
% %\hline
% %Source\newline of input & Set of \{ from a file, through the user interface, passed in memory \} \\
% %\hline
% %Encoding of input & Set of \{binary, text \} \\
% %\hline
% %Format\newline of input $A$ & Set of \{arbitrary, by row, by column, by diagonal \} \\
% %\hline
% %Format\newline of input $b$ & Set of \{arbitrary, ordered \} \\\hline
% \end{tabular}

% \end{frame}

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% \begin{frame}

% \frametitle{Variabilities for Calculation}

% \begin{tabular}{| p{\colA} | p{\colB} | }
% \hline
% \textbf{Variability} & \textbf{Parameter of Variation} \\
% \hline
% Check input? & boolean (false if the input is assumed to satisfy the input assumptions)\\ 
% \hline
% Exceptions generated? & boolean (false if the goal is non-stop arithmetic)\\ 
% \hline
% Norm used for residual & Set of \{1-norm, 2-norm, $\infty$-norm \} \\
% \hline
% \end{tabular}

% % mention turning off input checking helps with problem of theoretical model refined by assumpts

% \end{frame}

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% \begin{frame}

% \frametitle{Variabilities for Output}

% \begin{tabular}{| p{\colA} | p{\colB} | }
% \hline
% \textbf{Variability} & \textbf{Parameter of Variation} \\
% \hline
% Destination for output $x$ & Set of \{ to file, to screen, to memory \} \\
% \hline
% Encoding of output $x$ & Set of \{binary, text \} \\
% \hline
% Format of output $x$ & Set of \{arbitrary, ordered \} \\
% \hline
% Output residual & boolean (true if the program returns the residual) \\
% \hline
% Possible entries in $x$ & set of $\mathbb{R} \cup \{- \infty, \infty, undef \}$ \\
% \hline
% \end{tabular}

% \end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Analytic Hierarchy Process}

\begin{itemize}
\item Example 1
\begin{itemize}
\item Embedded real-time system for digital signal processing
\item $n = 10$
\item $A$ is assumed to be Toeplitz
\end{itemize}
\end{itemize}

\begin{tabular}{| l | l | l | l | l |}
\hline
~ & \textbf{Speed} & \textbf{Accuracy} & \textbf{Portability} & \textbf{Priority}\\
\hline
\textbf{Speed} & 1 & 3 & 5 & 0.64\\
\textbf{Accuracy} & 1/3 & 1 & 3 & 0.26\\
\textbf{Portability} & 1/5 & 1/3 & 1 & 0.11\\
\hline
\end{tabular}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\begin{frame}

%\frametitle{AHP Continued}

%\begin{itemize}
%\item Example 2
%\begin{itemize}
%\item Structural mechanics software for education
%\item $10 \leq n \leq 1000$
%\item $A$ is assumed to be positive definite
%\item Would have different relative priorities
%\end{itemize}
%\end{itemize}

%\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{NFR for Correctness (for VnV Plan)}

\begin{itemize}
\item Create test cases with known solutions
\begin{itemize}
\item Assume $A$ and $x$, calculate $b$
\item Given $A$ and $b$ calculate $x^*$ and compare to the assumed $x$
\end{itemize}
\item Comparison with Matlab
\item Comparison with NAG library
\item Where possible compare solution to interval arithmetic solution
\item Experiments to describe how accuracy changes with increasing condition number
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Connection to Design}

\begin{itemize}

\item Abstract requirements to concrete design decisions
%\item Software packages likely already exist within the program family
\item Reuse existing packages within the program family
\item Summarize existing software by the parameters of variation and binding time
%\item Run time binding can often be changed to specification time binding
\item If functional requirements match, then use NFRs
\begin{itemize}
\item AHP to compare each design against each of the NFRs %as done in SRS 
%cols and rows are des alternatives, compared against a given NFR
%repeat for each NFR
\item Contribution of each NFR for each design alternative is found by multiplying the contribution of
each alternative to the given NFR with the corresponding priority of that NFR
\item Sum the contributions
\item The highest overall score is the ``winning'' alternative
\end{itemize}

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{A Family of Material Models}

From McCutchan's work \cite{CaretteEtAl2008, SmithMcCutchanAndCao2007,
  SmithEtAl2008, CaretteEtAl2007_TR, SmithMcCutchanAndCarette2017, McCutchan2007}

\begin{center}
{
\includegraphics[width=0.5\textwidth]{../Figures/TestSpecimenUniaxial.pdf}
}
\end{center}

\begin{center}
\begin{tabular}{cc}
\includegraphics[width=0.45\textwidth]{../Figures/Plastic.pdf} &
\includegraphics[width=0.45\textwidth]{../Figures/Viscoplastic.pdf}\\
\end{tabular}
\end{center}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Terminology Definitions}

\begin{minipage}{\textwidth}
\begin{tabular}{| p{\colAwidth} | p{\colBwidth}|}
\hline
\rowcolor[gray]{0.9}
Label: & D\_YieldFunction\\ \hline
Symbol: & $F = F(\bm{\sigma}, \kappa)$\\ \hline
Type: & $(\mbox{tensor2DT} \times \mathbb{R}) \rightarrow \mathbb{R}$\\ \hline
%Units: & --\\ \hline
Related: & {D\_Stress}, {D\_HardeningParameter}\\ \hline %originally related items, shorted for space
Sources: & ...\\
\hline Descrip: & The yield function defines a surface $F = 0$ in the six dimensional stress space ...\\
%\hline History: & Created -- June 15, 2007\\
\hline
\end{tabular}
\end{minipage}

\begin{center}
{
\includegraphics[width=0.35\textwidth]{../Figures/YieldHardeningAndPlastPotential.pdf}
}
\end{center}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Goal Statement}

\noindent
\begin{minipage}{\textwidth}
\begin{tabular}{| p{\colAwidth} | p{\colBwidth}|}
\hline
\rowcolor[gray]{0.9}
Label: & G\_StressDetermination\\ \hline
Descrip: & Given the initial stress and the deformation history of a material particle, determine the stress
within the material particle.\\
\hline
Refine: & {T\_ConstitEquation}\\ \hline
%History: & Created -- June 8, 2007\\ \hline
\end{tabular}
\end{minipage}

\begin{center}
{
\includegraphics[width=0.5\textwidth]{../Figures/StressTensor.pdf}
}
\end{center}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Assumptions}

\begin{minipage}{\textwidth}
\begin{tabular}{| p{\colAwidth} | p{\colBwidth}|}
\hline
\rowcolor[gray]{0.9}
Label: & A\_AdditivityPostulate\\ \hline
Related: & {D\_StrainRate}\\ \hline
Equation: & $\dot{\bm{\epsilon}} = \dot{\bm{\epsilon}}^e + \dot{\bm{\epsilon}}^{\mathit{vp}}$\newline
with the following types and units\newline
$\dot{\bm{\epsilon}}: \mbox{tensor2DT}$ (1/t) (1/s)\newline
$\dot{\bm{\epsilon}}^e: \mbox{tensor2DT}$ (1/t) (1/s)\newline
$\dot{\bm{\epsilon}}^{\mathit{vp}}: \mbox{tensor2DT}$ (1/t) (1/s)\\ \hline
Descrip: & The total strain rate ($\dot{\bm{\epsilon}}$) is assumed to decompose into elastic
($\dot{\bm{\epsilon}}^e$) and viscoplastic ($\dot{\bm{\epsilon}}^{\mathit{vp}}$)
strain rates.\\ \hline 
Rationale & This is a standard assumption for elastoplastic and elastoviscoplastic materials.  The 
appropriateness of this assumption is born out by the success of theories built upon it.\\ \hline
Source: & [6, page 339]; [7, page 181]\\ \hline %references hard-coded
%History: & Created -- June 11, 2007\\ \hline
\end{tabular}
\end{minipage}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Theoretical Model}

\begin{minipage}{\textwidth}
\begin{tabular}{| p{\colAwidth} | p{\colBwidth}|}
\hline
\rowcolor[gray]{0.9}
Label: & T\_ConstitEquation\\
\hline
Related: & {A\_CauchyStress}, {A\_DeformationHistory}, {A\_PerzynaConstit}, {A\_AdditivityPostulate},
{A\_ElasticConstit}, {A\_DescriptionOfMotion}, {V\_MaterialProperties}\\
\hline
Input: & $\bm{\sigma}_0: \mbox{tensor2DT}$ (StressU) (Pa)\newline
$t_{\mathit{begin}}: \mathbb{R}$ (t) (s) \newline
$t_{\mathit{end}}: \mathbb{R} $ (t) (s) \newline
$\dot{\bm{\epsilon}}(t) : \{ t: \mathbb{R} | t_{\mathit{begin}} \leq t \leq t_{\mathit{end}} : t \} \rightarrow
\mbox{   } \mbox{   } \mbox{  tensor2DT}$ (1/t) (1/s)\newline
$\mathit{mat\_prop\_val}: \mbox{string} \rightarrow \mathbb{R}$\newline
$E: \mathbb{R}^{+}$ (StressU) (Pa)\newline
$\nu: \mbox{poissonT}$ (dimensionless)
\\
\hline
\end{tabular}
\end{minipage}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Theoretical Model Continued}

\begin{minipage}{\textwidth}
\begin{tabular}{| p{\colAwidth} | p{\colBwidth}|}
\hline
\rowcolor[gray]{0.9}
Label: & T\_ConstitEquation\\
\hline
Output: & $\bm{\sigma}(t): \{ t: \mathbb{R} | t_{\mathit{begin}} \leq t \leq t_{\mathit{end}} : t \} \rightarrow
\mbox{tensor2DT}$ such that 
$$\dot{\bm{\sigma}} = \mathbf{D} \left ( \dot{\bm{\epsilon}} - \gamma < \phi (F(\bm{\sigma},\kappa) ) >
\frac {
\partial Q (\bm{\sigma})}{
\partial \bm{\sigma}} \right )
$$ 
and $\bm{\sigma}(t_{\mathit{begin}}) = \bm{\sigma}_0$,
the components of $\bm{\sigma}$ have the units of StressU (Pa)\\
\hline
Derive: & The governing differential equation is found by first solving for $\dot{\bm{\epsilon}}^e$
in {A\_AdditivityPostulate} and then ...\\
\hline
Descrip: & The theoretical model is only completely defined once the associated
variabilities~({V\_MaterialProperties}) that define the
material have been set.  ...\\
\hline History: & Created -- June 14, 2007\\
\hline
\end{tabular}
\end{minipage}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Variabilities}

\begin{itemize}
\item $F = F(\bm{\sigma}, \kappa): \mathbb{R}^6 \times \mathbb{R} \rightarrow \mathbb{R}$
\item $Q = Q(\bm{\sigma}): \mathbb{R}^6 \rightarrow \mathbb{R}$
\item $\kappa = \kappa(\bm{\epsilon}^{\mathit{vp}}): \mathbb{R}^6 \rightarrow \mathbb{R}$
\item $\phi = \phi(F): \mathbb{R} \rightarrow \mathbb{R}$
\item $\gamma: \mathbb{R}$
\item $\mathit{mat\_prop\_names}: \mbox{set of string}$
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Dependency Graph} %between commonalities

\begin{center}
{
\includegraphics[width=1\textwidth]{../Figures/DependenceGraph.pdf}
}
\end{center}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Dependency Graph Between Commonalities and Variabilities}

\begin{center}
{
\includegraphics[width=1\textwidth]{../Figures/DependenceOfVariabilities.pdf}
}
\end{center}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Example}

\begin{minipage}{\textwidth}
\begin{tabular}{| p{0.24\textwidth} | p{0.65\textwidth}|}
\hline
\rowcolor[gray]{0.9}
Label: & E\_StrainHardening\\ \hline
{V\_MatName} & $\mathit{name = }$``Strain-Hardening Viscoelastic''\\
\hline
{V\_YieldFunct} & $F =  q \kappa^{\frac{n-1}{m}}$ (StressU) (Pa)\\ \hline
{V\_PlasticPot} & $Q = q$ (StressU) (Pa)\\ \hline 
{V\_HardParam} & $\kappa = \epsilon_q^{\mathit{vp}}$ (L/L) (m/m)\\
\hline
{V\_Phi} & $\phi = F^{\frac{m}{n}}$ ($\mbox{StressU}^{\frac{m}{n}}$) ($\mbox{Pa}^{\frac{m}{n}}$)\\
\hline
{V\_FluParam} & $\gamma = n A^{\frac{1}{n}}$ ($\mbox{StressU}^{-m} \mbox{t}^{-1}$) ($\mbox{Pa}^{-m} \mbox{s}^{-1}$)\\ \hline
{V\_MatProps} & $\mathit{mat\_prop\_names} = $ \{``$A$'', ``$m$'', ``$n$'' \}, where the type of the
material properties are ...\\
%There is likely an upper limit on the values for $m$ and $n$, but at this time the value of these limits is unclear. 
%With respect to units, $m$ and $n$ do not have units and $A$ has units of $\mbox{StressU}^{-m} \mbox{t}^{-1}$ ($\mbox{Pa}^{-m}%%
%\mbox{s}^{-1}$)
\hline
{V\_Description} & $\mathit{descript =}$ ``This constitutive equation combines a power-law viscoelastic
material with a strain hardening (softening) material.  ...''
\\ \hline
%Source & \cite{Smith2001}
%\\ \hline
%History & Created -- Sept 21, 2007\\ \hline
\end{tabular}
\end{minipage}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Code Generation}

\begin{itemize}
\item Specify variabilities
\item Symbolically calculate terms needed by numerical algorithm, including $\frac{ \partial Q}{ \partial
\bm{\sigma}}$, $\frac{\partial F}{\partial \bm{\sigma}}$, etc.
\item Symbolic processing avoids tedious and error-prone hand calculations
\begin{itemize}
\item Reduces workload
\item Allows non-experts to deal with new problems
\item Increases reliability
\end{itemize}
\item Use Maple Computer Algebra System for model manipulation
\item Convert math expressions into C expressions using ``CodeGeneration''
\item Inline into a C++ class defining the material model
\item A finite element program can this interface to realize the numerical algorithm
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}[fragile]

\frametitle{BNF of DSL for $F$}

\begin{grammar}
[(colon){$\rightarrow$}]
[(semicolon){$|$}]
[(comma){}]
[(period){\\}]
[(quote){\begin{bf}}{\end{bf}}]
[(nonterminal){$\langle$}{$\rangle$}]
<expression>:<number>;\\
(<expression>);\\
<expression>,\^{ },<expression>;\\
<expression>,$*$,<expression>;\\
\end{grammar}
~~~~~~~...
\begin{grammar}
[(colon){$\rightarrow$}]
[(semicolon){$|$}]
[(comma){}]
[(period){\\}]
[(quote){\begin{bf}}{\end{bf}}]
[(nonterminal){$\langle$}{$\rangle$}]
<simulation-variable-F>;<user-defined-constants>.
<simulation-variable-F>:"Kappa";<simulation-variable-stress>;<simulation-variable-stress-macros>.
<simulation-variable-stress>:"SigmaXX";"SigmaYY";"SigmaZZ";"SigmaXY";\\
"SigmaYZ";"SigmaXZ".
<simulation-variable-stress-macros>:"Sxx";"Syy";"Szz";"Sxy";"Syz";"Sxz";"Sm";"J2";"J3";"q".
<user-defined-constants>:<string>.
\end{grammar}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Concluding Remarks}
\begin{itemize}
\item Case studies of applying software engineering methodologies to mesh generating systems and linear solvers
\item Appropriate and advantageous to apply program family strategy
\item Challenges for software engineers
\item General purpose scientific software is best studied as a program family
\begin{itemize}
\item Variabilities are assumptions about problems that can be handled
\item Derive requirements from commonality analysis
\end{itemize}
\item Eventually hope for automatic code generation
\end{itemize}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Concluding Remarks (Continued)}

A new methodology for documenting requirements for general purpose scientific computing software

\setcounter{temp}{0}

\begin{enumerate}
\setcounter{enumi}{\value{temp}}

\item Validatable requirements
\begin{itemize}
\item Relative comparison between program family members
\item Focus on description rather than specification
\item Solution validation strategy
\end{itemize}
\item Abstract
\begin{itemize}
\item Refine goal statement to theoretical model to input assumptions
\item In some cases one may want to turn off input checking
\item Connection to design
\end{itemize}

\setcounter{temp}{\value{enumi}}
\end{enumerate}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Concluding Remarks (Continued)}

\begin{enumerate}
\setcounter{enumi}{\value{temp}}

\item NFRs
\begin{itemize}
\item Relative comparison
\item AHP
\end{itemize}
\item Capture and reuse
\begin{itemize}
\item Systematic consideration from general to specific
\item CA refined by a family of SRSs
\item CA and SRS summarize existing knowledge and currently available software
\item Standard template allows comparison
\item Convenient framework for summarizing existing literature
\end{itemize}

\setcounter{temp}{\value{enumi}}
\end{enumerate}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle<presentation>{Concluding Remarks}

\begin{itemize}
\item A new template for a family of models of physical phenomena
\item Refinement of \structure{Goals} to \structure{Theoretical Models} using \structure{Data Definitions} and
\structure{Assumptions}
\item \structure{Variabilities} are identified in the Theoretical Model
\item A constitutive equation can be written using a (declarative) DSL and the code can be generated
\item A DSL has been built, using Maple, for a virtual material testing laboratory
\end{itemize}
  
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle<presentation>{Concluding Remarks}

\begin{itemize}
\item SC software is a great candidate for development as a program family
\item Produce programs that are as special or general purpose as needed % run time bindings
\item Improve reusability, usability and reliability
\item Potential to improve performance
\item A commonality analysis facilitates the design of a DSL
\item Symbolic processing and code generation are very useful techniques
\item \structure{We will return to code generation later}
\end{itemize}
  
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{frame}[allowframebreaks]
\frametitle{References}

\bibliography{../../ReferenceMaterial/References}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\end{document}