\begin{thebibliography}{1}

\bibitem{britton-etal-1981}
Kathryn~Henninger Britton, R.~Alan Parker, and David~L. Parnas.
\newblock A procedure for designing abstract interfaces for device interface
  modules.
\newblock In {\em Proceedings of the 5th International Conference on Software
  Engineering}, pages 195--204, March 1981.
 \begin{quotation}\noindent This classic paper by Parnas and his colleagues
  builds on the concept of information hiding \cite{parnas-1972}. It describes
  the concept of an abstract interface as a mechanism for hiding the details of
  a low-level interface from the other modules of the software system. It uses
  a two-phase design method for such modules. \end{quotation}
\bibitem{cunningham-etal-2005}
H.~Conrad Cunningham, Pallavi Tadepalli, and Yi~Liu.
\newblock Secrets, hot spots, and generalization: Preparing students to design
  software families.
\newblock {\em Journal of Computing Sciences in Colleges}, 20(6):118--124, June
  2005.


\bibitem{cunningham-etal-2004}
H.~Conrad Cunningham, Cuihua Zhang, and Yi~Liu.
\newblock Keeping secrets within a family: Rediscovering {Parnas}.
\newblock In {\em Proceedings of the International Conference on Software
  Engineering Research and Practice (SERP)}, pages 712--718. CSREA Press, June
  2004.

\bibitem{parnas-etal-1985}
D.~L. Parnas, P.~C. Clements, and D.~M. Weiss.
\newblock The modular structure of complex systems.
\newblock {\em IEEE Transactions on Software Engineering}, SE-11(3):259--266,
  March 1985.


\bibitem{parnas-1972}
David~L. Parnas.
\newblock On the criteria to be used in decomposing systems into modules.
\newblock {\em Communications of the ACM}, 15(12):1053--1058, 1972.
 \begin{quotation}\noindent This classic paper by Parnas is the first
  publication of the design concept known as information hiding. The key idea
  is to design software modules around a single design decision that may change
  over time or among versions of the system. The module hides this design
  decision, known as the secret of the module, behind an interface that is
  unlikely to change. \end{quotation}

\bibitem{parnas-1976}
David~L. Parnas.
\newblock On the design and development of program families.
\newblock {\em IEEE Transactions on Software Engineering}, SE-2(1):1--9, March
  1976.
 \begin{quotation}\noindent This classic paper by Parnas introduces the design
  concept known as program (or software) families, often called software
  product lines today. This means that the designers of a software system
  should seek to design the system to exist in multiple versions from the
  beginning. New versions may be created for different customers or platforms
  or perhaps just over time as improvements are made to the original system.
  \end{quotation}

\bibitem{parnas-1978}
David~L. Parnas.
\newblock Some software engineering principles.
\newblock In {\em Infotech State of the Art Report on Structured Analysis and
  Design}, page 10 pages. Infotech International, 1978.
\newblock Reprinted in Software Fundamentals: Collected Papers by David L.
  Parnas, Daniel M. Hoffman and David M. Weiss, editors, Addison Wesley, 2001.

\bibitem{parnas-1979}
David~L. Parnas.
\newblock Designing software for ease of extension and contraction.
\newblock {\em IEEE Transactions on Software Engineering}, SE-5(1):128--138,
  March 1979.


\bibitem{weiss-2001}
David~M. Weiss.
\newblock Introduction: On the criteria to be used in decomposing systems into
  modules.
\newblock In Daniel~M. Hoffman and David~M. Weiss, editors, {\em Software
  Fundamentals: Collected Papers by David L. Parnas}, pages 143--144.
  Addison-Wesley, 2001.

\end{thebibliography}
