\begin{thebibliography}{1}
\providecommand{\url}[1]{#1}
\csname url@rmstyle\endcsname
\providecommand{\newblock}{\relax}
\providecommand{\bibinfo}[2]{#2}
\providecommand\BIBentrySTDinterwordspacing{\spaceskip=0pt\relax}
\providecommand\BIBentryALTinterwordstretchfactor{4}
\providecommand\BIBentryALTinterwordspacing{\spaceskip=\fontdimen2\font plus
\BIBentryALTinterwordstretchfactor\fontdimen3\font minus
  \fontdimen4\font\relax}
\providecommand\BIBforeignlanguage[2]{{%
\expandafter\ifx\csname l@#1\endcsname\relax
\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%
\typeout{** loaded for the language `#1'. Using the pattern for}%
\typeout{** the default language instead.}%
\else
\language=\csname l@#1\endcsname
\fi
#2}}

\bibitem{britton-etal-1981}
K.~H. Britton, R.~A. Parker, and D.~L. Parnas, ``A procedure for designing
  abstract interfaces for device interface modules,'' in \emph{Proceedings of
  the 5th International Conference on Software Engineering}, March 1981, pp.
  195--204.
 \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.~C. Cunningham, P.~Tadepalli, and Y.~Liu, ``Secrets, hot spots, and
  generalization: Preparing students to design software families,''
  \emph{Journal of Computing Sciences in Colleges}, vol.~20, no.~6, pp.
  118--124, June 2005.


\bibitem{cunningham-etal-2004}
H.~C. Cunningham, C.~Zhang, and Y.~Liu, ``Keeping secrets within a family:
  Rediscovering {Parnas},'' in \emph{Proceedings of the International
  Conference on Software Engineering Research and Practice (SERP)}.\hskip 1em
  plus 0.5em minus 0.4em\relax CSREA Press, June 2004, pp. 712--718.


\bibitem{parnas-etal-1985}
D.~L. Parnas, P.~C. Clements, and D.~M. Weiss, ``The modular structure of
  complex systems,'' \emph{IEEE Transactions on Software Engineering}, vol.
  SE-11, no.~3, pp. 259--266, March 1985.


\bibitem{parnas-1972}
D.~L. Parnas, ``On the criteria to be used in decomposing systems into
  modules,'' \emph{Communications of the ACM}, vol.~15, no.~12, pp. 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}
------, ``On the design and development of program families,'' \emph{IEEE
  Transactions on Software Engineering}, vol. SE-2, no.~1, pp. 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}
------, ``Some software engineering principles,'' in \emph{Infotech State of
  the Art Report on Structured Analysis and Design}.\hskip 1em plus 0.5em minus
  0.4em\relax Infotech International, 1978, p. 10 pages, reprinted in Software
  Fundamentals: Collected Papers by David L. Parnas, Daniel M. Hoffman and
  David M. Weiss, editors, Addison Wesley, 2001.


\bibitem{parnas-1979}
------, ``Designing software for ease of extension and contraction,''
  \emph{IEEE Transactions on Software Engineering}, vol. SE-5, no.~1, pp.
  128--138, March 1979.


\bibitem{weiss-2001}
D.~M. Weiss, ``Introduction: On the criteria to be used in decomposing systems
  into modules,'' in \emph{Software Fundamentals: Collected Papers by David L.
  Parnas}, D.~M. Hoffman and D.~M. Weiss, Eds.\hskip 1em plus 0.5em minus
  0.4em\relax Addison-Wesley, 2001, pp. 143--144.


\end{thebibliography}
