<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">%\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&lt;presentation&gt;{}

\input{../def-beamer}

\newcommand{\topic}{05 Program Families}

\input{../titlepage}

\begin{document}

\input{../footline}

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

\begin{frame}
\frametitle{Program Families}

\bi
\item Administrative details
\item Questions?
\item Specification Qualities
\item Motivation
\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 Problem statement should be clear on input and output
\item Presentations
\bi
\item VGA by default, ask if need adapter
\item Can use my laptop
\ei
\item Do NOT reproduce all of the cas 741 repo in your repo, just the blank
  project template (moved to the top level)
\item Use the same names as the original
\item Delete example text from templates
\item 80 columns in tex files
\item Spell check
\item Replace ``in order to'' by ``to''
\item Use a \texttt{.gitignore} file
\item Look at \href{https://gitlab.cas.mcmaster.ca/smiths/cas741/blob/master/Repos.xlsx}{work of class mates}
\ei

\end{frame}

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

\begin{frame}
\frametitle{Administrative Details: Deadlines}
~\newline
\begin{tabular}{l l l}
\textbf{Problem Statement} &amp; Week 02 &amp; Sept 15\\
\textbf{SRS Present} &amp; Week 04 &amp; Week of Sept 25\\
\textbf{SRS} &amp; Week 05 &amp; Oct 4\\
V\&amp;V Present &amp; Week 06 &amp; Week of Oct 16\\
V\&amp;V Plan &amp; Week 07 &amp; Oct 25\\
MG Present &amp; Week 08 &amp; Week of Oct 30\\
MG &amp; Week 09 &amp; Nov 8\\
MIS Present &amp; Week 10 &amp; Week of Nov 13\\
MIS &amp; Week 11 &amp; Nov 22\\
Impl.\ Present &amp; Week 12 &amp; Week of Nov 27\\
Final Documentation &amp; Week 13 &amp; 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\&amp;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, \structure{Alex P}, Paul
\item Friday: Yuzhi, Jason, Geneva, Alex S, \structure{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 problem statements?
\item Questions about SRS?
\end{itemize}
\end{frame}

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

\begin{frame}
\frametitle{Specification Qualities}

\begin{itemize}

\item \structure{What are the important qualities for a specification?}

\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Specification Qualities}

\begin{itemize}
\item The qualities we previously discussed (usability, maintainability,
  reusability, verifiability etc.)
\item Clear, unambiguous,  understandable
\item Consistent
\item Complete
\begin{itemize}
\item Internal completeness
\item External completeness
\end{itemize}
\item Incremental
\item Validatable
\item Abstract
\item Traceable
\end{itemize}

Summarized in \cite[p.\ 406]{SmithAndKoothoor2016}

\end{frame}

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

\begin{frame}
\frametitle{Clear, Unambiguous, Understandable}

\begin{itemize}

\item Specification fragment for a word-processor
\begin{itemize}
\item \structure{Selecting is the process of designating 
areas of the document that you want to 
work on. Most editing and formatting 
actions require two steps: first you 
select what you want to work on, 
such as text or graphics; then you 
initiate the appropriate action.}
\end{itemize}
\item What are the potential problems with this specification?
\begin{itemize}
\item&lt;2-&gt; {\alert{Can an area be scattered?}}
\item&lt;2-&gt;{\alert{Can both text and graphics be selected?}}
\end{itemize}
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Clear, Unambiguous, Understandable}

\begin{itemize}

\item Specification fragment from a real safety-critical system
\begin{itemize}
\item \structure{The message must be triplicated. The three
copies must be forwarded through three 
different physical channels. The receiver 
accepts the message on the basis of a 
two-out-of-three voting policy.}
\end{itemize}
\item What is a potential problems with this specification?
\begin{itemize}
\item&lt;2-&gt; {\alert{Can a message be accepted as soon as we receive 2 out of 3 identical copies, or do we need to wait
for receipt of the 3rd}}
\end{itemize}
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Unambiguous, Validatable}

\begin{itemize}

\item Specification fragment for an end-user program
\begin{itemize}
\item \structure{The program shall be user friendly.}
\end{itemize}
\item What is a potential problems with this specification?
\begin{itemize}
\item&lt;2-&gt; {\alert{What does it mean to be user friendly?}}
\item&lt;2-&gt; {\alert{Who is a typical user?}}
\item&lt;2-&gt; {\alert{How would you measure success or failure in meeting this requirement?}}
\end{itemize}

