Skip to content
Snippets Groups Projects
Forked from W. Spencer Smith / cas741
703 commits behind the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ProgFamContinued.tex 34.45 KiB
%\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 Proposed Family Methods
\item Family of Mesh Generators
\item Family of Linear Solvers
\item Family of Material Behaviour Models
\ei
\end{frame}

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

\begin{frame}
\frametitle{Administrative Details}

\bi
\item Marking scheme for SRS
\item Grade columns in Avenue
\ei

\end{frame}

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

\begin{frame}
\frametitle{Administrative Details: Deadlines}
~\newline
\begin{tabular}{l l l}
\textbf{Problem Statement} & Week 02 & Sept 15\\
\textbf{SRS Present} & Week 04 & Week of Sept 25\\
\textbf{SRS} & Week 05 & Oct 4\\
V\&V Present & Week 06 & Week of Oct 16\\
V\&V Plan & Week 07 & Oct 25\\
MG Present & Week 08 & Week of Oct 30\\
MG & Week 09 & Nov 8\\
MIS Present & Week 10 & Week of Nov 13\\
MIS & Week 11 & Nov 22\\
Impl.\ Present & Week 12 & Week of Nov 27\\
Final Documentation & Week 13 & Dec 6\\
\end {tabular}

\end{frame}

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

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

\bi
\item{SRS Present}
\bi
\item Tuesday: Paul, Isobel, Keshav
\item Friday: Devi, Shushen, Xiaoye
\ei
\item V\&V Present
\bi
\item Tuesday: Steven, Alexandre P., Alexander S.
\item Friday: Geneva, Jason, Yuzhi
\ei
\item MG Present
\bi
\item Tuesday: Xiaoye, Shushen, Devi, Keshav, Alex P, Paul
\item Friday: Yuzhi, Jason, Geneva, Alex S, Isobel, Steven
\ei
\item MIS Present
\bi
\item Tuesday: Isobel, Keshav, Paul
\item Friday: Shushen, Xiaoye, Devi
\ei
\item Impl.\ Present
\bi
\item Tuesday: Alexander S., Steven, Alexandre P.
\item Friday: Jason, Geneva, Yuzhi
\ei

\ei

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Questions?}
\begin{itemize}
\item Questions about
\bi
\item SRS presentations?
\item SRS documents?
\item LaTeX?
\ei
\end{itemize}
\end{frame}

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

\begin{frame}
\frametitle{Overview of Process}

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

\end{frame}

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

\begin{frame}

\frametitle{CA to SRS to Design}

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

% mention an overview of what goes in the boxes

\end{frame}

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

\begin{frame}

\frametitle{Proposed Methodology}

\begin{enumerate}

\item Identify family of interest
\begin{itemize}
\item Specific physical model?
\item Multipurpose tool?
\end{itemize}
\item Commonality Analysis (CA)
\begin{itemize}
\item Terminology
\item Commonalities
\item Variabilities
\item Parameters of variation
\item Binding time
\end{itemize}
\item Domain Specific Language (DSL)
\item Generation of family members

\end{enumerate}

\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{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 time
\item Compile time
\item 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,}}

\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{Solution Validation Strategies}

\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}