ABSTRACT
Learning and understanding a framework is usually a major obstacle to its effective reuse. Before being able to use a framework successfully, users often go through a steep learning curve by spending a lot of effort understanding its underlying architecture and design principles. This is mainly due to users having to understand not only single isolated classes, but also complex designs of several classes whose instances collaborate for many different purposes, and using many different mechanisms. In addition, frameworks are also full of delocalized plans, and use inheritance and delegation intensively, which makes their design more difficult to grasp. How to obtain the necessary information from the framework itself and its accompanying documentation is the main problem with framework understanding. Considering its importance, this paper presents an initial attempt to capture, in the pattern form, a set of proven solutions to recurrent problems of understanding frameworks. The fundamental objective of this work is to help non-experts on being more effective when trying to learn and understand object-oriented frameworks.
- Aguiar, A. (2003). A minimalist approach to framework documentation. PhD thesis, Faculdade de Engenharia da Universidade do Porto.Google Scholar
- Aguiar, A., and David, G. (2005). Patterns for Documenting Frameworks -- Part I. In Proceedings of VikingPLoP'2005, Helsinki, Finland. Google ScholarDigital Library
- Aguiar, A., and David, G. (2006). Patterns for Documenting Frameworks -- Part II. In Proceedings of EuroPLoP'2006, Irsee, Germany. Google ScholarDigital Library
- Aguiar, A., and David, G. (2006). Patterns for Documenting Frameworks -- Part III. In Proceedings of PLoP'2007, Portland, Oregon, USA. Google ScholarDigital Library
- Ahamed, S. I., Pezewski, A., and Pezewski, A. (2004). "Towards Framework Selection Criteria and Suitability for an Application Framework." In Proceedings of the international Conference on information Technology: Coding and Computing (Itcc'04). Google ScholarDigital Library
- Alexander, C., Ishikawa, S., and Silverstein, M. (1977). A Pattern Language. Oxford University Press.Google Scholar
- Brooks, R., "Towards a theory of the comprehension of computer programs" (1983), International Journal of Man-Machine Studies, pp. 543--554, vol. 18, 1983.Google Scholar
- Bruch, M., Schäfer, T. and Mezini, M., "FrUiT: IDE Support for Framework Understanding" (2006) OOPSLA Eclipse Techonology Exchange, 2006 Google ScholarDigital Library
- Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P. and Stal, M. (1996) "Pattern oriented software architecture - a system of patterns". John Wiley and Sons. Google ScholarDigital Library
- Butler G., Xu L. "Cascaded Refactoring for Framework Evolution" (2001). Proceedings of 2001 Symposium on Software Reusability. ACM Press. P. 51--57. 2001 Google ScholarDigital Library
- Butler, G. (1997). A reuse case perspective on documenting frameworks. http://www.cs.concordia.ca/faculty/gregb.Google Scholar
- Codenie W., Hondt K., Steyaert P., Vercammen A. "From Custom Applications to Domain-Specific Frameworks." (1997) Communications of the ACM, 40(10): 71--77. 1997 Google ScholarDigital Library
- Cortés, M., Fontoura, M., Lucena, C. "Framework Evolution Tool" (2006). Journal of Object Technology, vol. 5, no. 8, November-December 2006, pp. 101--124.Google Scholar
- Deutsch, L. P. (1989). "Design reuse and frameworks in the smalltalk-80 system". In Software reusability: vol. 2, applications and experience, pages 57--71. ACM Press. Google ScholarDigital Library
- Fairbanks, G., Garlan D. and Scherlis, W. "Design Fragments Make Using Frameworks Easier" (2006), OOPSLA 2006. Google ScholarDigital Library
- Fayad, M. E. and Schmidt, D. C. (1997b). "Object-oriented application frameworks." Communications of the ACM, 40(10):32--38. Google ScholarDigital Library
- Fayad, M. E., Schmidt D. C., Johnson, R. E. "Building Application Frameworks" (1999). John Wiley & Sons, Inc. 1999 Google ScholarDigital Library
- Felder, R., and Spurlin, J. (2005) "Applications, Reliability, and Validity of the Index of Learning Styles". International Journal of Engineering Education, v. 21, n. 1, pp. 103--112.Google Scholar
- Felder, R. M. and Silverman, L. K. "Learning and Teaching Styles in Engineering Education" (1988), Engr. Education, 78(7), 674--681, 1988Google Scholar
- Flores, N. (2006). From Program Comprehension to Framework Understanding: a roadmap. Available at http://www.fe.up.pt/~nfloresGoogle Scholar
- Froehlich, G., Hoover, H., Lui, L. and Sorenson, P. (1997) "Hooking into Object-Oriented Application Frameworks", Proceedings of the 19th International Conference on Software Engineering, pp. 491--501. Google ScholarDigital Library
- Froehlich, G., Hoover, H. J., Liu, L., Sorenson, P. G. "Choosing an Object-Oriented Domain Framework" (2000), ACM Computing Surveys, vol. 32(1), 2000. Google ScholarDigital Library
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995)."Design Patterns --- Elements of reusable object-oriented software". Addison-Wesley. Google ScholarDigital Library
- Jacobson, E. E., Nowack, P. "Frameworks and Patterns: Architectural Abstractions" (1999). In Building Application Frameworks, Chapter 2, pp. 29--54, John Wiley & Sons, 1999Google Scholar
- Johnson, R. E. and Foote, B. (1988). "Designing reusable classes". Journal of Object-Oriented Programming, 1(2):22--35.Google Scholar
- Kirk, D., Roper, M., and Wood, M. (2005). "Identifying and Addressing Problems in Framework Reuse". In Proceedings of the 13th international Workshop on Program Comprehension (May 15--16, 2005). Google ScholarDigital Library
- Letovsky, s. "Cognitive processes in program comprehension" (1986), Empirical Studies of Programmers, pp. 58--79, 1986 Google ScholarDigital Library
- Littman, D. C., Pinto, J., Letovsky, S. and Soloway, E., "Mental models and software maintenance" (1986), Empirical Studies of Programmers, pp. 80--98, 1986 Google ScholarDigital Library
- Maryhauser and Vans. "Program comprehension during software maintenance" (1995), IEEE Computer pp. 44--55, August 1995. Google ScholarDigital Library
- Pennington, N., "Stimulus structures and mental representations in expert comprehension of computer programs" (1987), Cognitive Psychology, pp. 295--341, vol 19, 1987.Google Scholar
- Pree, W. (1995). Design Patterns for Object-Oriented Software Development. Addison-Wesley / ACM Press. Google ScholarDigital Library
- Pree, W". "Design Patterns for Object-Oriented Software Development" (1995). Addison-Wesley / ACN Press 1995 Google ScholarDigital Library
- Roberts, D. and Johnson, R. E. (1997). Evolving frameworks: A pattern language for developing object-oriented frameworks. In Pattern Languages of Program Design 3. Addison Wesley. Google ScholarDigital Library
- Robillard et al. "How Effective Developers Investigate Source Code: An Exploratory Study" (2004). IEEE Transactions on Software Engineering, Vol. 30, N°12, December 2004. Google ScholarDigital Library
- Robillard, M., Coelho, W., and Murphy, G., (2004) "How Effective Developers Investigate Source Code: An Exploratory Study", IEEE Transactions on Software Engineering, vol. 30, no. 12, December 2004 Google ScholarDigital Library
- Schull, F., Lanubile, F., Basil, V. "Investigating Reading Techniques for Object-Oriented Framework Learning", IEEE TSE, vol. 26, n°.11, 2000 Google ScholarDigital Library
- Shaw, M., Garlan, D., "Software Architecture -- Perspectives on an Emerging Discipline", Prentice Hall, 1996 Google ScholarDigital Library
- Shneiderman, B. and Mayer, R., "Syntactic/semantic interactions in programmer behavior: A model and experimental results" (1979). International Journal of Computer and Information Science, pp. 219--238, 8(3), 1979Google Scholar
- Shull, F., Lanubile, F., and Basili, V. R., "Investigating Reading Techniques for Framework Learning" (1998), Technical Report CS-TR-3896, UMCP Dept. of Computer Science, 1998Google Scholar
- Sillito, J., Murphy, G. C., and De Volder, K. (2006). "Questions programmers ask during software evolution tasks". In Proceedings of the 14th ACM SIGSOFT international Symposium on Foundations of Software Engineering (Portland, Oregon, USA, November 05--11, 2006) Google ScholarDigital Library
- Soloway, E. and Erlich, K. "Empirical studies of programming knowledge" (1984), IEEE Transactions on Software Engineering, pp. 595--609, SE-10(5), September 1984.Google Scholar
- Storey, M-A, "Theories, Methods and Tools in Program Comprehension: Past, Present and Future." (2005) Proceedings of the 13th IEEE International Workshop on Program Comprehension (IWPC). St. Louis, MO, pp. 181--191, IEEE Computer Society Press 2005. Google ScholarDigital Library
- Storey, M-A, Fracchia, F. and Muller, H. "Cognitive design elements to support the construction of a mental model during software visualization". (1997) Proceedings of the 5th International Workshop on Program Comprehension (IWPC'97), Dearborn, Michigan, pp. 17--28, May, 1997 Google ScholarDigital Library
- Surowiecki J. "The Wisdom of Crowds: Why the Many Are Smarter Than the Few and How Collective Wisdom Shapes Business, Economies, Societies and Nations" (2004), Little Brown 2004 Google ScholarDigital Library
- Turner, A. and Wang, C. (2007). "AJAX: Selecting the Framework that Fits". Dr. Dobb's Journal, May 01, 2007. http://www.ddj.com/web-development/199203087Google Scholar
- Zdun, U. and Avgeriou, P., (2005) "Modeling Architectural Patterns Using Architectural Primitives", OOPSLA Google ScholarDigital Library
- Patterns for understanding frameworks
Recommendations
Patterns for effectively documenting frameworks
Transactions on pattern languages of programming IIGood design and implementation are necessary but not sufficient prerequisites for successfully reusing object-oriented frameworks. Although not always recognized, good documentation is crucial for effective framework reuse, and often hard, costly, and ...
Patterns and Tools for Improving Framework Understanding: A Collaborative Approach
ICSEA '09: Proceedings of the 2009 Fourth International Conference on Software Engineering AdvancesSoftware development is a social activity. Teams of developers join together to coordinate their efforts to produce software systems. This effort encompasses the development of a shared understanding surrounding multiple artifacts throughout the ...
Characterizing Stability in Evolving Frameworks
TOOLS '99: Proceedings of the Technology of Object-Oriented Languages and SystemsObject-oriented application frameworks present one of the most successful approaches to developing reusable assets in industry, but developing frameworks is both difficult and expensive. Frameworks generally evolve through a number of iterations due to ...
Comments