\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Unambiguous, Validatable}

\begin{itemize}

\item Specification fragment for a linear solver
\begin{itemize}
\item \structure{Given $A$ and $b$, solve the  linear system $A x = b$ for $x$, such that the error in any entry of
$x$ is less than 5 \%.}
\end{itemize}
\item What is a potential problems with this specification?
\begin{itemize}
\item&lt;2-&gt; {\alert{Is $A$ constrained to be square?}}
\item&lt;2-&gt; {\alert{Can $A$ be singular?}}
\item&lt;2-&gt; {\alert{Even if the problem is made completely unambiguous, the requirement cannot be validated.}}
\end{itemize}

\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Consistent}

\begin{itemize}

\item Specification fragment for a word-processor
\begin{itemize}
\item \structure{The whole text should be kept in lines 
of equal length. The length is specified 
by the user. Unless the user gives an 
explicit hyphenation command, 
a carriage return should occur only 
at the end of a word.}
\end{itemize}
\item What is a potential problems with this specification?
\begin{itemize}
\item&lt;2-&gt; {\alert{What if the length of a word exceeds the length of the line?}}
\end{itemize}

\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Same Symbol/Term Different Meaning}

\begin{itemize}

\item \structure{Can you think of some symbols/terms that have different
    meanings depending on the context?}

\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Consistent}

\begin{itemize}

\item Language and terminology must be consistent within the specification
\item Potential problem with homonyms, for instance consider the symbol $\sigma$
\begin{itemize}
\item Represents standard deviation
\item Represents stress
\item Represents the Stefan-Boltzmann constant (for radiative heat transfer)
\end{itemize}
\item Changing the symbol may be necessary for consistency, but it could adversely effect understandability
\item Potential problem with synonyms
\begin{itemize}
\item Externally funded graduate students, versus eligible graduate students, versus non-VISA students
%ask who would think about graduate school?
\item Material behaviour model versus constitutive equation
\end{itemize}
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Complete}

\begin{itemize}

\item Internal completeness
\begin{itemize}
\item The specification must define any new concept or terminology that it uses
\begin{itemize}
\item A glossary is helpful for this purpose
\end{itemize}
\end{itemize}
\item External completeness
\begin{itemize}
\item The specification must document all the needed requirements
\begin{itemize}
\item Difficulty: when should one stop?
\end{itemize}
\end{itemize}

\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Incremental}

\begin{itemize}

\item Referring to the specification process
\begin{itemize}
\item Start from a sketchy document and progressively add details
\item A document template can help with this
\end{itemize}
\item Referring to the specification document
\begin{itemize}
\item Document is structured and can be understood in increments
\item Again a document template can help with this
\end{itemize}

\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Traceable}

\begin{itemize}

\item Explicit links
\bi
\item Within document
\item Between documents
\ei
\item Use labels, cross-references, traceability matricies
\item Common sense suggests traceability improves maintainability
\item Shows consequence of change
\item Minimizes cost of recertification
\item Additional advantages
\bi
\item Program comprehension
\item Impact analysis
\item Reuse
\ei
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Accuracy Versus Precision}

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

\structure{What is the distinction between accuracy and precision?}

\end{frame}

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

\begin{frame}
\frametitle{Program Families}

\begin{itemize}

\item Can think of general purpose (or multi-purpose) SC software as a program
  family
\item Some examples of physical models are also appropriate for consideration as
  a family
\item A program family is a set of programs where it makes more sense to develop
  them together as opposed to separately
\item Analogous to families in other domains
\begin{itemize}
\item Automobiles
\item Computers
\item ...
\end{itemize}
\item Need to identify the commonalities
\item Need to identify the variabilities
\item Discussed in general in \cite{ClementsAndNorthrop2001,PohlEtAl2005}
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Background}

\begin{itemize}

\item Program family idea since the 1970s (Dijkstra, Parnas, Weiss, Pohl, ...) - variabilities are often from a finite
set of simple options \cite{Parnas1976, Parnas1979, Dijkstra1972}
\item Families of algorithms and code generation in SC (Carette, ATLAS, Blitz++, ...) - not much emphasis on
requirements \cite{Carette2006, WhaleyEtAl2001, Veldhuizen1998, Blitz2010}
%\item Problem Solving Environments (PSEs)
\item Work on requirements for SC
\begin{itemize}
\item Template for a single physical model \cite{SmithEtAl2007, SmithAndLai2005}
\item Template for a family of multi-purpose tool \cite{Smith2006,
    SmithAndChen2004, SmithAndChen2004b}
