--- trunk/tengDissertation/Appendix.tex	2006/04/03 18:07:57	2687
+++ trunk/tengDissertation/Appendix.tex	2006/04/04 04:32:24	2688
@@ -1,22 +1,83 @@
 \chapter{\label{chapt:appendix}APPENDIX}
 
+Designing object-oriented software is hard, and designing reusable
+object-oriented scientific software is even harder. Absence of
+applying modern software development practices is the bottleneck of
+Scientific Computing community\cite{wilson}. For instance, in the
+last 20 years , there are quite a few MD packages that were
+developed to solve common MD problems and perform robust simulations
+. However, many of the codes are legacy programs that are either
+poorly organized or extremely complex. Usually, these packages were
+contributed by scientists without official computer science
+training. The development of most MD applications are lack of strong
+coordination to enforce design and programming guidelines. Moreover,
+most MD programs also suffer from missing design and implement
+documents which is crucial to the maintenance and extensibility.
+
 \section{\label{appendixSection:desginPattern}Design Pattern}
 
+Design patterns are optimal solutions to commonly-occurring problems
+in software design. Although originated as an architectural concept
+for buildings and towns by Christopher Alexander \cite{alexander},
+software patterns first became popular with the wide acceptance of
+the book, Design Patterns: Elements of Reusable Object-Oriented
+Software \cite{gamma94}. Patterns reflect the experience, knowledge
+and insights of developers who have successfully used these patterns
+in their own work. Patterns are reusable. They provide a ready-made
+solution that can be adapted to different problems as necessary.
+Pattern are expressive. they provide a common vocabulary of
+solutions that can express large solutions succinctly.
 
-\subsection{\label{appendixSection:visitorPattern}Visitor Pattern}
+Patterns are usually described using a format that includes the
+following information:
+\begin{enumerate}
+  \item The \emph{name} that is commonly used for the pattern. Good pattern names form a vocabulary for
+  discussing conceptual abstractions. a pattern may have more than one commonly used or recognizable name
+  in the literature. In this case it is common practice to document these nicknames or synonyms under
+  the heading of \emph{Aliases} or \emph{Also Known As}.
+  \item The \emph{motivation} or \emph{context} that this pattern applies
+  to. Sometimes, it will include some prerequisites that should be satisfied before deciding to use a pattern
+  \item The \emph{solution} to the problem that the pattern
+  addresses. It describes how to construct the necessary work products. The description may include
+  pictures, diagrams and prose which identify the pattern's structure, its participants, and their
+  collaborations, to show how the problem is solved.
+  \item The \emph{consequences} of using the given solution to solve a
+  problem, both positive and negative.
+\end{enumerate}
 
-\subsection{\label{appendixSection:templatePattern}Template Pattern}
+As one of the latest advanced techniques emerged from
+object-oriented community, design patterns were applied in some of
+the modern scientific software applications, such as JMol, OOPSE
+\cite{Meineke05} and PROTOMOL \cite{} \textit{etc}.
 
-\subsection{\label{appendixSection:factoryPattern}Factory Pattern}
+\subsection{\label{appendixSection:factoryMethod}Factory Method}
+The Factory Method pattern is a creational pattern which deals with
+the problem of creating objects without specifying the exact class
+of object that will be created. Factory Method solves this problem
+by defining a separate method for creating the objects, which
+subclasses can then override to specify the derived type of product
+that will be created.
 
-\section{\label{appendixSection:hierarchy}Hierarchy}
 
-\section{\label{appendixSection:selectionSyntax}Selection Syntax}
+\subsection{\label{appendixSection:visitorPattern}Visitor}
+The purpose of the Visitor Pattern is to encapsulate an operation
+that you want to perform on the elements of a data structure. In
+this way, you can change the operation being performed on a
+structure without the need of changing the classes of the elements
+that you are operating on.
 
-\section{\label{appendixSection:hydrodynamics}Hydrodynamics}
 
+\subsection{\label{appendixSection:templateMethod}Template Method}
+
+
 \section{\label{appendixSection:analysisFramework}Analysis Framework}
 
-\subsection{\label{appendixSection:staticProps}Factory Properties}
+\section{\label{appendixSection:hierarchy}Hierarchy}
 
+\subsection{\label{appendixSection:selectionSyntax}Selection Syntax}
+
+\subsection{\label{appendixSection:hydrodynamics}Hydrodynamics}
+
+\subsection{\label{appendixSection:staticProps}Static Properties}
+
 \subsection{\label{appendixSection:dynamicProps}Dynamics Properties}
