Skip to content
Snippets Groups Projects
Requirements.tex 23.5 KiB
Newer Older
%\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}

\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}{03 Requirements}

\input{../titlepage}

\begin{document}

\input{../footline}

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

\begin{frame}
\frametitle{Requirements}

\bi
\item Administrative details
\item Questions: project choices?, software tools?
\item Problem statement questions?
%\item Software Engineering for Scientific Computing literature
\item Scientific Computing Software Qualities
\item Motivation: Challenges to Developing Quality Scientific Software
\item Requirements documentation for scientific computing
\item A requirements template
\item Advantages of new template and examples
\item The template from a software engineering perspective
\item Concluding remarks
\item References
\ei
\end{frame}

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

\begin{frame}
\frametitle{Administrative Details}

\bi
% \item Can everyone access GitLab?
%   \href{https://gitlab.cas.mcmaster.ca/smiths/cas741}{https://gitlab.cas.mcmaster.ca/smiths/cas741}
\item Accounts requested for all non-CAS students to access
\href{https://gitlab.cas.mcmaster.ca/smiths/pub} {the publications repo}
\item Use the \href{https://github.com/smiths/capTemplate} {GitHub template} to
create a new repo
\item Add \texttt{smiths} to your GitHub repo
\item Remove \href{https://github.com/ace-lectures/cas-handbook-req-template/tree/dd9cfe1020cc11c88315c0311e7027e5447a148d} {SRS-Meyer}, \href{https://github.com/smiths/capTemplate/tree/main/docs/SRS-Volere} {SRS-Volere}, \href{https://github.com/smiths/capTemplate/tree/main/docs/Reflection} {Reflection}, \href{https://github.com/smiths/capTemplate/tree/main/docs/HazardAnalysis} {Hazard Analysis}, \href{https://github.com/smiths/capTemplate/tree/main/docs/Presentations} {Presentations}
\end{itemize}
\item Create a fork and a 
\href{https://gitlab.cas.mcmaster.ca/smiths/cas741/-/merge_requests} {merge
request} to modify
\href{https://gitlab.cas.mcmaster.ca/smiths/cas741/-/blob/master/Repos.csv}
{Repos.csv} with your project details
\item Only two projects in Repos.csv so far
\item \structure{Is anyone still considering dropping the course?}
\ei

\end{frame}

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

\input{../Deadlines.tex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \begin{frame}
% \frametitle{Introductions}

% \begin{itemize}
% \item Your name
% \item Degree program
% \item Academic background
% \item Experience with:
% \begin{itemize}
% \item Science (such as physics)
% \item Scientific computing
% \item Continuous math
% \item Discrete math
% \item Software engineering
% \item Software development technology
% \bi
% \item Git
% \item GitHub or GitLab
% \item LaTeX
% \item Make etc.
% \ei
% \end{itemize}
% \item What do you hope to get out of this course?
% \end{itemize}

% \end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Questions?}
\begin{itemize}
\item Questions about project choices?
\item Questions about software tools?
\item Questions about
\href{https://github.com/smiths/capTemplate/tree/main/docs/ProblemStatementAndGoals}
{Problem statement and goals}? (also see \href
{https://github.com/smiths/capTemplate/blob/main/docs/Checklists/ProbState-Checklist.pdf}
{prob state checklist} and
\href{https://github.com/smiths/capTemplate/blob/main/docs/Checklists/Writing-Checklist.pdf} {writing checklist}) 
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Definition of Software Qualities}

\begin{itemize}
\item Measures of the excellence or worth of a software product (code or document) or process
with respect to some aspect
\item \structure{What are some important aspects (qualities) for scientific software?}
\item User Satisfaction = The Important Qualities are High + Within Budget
\item We will focus on qualities relevant for software, including qualities
    for the documentation, code and executable
\end{itemize}
\end{frame}

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

\begin{frame}

\frametitle{Important Qualities for Scientific Computing Software}

\begin{itemize}

\item External qualities
\begin{itemize}
\item Correctness (Thou shalt not lie)
\item Reliability
\item Robustness
\item Performance
\begin{itemize}
%\item Tight bounds
\item Time efficiency
\item Space efficiency
\end{itemize}
\end{itemize}

\item Internal qualities
\begin{itemize}
\item Verifiability
\item Usability
\item Maintainability
%\begin{itemize}
%\item Repairability
%\item Evolvability
%\end{itemize}
\item Reusability
\item Portability
\end{itemize}

\end{itemize}

Definitions in \cite{GhezziEtAl2003}.

\end{frame}

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

\begin{frame}
\frametitle{Correctness Versus Reliability Versus Robustness}

What is the difference between these 3 qualities?\\
~\\
Can you assess correctness without a requirements specification?

\end{frame}

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

\begin{frame}
\frametitle{Correctness}

\begin{itemize}
\item A software product is correct if it satisfies its requirements specification
\item Correctness is extremely difficult to achieve because
\begin{itemize}
\item The requirements specification may be imprecise, ambiguous, inconsistent,
  based on incorrect knowledge, or nonexistent
\item Requirements often compete with each other
\item It is virtually impossible to produce ``bug-free'' software
\item It is very difficult to verify or measure correctness
\end{itemize}
\item If the requirements specification is formal, correctness can in theory and
  possibly in practise be
\begin{itemize}
\item Mathematically defined
\item Proven by mathematical proof
\item Disproven by counterexample
\end{itemize}
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Reliability}

\begin{itemize}
\item A software product is reliable if it usually does what is intended to do
\item Correctness is an absolute quality, while reliability is a relative quality
\item A software product can be both reliable and incorrect
\item Reliability can be statistically measured
\item Software products are usually much less reliable than other engineering
  products
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Robustness}

\begin{itemize}
\item A software product is robust if it behaves reasonably even in
  unanticipated or exceptional situations
% example of saving a file and power is lost
\item A correct software product need not be robust
\begin{itemize}
\item Correctness is accomplished by satisfying requirements
\item Robustness is accomplished by satisfying unstated requirements
\end{itemize}
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Question on Correctness. Reliability and Robustness}

Reliable programs are a superset of correct programs AND robust programs are a
superset of reliable programs.  Is this statement True or False?
\begin{enumerate}[A.]
\item True
\item False %answer - robust programs may or may not be correct or reliable
\end{enumerate}

\end{frame}

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

\begin{frame}
\frametitle{Performance}

What are some ways you could measure software performance?\\
~\\
What are some ways you could specify performance requirements to make them
unambiguous and verifiable?

\end{frame}

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

\begin{frame}
\frametitle{Performance}

\begin{itemize}
\item The performance of a computer product is the efficiency with which the
  product uses its resources (memory, time, communication)
\item Performance can be evaluated in three ways
\begin{itemize}
\item Empirical measurement
\item Analysis of an analytic model
\item Analysis of a simulation model
\end{itemize}
\item Poor performance often adversely affects the usability and scalability of
  the product
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Usability}

\structure{What are some examples of excellent usability?}\\
\structure{When you visit a hotel, especially in another country, do you expect
  some confusion with operating the shower? the microwave? the TV?}

\end{frame}

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

\begin{frame}
\frametitle{Usability}

\begin{itemize}
\item The usability of a software product is the ease with which a typical human
  user can use the product
\item Usability depends strongly on the capabilities and preferences of the user
\item The user interface of a software product is usually the principle factor
  affecting the product's usability
\item Human computer interaction (HCI) is a major interdisciplinary subject
  concerned with understanding and improving interaction between humans and
  computers
\item \textbf{If you project is relatively simple, usability is a place where
your project can ``shine''}
\end{itemize}
% talk about IBM usability lab and other things that Muir mentioned
\end{frame}

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

\begin{frame}
\frametitle{Verifiability}

\begin{itemize}
\item The verifiability of a software product is the ease with which the
  product's properties (such as correctness and performance) can be verified
\item Verifiability can be both an internal and an external quality
%\item What is the relationship between verifiability and correctness?
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Productivity}

\begin{itemize}
\item The productivity of a software development process is the measure of how
  efficiently the process produces software
\item Productivity highly depends on the skills and organization of the development team
\item Productivity is very hard to measure
\item The number of lines of code per unit time is a terrible metric for
  measuring software productivity
% mention capstone students and their copy and paste modules and code
\item Productivity can be greatly increased by the use of development tools,
  environments, and methods
\item Software reuse decreases productivity in the short term, but increases
  productivity in the long term
\item See \href{https://arxiv.org/pdf/2112.12580.pdf} {SmithAndCarette2021} for
some thoughts on productivity
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Maintainability}

\begin{itemize}
\item The maintainability of a software product is the ease with which the
  product can be modified after its initial release
\item Maintenance costs can exceed 60\% of the total cost of the software product
\item There are three main categories of software maintenance
\begin{enumerate}
\item Corrective: Modifications to fix residual and introduced errors
\item Adaptive: Modifications to handle changes in the environment in which the product is used
\item Perfective: Modifications to improve the qualities of the software
\end{enumerate}
\item Software maintenance can be divided into two separate qualities
\begin{enumerate}
\item Repairability: The ability to correct defects
\item Evolvability: The ability to improve the software and to keep it current
\end{enumerate}
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Maintainability}

What do software developers do to promote maintainability?

% documentation, traceability, separation of concerns, modularity, design for
% change, design for generality

\end{frame}

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

\begin{frame}
\frametitle{Reusability}

\structure{What are the advantages of reusing code?}\\
\structure{Why doesn't it happen more often?}

\end{frame}

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

\begin{frame}
\frametitle{Reusability}

\begin{itemize}
\item A software product or component is reusable if it can be used to create a
  new product
\item Reuse comes in two forms
\begin{enumerate}
\item Standardized, interchangeable parts
\item Generic, instantiable components
\end{enumerate}
\item Reusability is a bigger challenge in software engineering than in other
  areas of engineering
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Portability}

\begin{itemize}
\item A software product is portable if it can run in different environments
\item The environment for a software product includes the hardware platform, the
  operating system, the supporting software and the user base
\item Since environments are constantly changing, portability is often crucial
  to the success of a software product
\item Some software such as operating systems and compilers, is inherently
  machine specific
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Understandability}

\begin{itemize}
\item The understandability of a software product is the ease with which the
  requirements, design, implementation, documentation, etc. can be understood
\item Understandability is an internal quality that has an impact on other
  qualities such as verifiability, maintainability, and reusability
\item There is often a tension between understandability and the performance of
  a software product
\item Some useful software products completely lack understandability
  (e.g. those for which the source code is lost)
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Reproducibility}

