[1] Kerievsky, Joshua, Refactoring to Patterns, Upper Saddle River, NJ: Addison-Wesley, 2005.
[2] Reeves, Jack W. , "What is Software Design?" C++ Journal, Fall 1992.