Software systems are not static, they have to undergo frequent changes to stay fit for purpose, and in the process of doing so, their complexity increases. It has been observed that this process often leads to the erosion of the systems design and architecture and with it, the decline of many desirable quality attributes, such as maintainability. This process can be captured in terms of antipatterns -atomic violations of widely accepted design principles. We present a visualisation that exposes the design of evolving Java programs, highlighting instances of selected antipatterns including their emergence and cancerous growth. This visualisation assists software engineers and architects in assessing, tracing and therefore combating design erosion. We evaluated the effectiveness of the visualisation in four case studies with ten participants.
e C preprocessor (CPP) is a standard tool for introducing variability into source programs and is o en applied either implicitly or explicitly for implementing a So ware Product Line (SPL). Despite its practical relevance, CPP has many drawbacks. Because of that it is very di cult to understand the variability implemented using CPP. To facilitate this task we provide an innovative analytics tool which bridges the gap between feature models as more abstract representations of variability and its concrete implementation with the means of CPP. It allows to interactively explore the entities of a source program with respect to the variability realized by conditional compilation. us, it simpli es tracing and understanding the e ect of enabling or disabling feature ags.
Life is the canonical example of a complex system, consisting of diverse chemical components that are organized in a specific way that allows perpetuation of the living state. In contrast, the abiotic environment, which life feeds on and originated from, is much simpler and less organized. The complexity gap between the biotic and abiotic worlds, and the lack of direct observation of abiogenesis, has made explaining the origin of life one of the hardest scientific questions. A promising strategy for addressing this problem is to identify features shared by abiotic and biotic chemical systems that permit the stepwise accretion of complexity. We used such a rationale to compare abiotic and biotic reaction networks in order to evaluate the presence of autocatalysis, the underlying basis of biological self-propagation, to see if it is structured in such a way as to permit stepwise complexification. We develop the concept of, and provide an algorithm to detect, seed-dependent autocatalytic systems (SDASs), namely subnetworks that can use food chemicals to self-propagate but cannot emerge without being first seeded by some non-food chemicals. We show that serial activation of SDASs can result in incremental -2 -complexification. Furthermore, we identify life-like features that emerge during the accretion of SDASs that open up new ecological opportunities and improve the efficiency of food utilization. SDAS theory, thus, provides a conceptual roadmap from a simple abiotic environment to primitive forms of life, without the need for linear genetic polymers at the outset (though these may be added later). This framework also suggests new experiments that have the potential to detect the spontaneous emergence of life-like features, such as self-propagation and adaptability.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.