\begin{itemize}
\item The cornerstone of the scientific method~\cite{Davison2012}
\item QA has, ``a bad name among creative scientists and
  engineers''~\cite[p.~352]{Roache1998}, but participating in QA also improves reproducibility
\item Reproducibility benefits from a consistent and repeatable
  computing environment, version control and separating code from
  configuration/parameters~\cite{Davison2012}
\item Historically not well done for SCS
\item Need for action is highlighted by a study of 402 computer systems papers -
  only 48.3\% of the code was both available and compilable
  \cite{CollbergEtAl2015}.
\item \cite{CrickAndHall2014} point out potential roadblocks for
  reproducibility, including page length constraints and differing detail needs
  depending on the audience
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Reproducibility}

\begin{itemize}
\item Interest is growing \cite{BaileyEtAl2016, BenureauAndRougier2017}
\item Progress on re-running old code with docker, VMs
\item Replicability is rarely achieved, as shown for microarray gene expression
  \cite{IoannidisEtAl2009} and for economics modelling
  \cite{IonescuAndJansson2013}
\item Long way to go to replicability from original theory
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Sustainability}

\begin{itemize}
\item The latest ``buzz word''
\item Seems to mean maintainability + productivity
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Relationship between Qualities}

Draw a diagram showing the relationships between the various software qualities