\item Template for a family of physical models
  \cite{SmithMcCutchanAndCarette2017, SmithEtAl2008, McCutchan2007}
\end{itemize}
\end{itemize}

\end{frame}

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

\begin{frame}

\frametitle{Motivation}
%:Improve Quality of Product and Process
\begin{itemize}

\item Requirements documentation
\begin{itemize}
\item Allows judgement of quality %need to know what require, 
\item Improves communication
\begin{itemize}
\item Between domain experts% and domain experts %missing models etc.
\item Between domain experts and programmers %experts on num algos
\item Explicit assumptions
\item Range of applicability
%\item Tradeoffs between nonfunctional requirements %ends arguments about best, 
% need to know what is most imp, might not need same accuracy for every aspect of the problem
\end{itemize}
%\item Provides a foundation for incremental delivery
\end{itemize}

\item A family approach, potentially including a DSL to allow generation of specialized programs
\begin{itemize}
\item Improves efficiency of product and process
\item Facilitates reuse of requirements and design, which improves reliability
\item Improves usability and learnability%DSL
%\item Improves learnability for non-experts %DSL
\item Clarifies the state of the art
\end{itemize}

\end{itemize}

\end{frame}

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

\begin{frame}

\frametitle{Advantages of Program Families to SC?}

\begin{itemize}
\item Usual benefits
\begin{itemize}
\item Reduced development time
\item Improved quality
\item Reduced maintenance effort
\item Increased ability to cope with complexity
\end{itemize}
\item Reusability
\begin{itemize}
\item Underused potential for reuse in SC
\item Reuse commonalities
\item Systematically handle variabilities
\end{itemize}
\item Usability
\begin{itemize}
\item Documentation often lacking in SC
\item Documentation part of program family methodology
\item Create family members that are only as general purpose as necessary
\end{itemize}
\item Improved performance
\end{itemize}

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

\begin{enumerate}
\setcounter{enumi}{\value{temp}}
\item Validatable
\begin{itemize}
\item Requirements can be complete, consistent, traceable and unambiguous, but still not validatable
\item Input and outputs are continuously valued variables
%\item Examples continuously valued variables: time, velocity, temperature, displacement, concentration, stress, etc.
%\item Infinite number of inputs and outputs
\item Correct solution is unknown a priori %difficult to have a test oracle
\item Given $dy/dt = f(t, y)$ and $y(t_0) = y_0$, find $y(t_n)$ 
%, where $y(t)$ is a function ($y:\mathbb{R} \rightarrow 
%\mathbb{R}$), $f(t,y)$ is a function ($f:\mathbb{R}\times \mathbb{R} \rightarrow \mathbb{R}$), $t$ is an independent
%variable (often time), $t_0$ is an initial value for $t$ and $t_n$ is the final value for $t$
%\item For arbitrary $f(t, y)$ the true solution is unknown, correct value is often not known a priori
%\item Same problem with $Ax = b$
%\item $\int e^{x^2} dx$
%\item Passing one test does not imply passing a nearby test
\end{itemize}
\item Abstract
\begin{itemize}
% \item Not difficult to be abstract
\item If too abstract, then difficult to meet NFRs for accuracy and speed
\item Assumptions can help restrict scope, but possibly as much work as solving the original problem
\begin{itemize}
\item $A x = b$
\item $x^T A x &gt; 0, \forall x$
\end{itemize}
%say output should be solution, or say cannot compute, possibly with a reason
\item Algorithm selection should occur at the design stage

\end{itemize}

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

\end{frame}

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

\begin{frame}

\frametitle{Challenges (Continued)}

\begin{enumerate}
\setcounter{enumi}{\value{temp}}
\item Nonfunctional requirements
\begin{itemize}
\item Proving accuracy requirements with a priori error analysis is a difficult mathematical exercise that generally
leads to weak error bounds
% mention Wilkinson
\item Context sensitive tradeoffs between NFRs can be difficult to specify
\item Absolute quantitative requirements are often unrealistic
% make the point about relative requirements elsewhere
\end{itemize}
\item Capture and Reuse Existing Knowledge
\begin{itemize}
\item Cannot ignore the enormous wealth of information that currently exists %not a green field development
\item A good design will often involve integrating existing software libraries
\item Reuse software and the requirements documentation
% scientific software is stable
\end{itemize}

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

