A practice-driven systematic review of dependency analysis solutions

Empirical Software Engineering - Tập 16 - Trang 544-586 - 2011
Trosky B. Callo Arias1, Pieter van der Spek2, Paris Avgeriou1
1University of Groningen, AG Groningen, The Netherlands
2VU University Amsterdam, HV Amsterdam, The Netherlands

Tóm tắt

When following architecture-driven strategies to develop large software-intensive systems, the analysis of the dependencies is not an easy task. In this paper, we report a systematic literature review on dependency analysis solutions. Dependency analysis concerns making dependencies due to interconnections between programs or system components explicit. The review is practice-driven because its research questions, execution, and reporting were influenced by the practice of a group of software architects at Philips Healthcare MRI. The review results in an overview and assessment of the state-of-the-art and applicability of dependency analysis. The overview provides insights about definitions related to dependency analysis, the sort of development activities that need dependency analysis, and the classification and description of a number of dependency analysis solutions. The contribution of this paper is for both practitioners and researchers. They can take it as a reference to learn about dependency analysis, match their own practice to the presented results, and to build similar overviews of other techniques and methods for other domains or types of systems.

Tài liệu tham khảo

Agarwal MK, Appleby K, Gupta M, Kar G, Neogi A, Sailer A (2004) Problem determination using dependency graphs and run-time behavior models. In: Sahai A, Wu F (eds) 15th IFIP/IEEE international workshop on distributed systems: operations and management. Springer, pp 171–182 Allen R, Garlan D (1997) A formal basis for architectural connection. ACM Trans Softw Eng Methodol 6(3):213–249. doi:10.1145/258077.258078 Alzamil Z (2007) Redundant coupling detection using dynamic dependence analysis. In: International conference on software engineering advances (ICSEA 2007) Balmas F, Wertz H, Chaabane R, Artificielle L (2005) Visualizing dynamic data dependences as a help to maintain programs. In: International conference on software maintenance Binkley D, Harman M 2005 Locating dependence clusters and dependence pollution. In: 21st IEEE international conference on software maintenance, pp 177–186 Bohnet J, Voigt S, Döllner J (2009) Projecting code changes onto execution traces to support localization of recently introduced bugs. In: ACM symposium on applied computing. ACM, New York, pp 438–442 Breivold HP, Crnkovic I, Land R, Larsson S (2008) Using dependency model to support software architecture evolution. In: 23rd IEEE/ACM international conference on automated software engineering-workshops, ASE workshops, pp 82–91 Brereton P, Kitchenham BA, Budgen D, Turner M, Khalil M (2007) Lessons from applying the systematic literature review process within the software engineering domain. J Syst Softw 80(4):571–583. doi:10.1016/j.jss.2006.07.009 Brown A, Kar G, Keller A (2001) An active approach to characterizing dynamic dependencies forproblem determination in a distributed environment. In: IEEE/IFIP international symposium on integrated network management proceedings, pp 377–390 Callo Arias TB, Avgeriou P, America P (2008) Analyzing the actual execution of a large software-intensive system for determining dependencies. In: Proceedings of the 2008 15th working conference on reverse engineering, pp 49–58 Cataldo M, Herbsleb JD, Carley KM (2008) Socio-technical congruence: a framework for assessing the impact of technical and work dependencies on software development productivity. In: 2nd international symposium on empirical software engineering and measurement. ACM, Kaiserslautern, pp 2–11 Chen K, Rajlich V (2000) Case study of feature location using dependence graph. In: 8th international workshop on program comprehension. IEEE Computer Society, Washington, DC, p 241 Chen Z, Xu B, Yang H, Liu K, Zhang J (2000) An approach to analyzing dependency of concurrent programs. In: The first Asia-Pacific conference on quality software (APAQS’00), vol 3, p 12 Chen Z, Xu B, Zhao J (2002) An overview of methods for dependence analysis of concurrent programs. ACM Sigplan Not 37:45–52 Cornelissen B, Holten D, Zaidman A, Moonen L, van Wijk JJ, van Deursen A (2007) Understanding execution traces using massive sequence and circular bundle views. In: ICPC’07. IEEE Computer Society, Washington, DC, pp 49–58. doi:10.1109/ICPC.2007.39 Cornelissen B, Zaidman A, van Deursen A, Moonen L, Koschke R (2009) A systematic survey of program comprehension through dynamic analysis. Tech. rep. doi:10.1109/TSE.2009.28 Cossette B, Walker R (2007) Polylingual dependency analysis using island grammars: a cost versus accuracy evaluation. In: IEEE international conference on software maintenance. ICSM 2007, pp 214–223 Cox L, Delugach H, Skipper D (2001) Dependency analysis using conceptual graphs. In: Proceedings of the 9th international conference on conceptual structures, ICCS, pp 117–130 De Souza C (2005) On the relationship between software dependencies and coordination: field studies and tool support Dong X, Godfrey M (2007) System-level usage dependency analysis of object-oriented systems. In: Proc. of the intl. conference on software maintenance, pp 375–384 Egyed A (2003) A scenario-driven approach to trace dependency analysis. IEEE Trans Softw Eng 29:116–132 Eisenbarth T, Koschke R, Simon D (2001) Aiding program comprehension by static and dynamic feature analysis. In: Proceedings of the international conference on software maintenance, pp 602–611 Eisenbarth T, Koschke R, Simon D (2003) Locating features in source code. IEEE Trans Softw Eng 29:210–224 Ferrante J, Ottenstein KJ, Warren JD (1987) The program dependence graph and its use in optimization. ACM Trans Program Lang Syst 9(3):319–349. doi:10.1145/24039.24041 Fowler M (1999) Refactoring: improving the design of existing code. Addison-Wesley, Boston Fundel K, Kuffner R, Zimmer R (2007) RelEx–relation extraction using dependency parse trees. Bioinformatics 23(3):365 Gao J, Kar G, Kermani P (2004) Approaches to building self healing systems using dependency analysis. In: IEEE/IFIP network operations and management symposium, NOMS 2004, vol 1, pp 119–132. doi:10.1109/NOMS.2004.1317649 Garousi V, Briand L, Labiche Y (2006) Analysis and visualization of behavioral dependencies among distributed objects based on UML models. In: Nierstrasz O et al (eds) International conference on model driven engineering languages and systems. Springer Glass RL (2004) Matching methodology to problem domain. Commun ACM 47(5):19–21. doi:10.1145/986213.986228 Glorie M, Zaidman A, Van Deursen A, Hofland L (2009) Splitting a large software repository for easing future software evolution—an industrial experience report. J Softw Maint Evol Res Pract 21(2):113–141 Gotel O, Finkelstein A (1994) An analysis of the requirements traceability problem. In: Proc. first int’l conf. requirements eng., pp 94–101 Gupta M, Neogi A, Agarwal M, Kar G (2003) Discovering dynamic dependencies in enterprise environments for problem determination. In: Brunner M, Keller A (eds) 14th IFIP/IEEE international workshop on distributed systems: operations and management Hamou-Lhadj A, Lethbridge TC (2004) A survey of trace exploration tools and techniques. In: CASCON’04. IBM Press, pp 42–55 Hassan A, Holt R (2004) Predicting change propagation in software systems. In: Proceedings of 26th international conference on software maintenance (ICSM’04) Holmes R, Walker R (2007) Task-specific source code dependency investigation. In: 4th IEEE international workshop on visualizing software for understanding and analysis, 2007. VISSOFT 2007, pp 100–107 Huang L, Song Y (2007) Precise dynamic impact analysis with dependency analysis for object-oriented programs. In: Fifth international conference on software engineering research, management and applications, pp 374–381. doi:10.1109/SERA.2007.46 Ishio T, Kusumoto S, Inoue K (2004) Debugging support for aspect-oriented program based on program slicing and call graph. In: Proc. 20th IEEE international conference on software maintenance, pp 178–187 Ivkovic I, Kontogiannis K (2006) Towards automatic establishment of model dependencies using formal concept analysis. Int J Softw Eng Knowl Eng 16:499–522 Jacsó P (2008) Google scholar revisited. Online Inf Rev 32(1):102–114 Jász J, Beszédes A, Gyimóthy T, Rajlich V (2008) Static execute after/before as a replacement of traditional software dependencies. In: IEEE international conference on software maintenance. ICSM 2008, pp 137–146 Jiang T, Gold N, Harman M, Li Z (2008) Locating dependence structures using search-based slicing. Inf Softw Technol 50:1189–1209. doi:10.1016/j.infsof.2007.11.001 Jourdan Gv, Ritthiruangdech P, Ural H (2006) Test suite reduction based on dependence analysis. In: Al ALE (ed) 21th international symposium computer and information sciences. Springer, pp 1021–1030 Kagdi H, Maletic J (2007) Combining single-version and evolutionary dependencies for software-change prediction. In: Fourth international workshop on mining software repositories. IEEE Computer Society , p 17 Keller A, Blumenthal U, Kar G (2000) Classification and computation of dependencies for distributed management. In: Fifth international conference on computers and communications (ISCC 2000) Keller A, Kar G (2000) Dynamic dependencies in application service management. In: International conference on parallel and distributed processing techniques and applications Khan S, Greenwood P, Garcia A, Rashid A (2008) On the impact of evolving requirements-architecture dependencies: an exploratory study. In: Bellahsène Z, Léonard M (eds) 20th international conference advanced information systems engineering, pp 243–257 Kitchenham B (2004a) Procedures for performing systematic reviews. Tech. rep., Joint Technical Report Keele University TR/SE0104 and NICTA 0400011T.1 Kitchenham B (2004b) Software productivity measurement using multiple size measures. IEEE Trans Softw Eng 30(12):1023–1035. doi:10.1109/TSE.2004.104. Member-Mendes, Emilia Kitchenham B, Brereton OP, Budgen D, Turner M, Bailey J, Linkman S (2009) Systematic literature reviews in software engineering—a systematic literature review. Inf Softw Technol 51(1):7–15. doi:10.1016/j.infsof.2008.09.009 Kontogiannis K, Linos P, Wong K (2006) Comprehension and maintenance of large-scale multi-language software applications. In: ICSM ’06. IEEE Computer Society, Washington, DC, pp 497–500. doi:10.1109/ICSM.2006.20 Korel B, Tahat L, Vaysburg B (2002) Model based regression test reduction using dependence analysis. In: Proceedings. International conference on software maintenance, pp 214–223 Kossiakoff A, Sweet WN (2002) Systems engineering: principles and practice. Wiley-Interscience Kuhn A, Ducasse S, Gîrba T (2007) Semantic clustering: identifying topics in source code. Inf Softw Technol 49(3):230–243. doi:10.1016/j.infsof.2006.10.017 Law J, Rothermel G (2003a) Incremental dynamic impact analysis for evolving software systems. In: Proceedings of the international symposium on software reliability engineering, pp 430–441 Law J, Rothermel G (2003b) Whole program path-based dynamic impact analysis. In: 25th international conference on software engineering. IEEE Computer Society, Washington, DC, pp 308–318 Leitch R, Stroulia E (2003) Assessing the maintainability benefits of design restructuring using dependency analysis. In: Proc. of the 9th international symposium on software metrics, pp 309–322 Lewandowski D (2010) Google scholar as a tool for discovering journal articles in library and information science. Online Inf Rev 34(2):250–262. doi:10.1108/14684521011036972 Li B, Zhou Y, Wang Y, Mo J (2005a) Matrix-based component dependence representation and its applications in software quality assurance. ACM SIGPLAN Not 40:36 Li Y, Zhang M, Hou C (2005b) An active method to building dynamic dependency model for distributed components. In: ICAC ’05: Proceedings of the second international conference on automatic computing. IEEE Computer Society, Washington, DC, pp 337–338. doi:10.1109/ICAC.2005.7 Liangli M, Houxiang W, Yansheng L (2006) The design of dependency relationships matrix to improve the testability of component-based software. In: Sixth international conference on quality software. QSIC 2006, pp 93–98 Lienhard A, Greevy O, Nierstrasz O (2007) Tracking objects to detect feature dependencies. In: 15th IEEE international conference on program comprehension, pp 59–68 Lind-Nielsen J, Andersen H, Hulgaard H, Behrmann G, Kristoffersen K, Larsen K (2001) Verification of large state/event systems using compositionality and dependency analysis. Form Methods Syst Des 18(1):5–23 Loyall JP, Mathisen SA (1993) Using dependence analysis to support the software maintenance process. In: ICSM ’93. IEEE Computer Society, Washington, DC, pp 282–291 Mao C, Zhang J, Lu Y (2007) Using dependence matrix to support change impact analysis for CBS. In: Fifth international conference on computational science and applications (ICCSA 2007), pp 192–200. doi:10.1109/ICCSA.2007.25 Marcus A, Poshyvanyk D (2005) The conceptual cohesion of classes. In: ICSM ’05. IEEE Computer Society, Washington, DC, pp 133–142. doi:10.1109/ICSM.2005.89 Marcus A, Rajlich V, Buchta J, Petrenko M, Sergeyev A (2005) Static techniques for concept location in object-oriented code. In: IWPC ’05, pp 33–42 Maule A, Emmerich W, Rosenblum D (2008) Impact analysis of database schema changes. In: 30th international conference on software engineering, pp 451–460 McComb D, Robe S, Hoare S, Crawford-Hines S (2002) Dependency analysis and visualization as tools to prolong system life. In: Proceedings of the 26th annual international computer software and applications conference (COMPSAC’02), pp 463–465 Mehta NR, Medvidovic N, Phadke S (2000) Towards a taxonomy of software connectors. In: ICSE ’00. IEEE Computer Society, Los Alamitos, p 178. doi:10.1109/ICSE.2000.10009 Moise D, Wong K (2005) Extracting and representing cross-language dependencies in diverse software systems. In: WCRE ’05, Washington, DC, USA: IEEE Computer Society, pp 209–218 Moraes RLO, Martins E, Mendes NV (2005) Fault injection approach based on dependence analysis. In: COMPSAC’05. IEEE Computer Society, Washington, DC, pp 181–188. doi:10.1109/COMPSAC.2005.78 Moriconi M, Winkler TC (1990) Approximate reasoning about the semantic effects of program changes. IEEE Trans Softw Eng 16(9):980–992 Myers G (1975) Reliable software through composite design. Petrocelli/Charter, New York Nagappan N, Ball T (2007) Using software dependencies and churn metrics to predict field failures: an empirical case study. In: First international symposium on empirical software engineering and measurement, ESEM 2007, pp 364–373 Narayanasamy S, Pereira C, Calder B (2006) Recording shared memory dependencies using strata. In: Proceedings of the 12th international conference on architectural support for programming languages and operating systems. ACM, p 240 Neuvo Y (2004) Cellular phones as embedded systems. In: IEEE international solid-state circuits conference, pp 32–37 Pfaltz JL (2006) Using concept lattices to uncover causal dependencies in software. In: Missaoui R, Schmid J (eds) 4th international conference formal concept analysis, vol 3874. Springer, p 233 Podgurski A, Clarke LA (1990) A formal model of program dependences and its implications for software testing, debugging, and maintenance. IEEE Trans Softw Eng 16(6):965–979 Robillard M (2008) Topology analysis of software dependencies. ACM Trans Softw Eng Methodol (TOSEM) 17:18. doi:10.1145/13487689.13487691 Robinson ML, Wusteman J (2007) Putting google scholar to the test: a preliminary study. Program: Electronic Library and Information Systems 41(1):71–80 Ronen I, Dor N, Porat S, Dubinsky Y (2006) Combined static and dynamic analysis for inferring program dependencies using a pattern language. In: Conference of the Center for Advanced Studies on Collaborative Research, p 3 Ryser J, Glinz M (2000) Using dependency charts to improve scenario-based testing. In: Proceedings of the 17th international conference on testing computer software (TCS2000) Safyallah H, Sartipi K (2006) Dynamic analysis of software systems using execution pattern mining. In: ICPC ’06. IEEE Computer Society, Washington, DC, pp 84–88. doi:10.1109/ICPC.2006.19 Sangal N, Jordan E, Sinha V, Jackson D (2005) Using dependency models to manage complex software architecture. In: Proceedings of the 20th annual ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications. ACM, p 176 Spek Pvd, Klusener S, van de Laar P (2008) Towards recovering architectural concepts using latent semantic indexing. In: CSMR ’08: Proceedings of the 2008 12th European conference on software maintenance and reengineering. IEEE Computer Society, Washington, DC, pp 253–257. doi:10.1109/CSMR.2008.4493321 Stafford JA, Wolf AL (2001) Architecture-level dependence analysis for software systems. Int J Softw Eng Knowl Eng 11:431–451 Stafford J, Wolf A, Caporuscio M (2003) The application of dependence analysis to software architecture descriptions. In: Bernardo M, Inverardi P (eds) Third international school on formal methods for the design of computer, communication and software systems: software architectures, pp 52–62 Stafford JA, Wolf AL (1998) Architecture-level dependence analysis in support of software maintenance. In: ISAW ’98. ACM Press, New York, pp 129–132. doi:10.1145/288408.288441 Steinle M, Aberer K, Girdzijauskas S, Lovis C (2006) Mapping moving landscapes by mining mountains of logs: novel techniques for dependency model generation. In: Proceedings of the 32nd international conference on very large data bases. VLDB Endowment, p 1102 Stevens R (1998) Systems engineering: coping with complexity. Prentice Hall Stevens W, Myers G, Constantine L (1974) Structured design. IBM Syst J 13(2):115–139 Tallam S, Gupta R (2007) Unified control flow and data dependence traces. ACM TACO 4(3). doi:10.1145/1275937.1275943 van de Laar P, America P, Rutgers J, van Loo S, Muller G, Punter T, Watts D (2007) The Darwin project: evolvability of software-intensive systems. In: Evol’07, pp 48–53. Paris, France van Ommering R (2002) Building product populations with software components. In: ICSE ’02: Proceedings of the 24th international conference on software engineering. ACM, New York, pp 255–265. doi:10.1145/581339.581373 Vasilache S, Tanaka J (2005) Bridging the gap between analysis and design using dependency diagrams. In: Third ACIS int’l conference on software engineering research, management and applications (SERA’05) Vieira M, Dias M, Richardson D (2001) Describing dependencies in component access points. In: Procs of the 23rd intern. conf. on software engineering Vieira M, Richardson D (2002) Analyzing dependencies in large component-based systems. In: 17th IEEE international conference on automated software engineering, ASE 2002, pp 241–244 Watkins R, Neal M (1994) Why and how of requirements tracing. IEEE Softw 11(4):104–106. doi:10.1109/52.300100 Xiao C, Tzerpos V (2005) Software clustering based on dynamic dependencies. In: Proceedings of the ninth European conference on software maintenance and reengineering, pp 124–133 Xiao Y, Urban SD (2008) Recovery of concurrent processes in a service composition environment using data dependencies. In: Proceedings of the OTM 2008 confederated. Springer, pp 139–156 Xin B, Zhang X (2007) Efficient online detection of dynamic control dependence. In: Proceedings of the 2007 international symposium on software testing and analysis. ACM, p 195 Xing Z, Stroulia E (2006) Understanding the evolution and co-evolution of classes in object-oriented systems. Int J Softw Eng Knowl Eng 16:23–51 Zhang W, Ryder B (2007) Discovering accurate interclass test dependences. In: 7th ACM SIGPLAN-SIGSOFT workshop on program analysis for software tools and engineering, pp, 55–61 Zhao J (2001) Using dependence analysis to support software architecture understanding. In: New technologies on computer software Zhao J (2002) Change impact analysis for aspect-oriented software evolution. In: International workshop on principles of software evolution, p 108-112 Zimmermann T, Nagappan N (2007) Predicting subsystem failures using dependency graph complexities. In: Proceedings of the The 18th IEEE international symposium on software reliability. IEEE Computer Society, pp 227–236 Zimmermann T, Nagappan N (2008) Predicting defects using network analysis on dependency graphs. In: Proceedings of the 30th international conference on software engineering, pp 531–540