ABSTRACT
We address the problem of refining and completing a partially specified high-level design model and a partially-defined mapping from source code to design model. This is related but not identical to tasks that have been automated with a variety of reverse engineering tools to support software modification tasks. We posited that set-based flow analysis algorithms would provide a convenient and powerful basis for refining an initial rough model and partial mapping, and in particular that the ability to compute fixed points of set equations would be useful in propagating constraints on the relations among the model, the mapping, and facts extracted from the implementation. Here we report our experience applying this approach to a modest but realistic example problem. We were successful in expressing a variety of useful transformations very succinctly as flow equations, and the propagation of recursively-defined constraints was indeed useful in refining the mapping from implementation to model. On the other hand, our experience highlights remaining challenges to make this an attractive approach for general use. Special measures are required to identify and remove inconsistent constraints before they propagate through a system. Also, while the required flow equations are succinct, they are also rather opaque; it is not obvious how their expressive power might be preserved in a more accessible notation.
Get full access to this Publication
Purchase, subscribe or recommend this publication to your librarian.
Already a Subscriber?Sign In
References
- A. Aiken. Introduction to set contraint-based program analysis. Science of Computer Programming, 35:79--111, 1999. Google Scholar
- O. Ciupke. Autmatic detection of design problems in object-oriented reengineering. In Technology of Object-Oriented Languages and Systems (TOOLS 30), pages 18--32, 1999. Google Scholar
- M. Consens, A. Mendelzon, and A. Ryman. Visualizing and querying software structures. In Proc. ICSE '92, pages 138--156. IEEE Computer Society Press, 1992. Google Scholar
- M. Dahm. Byte code engineering with the BCEL API. Technical Report B-17-98, Freie Universitat Berlin, Institut fur Informatik, 2001. Available at http://bcel.sourceforge.net.Google Scholar
- J. Fabry and T. Mens. Language-independent detection of object-oriented design patterns. Computer Languages, Systems, and Structures, 30:21--33, 2004. Google Scholar
- H.M. Fahmy and R.C. Holt. Using graph rewriting to specify software architectural transformations. In 15th Conf. on Automated Software Engineering (ASE 2000), pages 187--196. IEEE Computer Society Press, 2000. Google Scholar
- L. Feijs, R. Krikhaar, and R. Van Ommering. A relational approach to support software architecture analysis. Science of Computer Programming, 33:163--212, 1999.Google Scholar
- L. Feijs and R. Van Ommering. Relation partition algebra---mathematical aspects of uses and part-of relations. Software---Practice and Experience, 28(4):371--400, 1998. Google Scholar
- P. J. Finnigan, R. C. Holt, I. Kalas, S. Kerr, K. Kontogiannis, H. A. Müller, J. Mylopolous, S. G. Perelgut, M. Stanley, and K. Wong. The software bookshelf. IBM Systems Journal, 36:564--593, 1997. Google Scholar
- J. Fiskio-Lasseter and M. Young. Flow equations as a generic programming tool for manipulation of attributed graphs. In Proc. ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE '02). ACM Press, November 2002. Google Scholar
- Apache Software Foundation. Apache Jakarta Tomcat. Java servlet container available at http://jakarta.apache.org/tomcat.Google Scholar
- E. R. Gansner, E. Koutsofios, S. C. North, and K. Vo. A technique for drawing directed graphs. IEEE Transactions on Software Engineering, 19(3):214--230, 1993. Google Scholar
- R. C. Holt. Structural manipulations of software architecture using Tarski relational algebra. In 5th Working Conference on Reverse Engineering, pages 210--219. IEEE Computer Society Press, 1998. Google Scholar
- H. A. Müller, M. A. Orgun, S. R. Tilley, and J. S. Uhl. A reverse engineering approach to subsystem structure identification. Software Maintenance: Research and Practice, 5(4):181--204, December 1993.Google Scholar
- G. C. Murphy, D. Notkin, and K. Sullivan. Software reflexion models: Bridging the gap between source and high-level models. IEEE Transactions on Software Engineering, 27(4):364--380, 2001. Google Scholar
- D. Parnas. Designing software for ease of extension and contraction. IEEE Transactions on Software Engineering, 5(3):128--137, 1979.Google Scholar
- J. Rajamani. Constraint propagation as an aid to program visualization. M.Sc. Thesis, Computer Science Dept., Purdue University, 1997.Google Scholar
- K. Sartipi and K. Kontogiannis. On modeling software architecture recovery as graph matching. In Proc. ICSM '03. IEEE Computer Society Press, 2003. Google Scholar
- X. Zhang, M. Young, and J.H.E.F. Lasseter. Electronic appendix to "Refining code-design mapping with flow analysis". Available at http://www.cs.uoregon.edu/~michal/papers/fse04.html.Google Scholar
Index Terms
Refining code-design mapping with flow analysis





Comments