@phdthesis{13475, author = {Amir Yazdanshenas}, title = {Towards System-Wide Analysis of Heterogeneous Component-Based Software Systems}, abstract = {One way to manage the complexity of software systems is to compose them from reusablecomponents, instead of starting from scratch. Components may be implemented indierent programming languages and are tied together using conguration les, orglue code, that entail their instantiation, initialization and interconnections. Althoughcorrectly engineering the composition and conguration of components is crucial for theoverall behavior, there is little support for incorporating this information in the staticverication and validation of such systems. Analyzing the properties of programs withinclosed code boundaries has been studied for some decades and is a well-establishedresearch area, where as analyzing heterogeneous component-based systems is not asmature. The heterogeneous nature of source code and conguration artifacts oftenhinders system-wide analysis of component-based systems.This thesis contributes a method to support analysis across the components ofcomponent-based systems by, rstly, building upon the Knowledge Discovery Metamodelto reverse engineer homogeneous models of the system. This homogeneous model is thenused as the building block to support various activities crucial for ecient maintenanceand evolution of heterogeneous systems, namely: information ow analysis to supportquality assurance, visualizations needed for comprehension, and change impact analysis.For end-to-end information ow analysis of component-based systems, we applyprogram slicing through and across the components. Dependencies between pairs ofinputs and outputs are revealed at both component-level, as well as system-level. Thismethod is implemented in a prototype tool, that has been successfully used to trackinformation ow across the components of a large-scale industrial system.The homogeneous model repository is extended to allow for visualization of information ows in component-based systems at various levels of abstraction, and from twocomplementary perspectives. We propose a hierarchy of ve interconnected views tosupport the comprehension needs of both safety domain experts and developers fromour industrial partner. The abstractions are selected to minimize visual distraction andreduce the cognitive load while satisfying information needs of the users. The viewsare interconnected in a way that supports both systematic, as well as opportunisticnavigation scenarios. We discuss the implementation of our approach in a prototypetool, called FlowTracker, and present the results of two qualitative evaluation studieson the eectiveness and usability of the proposed views for software development andsoftware certication. Based on the received feedback we can report positive results,and a number of in-depth insights for future improvements.As a third step, we devise a method to support the evolution of component-basediiisystems as members of product portfolios, where evolution can happen both as a resultof collective domain engineering activities, as well as product-specic developments.Developing software product-lines based on a set of shared components is a proventactic to enhance reuse, quality, and time to market. Adaptations of product-linessoftware engineering is heavily used by our industry partner, Kongsberg Maritime. Tohelp developers make informed decisions about prospective modications, we contributea method to estimate what other sections of the system, as well as what other productsin the same product portfolio, will be aected and need \maintenance attention.\"We use static program slicing as the underlying analysis technique, and adapt theaforementioned framework of homogeneous model repositories to accommodate largescaleproduct portfolios. Our method trades o precision and scalability in a way tomaintain maximum precision at intra-component analyses, while being highly scalableupon the propagation of ripple eects. Our approach also ranks the results based on anapproximation of the scale of impact. We have implemented our approach in a prototypetool, called Richter, which was evaluated on a real-world product family.As the nal section of this thesis, we conduct a study to asses the state of the artin cross-lingual program analysis. We contribute a systematic literature review on theavailable literature, and discus several implications for future research and practice as abasis for the improvement of software evolution in multi-language systems. We searchthrough seven digital libraries to nd the relevant primary studies on cross-languageprogram analysis, and identify additional studies with manual snowballing, which resultsin 75 studies. We classify the studies based on several criteria, including their purpose(why), the adopted or suggested approach (how), the information leveraged in eachprogramming language or artifact (what), and the conducted evaluation (quality). Theresults include objective ndings on the diversity of the applied techniques, applicationdomains, programming languages, and reliability of the approaches. Based on thendings of this literature review, several implications for research and practice arediscussed, including potential breakthroughs, and negative eects of the shortage ofcommunity-driven research.}, year = {2015}, publisher = {UiO}, }