A practice-driven systematic review of dependency analysis solutions
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