diff --git a/BlankProjectTemplate/Doc/Design/MG/MG.pdf b/BlankProjectTemplate/Doc/Design/MG/MG.pdf index ea8c480d2d58c4c0a6329bba5f67718a2e8d6552..dd912e67306e2b2b394af1e8905d28a4bd24da10 100644 Binary files a/BlankProjectTemplate/Doc/Design/MG/MG.pdf and b/BlankProjectTemplate/Doc/Design/MG/MG.pdf differ diff --git a/BlankProjectTemplate/Doc/Design/MG/MG.tex b/BlankProjectTemplate/Doc/Design/MG/MG.tex index 042518f46dbaa3acbbeb81f8dfe3b0699b843d76..b05afbe6604f5aa561c9c005443c5ef6e0937831 100644 --- a/BlankProjectTemplate/Doc/Design/MG/MG.tex +++ b/BlankProjectTemplate/Doc/Design/MG/MG.tex @@ -15,7 +15,8 @@ linkcolor=red, urlcolor=blue } -\usepackage[round]{natbib} + +\input{../../Comments} \newcounter{acnum} \newcommand{\actheacnum}{AC\theacnum} @@ -29,29 +30,18 @@ \newcommand{\mthemnum}{M\themnum} \newcommand{\mref}[1]{M\ref{#1}} -\title{SE 3XA3: Software Requirements Specification\\Title of Project} - -\author{Team \#, Team Name - \\ Student 1 name and macid - \\ Student 2 name and macid - \\ Student 3 name and macid -} +\begin{document} +\title{Module Guide: Project Title} +\author{Author Name} \date{\today} -\input{../../Comments} - -\begin{document} - \maketitle \pagenumbering{roman} -\tableofcontents -\listoftables -\listoffigures -\begin{table}[bp] -\caption{\bf Revision History} +\section{Revision History} + \begin{tabularx}{\textwidth}{p{3cm}p{2cm}X} \toprule {\bf Date} & {\bf Version} & {\bf Notes}\\ \midrule @@ -59,7 +49,14 @@ Date 1 & 1.0 & Notes\\ Date 2 & 1.1 & Notes\\ \bottomrule \end{tabularx} -\end{table} + +\newpage + +\tableofcontents + +\listoftables + +\listoffigures \newpage diff --git a/Lectures/Figures/BinTreeToThreadTree.png b/Lectures/Figures/BinTreeToThreadTree.png new file mode 100644 index 0000000000000000000000000000000000000000..71020b46ce3ae47f42e8b083813c5e282d83c2a9 Binary files /dev/null and b/Lectures/Figures/BinTreeToThreadTree.png differ diff --git a/Lectures/Figures/Example.png b/Lectures/Figures/Example.png new file mode 100644 index 0000000000000000000000000000000000000000..8e4b0bf8737b4395c3498b8963bbb994b51d4fa2 Binary files /dev/null and b/Lectures/Figures/Example.png differ diff --git a/Lectures/Figures/GraphAndDAG.png b/Lectures/Figures/GraphAndDAG.png new file mode 100644 index 0000000000000000000000000000000000000000..d87cd0dfcab169f7b97ccaab9055ae0c8598937f Binary files /dev/null and b/Lectures/Figures/GraphAndDAG.png differ diff --git a/Lectures/Figures/GraphViewOf_IS_COMPONENT_OF.png b/Lectures/Figures/GraphViewOf_IS_COMPONENT_OF.png new file mode 100644 index 0000000000000000000000000000000000000000..95fba6600b77a3d4d0eb9535b7dfd472ff39da96 Binary files /dev/null and b/Lectures/Figures/GraphViewOf_IS_COMPONENT_OF.png differ diff --git a/Lectures/Figures/ParnasDecompBySecrets.png b/Lectures/Figures/ParnasDecompBySecrets.png new file mode 100644 index 0000000000000000000000000000000000000000..2f2f4af3486e812cadde23514b5cd0dfdb9f5285 Binary files /dev/null and b/Lectures/Figures/ParnasDecompBySecrets.png differ diff --git a/Lectures/Figures/Tank.pdf b/Lectures/Figures/Tank.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dc4ed1191633d5da082fdfa604fb10d1667decdd Binary files /dev/null and b/Lectures/Figures/Tank.pdf differ diff --git a/Lectures/Figures/TestingAFunctModule.png b/Lectures/Figures/TestingAFunctModule.png new file mode 100644 index 0000000000000000000000000000000000000000..ed63241fc0ac3a43051d1010612f3a05377cb6db Binary files /dev/null and b/Lectures/Figures/TestingAFunctModule.png differ diff --git a/Lectures/Figures/UML_Association.png b/Lectures/Figures/UML_Association.png new file mode 100644 index 0000000000000000000000000000000000000000..7c67e1723721fd3a207bcbd7a51e59d2678c9f7e Binary files /dev/null and b/Lectures/Figures/UML_Association.png differ diff --git a/Lectures/Figures/UsesHierarchy.pdf b/Lectures/Figures/UsesHierarchy.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a229222f5284ff31b7e96c88ae67d0c2a012bd50 Binary files /dev/null and b/Lectures/Figures/UsesHierarchy.pdf differ diff --git a/Lectures/Figures/hierarchy_diagram.pdf b/Lectures/Figures/hierarchy_diagram.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7b815569f3acf5d5b2123e9b8eb3f16b6e6cc9f7 Binary files /dev/null and b/Lectures/Figures/hierarchy_diagram.pdf differ diff --git a/Lectures/Figures/magnetron1.pdf b/Lectures/Figures/magnetron1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..beda8496c8ab8fd680c5211715c90b191364748c Binary files /dev/null and b/Lectures/Figures/magnetron1.pdf differ diff --git a/Lectures/L10_VnVContinued/VnVContinued.pdf b/Lectures/L10_VnVContinued/VnVContinued.pdf index c2f4684a55af249cd64eaf8d98b18d415e38a8fd..8327fa3f83b02b4b63bd31d04bf256dea1884f12 100644 Binary files a/Lectures/L10_VnVContinued/VnVContinued.pdf and b/Lectures/L10_VnVContinued/VnVContinued.pdf differ diff --git a/Lectures/L10_VnVContinued/VnVContinued.tex b/Lectures/L10_VnVContinued/VnVContinued.tex index 6636f72b2e7a6b2128d19873b23bd3dc26003895..1950e1a35020b2b1ed66e746179ebd6f16064953 100755 --- a/Lectures/L10_VnVContinued/VnVContinued.tex +++ b/Lectures/L10_VnVContinued/VnVContinued.tex @@ -512,15 +512,20 @@ constituents of compound conditions are exercised at least once \begin{frame} \frametitle{Specific SC V\&V Approaches} -Summary in \cite{Smith2016} +Summary of most points below in \cite{Smith2016} \begin{itemize} \item Compare to closed-form solutions \item Method of manufactured solutions \cite{Roache1998} \item Interval arithmetic \cite{Hickey2001} \item Convergence studies \item Compare to other program (parallel testing) +\item Can also consider using code inspection +\bi +\item \cite{KellyAndShepard2000, + ShepardAndKelly2001} +\item \href{http://www.cs.nott.ac.uk/~pszcah/G53QAT/fi.pdf}{Sample checklists} +\ei \end{itemize} -Can also consider using code inspection~\cite{KellyAndShepard2000, ShepardAndKelly2001} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -537,6 +542,11 @@ Can also consider using code inspection~\cite{KellyAndShepard2000, ShepardAndKel \item Performance \item Relative comparison \ei +\item Usability +\bi +\item \href{https://measuringu.com/sus/}{Fairly simple standard survey} +\item \href{https://gitlab.cas.mcmaster.ca/andrem5/RogueReborn/blob/master/Doc/TestPlan/TestPlan.pdf}{Example} +\ei \end{itemize} \end{frame} diff --git a/Lectures/L13_ModularDesign/ModularDesign.pdf b/Lectures/L13_ModularDesign/ModularDesign.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e98035137a9437c94a69dec33ea3016207c97d05 Binary files /dev/null and b/Lectures/L13_ModularDesign/ModularDesign.pdf differ diff --git a/Lectures/L13_ModularDesign/ModularDesign.tex b/Lectures/L13_ModularDesign/ModularDesign.tex index 1a42ac7e48a5c242e1d938e4d4afb16772adac8a..ac048c8303800cc27d6f3e98d6abf1827c010cc5 100755 --- a/Lectures/L13_ModularDesign/ModularDesign.tex +++ b/Lectures/L13_ModularDesign/ModularDesign.tex @@ -16,6 +16,9 @@ unicode=false} \urlstyle{same} +\usepackage{booktabs} +\usepackage{multirow} + \bibliographystyle{plain} %\usetheme{Iimenau} @@ -44,7 +47,11 @@ \bi \item Administrative details \item Questions? -\item License and copyright +\item Feedback on SRS +\item Overview of design +\item Modular decomposition: advantagages, guidelines etc. +\item Module guide +\item Module guide example \item Integration Testing %L34 \ei \end{frame} @@ -55,10 +62,14 @@ \frametitle{Administrative Details} \bi -\item GitHub issues for colleagues +\item GitHub issues \bi \item When closing issues give the hash for the corresponding commit +\item Everyone should have an issue to review my comments on their SRS or CA \ei +\item For MG presentation, we'll try to use my laptop only +\item Grading scheme for VnV now available on Avenue +\item Template for MG updated in repo \ei \end{frame} @@ -69,10 +80,8 @@ \frametitle{Administrative Details: Deadlines} ~\newline \begin{tabular}{l l l} -\textbf{SRS} & Week 05 & Oct 4\\ -\textbf{V\&V Present} & Week 06 & Week of Oct 16\\ \textbf{V\&V Plan} & Week 07 & Oct 25\\ -MG Present & Week 08 & Week of Oct 30\\ +\textbf{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\\ @@ -88,15 +97,10 @@ Final Documentation & Week 13 & Dec 6\\ \frametitle{Administrative Details: Presentation Schedule} \bi -\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, Shusheng, Devi, Keshav, Alex P, Paul -\item Friday: Yuzhi, Jason, Geneva, Alex S, Isobel, Steven +\item \textbf{Tuesday: Xiaoye, Shusheng, Devi, Keshav, Alex P, Paul} +\item \textbf{Friday: Yuzhi, Jason, Geneva, Alex S, Isobel, Steven} \ei \item MIS Present \bi @@ -118,7 +122,1306 @@ Final Documentation & Week 13 & Dec 6\\ \begin{frame} \frametitle{Questions?} \begin{itemize} -\item Questions about ... +\item \structure{Questions about Verification and Validation plan?} +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Feedback on SRS} +\begin{itemize} +\item Overall well done! +\item Don't need padding (\textbf{Watch for MG!}) +\bi +\item Don't make more complicated than it is +\item Don't add assumptions that the data will be in the correct format, or of + the correct type +\ei +\item For the characteristics of intended reader try to be more specific about + the education. What degree? What course areas? What level? +\item If you have a reference by entry, then the referenced by chunk (or its + derivation) should actually reference the chunk that has it as an entry. +\item Functional requirements should reference the instance models +\item Add more for nonfunctional requirements +\item Introduce type information when it will help clarify spec +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] +\frametitle{LaTeX Related Feedback} +\bi +\item The text is better for version control, and for reading in other editors, + if you use a hard-wrap at 80 characters +\item Use \verb|``quote''| to get correct quotation marks +\item Spell check! +\item Check for extra and missing spaces +\item LaTeX often inserts two spaces after a period, use \verb|Dr.\ Jeckyl| or + \verb|Dr.~Jeckyl| +\item For $ABC_{Average}$ in an equation use + \verb|$\mathit{ABC}_{\text{Average}}$| ($\mathit{ABC}_{\text{Average}}$) +\item Use BibTeX. You should mention the source of the + template~\cite{SmithAndLai2005, SmithEtAl2007} +\item Cite all sources! +\ei +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Review of our ``Faked'' Rational Design Process} + +\begin{center} +\includegraphics[scale=0.7]{../Figures/OverviewOfProcess.pdf} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{What is Design?} +\begin{itemize} +\item Your requirements document identifies ``What,'' now we begin to look at ``How'' +\item Your system should meet both your functional and nonfunctional requirements +\item There is no unique ``optimal'' design +\begin{itemize} +\item Different goals will lead to different designs +\item There is a mix of art and science in design +\item Even with fully formal requirements specification there does not yet exist a systematic way to obtain a design +\item Favour art in some areas and favour science in others +\end{itemize} +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{What is Design Continued?} + +\begin{itemize} + +\item Provides structure to any artifact +\item Decomposes system into parts, assigns responsibilities, ensures that parts + fit together to achieve a global goal +\item Design refers to +\bi +\item Activity +\bi +\item Bridge between requirements and implementation +\item Structure to an artifact +\ei +\item Result of the activity +\bi +\item System decomposition into modules (module guide) +\item Module interface specification (MIS) +\ei +\end{itemize} +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Why Decompose Into Modules?} + +\begin{itemize} +\item Separation of concerns +\item Cannot understand all of the details +\item All engineering fields use decomposition +\item Modules will act as ``work assignments'' +\item Decomposition needs to follow a systematic procedure (as for SRS) +\item Need to ensure that modules when fit together achieve our global goals +\item Document in a Software Design Document (Module Guide) +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Benefits of Modularity} +\begin{itemize} +\item Shorter development time +\item Improved verification +\item Reduced maintenance costs +\item Easier to understand +\begin{itemize} +\item Small modules +\item An abstract interface +\end{itemize} +\item Modules can be developed independently +\item Modules can be tested independently +\item Modules can be reused +\item Software is easy to change, extend, maintain +\item This requires identifying the anticipated changes in the design and in the requirements +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Two Important Goals for Decomposition} + +\begin{itemize} + +\item Design for change (Parnas) \cite{Parnas1972a, Parnas1974} +\bi +\item Designers tend to concentrate on current needs +\item Special effort needed to anticipate likely changes +\item Changes can be in the design or in the requirements +\item Too expensive to design for all changes, but should design for likely + changes +\ei +\item Product families (Parnas) \cite{Parnas1976, Parnas1979} +\bi +\item Think of the current system under design as a member of a program family +\item Analogous to product lines in other engineering disciplines +\item Example product families include automobiles, cell phones, etc. +\item Design the whole family as one system, not each individual family member + separately +\ei +\end{itemize} + +Use Design Principle of Information Hiding + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Sample Likely Changes} + +What are some examples of likely changes for software? + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 + +\begin{frame} +\frametitle{Sample Likely Changes \cite{GhezziEtAl2003}} + +\begin{itemize} + +\item Algorithms -- like replacing inefficient sorting algorithm with a more + efficient one +\item Change of data representation +\bi +\item From binary tree to threaded tree +\item Array implementation to a pointer implementation +\item Approx.\ 17\% of maintenance costs attributed to data representation + changes (Lientz and Swanson, 1980) +\ei +\item Change of underlying abstract machine +\bi +\item New release of operating system +\item New optimizing compiler +\item New version of DBMS +\item etc. +\ei +\item Change of peripheral devices + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Binary Tree to Threaded Tree} + +%\vspace{-2cm} +\begin{center} +\includegraphics[width=1.1\textwidth]{../Figures/BinTreeToThreadTree.png} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Sample Likely Changes} + +\begin{itemize} + +\item Change of ``social'' environment +\bi +\item Corresponds to requirements changes +\item New tax regime +\item EURO versus national currency in EU +\item New language for user interface +\item y2k +\ei +\item Change due to development process (prototype transformed into product) + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Components of a Module} + +\begin{itemize} + +\item A software modules has two components +\begin{enumerate} +\item An \structure{interface} that enables the module's clients to use the + service the module provides +\item An \structure{implementation} of the interface that provides the services + offered by the module +\end{enumerate} + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{The Module Interface} + +\begin{itemize} + +\item A module's interface can be viewed in various ways +\begin{itemize} +\item As a \structure{set of services} +\item As a \structure{contract} between the module and its clients +\item As a \structure{language} for using the module's services +\end{itemize} +\item The interface is \structure{exported} by the module and + \structure{imported} by the module's clients +\item An interface describes the \structure{data} and \structure{procedures} + that provide access to the services of the module + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{The Module Implementation} + +\begin{itemize} + +\item A module's implementation is an implementation of the module's interface +\item The implementation is \structure{hidden} from other modules +\item The interface data and procedures are implemented together and may share + data structures +\item The implementation may utilize the services offered by other modules + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Information Hiding} + +\begin{itemize} + +\item Made explicit by Parnas \cite{Parnas1972a} +\item Basis for design (that is modular decomposition (Module Guide)) +\item Implementation secrets are hidden to clients +\item Secret can be changed freely if the change does not affect the interface +\item \structure{Try to encapsulate changeable design decisions as + implementation secrets within module implementations} + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Examples of Modules \cite{GhezziEtAl2003}} + +\begin{itemize} + +\item \structure{Record} +\begin{itemize} +\item Consists of only data +\item Has state but no behaviour +\end{itemize} +\item \structure{Collection of related procedures (library)} +\begin{itemize} +\item Has behaviour but no state +\item Procedural abstractions +% like many routines in a scientific computing library +\end{itemize} +\item \structure{Abstract object} +\begin{itemize} +\item Consists of data (\structure{fields}) and procedures (\structure{methods}) +\item Consists of a collection of \structure{constructors}, + \structure{selectors}, and \structure{mutators} +\item Has state and behaviour +\end{itemize} +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Examples of Modules Continued} + +\begin{itemize} + +\item \structure{Abstract data type (ADT)} +\begin{itemize} +\item Consists of a collection of abstract objects and a collection of + procedures that can be applied to them +\item Defines the set of possible values for the type and the associated + procedures that manipulate instances of the type +\item Encapsulates the details of the implementation of the type +\end{itemize} +\item \structure{Generic Modules} +\begin{itemize} +\item A single abstract description for a family of abstract objects or ADTs +\item Parameterized by type +\item Eliminates the need for writing similar specifications for modules that + only differ in their type information +\item A generic module facilitates specification of a stack of integers, stack + of strings, stack of stacks etc. +\end{itemize} + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \begin{frame} +% \frametitle{Specific Techniques for Design for Change} + +% What software tool would you use if you wanted to select at build time between +% two implementations of a module, each distinguished by a different decision for +% their shared secret? + +% \end{frame} + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \begin{frame} +% \frametitle{Specific Techniques for Design for Change} + +% \begin{itemize} +% \item Anticipate definition of all family members +% \item Identify what is common to all family members, delay decisions that +% differentiate among different members +% \item Configuration constants +% \begin{itemize} +% \item Factor constant values into symbolic constants +% \item Compile time binding +% \item MAXSPEED = 5600 +% \end{itemize} +% \item Conditional compilation +% \bi +% \item Compile time binding +% \item Works well when there is a preprocessor, like for C +% \item If performance is not a concern, can often ``fake it'' at run time +% \ei +% \item Make +% \item Software generation +% \bi +% \item Compiler generator, like \texttt{yacc} +% \item Domain Specific Language +% \ei +% \end{itemize} + +% \end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Questions} + +\begin{itemize} +\item What relationships are there between modules? +\item Are there desirable properties for these relations? +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Relationships Between Modules} + +\begin{itemize} +\item Let $S$ be a set of modules +$$ S = \{ M_1, M_2, ..., M_n \}$$ +\item A binary relation $r$ on $S$ is a subset of $S \times S$ +\item If $M_i$ and $M_j$ are in $S$, $< M_i, M_j > \in r$ can be written as $M_i r M_j$ +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Relations} + +\begin{itemize} +\item Transitive closure $r^{+}$ of $r$ +$$M_i r^{+} M_j \mbox{ iff } M_i r M_j \mbox{ or } \exists M_k \mbox{ in } S \mbox{ such that } M_i r M_k \mbox{ and } M_k +r^{+} M_j$$ +\item $r$ is a hierarchy iff there are no two elements $M_i$, $M_j$ such that + $M_i r^{+} M_j \wedge M_j r^{+} M_i$ +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Relations Continued} + +\begin{itemize} +\item Relations can be represented as graphs +\item A hierarchy is a DAG (Directed Acyclic Graph) +\end{itemize} + +\begin{center} +\includegraphics[width=1.0\textwidth]{../Figures/GraphAndDAG.png} +\end{center} + +\structure{Why do we prefer the uses relation to be a DAG?} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Desirable Properties} + +\begin{itemize} +\item USES should be a hierarchy \cite{Parnas1974} +\begin{itemize} +\item Hierarchy makes software easier to understand +\item We can proceed from the leaf nodes (nodes that do not use other nodes) + upwards +\item They make software easier to build +\item They make software easier to test +\end{itemize} +\item Low coupling +\item Fan-in is considered better than Fan-out: \structure{WHY?} +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{DAG Versus Tree} + +Is a DAG a tree? Is a tree a DAG? + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{DAG Versus Tree} + +Would you prefer your uses relation is a tree? + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Hierarchy} + +\begin{itemize} +\item Organizes the modular structure through \structure{levels of abstraction} +\item Each level defines an \structure{abstract (virtual) machine} for the next level +\item Level can be defined precisely +\begin{itemize} +\item $M_i$ has level $0$ if no $M_j$ exists such that $M_i r M_j$ +\item Let $k$ be the maximum level of all nodes $M_j$ such that $M_i r M_j$, then $M_i$ has level $k+1$ +\end{itemize} +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Static Definition of Uses Relation} + +Your program has code like:\\ +\texttt{if cond then ServiceFromMod1 else ServiceFromMod2}\\ +~\newline +This is the only place where each module is used. Does this mean the uses +relation depends on the dynamic execution of the program? +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Question about Association and DAG} + +\structure{Is the uses relation here a DAG?}\\ + +\begin{figure} +\includegraphics[scale=0.6]{../Figures/UML_Association.png} +\end{figure} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Module Decomposition (Parnas)} + +\begin{center} +\includegraphics[width=1.0\textwidth]{../Figures/ParnasDecompBySecrets.png} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Module Decomposition (Parnas)} + +For the module decomposition on the previous slide: + +\begin{itemize} +\item Does it show a Uses relation? +\item Is it a DAG? +\item Is it a tree? +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{IS\_COMPONENT\_OF} + +\begin{itemize} +\item The Parnas decomposition by secrets gives an IS\_COMPONENT\_OF relationship +\item Used to describe a higher level module as constituted by a number of lower level modules +\item A IS\_COMPONENT\_OF B means B consists of several modules of which one is A +\item B COMPRISES A +\item $M_{S,i} = \{ M_k | M_k \in S \wedge M_k \mbox{ IS\_COMPONENT\_OF } M_i \}$ we say that $M_{S,i}$ IMPLEMENTS +$M_i$ +\item \structure{How is IS\_COMPONENT\_OF represented in UML?} +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{A Graphical View} + +\begin{center} +\includegraphics[width=1.0\textwidth]{../Figures/GraphViewOf_IS_COMPONENT_OF.png} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \begin{frame} +% \frametitle{Product Families} + +% \begin{itemize} +% \item Careful recording of (hierarchical) USES relation and IS\_COMPONENT\_OF supports design of program families +% \item Attempt to recognize modules that will differ in implementation between family members +% \item New program family member should start at the documentation of the design, not with the code +% \end{itemize} + +% \end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \begin{frame} +% \frametitle{Remember - Information Hiding} + +% \begin{itemize} +% \item Basis for design (i.e.\ module decomposition) +% \item Implementation secrets are hidden to clients +% \item They can be changed freely if the change does not affect the interface +% \item \structure{Try to encapsulate changeable requirements and design decisions as implementation secrets within module +% implementations} +% \item Decomposition by secrets, not by sequence of steps +% \end{itemize} + +% \end{frame} + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \begin{frame} +% \frametitle{Prototyping} + +% \begin{itemize} +% \item Once an interface is defined, implementation can be done +% \begin{itemize} +% \item First quickly but inefficiently +% \item Then progressively turned into the final version +% \end{itemize} +% \item Initial version acts as a prototype that evolves into the final product +% \end{itemize} + +% \end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \begin{frame} +% \frametitle{Parnas's Rational Design Process (RDP)} + +% \begin{itemize} +% \item SRS +% \item MG +% \item Uses Hierarchy (updated after writing MISes) +% \item For each module +% \begin{itemize} +% \item MIS +% \item MID (we will not emphasize this document) +% \end{itemize} +% \item Implementation +% \item Testing +% \item Very successfully used on projects such as +% \begin{itemize} +% \item The Darlington Nuclear Reactor shutdown system +% \item The A7-E fighter jet +% \end{itemize} +% \end{itemize} + +% \end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Module Guide \cite{ParnasEtAl1984}} + +\begin{itemize} +\item Part of Parnas' Rational Design Process (RDP) +\item When decomposing the system into modules, we need to document the module + decomposition so that developers and other readers can understand and verify + the decomposition +\item Helps future maintainers find appropriate module +\item Parnas proposed a Module Guide (MG) based on the decomposition module tree + shown earlier +\item Decomposition is usually three to five levels deep +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Three Top Conceptual Modules in an RDP MG} + +\structure{What are the three groups of modules in a typical information-hiding + decomposition?} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Module Decomposition (Parnas)} + +\begin{center} +\includegraphics[width=1.0\textwidth]{../Figures/ParnasDecompBySecrets.png} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{RDP - MG} + +\begin{itemize} +\item The MG consists of a table that documents each module's service and secret +\item Conceptual modules will have broader responsibilities and secrets +\item Following a particular branch, the secrets at lower levels ``sum up'' to + the secret at higher levels +\item The leaf modules that represent code will contain much more precise + services and secrets +\item Only the leaf modules are actually implemented +\item The MG should list the likely and unlikely changes on which the design is based +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Module Details} +\begin{itemize} +\item For each module +\item Module name +\item Secret (informal description) +\item Service or responsibility (informal description) +\item For ``leaf'' modules add +\begin{itemize} +\item Associated requirement +\item Anticipated change +\item Module prefix (optional) +\end{itemize} +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{RDP - MG} + +\begin{itemize} +\item Criteria for a good secret +\begin{itemize} +\item One module one secret, especially for leaf modules (watch for ``and'') +\item Secrets should often be nouns (data structure, algorithm, hardware, ...) +\item Secrets are often phrased as ``How to ... '' +\end{itemize} +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Good Secret?} + +\structure{Is the following a good module secret: ``The file format for the map and the +rules for validating that the map satisfies the environmental constraints.''} + +%No - more than one secret +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Typical Modules \cite{HoffmanAndStrooper1995}} + +\begin{itemize} +\item \structure{What are the typical secrets for an input variable?} +\bi +\item You have an input in the environment, how to get it into your system? +\item What format is the input data? +\ei +\item \structure{What are the secrets for an output variable?} +\bi +\item How to get an output from inside the system to the external environment? +\item How will the output be determined? +\item What format will the output have? +\ei +\item \structure{What are the secrets for a state variable?} +\bi +\item What rules are there governing the state transitions? +\item What data structures or algorithms are needed? +\ei +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Typical Modules \cite{HoffmanAndStrooper1995}} + +\begin{itemize} +\item Input variables +\bi +\item Machine-hiding from hardware or OS service +\item Behaviour-hiding input format +\ei +\item Output variables +\bi +\item Machine-hiding +\item Behaviour-hiding output format +\item Behaviour-hiding (calculation) +\ei +\item State variables +\bi +\item Software decision hiding for data structure/algorithm +\item Behaviour-hiding state-drive +\ei +\item Judgement is critical +\item Often combine variables into the same module +\item For non-embedded systems, machine hiding for input-output is often + combined +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{RDP - Views} + +\begin{itemize} +\item As well as the MG, the modular decomposition should be displayed using a + variety of views +\item An obvious one is the \structure{Uses Hierarchy} +\item The Uses Hierarchy is updated once the MIS for all modules is complete +\item The Uses Hierarchy can be represented +\begin{itemize} +\item Graphically (if it isn't too large and complex) +\item Using a binary matrix -- \structure{What would the binary matrix look like?} +\end{itemize} +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \begin{frame} +% \frametitle{RDP - MIS} + +% \begin{itemize} +% \item For each leaf module we need to document its interface and its implementation +% \item In RDP, the interfaces are documented in the Module Interface Specification (MIS) +% \item We have already seen MIS examples specified as Module State Machines +% \end{itemize} + +% \end{frame} + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \begin{frame} +% \frametitle{RDP - MID} + +% \begin{itemize} +% \item Another document that is often helpful is the Module Internal Design (MID) +% for each module +% \item The MID provides the implementation of the module; that is, it shows how +% we will deliver on what is promised in the MIS +% \item The MID is requirements for the code represented at a higher level of +% abstraction than the code +% \item The MID uses the syntax of the selected programming language +% \item The MID shows decisions like whether to use a static array, or dynamic +% memory allocation and pointers +% \item We will not focus on MIDs, since for many examples it is feasible to go +% directly to code +% \end{itemize} + +% \end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{MG Template} + +\bi +\item Table of contents +\item Introduction +\item Anticipated and unlikely changes +\item Module hierarchy +\item Connection between requirements and design +\item Module decomposition +\bi +\item Hardware hiding modules +\item Behaviour hiding modules +\item Software decision hiding modules +\ei +\item Traceability matrices +\item Uses hierarchy between modules +\ei + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Traceability Matrices} +\begin{itemize} +\item Traceability matrix help inspect the design +\item Check for completeness, look at from a different viewpoint +\end{itemize} +\begin{table}[H] +\centering +\begin{tabular}{p{0.2\textwidth} p{0.6\textwidth}} +\toprule +\textbf{Req.} & \textbf{Modules}\\ +\midrule +R1 & M1, M2, M3, M7\\ +R2 & M2, M3\\ +...& ...\\ +\bottomrule +\end{tabular} +\end{table} + +\begin{table}[H] +\centering +\begin{tabular}{p{0.2\textwidth} p{0.6\textwidth}} +\toprule +\textbf{AC} & \textbf{Modules}\\ +\midrule +AC1 & M1\\ +AC2 & M2\\ +... & ...\\ +\bottomrule +\end{tabular} +\end{table} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Verification} + +\bi +\item Well formed (consistent format/structure) +\bi +\item Follows template +\item Follows rules (one secret per module, nouns etc.) +\ei +\item Feasible (implementable at reasonable cost) +\bi +\item Difficult to assess +\item Try sketches of MIS +\ei +\item Flexible +\bi +\item Again try sketches of MIS +\item Thought experiment as if likely change has occurred +\item Low coupling +\item Encapsulate repetitive tasks +\ei +\item May sometimes have to sacrifice information hiding +\ei + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Object Oriented Design Versus Modular Desiogn} +\begin{itemize} +\item OO-design and OO-languages are different +\item OO-design +\begin{itemize} +\item Classes and methods +\item Classes are like modules (state variables and access functions (methods)) +\item An object is an instance of a class +\item Polymorphism +\item Inheritance - use carefully +\end{itemize} +\item Implementation of modules using an OO-lang is natural +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Solar Water Heating System Example} + +\bi +\item \href{https://github.com/smiths/swhs}{https://github.com/smiths/swhs} +\item Solve ODEs for temperature of water and PCM +\item Solve for energy in water and PCM +\item Generate plots +\ei + +\begin{figure} +{ +\includegraphics[width=0.5\textwidth]{../Figures/Tank.pdf} +} +\end{figure} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Anticipated Changes?} + +\structure{What are some anticipated changes?}\\ +~\newline +Hint: the software follows the Input $\rightarrow$ Calculate $\rightarrow$ +Output design pattern + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Anticipated Changes} + +\bi +\item The specific hardware on which the software is to run +\item The format of the initial input data +\item The format of the input parameters +\item The constraints on the input parameters +\item The format of the output data +\item The constraints on the output results +\item How the governing ODEs are defined using the input parameters +\item How the energy equations are defined using the input parameters +\item How the overall control of the calculations is orchestrated +\item The implementation of the sequence data structure +\item The algorithm used for the ODE solver +\item The implementation of plotting data +\ei + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Module Hierarchy by Secrets} +\begin{table}[h!] +\centering +\begin{tabular}{p{0.3\textwidth} p{0.6\textwidth}} +\toprule +\textbf{Level 1} & \textbf{Level 2}\\ +\midrule + +{Hardware-Hiding Module} & ~ \\ +\midrule + +\multirow{6}{0.3\textwidth}{Behaviour-Hiding Module} & Input Format Module\\ +& Input Parameters Module\\ +& Output Format Module\\ +& Temperature ODEs Module\\ +& Energy Equations Module\\ +& Control Module\\ +\midrule + +\multirow{3}{0.3\textwidth}{Software Decision Module} & {Sequence Data Structure Module}\\ +& ODE Solver Module\\ +& Plotting Module\\ +\bottomrule + +\end{tabular} +\caption{Module Hierarchy} +\label{TblMH} +\end{table} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Example Modules from SWHS} + +\textbf{Hardware Hiding Modules} + +\begin{description} +\item[Secrets:]The data structure and algorithm used to implement the virtual + hardware. +\item[Services:]Serves as a virtual hardware used by the rest of the + system. This module provides the interface between the hardware and the + software. So, the system can use it to display outputs or to accept inputs. +\item[Implemented By:] OS +\end{description} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Example Modules from SWHS} + +\textbf{Input Verification Module} + +\begin{description} +\item[Secrets:] The rules for the physical and software constraints. +\item[Services:] Verifies that the input parameters comply with physical and + software constraints. Throws an error if a parameter violates a physical + constraint. Throws a warning if a parameter violates a software constraint. +\item[Implemented By:] SWHS +\end{description} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Example Modules from SWHS} + +\textbf{ODE Solver Module} + +\begin{description} +\item[Secrets:] The algorithm to solve a system of first order ODEs. +\item[Services:] Provides solvers that take the governing equation, initial + conditions, and numerical parameters, and solve them. +\item[Implemented By:] Matlab +\end{description} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[plain, fragile] + +\frametitle{SWHS Uses Hierarchy} + +\begin{center} +\includegraphics[scale=0.55]{../Figures/UsesHierarchy.pdf} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Mesh Generator Example} +\vspace{-1cm} +\begin{figure}[H] +\includegraphics[scale=0.4, angle=0]{../Figures/ExampleMesh.pdf} +\end{figure}\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Mesh Generator Complex Circular Geometry} +\begin{figure}[H] +\includegraphics[scale=0.25]{../Figures/magnetron1.pdf} +\end{figure}\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Mesh Generator Example: Design Goals} +\begin{itemize} +\item Independent and flexible representation for each mesh entity +\item Complete separation of geometric data from the topology +\item The mesh generator should work with different coordinate systems +\item A flexible data structure to store sets of vertices, edges and triangles +\item Different mesh generation algorithms with a minimal amount of local changes +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Example Mesh Gen Modular Decomposition} + +%\vspace{-1.5cm} +% \begin{center} +% \includegraphics[width=0.5\textwidth]{DecompBySecretHierarchyExample.png} +% \end{center} + +\href{https://gitlab.cas.mcmaster.ca/smiths/se2aa4_cs2me3/blob/master/Lectures/L14_ModuleDecompositionContinued/DecompBySecretHierarchyExample.png}{Link} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Another Mesh Generator Uses Hierarchy \cite{ElSheikhEtAl2004}} +\begin{figure}[H] +\includegraphics[scale=0.345]{../Figures/hierarchy_diagram.pdf} +\end{figure} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Module Testing} + +\structure{Is it possible to begin testing before all of the modules have been + implemented when there is a use relation between modules?} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Module Testing \cite{GhezziEtAl2003}} + +\begin{itemize} + +\item Scaffolding needed to create the environment in which the module should be + tested +\item Stubs - a module used by the module under test +\item Driver - module activating the module under test +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Testing a Functional Module \cite{GhezziEtAl2003}} + +\includegraphics[scale=0.5]{../Figures/TestingAFunctModule.png} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Integration Testing} + +\begin{itemize} +\item Big-bang approach +\begin{itemize} +\item First test individual modules in isolation +\item Then test integrated system +\end{itemize} +\item Incremental approach +\begin{itemize} +\item Modules are progressively integrated and tested +\item Can proceed both top-down and bottom-up according to the USES relation +\end{itemize} +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Integration Testing and USES relation} + +\begin{itemize} +\item If integration and test proceed bottom-up only need drivers +\item Otherwise if we proceed top-down only stubs are needed +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Example \cite{GhezziEtAl2003}} + +\begin{center} +\includegraphics[scale=0.35]{../Figures/Example.png} +\end{center} + +\begin{itemize} +\item $M_1$ USES $M_2$ and $M_2$ IS\_COMPOSED\_OF \{$M_{2,1}$, $M_{2,2}$\} +\item \structure{In what order would you test these modules?} +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Example \cite{GhezziEtAl2003}} + +\begin{center} +\includegraphics[scale=0.35]{../Figures/Example.png} +\end{center} + +\begin{itemize} +\item $M_1$ USES $M_2$ and $M_2$ IS\_COMPOSED\_OF \{$M_{2,1}$, $M_{2,2}$\} +\item Case 1 +\begin{itemize} +\item Test $M_1$ providing a stub for $M_2$ and a driver for $M_1$ +\item Then provide an implementation for $M_{2,1}$ and a stub for $M_{2,2}$ +\end{itemize} +\item Case 2 +\begin{itemize} +\item Implement $M_{2,2}$ and test it by using a driver +\item Implement $M_{2,1}$ and test the combination of $M_{2,1}$ and $M_{2,2}$ + (i.e.\ $M_2$) by using a driver +\item Finally implement $M_1$ and test it with $M_2$ using a driver for $M_1$ +\end{itemize} \end{itemize} \end{frame} diff --git a/Lectures/L14_MIS/MIS.tex b/Lectures/L14_MIS/MIS.tex new file mode 100755 index 0000000000000000000000000000000000000000..127470e2562655e98a931e26454c92829dba3665 --- /dev/null +++ b/Lectures/L14_MIS/MIS.tex @@ -0,0 +1,123 @@ +%\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} + +\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}{14 Module Interface Specification (MIS)} + +\input{../titlepage} + +\begin{document} + +\input{../footline} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Module Interface Specification (MIS)} + +\bi +\item Administrative details +\item Questions? +\ei +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Administrative Details} + +\bi +\item admin points +\ei + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Administrative Details: Deadlines} +~\newline +\begin{tabular}{l l l} +\textbf{MG Present} & Week 08 & Week of Oct 30\\ +\textbf{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 MG Present +\bi +\item \textbf{Tuesday: Xiaoye, Shusheng, Devi, Keshav, Alex P, Paul} +\item \textbf{Friday: Yuzhi, Jason, Geneva, Alex S, Isobel, Steven} +\ei +\item MIS Present +\bi +\item Tuesday: Isobel, Keshav, Paul +\item Friday: Shusheng, 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 ... +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[allowframebreaks] +\frametitle{References} + +\bibliography{../../ReferenceMaterial/References} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} \ No newline at end of file diff --git a/Lectures/L15_MGPresent1/MGPresent1.pdf b/Lectures/L15_MGPresent1/MGPresent1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1e4b29ec4a69a32ff7577ed583fa64c62eb7eb90 Binary files /dev/null and b/Lectures/L15_MGPresent1/MGPresent1.pdf differ diff --git a/Lectures/L15_MGPresent1/MGPresent1.tex b/Lectures/L15_MGPresent1/MGPresent1.tex new file mode 100755 index 0000000000000000000000000000000000000000..8072a69e5c3400050d75488da801335ee19f4bfc --- /dev/null +++ b/Lectures/L15_MGPresent1/MGPresent1.tex @@ -0,0 +1,56 @@ +%\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} + +\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}{15 MG Presentations 1} + +\input{../titlepage} + +\begin{document} + +\input{../footline} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{MG Presentations 1} + +\bi +\item Xiaoye +\item Shusheng +\item Devi +\item Keshav +\item Alex P +\item Paul +\ei +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} \ No newline at end of file diff --git a/Lectures/L16_MGPresent2/MGPresent2.pdf b/Lectures/L16_MGPresent2/MGPresent2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..04a74d5c456048cb8e982ed6c8343bc0b03bc4e3 Binary files /dev/null and b/Lectures/L16_MGPresent2/MGPresent2.pdf differ diff --git a/Lectures/L16_MGPresent2/MGPresent2.tex b/Lectures/L16_MGPresent2/MGPresent2.tex new file mode 100755 index 0000000000000000000000000000000000000000..0f167f341419aef962f02416e50a4faa8ece2125 --- /dev/null +++ b/Lectures/L16_MGPresent2/MGPresent2.tex @@ -0,0 +1,56 @@ +%\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} + +\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}{16 MG Presentations 2} + +\input{../titlepage} + +\begin{document} + +\input{../footline} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{MG Presentations 2} + +\bi +\item Yuzhi +\item Jason +\item Geneva +\item Alex S +\item Isobel +\item Steven +\ei +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} \ No newline at end of file diff --git a/Lectures/L17_MISContinued/MISContinued.pdf b/Lectures/L17_MISContinued/MISContinued.pdf new file mode 100644 index 0000000000000000000000000000000000000000..abef971625c025fb46bc75324ae5c539b7a37621 Binary files /dev/null and b/Lectures/L17_MISContinued/MISContinued.pdf differ diff --git a/Lectures/L17_MISContinued/MISContinued.tex b/Lectures/L17_MISContinued/MISContinued.tex new file mode 100755 index 0000000000000000000000000000000000000000..ba9ac3b93b3e5c7e643a7908f76cf3c7203eca5e --- /dev/null +++ b/Lectures/L17_MISContinued/MISContinued.tex @@ -0,0 +1,118 @@ +%\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} + +\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}{17 MIS Continued} + +\input{../titlepage} + +\begin{document} + +\input{../footline} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{MIS Continued} + +\bi +\item Administrative details +\item Questions? +\item License and copyright +\ei +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Administrative Details} + +\bi +\item admin points +\ei + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Administrative Details: Deadlines} +~\newline +\begin{tabular}{l l l} +\textbf{MG} & Week 09 & Nov 8\\ +\textbf{MIS Present} & Week 10 & Week of Nov 13\\ +\textbf{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 MIS Present +\bi +\item \textbf{Tuesday: Isobel, Keshav, Paul} +\item \textbf{Friday: Shusheng, 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 ... +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[allowframebreaks] +\frametitle{References} + +\bibliography{../../ReferenceMaterial/References} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} \ No newline at end of file diff --git a/Lectures/L18_CodeGen/CodeGen.pdf b/Lectures/L18_CodeGen/CodeGen.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0196bbde3852de3bc0078ba5e64c2fabfe1e1ed7 Binary files /dev/null and b/Lectures/L18_CodeGen/CodeGen.pdf differ diff --git a/Lectures/L18_CodeGen/CodeGen.tex b/Lectures/L18_CodeGen/CodeGen.tex new file mode 100755 index 0000000000000000000000000000000000000000..e6ee27ebecb47b48bfcea3a13319a043e447e503 --- /dev/null +++ b/Lectures/L18_CodeGen/CodeGen.tex @@ -0,0 +1,116 @@ +%\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} + +\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}{18 Code Generation} + +\input{../titlepage} + +\begin{document} + +\input{../footline} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Code Generation} + +\bi +\item Administrative details +\item Questions? +\ei +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Administrative Details} + +\bi +\item admin points +\ei + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Administrative Details: Deadlines} +~\newline +\begin{tabular}{l l l} +\textbf{MIS Present} & Week 10 & Week of Nov 13\\ +\textbf{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 MIS Present +\bi +\item \textbf{Tuesday: Isobel, Keshav, Paul} +\item \textbf{Friday: Shusheng, 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 ... +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[allowframebreaks] +\frametitle{References} + +\bibliography{../../ReferenceMaterial/References} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} \ No newline at end of file diff --git a/Lectures/L19_MISPresent1/MISPresent1.pdf b/Lectures/L19_MISPresent1/MISPresent1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0c5d2eae4e16d401b96aa168af4a82eabf517e91 Binary files /dev/null and b/Lectures/L19_MISPresent1/MISPresent1.pdf differ diff --git a/Lectures/L19_MISPresent1/MISPresent1.tex b/Lectures/L19_MISPresent1/MISPresent1.tex new file mode 100755 index 0000000000000000000000000000000000000000..362f275b28059fd9817335d7ada83a86ecc46505 --- /dev/null +++ b/Lectures/L19_MISPresent1/MISPresent1.tex @@ -0,0 +1,53 @@ +%\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} + +\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}{19 MIS Presentations 1} + +\input{../titlepage} + +\begin{document} + +\input{../footline} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{MIS Presentations 1} + +\bi +\item Isobel +\item Keshav +\item Paul +\ei +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} \ No newline at end of file diff --git a/Lectures/L20_MISPresent2/MISPresent2.pdf b/Lectures/L20_MISPresent2/MISPresent2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..692dc3d9c44b7d62d1710a56925fee4edcdea87d Binary files /dev/null and b/Lectures/L20_MISPresent2/MISPresent2.pdf differ diff --git a/Lectures/L20_MISPresent2/MISPresent2.tex b/Lectures/L20_MISPresent2/MISPresent2.tex new file mode 100755 index 0000000000000000000000000000000000000000..a6b7cb3114fa197d5012507c27af655b75471447 --- /dev/null +++ b/Lectures/L20_MISPresent2/MISPresent2.tex @@ -0,0 +1,53 @@ +%\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} + +\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}{20 MIS Presentations 2} + +\input{../titlepage} + +\begin{document} + +\input{../footline} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{MIS Presentations 2} + +\bi +\item Shusheng +\item Xiaoye (Marshall) +\item Devi +\ei +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} \ No newline at end of file diff --git a/Lectures/L21_AssuranceCase/AssuranceCase.pdf b/Lectures/L21_AssuranceCase/AssuranceCase.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2d01332af5021a1f7f3929135de3862a73c196f2 Binary files /dev/null and b/Lectures/L21_AssuranceCase/AssuranceCase.pdf differ diff --git a/Lectures/L21_AssuranceCase/AssuranceCase.tex b/Lectures/L21_AssuranceCase/AssuranceCase.tex new file mode 100755 index 0000000000000000000000000000000000000000..ab65ceef3ca6daae0e69e10c33c96b76da1aa8cf --- /dev/null +++ b/Lectures/L21_AssuranceCase/AssuranceCase.tex @@ -0,0 +1,111 @@ +%\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} + +\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}{21 Assurance Case} + +\input{../titlepage} + +\begin{document} + +\input{../footline} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Assurance Case} + +\bi +\item Administrative details +\item Questions? +\item License and copyright +\ei +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Administrative Details} + +\bi +\item admin points +\ei + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Administrative Details: Deadlines} +~\newline +\begin{tabular}{l l l} +\textbf{MIS} & Week 11 & Nov 22\\ +\textbf{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 Impl.\ Present +\bi +\item \textbf{Tuesday: Alexander S., Steven, Alexandre P.} +\item \textbf{Friday: Jason, Geneva, Yuzhi} +\ei + +\ei + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Questions?} +\begin{itemize} +\item Questions about ... +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[allowframebreaks] +\frametitle{References} + +\bibliography{../../ReferenceMaterial/References} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} \ No newline at end of file diff --git a/ReferenceMaterial/OnLineVersionOfPaper.pdf b/ReferenceMaterial/OnLineVersionOfPaper.pdf new file mode 100644 index 0000000000000000000000000000000000000000..db4b1b0dde2308bf0d4f7e131788ae2de6b2b208 Binary files /dev/null and b/ReferenceMaterial/OnLineVersionOfPaper.pdf differ diff --git a/ReferenceMaterial/ParnasEtAl1984.pdf b/ReferenceMaterial/ParnasEtAl1984.pdf new file mode 100644 index 0000000000000000000000000000000000000000..49727c3917c072ee7f22aa84f70687e364657dce Binary files /dev/null and b/ReferenceMaterial/ParnasEtAl1984.pdf differ diff --git a/ReferenceMaterial/References.bib b/ReferenceMaterial/References.bib index ce5cbf2d272ed42f8574d2458600e04223a02f5e..596311d8b1346957755337e2d6c645866a9153b7 100644 --- a/ReferenceMaterial/References.bib +++ b/ReferenceMaterial/References.bib @@ -2,13 +2,48 @@ %% http://bibdesk.sourceforge.net/ -%% Created for Spencer Smith at 2017-10-16 09:48:02 -0400 +%% Created for Spencer Smith at 2017-10-23 16:59:05 -0400 %% Saved with string encoding Unicode (UTF-8) +@article{ElSheikhEtAl2004, + Author = {Ahmed H. ElSheikh and W. Spencer Smith and Samir E. Chidiac}, + Date-Added = {2017-10-23 20:58:24 +0000}, + Date-Modified = {2017-10-23 20:58:24 +0000}, + Journal = {Advances in Engineering Software}, + Keywords = {mesh generation, software engineering, modular decomposition, formal methods, software quality}, + Local-Url = {/Users/smiths/Work/Research/Papers/SemiFormalDesMeshGen/OnLineVersionOfPaper.pdf}, + Number = {12}, + Pages = {827--841}, + Title = {Semi-formal design of reliable mesh generation systems}, + Volume = {35}, + Year = {2004}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QSy4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvUGFwZXJzL1NlbWlGb3JtYWxEZXNNZXNoR2VuL09uTGluZVZlcnNpb25PZlBhcGVyLnBkZtIXCxgZV05TLmRhdGFPEQIAAAAAAAIAAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAAXC3QYT25MaW5lVmVyc2lvbk9mUGFwZXIucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeH2c8i4SQAAAAAAAAAAAADAAUAAAkgAAAAAAAAAAAAAAAAAAAAFFNlbWlGb3JtYWxEZXNNZXNoR2VuABAACAAAzperwwAAABEACAAAzyMndAAAAAEAGAAXC3QAFwILABcATQAW/e0ACPdmAAJkjgACAGJNYWNpbnRvc2ggSEQ6VXNlcnM6AHNtaXRoczoAV29yazoAUmVzZWFyY2g6AFBhcGVyczoAU2VtaUZvcm1hbERlc01lc2hHZW46AE9uTGluZVZlcnNpb25PZlBhcGVyLnBkZgAOADIAGABPAG4ATABpAG4AZQBWAGUAcgBzAGkAbwBuAE8AZgBQAGEAcABlAHIALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAE9Vc2Vycy9zbWl0aHMvV29yay9SZXNlYXJjaC9QYXBlcnMvU2VtaUZvcm1hbERlc01lc2hHZW4vT25MaW5lVmVyc2lvbk9mUGFwZXIucGRmAAATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOANwA4QDpAu0C7wL0Av8DCAMWAxoDIQMqAy8DPAM/A1EDVANZAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA1s=}, + Bdsk-File-2 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QWS4uLy4uLy4uLy4uL0Rvd25sb2Fkcy9ldmFsdWF0aW5nLXJlcGxpY2FiaWxpdHktb2YtbGFib3JhdG9yeS1leHBlcmltZW50cy1pbi1lY29ub21pY3MuYmli0hcLGBlXTlMuZGF0YU8RAi4AAAAAAi4AAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAM6Xc4NIKwAAAAj3aR9ldmFsdWF0aW5nLXJlcGxpY2FiI0Q4QTEwQkEuYmliAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANihC61ZTX1gAAAAAAAAAAAAQAAgAACSAAAAAAAAAAAAAAAAAAAAAJRG93bmxvYWRzAAAQAAgAAM6Xq8MAAAARAAgAANWVEBYAAAABAAwACPdpAAj3ZgACZI4AAgBGTWFjaW50b3NoIEhEOlVzZXJzOgBzbWl0aHM6AERvd25sb2FkczoAZXZhbHVhdGluZy1yZXBsaWNhYiNEOEExMEJBLmJpYgAOAIgAQwBlAHYAYQBsAHUAYQB0AGkAbgBnAC0AcgBlAHAAbABpAGMAYQBiAGkAbABpAHQAeQAtAG8AZgAtAGwAYQBiAG8AcgBhAHQAbwByAHkALQBlAHgAcABlAHIAaQBtAGUAbgB0AHMALQBpAG4ALQBlAGMAbwBuAG8AbQBpAGMAcwAuAGIAaQBiAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAWlVzZXJzL3NtaXRocy9Eb3dubG9hZHMvZXZhbHVhdGluZy1yZXBsaWNhYmlsaXR5LW9mLWxhYm9yYXRvcnktZXhwZXJpbWVudHMtaW4tZWNvbm9taWNzLmJpYgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOAOoA7wD3AykDKwMwAzsDRANSA1YDXQNmA2sDeAN7A40DkAOVAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA5c=}} + +@inproceedings{ParnasEtAl1984, + Author = {D.L. Parnas and P.C. Clement and D. M. Weiss}, + Booktitle = {International Conference on Software Engineering}, + Date-Added = {2017-10-23 20:16:11 +0000}, + Date-Modified = {2017-10-23 20:16:11 +0000}, + Pages = {408-419}, + Title = {The modular structure of complex systems}, + Year = {1984}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QNi4uLy4uL3NlNHNjL1NjaUNvbXBBbmRTb2Z0RW5nUGFwZXJzL1Bhcm5hc0V0QWwxOTg0LnBkZtIXCxgZV05TLmRhdGFPEQHcAAAAAAHcAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAkx/Q0SUGFybmFzRXRBbDE5ODQucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTH9RNNvBNMAAAAAAAAAAAACAAMAAAkgAAAAAAAAAAAAAAAAAAAAF1NjaUNvbXBBbmRTb2Z0RW5nUGFwZXJzAAAQAAgAAM6Xq8MAAAARAAgAANNvPRMAAAABABQJMf0NCTHuxwASFacACPdmAAJkjgACAFVNYWNpbnRvc2ggSEQ6VXNlcnM6AHNtaXRoczoAUmVwb3M6AHNlNHNjOgBTY2lDb21wQW5kU29mdEVuZ1BhcGVyczoAUGFybmFzRXRBbDE5ODQucGRmAAAOACYAEgBQAGEAcgBuAGEAcwBFAHQAQQBsADEAOQA4ADQALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAENVc2Vycy9zbWl0aHMvUmVwb3Mvc2U0c2MvU2NpQ29tcEFuZFNvZnRFbmdQYXBlcnMvUGFybmFzRXRBbDE5ODQucGRmAAATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOAMcAzADUArQCtgK7AsYCzwLdAuEC6ALxAvYDAwMGAxgDGwMgAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAyI=}} + +@inproceedings{Parnas1974, + Author = {David L. Parnas}, + Booktitle = {IFIP Congress 74}, + Date-Added = {2017-10-23 19:36:16 +0000}, + Date-Modified = {2017-10-23 19:36:16 +0000}, + Pages = {336-339}, + Publisher = {North Holland Publishing Company}, + Title = {On a 'Buzzword': Hierarchical Structure}, + Year = {1974}} + @inproceedings{KellyAndShepard2000, Author = {Diane Kelly and Terry Shepard}, Booktitle = {CASCON '00: Proceedings of the 2000 conference of the Centre for Advanced Studies on Collaborative research},