\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 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} &amp; C1\\
\hline
{\bf Description} &amp; 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} &amp; V6, V8, V12, V14, V15, V16, V17, V18\\
\hline
{\bf History} &amp; 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]

&lt;elementSet&gt;
    &lt;geometrySpec&gt;
        &lt;shape&gt;triangle1&lt;/shape&gt;
        &lt;nodeGeo count="3"&gt;
            &lt;node id="1"&gt;
                &lt;location&gt;1,0,0&lt;/location&gt;
            &lt;/node&gt;
            &lt;node id="2"&gt;
                &lt;location&gt;0,1,0&lt;/location&gt;
            &lt;/node&gt;
            ...
        &lt;/nodeGeo&gt;
    &lt;/geometrySpec&gt;
&lt;/elementSet&gt;
\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}$ &amp; number of linear equations and the number of unknowns\\
%$A: \mathbb{R}^{n \times n}$ &amp; $n \times n$ real matrix\\
%$x: \mathbb{R}^{n \times 1}$ &amp; $n \times 1$ real column vector\\
%$b: \mathbb{R}^{n \times 1}$ &amp; $n \times 1$ real column vector\\
%$I: \mathbb{R}^{n \times n}$ &amp; 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}$ &amp; the inverse matrix, with the property that $A^{-1} A = I$\\
%$|| v || $ &amp; the norm (estimate of magnitude) of vector $v$\\
%residual &amp; $|| b - A x ||$\\
%singular &amp; 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} &amp; \textbf{Parameter of Variation} \\
\hline
Allowed structure  $A$ &amp; Set of \{ full, sparse, banded, tridiagonal, block triangular, ...,
%block structured, diagonal, upper triangular, lower triangular, 
Hessenberg \} \\
\hline
Allowed definiteness $A$ &amp; Set of \{ not definite, positive definite, ...,
%positive semi-definite, negative definite, 
negative semi-definite \} \\
\hline
Allowed class of $A$ &amp; Set of \{ diagonally dominant, Toeplitz, Vandermonde \} \\
\hline
Symmetry\newline assumed? &amp; boolean \\
\hline
Possible values for $n$ &amp; set of $\mathbb{N}$ \\
\hline
Possible entries in $A$ &amp; set of $\mathbb{R}$ \\
\hline
... &amp; ... \\
%Possible entries in $b$ &amp; set of $\mathbb{R}$ \\
%\hline
%Source\newline of input &amp; Set of \{ from a file, through the user interface, passed in memory \} \\
%\hline
%Encoding of input &amp; Set of \{binary, text \} \\
%\hline
%Format\newline of input $A$ &amp; Set of \{arbitrary, by row, by column, by diagonal \} \\
%\hline
%Format\newline of input $b$ &amp; Set of \{arbitrary, ordered \} \\\hline
\end{tabular}

\end{frame}

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

\begin{frame}

\frametitle{Variabilities for Calculation}

