Abstract
Automated tool support is crucial for the comprehension of large-scale, object-oriented software and involves compressing and clustering the vast amount of information that is contained in the source code. However, software comprehension demands more than the mere understanding of the static structure of the source code. The clear representation of the system’s physical and logical structure is still insufficient for a developer to fully comprehend the purpose of a given piece of software (Beck and Johnson, 1994). Underlining this statement, Booch estimates that “it takes a professional programmer about 6–9 months to become really proficient with a larger framework,” and he adds that “this rate increases rather exponentially to the complexity of software” (Booch, 1996). We agree with Beck and Johnson that one reason for this gigantic effort for software comprehension and evolution is that “existing design notations focus on communicating the what of designs, but almost completely ignore the why.” They argue that comprehension of the rationale behind the design decisions is equally as much important as understanding of the software’s structural and logical constituents. Yet, for the most part, current reverse engineering tools completely neglect recovery of the design rationale.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Antoniol, G., Fiutem, R., and Cristoforetti, L. (1998). Design pattern recovery in object-oriented software. In Proceedings of the Sixth International Workshop on Program Comprehension, Ischia, Italy, June 1998, pp. 153–160.
Appleton, B. (1998). Patterns and software: Essential concepts and terminology. On-line at http://www.enteract.com/—bradapp/docs/.
Baniassad, E. L. A. and Murphy, G. (1998). Conceptual module querying for software reengineering. In Proceedings of the 20th International Conference on Software Engineering, Kyoto, Japan, April 1998, pp. 64–73.
Beck, K. and Johnson, R. (1994). Patterns generate architectures. In Proceedings of the 13th European Conference on Object-Oriented Programming,Springer-Verlag, LNCS 821, pp. 139–149..
Biggerstaff, T. J. (1989). Design recovery for maintenance and reuse. IEEE Computer, 22 (7): 36–49, July 1989.
Booch, G. (1996). Object Solutions: Managing the Object-Oriented Project, Reading, MA: Addison-Wesley.
Brown, K. (1997). Design reverse-engineering and automated design pattern detection in Smalltalk. On-line at http://hillside.net/patterns/papers/.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., and Stal, M. (1996). Pattern-Oriented Software Architecture: A System of Patterns, New York, John Wiley and Sons.
Butler, G., Keller, R. K., and Mili, H. (2000). A framework for framework documentation. ACM Computing Surveys, 32(1), Symposium on Object-Oriented Application Frameworks.
Datrix (2000). Datrix omepage,http://www.iro.umontreal.ca/labs/gelo/datrix/.
Fayad, M., and Schmidt, D. C. (1997). Object-oriented application frameworks. Communications of the ACM, 40 (10): 32–40.
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995). Design Patterns: Elements of Reusable Object-Oriented Software, Reading, MA: Addison-Wesley.
IBM (1999). IBM—alphaWorks, http://www.alphaworks.ibm.com/tech/xml/.
ICESoft (2000). ICESoft A/S, Bergen, Norway. ICEBrowser. Online documentation at http://www.icesoft.no/.
Instantiations (2000). jKit/GO online documentation. Instantiations, Tualatin, OR. On-line at http://www.instantiations.com/.
Johnson, R. (1992). Documenting frameworks using patterns. In Proceedings of the Conference on Object-Oriented Programming: Systems, Languages and Applications, Vancouver, B.C., October 1992, pp. 63–76.
Keller, R. K., and Schauer, R.. (1998). Design components: towards software composition at the design level. In Proceedings of the 20th International Conference on Software Engineering, Kyoto, Japan, April 1998, pp. 302–310.
Keller, R. K., Schauer, R., Robitaille, S., and Pagé, P. (1999). Pattern-based reverse engineering of design components. In Proceedings. of the 21st International Conference on Software Engineering, Los Angeles, May 1999, pp. 226–235.
Keller, R. K., and Schauer R. (2000). Towards a quantitative assessment of method replacement. In Proceedings of the Fourth Euromicro Working Conference on Software Maintenance and Reengineering, Zurich, Switzerland, February 2000, pp. 141–150.
Kontsofios, E., and North S. C. (2000). Drawing graphs with Dot. ATandT Bell Laboratories, Murray Hill, NJ. Available on-line at http://www.reasearch.att.com/sw/tools/graphviz
Kraemer, C., and Prechelt, L. (1996). Design recovery by automated search for structural design patterns in object-oriented software. In Proceedings of the Working Conference on Reverse Engineering, Monterey, CA, November 1996, pp. 208–215.
Martin, R. (1995). Discovering design patterns in existing applications. In J. Coplien and D. C. Schmidt, Eds., Pattern Languages of Program Design, Addison-Wesley, pp. 365–393.
North S. C. (2000). NEATO User’s Manual. ATandT Bell Laboratories, Murray Hill, NJ. On-line at http://www.research.att.com/sw/tools/graphviz/.
Odenthal, G., and Quibeldey-Cirkel, K. (1997). Using patterns for design and documentation. In Proceedings of the 11th European Conference on Object-Oriented Programming, Jyvaskyla, Finland, June 1997, pp. 511–529.
OMG (1998). Object Management Group (OMG). XML Metadata Interchange (XMI). Document ad/98–10–05, October 1998. Available on–line at ftp://ftp.omg.org/pub/docs/ad/98–10–05.pdf/.
Rich, C., and Waters R. (1988). The programmer’s apprentice: A research overview. IEEE Computer 21 (11): 11–24.
Robitaille, S., Schauer, R., and Keller, R. K. (2000). Bridging program comprehension tools by design navigation. In Proceedings of the International Conference on Software Maintenance (ICSM’2000), San Jose, CA, October 2000, pp. 135–141.
Saint-Denis, G., Schauer, R., and Keller, R. K. (2000). Selecting a model interchange format. The SPOOL case study. In Proceedings of the Thirty-Third Annual Hawaii International Conference on System Sciences, Maui, HI, January 2000.
Sax (2000). Sax 1.0: The simple API for XML.http://www.megginson.com/SAX/.
Schauer, R., Robitaille, S., Martel, F., and Keller, R. K. (1999). Hot spot recovery in object-oriented software with inheritance and composition template methods. In Proceedings of the International Conference on Software Maintenance (ICSM’99), Oxford, Britain, August 1999, pp. 220–229.
Sun (2000). Sun Microsystems, Inc. Java Foundation Classes (JFC) documentation. http://www.javasoft.com/products/jfc/index.html.
TakeFive (2000). TakeFive Software. SNiFF+ dcumentation set. On-line at http://www.takefive.com/.
UML (1997). Documentation set version 1. 1. http://www.rational.com.
W3C (1998). World Wide Web Consortium (W3C). Extensible Markup Language (XML) 1. 0. W3C recommendation, February 1998, http://www.w3.org/TR/1998/REC-xml-19980210.
W3C (1999). World Wide Web Consortium (W3C). Document Object Model (DOM). W3C recommendation, June 1999. http://www.w3.org/TR/PRDOM-Level-1.
Weinand, A., Gamma, A., and Marty, R.. (1989). Design and implementation of ET++, a seamless object-oriented application framework. Structured Programming, 10(2):63–87.
Editor information
Rights and permissions
Copyright information
© 2002 Springer Science+Business Media New York
About this chapter
Cite this chapter
Keller, R.K., Schauer, R., Robitaille, S., Laguë, B. (2002). Pattern-Based Design Recovery with SPOOL. In: Erdogmus, H., Tanir, O. (eds) Advances in Software Engineering. Springer, New York, NY. https://doi.org/10.1007/978-0-387-21599-0_6
Download citation
DOI: https://doi.org/10.1007/978-0-387-21599-0_6
Publisher Name: Springer, New York, NY
Print ISBN: 978-1-4419-2878-8
Online ISBN: 978-0-387-21599-0
eBook Packages: Springer Book Archive