\end{frame}

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

\begin{frame}
\frametitle{Measurement of Quality}

\begin{itemize}
\item A software quality is only important if it can be measured - without
  measurement there is no basis for claiming improvement
\item A software quality must be precisely defined before it can be measured
\item Most software qualities do not have universally accepted
\item Can you directly measure maintainability?
\item How might you measure maintainability?
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{SRS versus CA}

\begin{itemize}
\item SRS (Software Requirements Specification)
\begin{itemize}
\item Requirements for a software product
\item Usually for specific physical problems
\end{itemize}
\item CA (Commonality Analysis)
\begin{itemize}
\item Requirements for a family of related software products
\item Sometime for specific physical problems
\item Commonly used for a \structure{library of general purpose tools}
\item Distinguish commonalities, variabilities and parameters of variation
\end{itemize}

\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Big Picture View of SRS/CA}

\begin{itemize}
\item Goal statement(s)
\item Inputs and outputs
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Goal Statements for SWHS}

\structure{What are the goal statement for the Solar Water Heating System?
(\href{https://jacquescarette.github.io/Drasil/examples/nopcm/SRS/srs/NoPCM_SRS.html}
{NoPCM SRS})} 

~\\

\structure{Think in terms of what are the inputs and outputs? For
the goals, you might want to first think about the outputs.}

\end{frame}

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

\begin{frame}
\frametitle{Goal Statements for noPCM}

\noindent Given the temperature of the heating coil, initial conditions for the
temperature of the water, and material properties, the goal statements are:

\begin{itemize}

\item[GS1:] Predict the water temperature over time.
\item[GS2:] Predict the change in the energy of the water over time.

\end{itemize}

~\\

\begin{itemize}
  \item Consider using names instead of numbers for labels.
  \item For
\href{https://jacquescarette.github.io/Drasil/examples/swhs/SRS/srs/SWHS_SRS.html}
{SWHS} add goals related to the Phase Change Material
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Goal Statements for GlassBR}

For
\href{https://jacquescarette.github.io/Drasil/examples/glassbr/SRS/srs/GlassBR_SRS.html}
{GlassBR}:

~\\

Given the dimensions of the glass plane, glass type, the characteristics of the
explosion, and the tolerable probability of breakage, the goal statements are:
\begin{itemize}
\item[GS1:] Analyze and predict whether the glass slab under consideration will
  be able to withstand the explosion of a certain degree which is calculated
  based on user input.
\end{itemize}  

\end{frame}

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

\begin{frame}[plain]
\frametitle{Goal Statements for Game Physics}

\noindent For
\href{https://jacquescarette.github.io/Drasil/examples/gamephysics/SRS/srs/GamePhysics_SRS.html}
{Game Physics}:

\begin{itemize}
	
\item[G\_linear:] Given the physical properties, initial positions and
  velocities, and forces applied on a set of rigid bodies, determine their new
  positions and velocities over a period of time (IM-IM\_FT).

\item[G\_ang:] Given the physical properties, initial orientations and
  angular velocities, and forces applied on a set of rigid bodies, determine
  their new orientations and angular velocities over a period of
  time. (IM-IM\_FR).

\item[G\_dtcCol:] Given the initial positions and velocities of a set
  of rigid bodies, determine if any of them will collide with one another over a
  period of time.

\item[G\_Col:] Given the physical properties, initial linear and angular
  positions and velocities, determine the new positions and velocities over a
  period of time of rigid bodies that have undergone a collision (IM-IM\_C).

\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Goal Statements for Linear Solver}

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

\end{frame}

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

\begin{frame}
\frametitle{Goal Statements for Linear Solver}

\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{Relationship Between SRS and CA}
%\begin{figure}
\begin{center}
 \includegraphics[width=1.0\textwidth]{../Figures/Waterfall.pdf}
\end{center}
%\end{figure}
\end{frame}

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

\begin{frame}
\frametitle{Major Conceptual Parts of SRS/CA}
%\begin{figure}
\begin{center}
 \includegraphics[width=1.07\textwidth]{../Figures/RelationsBetweenTM_GD_IM_DD_A.pdf}
\end{center}
%\end{figure}
Also Goal Statements and Requirements
\end{frame}

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

\begin{frame}

\frametitle{Examples, Checklist and Template}

\begin{itemize}

\item
  \href{https://jacquescarette.github.io/Drasil/examples/projectile/SRS/srs/Projectile_SRS.html}
  {Projectile Example}
\item \href{https://github.com/smiths/caseStudies/blob/master/CaseStudies/projectile/projectileSRS_RefinedTheories/Projectile_SRS.pdf}
{Refined Theories Projectile SRS}
  \href{https://jacquescarette.github.io/Drasil/examples/glassbr/SRS/srs/GlassBR_SRS.html}
  {GlassBR Example}
\item
  \href{https://jacquescarette.github.io/Drasil/examples/swhs/SRS/srs/SWHS_SRS.html}
  {SWHS Example}
\item
  \href{https://github.com/smiths/capTemplate/blob/main/docs/SRS/SRS.pdf}
  {Blank SRS from Template}
  \href{https://github.com/smiths/capTemplate/blob/main/docs/Checklists/SRS-Checklist.pdf} {Checklist}
\end{itemize}

\end{frame}

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

\begin{frame}
\frametitle{Requirements for Projectile}
\vspace{-1.0cm}
\begin{center}
\includegraphics[scale=0.55]{../Figures/Launch.jpg}
\end{center}
\vspace{-1.0cm}
\begin{itemize}
  \item Simplifying assumptions? (scope decisions, modelling decisions)
  \item Kinematic theories for translational motion?
  \item Data constraints on input? output?
  \item Types?
  \item Rationale?
  \item \href{https://github.com/smiths/caseStudies/blob/master/CaseStudies/projectile/projectileSRS_RefinedTheories/Projectile_SRS.pdf}
  {Refined Theories Projectile SRS}
\end{itemize}
\end{frame}

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

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

\nocite{Lai2004, SmithEtAl2004, SmithAndLai2005, IEEE1998, IEEE2000,
  IEEE2000_ThayerAndDorfman, RobertsonAndRobertson1999Vol, DesharnaisEtAl2004,
  JanickiAndKhedri2001, GhezziEtAl2003, KreymanAndParnas2002,
  ParnasAndClements1986, Segal2007_Dagsthul, Segal2008, Segal2007, Segal2005, Dubois2002}

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

\end{frame}

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

\end{document}