Advertisement

Automated Software Engineering

, Volume 15, Issue 1, pp 35–74 | Cite as

Differencing and merging of architectural views

  • Marwan Abi-Antoun
  • Jonathan Aldrich
  • Nagi Nahas
  • Bradley Schmerl
  • David Garlan
Article

Abstract

Differencing and merging architectural views is an important activity in software engineering. However, existing approaches are still based on restrictive assumptions, such as requiring view elements to have unique identifiers or exactly matching types, which is often not the case in many application domains.

We propose an approach based on structural information. We generalize a published polynomial-time tree-to-tree correction algorithm that detects inserts, renames and deletes, into a novel algorithm that additionally detects restricted moves. Our algorithm also supports forcing and preventing matches between view elements.

We incorporate the algorithm into tools to compare and merge Component-and-Connector (C&C) architectural views. We provide an empirical evaluation of the algorithm. We illustrate the tools using extended examples, and use them to detect and reconcile interesting differences between real architectural views.

Keywords

Tree-to-tree correction View synchronization Graph matching 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Abi-Antoun, M., Aldrich, J., Garlan, D., Schmerl, B., Nahas, N., Tseng, T.: Improving system dependability by enforcing architectural intent. In: Proceedings of the Workshop on Architecting Dependable Systems, pp. 1–7 (2005) Google Scholar
  2. Abi-Antoun, M., Aldrich, J., Coelho, W.: A case study in re-engineering to enforce architectural control flow and data sharing. J. Syst. Softw. 80(2), 240–264 (2007) CrossRefGoogle Scholar
  3. Alanen, M., Porres, I.: Difference and union of models. In: Proceedings of 6th International Conference on the Unified Modeling Language, Modeling Languages and Applications, pp. 2–17 (2003) Google Scholar
  4. Aldrich, J., Chambers, C., Notkin, D.: ArchJava: connecting software architecture to implementation. In: Proceedings of the 24th International Conference on Software Engineering, pp. 187–197 (2002) Google Scholar
  5. Ammann, M.M., Cameron, R.D.: Inter-module renaming and reorganizing: examples of program manipulation-in-the-large. In: Proceedings of the International Conference on Software Maintenance, pp. 354–361 (1994) Google Scholar
  6. Apiwattanapong, T., Orso, A., Harrold, M.J.: A differencing algorithm for object-oriented programs. In: Proceedings of the 19th IEEE International Conference on Automated Software Engineering, pp. 2–13 (2004) Google Scholar
  7. Chawathe, S.S., Garcia-Molina, H.: Meaningful change detection in structured data. In: Proceedings of the ACM SIGMOD International Conference on Management of Data, pp. 26–37 (1997) Google Scholar
  8. Chen, P.H., Critchlow, M., Garg, A., van der Westhuizen, C., van der Hoek, A.: Differencing and merging within an evolving product line architecture. In: Proceedings of the 5th International Workshop on Software Product-Family Engineering, pp. 269–281 (2003) Google Scholar
  9. Clements, P., Bachman, F., Bass, L., Garlan, D., Ivers, J., Little, R., Nord, R., Stafford, J.: Documenting Software Architecture: View and Beyond. Addison-Wesley, Cambridge (2003) Google Scholar
  10. Conte, D., Foggia, P., Sansone, C., Vento, M.: Thirty years of graph matching in pattern recognition. Int. J. Pattern Recognit. Artif. Intell. 18(3), 265–298 (2004) CrossRefGoogle Scholar
  11. Dashofy, E.M., van der Hoek, A., Taylor, R.N.: Towards architecture-based self-healing systems. In: Proceedings of the First Workshop on Self-Healing Systems, pp. 21–26 (2002) Google Scholar
  12. Dickinson, P.J., Bunke, H., Dadej, A., Kraetzl, M.: Matching graphs with unique node labels. Pattern Anal. Appl. 7(3), 243–254 (2004) MathSciNetGoogle Scholar
  13. Easterbrook, S., Nuseibeh B.: Using ViewPoints for inconsistency management. Softw. Eng. J. 11(1), 31–43 (1996) CrossRefGoogle Scholar
  14. Egyed, A.: Instant consistency checking for the UML. In: Proceeding of the 28th International Conference on Software Engineering, pp. 381–390 (2006) Google Scholar
  15. Eixelsberger, W., Ogris, M., Gall, H., Bellay, B.: Software architecture recovery of a program family. In: Proceedings of the 20th International Conference on Software Engineering, pp. 508–511 (1998) Google Scholar
  16. Erdogmus, H.: Representing architectural evolution. In: Proceedings of the Conference of the Center for Advanced Studies on Collaborative Research, pp. 159–177 (1998) Google Scholar
  17. Garlan, D., Monroe, R.T., Wile, D.: Acme: architectural description of component-based systems. In: Leavens, G.T., Sitaraman, M. (eds.) Foundations of Component-Based Systems, pp. 47–68. Cambridge University Press, Cambridge (2000) Google Scholar
  18. Hlaoui, A., Wang, S.: A new algorithm for graph matching with application to content-based image retrieval. In: Proceedings of the Joint IAPR International Workshop on Structural, Syntactic, and Statistical Pattern Recognition, pp. 291–300 (2002) Google Scholar
  19. Jiang, T., Wang, L., Zhang, K.: Alignment of trees—an alternative to tree edit. In: Proceedings of the 5th Annual Symposium on Combinatorial Pattern Matching, pp. 75–86 (1994) Google Scholar
  20. Jimenez, A.M.: Change propagation in the MDA: a model merging approach. Master’s thesis, University of Queesland (2005) Google Scholar
  21. Krikhaar, R., Postma, A., Sellink, A., Stroucken, M., Verhoef, C.: A two-phase process for software architecture improvement. In: Proceedings of the IEEE International Conference on Software Maintenance, pp. 371–380 (1999) Google Scholar
  22. Mandelin, D., Kimelman, D., Yellin, D.: A Bayesian approach to diagram matching with application to architectural models. In: Proceedings of the 28th International Conference on Software Engineering, pp. 222–231 (2006) Google Scholar
  23. Medvidovic, N., Jakobac, V.: Using software evolution to focus architectural recovery. Autom. Softw. Eng. 13(2), 225–256 (2006) CrossRefGoogle Scholar
  24. Medvidovic, N., Taylor, R.N.: A classification and comparison framework for software architecture description languages. IEEE Trans. Softw. Eng. 26(1), 70–93 (2000) CrossRefGoogle Scholar
  25. Medvidovic, N., Oreizy, P., Robbins, J.E., Taylor, R.N.: Using object-oriented typing to support architectural design in the C2 style. In: Proceedings of the 4th ACM SIGSOFT Symposium on Foundations of Software Engineering, pp. 24–32 (1996) Google Scholar
  26. Mehra, A., Grundy, J., Hosking, J.: A generic approach to supporting diagram differencing and merging for collaborative design. In: Proceedings of the 20th IEEE/ACM International Conference on Automated Software Engineering, pp. 204–213 (2005) Google Scholar
  27. Melnik, S., Garcia-Molina, H., Rahm, E.: Similarity flooding: a versatile graph matching algorithm and its application to schema matching. In: Proceedings of the 18th International Conference on Data Engineering, pp. 117–128 (2002) Google Scholar
  28. Mens, T., Van Gorp, P.: A taxonomy of model transformation. In: Proceedings of the International Workshop on Graph and Model Transformation (2005) Google Scholar
  29. Messmer, B.: Efficient graph matching algorithms for preprocessed model graphs. PhD thesis, University of Bern (1996) Google Scholar
  30. Monroe, R.: Capturing software architecture design expertise with Armani. Technical Report CMU-CS-98-163R, Carnegie Mellon University School of Computer Science (2001) Google Scholar
  31. Muccini, H., Dias, M.S., Richardson, D.J.: Towards software architecture-based regression testing. In: Proceedings of the Workshop on Architecting Dependable Systems, pp. 1–7 (2005) Google Scholar
  32. Murphy, G.C., Notkin, D., Sullivan, K.J.: Software reflexion models: bridging the gap between design and implementation. IEEE Trans. Softw. Eng. 27(4), 364–380 (2001) CrossRefGoogle Scholar
  33. Object Technology International, Inc.: Eclipse platform technical overview. http://www.eclipse.org/whitepapers/eclipse-overview.pdf (2003)
  34. Ohst, D., Welle, M., Kelter, U.: Differences between versions of UML diagrams. In: Proceedings of the 9th European Software Engineering Conference/11th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 227–236 (2003) Google Scholar
  35. Raghavan, S., Rohana, R., Leon, D., Podgurski, A., Augustine, V.: Dex: a semantic-graph differencing tool for studying changes in large code bases. In: Proceedings of the 20th IEEE International Conference on Software Maintenance, pp. 188–197 (2004) Google Scholar
  36. Roshandel, R., van der Hoek, A., Mikic-Rakic, M., Medvidovic, N.: Mae—a system model and environment for managing architectural evolution. ACM Trans. Softw. Eng. Methodol. 13(2), 240–276 (2004) CrossRefGoogle Scholar
  37. Rushby, J., Owre, S., Shankar, N.: Subtypes for specifications: predicate subtyping in PVS. IEEE Trans. Softw. Eng. 24(9) (1998) Google Scholar
  38. Sartipi, K., Kontogiannis, K.: On modeling software architecture recovery as graph matching. In: Proceedings of the 19th IEEE International Conference on Software Maintenance, pp. 224–234 (2003) Google Scholar
  39. Schmerl, B., Garlan, D.: AcmeStudio: supporting style-centered architecture development. In: Proceedings of the 26th International Conference on Software Engineering, pp. 704–705 (2004) Google Scholar
  40. Schmerl, B., Aldrich, J., Garlan, D., Kazman, R., Yan, H.: Discovering architectures from running systems. IEEE Trans. Softw. Eng. 32(7), 454–466 (2006) CrossRefGoogle Scholar
  41. Shasha, D., Zhang, K.: Approximate tree pattern matching. In: Apostolico, A., Galil, E.Z. (eds.) Pattern Matching Algorithms. Oxford University Press, Oxford (1997) Google Scholar
  42. Shaw, M., Garlan, D.: Software Architectures: Perspectives on an Emerging Discipline. Prentice Hall, New York (1996) zbMATHGoogle Scholar
  43. Spitznagel, B., Garlan, D.: Architecture-based performance analysis. In: Proceedings of the Conference on Software Engineering and Knowledge Engineering (1998) Google Scholar
  44. Sun Microsystems: J2EE tutorials. Duke’s bank. http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Ebank2.html (2006)
  45. Telea, A., Maccari, A., Riva, C.: An open visualization toolkit for reverse architecting. In: Proceedings of the 10th International Workshop on Program Comprehension, pp. 3–10 (2002) Google Scholar
  46. Torsello, A., Hidovic-Rowe, D., Pelillo, M.: Polynomial-time metrics for attributed trees. IEEE Trans. Pattern Anal. Mach. Intell. 27(7), 1087–1099 (2005) CrossRefGoogle Scholar
  47. van der Westhuizen, C., van der Hoek, A.: Understanding and propagating architectural changes. In: Proceedings of the Working IFIP Conference on Software Architecture, pp. 95–109 (2002) Google Scholar
  48. Wagner, R.A., Fischer, M.J.: The string-to-string correction problem. J. ACM 21(1), 168–173 (1974) zbMATHMathSciNetGoogle Scholar
  49. Wang, Y., DeWitt, D.J., Cai, J.-Y.: X-Diff: an effective change detection algorithm for XML documents. In: Proceedings of the 19th International Conference on Data Engineering, pp. 519–530 (2003) Google Scholar
  50. Xing, Z., Stroulia, E.: UMLDiff: an algorithm for object-oriented design differencing. In: Proceedings of the 20th IEEE/ACM International Conference on Automated Software Engineering, pp. 54–65 (2005) Google Scholar
  51. Zhang, K., Jiang, T.: Some MAX SNP-hard results concerning unordered labeled trees. Inf. Process. Lett. 49(5), 249–254 (1994) zbMATHCrossRefMathSciNetGoogle Scholar

Copyright information

© Springer Science+Business Media, LLC 2007

Authors and Affiliations

  • Marwan Abi-Antoun
    • 1
  • Jonathan Aldrich
    • 1
  • Nagi Nahas
    • 1
  • Bradley Schmerl
    • 1
  • David Garlan
    • 1
  1. 1.Carnegie Mellon UniversityPittsburghUSA

Personalised recommendations