\documentclass{report}

\usepackage[hmargin=1in,vmargin=1in]{geometry}
\usepackage{natbib}
\usepackage{hyperref}
\usepackage{graphicx}

\begin{document}

\section*{Scibed notes for SE 464 - May 4, 2011}

\subsection*{Recap}

\emph{What questions will we be answering in this course?}
\begin{itemize}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\item What is design?
\item How do we represent design?
\item How do we know our design is good?

\end{itemize}

\noindent There is no single canonical answer to any of these questions. We will be striving towards a better understanding of the questions.

\subsection*{What are some definitions for design?}

\emph{Student definitions}
\begin{itemize}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\item The act of building something on paper as opposed to physically to meet
 the constraints of:
    \begin{itemize}
    \item Customer
    \item Environment
    \item Mathematical reality (See \hyperlink{side1}{side note 1})
    \item Existing Components (See \hyperlink{side2}{side note 2})
    \end{itemize}
\item Design is the output of the act of designing (See
 \hyperlink{side3}{side note 3})
\end{itemize}

\noindent\emph{Literature definitions}
\input{defns}

\subsection*{What is Design?}
Design can be many things we have seen it as a verb and will look at it as a
 noun and a discipline specific activity.

\subsubsection*{Design as a Verb}
The act of designing.  See lecture 1 for more information.
\begin{itemize}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\item The Waterfall Design Process - Software specific
\item The Spiral Design Process - Software specific
\item The Funnel Design Process - Commonly used outside of software.
In this design process we explore many alternatives and use this design
 process to narrow them down. - See Design Process from lecture~1.

\end{itemize}

\subsubsection*{Design as a Noun}
What the design of a (software) system is. This design can be:
\begin{itemize}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\item Structure-oriented
    \begin{itemize}
    \item Components and connectors (boxes and arrows)
    \item Makes sense for a physical design because the artefact exists in the
 3D world (eg: physical placement of gates in chip-making)
    \item The spatial metaphor sometimes breaks down for software,
    which has no physical form.
    \item Most of the cited definitions above talk about
    design/architecture using this metaphor of physical structure.
    \end{itemize}
\item Decision-oriented
    \begin{itemize}
    %\item Reflects both components and communication.
    \item This idea is gaining prominence in systems engineering (see paper by
Mike Griffin \cite{Griffin10iac} in SVN repository).
    \item A decision based model is generative and various structures can be 
generated from a single decision-based design. (J)
    \item The definition from the Taylor texbook is Descision-oriented.
    \end{itemize}
\item Communication-oriented
    \begin{itemize}
        \item See Conways Law for an example of a communication-oriented
 definition.
        \item This course does not focus on social reality so we will not look
 closely at these.
    \end{itemize}
\end{itemize}

\subsubsection*{Design as Discipline Specific}
Not covered today.

\subsection*{Normal and Radical Design}

\begin{center}
\includegraphics[scale=0.75]{NormalRadical.png}
\end{center}
\begin{itemize}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\item Existing components = Normal
\item New (invented) components = Radical
\item Standard configurations = Normal
\item New configurations = Radical
\end{itemize}

The idea of Normal and Radical has a history in architecture and
aeronautics.  It is now being applied to software engineering.

Aeronautical engineer and historian Walter \citet{Vincenti93book},
following Edward \citet{Constant80book}, distinguishes between
\emph{normal} design and \emph{radical} design.

Michael A.\ \citet{Jackson08lipari} argues that we in software would do
well to incorporate this division into our thinking about software
design.

The \citet{Taylor09book} textbook uses the term \emph{unprecedented} instead of
radical.

\subsubsection*{Where does SE2 Fit?}
We can now understand how this course relates to all the other courses we have taken.
\begin{itemize}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\item Components - most of the other courses we take are either basic skills or
 teach us how to build components from the few we know how to make well (OS,
 database, compiler, text editor etc.).
\item Composition - SE2 is about normal modes of composition and the
 accumulated wisdom of how we arrange things in software.
\end{itemize}

\subsection*{What is the Role of Designers?}
\begin{itemize}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\item Take radical problems and turn them into normal problems
\item Reduce to one dimension of radicality
    \begin{itemize}
    \item Take existing components and put them together in a new way
    \item Take new components and put them together in a known way
    \end{itemize}
\item Why make things more normal?
    \begin{itemize}
    \item Cheaper
    \item Faster development
    \item Reduced risk
    \item Easier to talk about without introducing new terminology
    \item Problems are understood
    \item Easier to extend – fitness for future
    \end{itemize}
\end{itemize}

\begin{quotation}\noindent
%
\emph{There are two ways of constructing a software design.  One
way is to make it so simple that there are obviously no
deficiencies.  And the other way is to make it so complicated that
there are no obvious deficiencies.}
%
--- \citet{Hoare80turing}
%
\end{quotation}

\subsection*{Summary Questions}
\begin{enumerate}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\item Come up with 2 more definitions for design using your own experience
 with designing in the past.
\item Give examples of designs at the four corners of the Normal-Radical plane.
\item List advantages and disadvantages of both structural and decision oriented
 design.
\end{enumerate}

\subsection*{Side Notes}
\begin{enumerate}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\item \hypertarget{side1}{Mathematical Platonism} - belief that numbers are real -
\url{http://en.wikipedia.org/wiki/Philosophy_of_mathematics#Platonism}
\item \hypertarget{side2}{Sometimes we need} to invent new components as we may
 not have the science and mathematics needed. 
    \begin{itemize}
    \item Steam engines required thermodynamics which was not known yet -
    (\href{http://en.wikipedia.org/wiki/Watt_steam_engine}{Watt Steam Engine} vs 
    \href{http://en.wikipedia.org/wiki/Newcomen_steam_engine}{Newcomen Steam Engine})
    \item Heaviside needed to develope techniques for differential equations.
    \end{itemize}
\item \hypertarget{side3}{Matlab is what Matlab does} - never specified for legal
 reasons (eg: someone uses Matlab to model something and the model fails)
    \begin{itemize}
    \item Software doesn't have warranty
    \item There are some exceptions: Praxis warranties their software
    against a specification written in formal logic (first they train
    the customer to understand logic, and then the customer signs off
    on the spec)
    \end{itemize}
\item \hypertarget{side4}{Intentionality}
    \begin{itemize}
    \item Need to know what other people have done/do in your area of design in 
    order to make it intentional, you cannot invent something we already 
    know.
    \end{itemize}
\end{enumerate}

\subsection*{Administration Notes}
Historically with this course, we end up with a lot of 'hot air', which is a
waste of time and effort for everyone. For labs this year we're going to try
to crack down on 'unnecessary hot air' to attempt to increase the technical
content and value of the lab submissions.

When checking out code from the SVN repository, use your ECE Linux password. Using 
your WatIAM password takes much, much longer. Recommended Clients:
TortoiseSVN for Windows; svnX for Mac; Subclipse and Subversive for
Eclipse; the normal subversion command line tools.

\bibliographystyle{plainnat}
\bibliography{main}

\end{document}