\begin{tabular}{| p{\colA} | p{\colB} | }
\hline
\textbf{Variability} &amp; \textbf{Parameter of Variation} \\
\hline
Check input? &amp; boolean (false if the input is assumed to satisfy the input assumptions)\\ 
\hline
Exceptions generated? &amp; boolean (false if the goal is non-stop arithmetic)\\ 
\hline
Norm used for residual &amp; 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} &amp; \textbf{Parameter of Variation} \\
\hline
Destination for output $x$ &amp; Set of \{ to file, to screen, to memory \} \\
\hline
Encoding of output $x$ &amp; Set of \{binary, text \} \\
\hline
Format of output $x$ &amp; Set of \{arbitrary, ordered \} \\
\hline
Output residual &amp; boolean (true if the program returns the residual) \\
\hline
Possible entries in $x$ &amp; 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
~ &amp; \textbf{Speed} &amp; \textbf{Accuracy} &amp; \textbf{Portability} &amp; \textbf{Priority}\\
\hline
\textbf{Speed} &amp; 1 &amp; 3 &amp; 5 &amp; 0.64\\
\textbf{Accuracy} &amp; 1/3 &amp; 1 &amp; 3 &amp; 0.26\\
\textbf{Portability} &amp; 1/5 &amp; 1/3 &amp; 1 &amp; 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} &amp;
\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: &amp; D\_YieldFunction\\ \hline
Symbol: &amp; $F = F(\bm{\sigma}, \kappa)$\\ \hline
Type: &amp; $(\mbox{tensor2DT} \times \mathbb{R}) \rightarrow \mathbb{R}$\\ \hline
%Units: &amp; --\\ \hline
Related: &amp; {D\_Stress}, {D\_HardeningParameter}\\ \hline %originally related items, shorted for space
Sources: &amp; ...\\
\hline Descrip: &amp; The yield function defines a surface $F = 0$ in the six dimensional stress space ...\\
%\hline History: &amp; 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: &amp; G\_StressDetermination\\ \hline
Descrip: &amp; Given the initial stress and the deformation history of a material particle, determine the stress
within the material particle.\\
\hline
Refine: &amp; {T\_ConstitEquation}\\ \hline
%History: &amp; 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: &amp; A\_AdditivityPostulate\\ \hline
Related: &amp; {D\_StrainRate}\\ \hline
Equation: &amp; $\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: &amp; 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 &amp; 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: &amp; [6, page 339]; [7, page 181]\\ \hline %references hard-coded
%History: &amp; 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: &amp; T\_ConstitEquation\\
\hline
Related: &amp; {A\_CauchyStress}, {A\_DeformationHistory}, {A\_PerzynaConstit}, {A\_AdditivityPostulate},
{A\_ElasticConstit}, {A\_DescriptionOfMotion}, {V\_MaterialProperties}\\
\hline
Input: &amp; $\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: &amp; T\_ConstitEquation\\
\hline
Output: &amp; $\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 &lt; \phi (F(\bm{\sigma},\kappa) ) &gt;
\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: &amp; The governing differential equation is found by first solving for $\dot{\bm{\epsilon}}^e$
in {A\_AdditivityPostulate} and then ...\\
\hline
Descrip: &amp; The theoretical model is only completely defined once the associated
variabilities~({V\_MaterialProperties}) that define the
material have been set.  ...\\
\hline History: &amp; 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: &amp; E\_StrainHardening\\ \hline
{V\_MatName} &amp; $\mathit{name = }$``Strain-Hardening Viscoelastic''\\
\hline
{V\_YieldFunct} &amp; $F =  q \kappa^{\frac{n-1}{m}}$ (StressU) (Pa)\\ \hline
{V\_PlasticPot} &amp; $Q = q$ (StressU) (Pa)\\ \hline 
{V\_HardParam} &amp; $\kappa = \epsilon_q^{\mathit{vp}}$ (L/L) (m/m)\\
\hline
{V\_Phi} &amp; $\phi = F^{\frac{m}{n}}$ ($\mbox{StressU}^{\frac{m}{n}}$) ($\mbox{Pa}^{\frac{m}{n}}$)\\
\hline
{V\_FluParam} &amp; $\gamma = n A^{\frac{1}{n}}$ ($\mbox{StressU}^{-m} \mbox{t}^{-1}$) ($\mbox{Pa}^{-m} \mbox{s}^{-1}$)\\ \hline
{V\_MatProps} &amp; $\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} &amp; $\mathit{descript =}$ ``This constitutive equation combines a power-law viscoelastic
material with a strain hardening (softening) material.  ...''
\\ \hline
%Source &amp; \cite{Smith2001}
%\\ \hline
%History &amp; 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$}]
&lt;expression&gt;:&lt;number&gt;;\\
(&lt;expression&gt;);\\
&lt;expression&gt;,\^{ },&lt;expression&gt;;\\
&lt;expression&gt;,$*$,&lt;expression&gt;;\\
\end{grammar}
~~~~~~~...
\begin{grammar}
[(colon){$\rightarrow$}]
[(semicolon){$|$}]
[(comma){}]
[(period){\\}]
[(quote){\begin{bf}}{\end{bf}}]
[(nonterminal){$\langle$}{$\rangle$}]
&lt;simulation-variable-F&gt;;&lt;user-defined-constants&gt;.
&lt;simulation-variable-F&gt;:"Kappa";&lt;simulation-variable-stress&gt;;&lt;simulation-variable-stress-macros&gt;.
&lt;simulation-variable-stress&gt;:"SigmaXX";"SigmaYY";"SigmaZZ";"SigmaXY";\\
"SigmaYZ";"SigmaXZ".
&lt;simulation-variable-stress-macros&gt;:"Sxx";"Syy";"Szz";"Sxy";"Syz";"Sxz";"Sm";"J2";"J3";"q".
&lt;user-defined-constants&gt;:&lt;string&gt;.
\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&lt;presentation&gt;{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&lt;presentation&gt;{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}</pre></body></html>