14 research outputs found

    An empirical assessment of the crosscutting concern problem

    No full text
    Modularity is essential for creating evolvable software. Traditional programming languages limit the level of modularity that can be achieved because they provide only one way to structure the program, e.g., as a hierarchy of types. Regardless of how a program is structured, some features, requirements, or other types of concerns of the program cannot be modularized; that is, they cut across the program's structure. These so-called crosscutting concerns result in programs that are difficult to understand and reason about, to divide into manageable pieces, to reuse, and to evolve. In this dissertation, we assess the impact of crosscutting concerns on software quality. Little is known about the impact because determining the concerns of a program and how they are implemented is difficult, existing metrics for quantifying crosscutting are inadequate, and empirical evidence is lacking. To locate the source code that implements a concern, i.e., concern location, we present a new technique called prune dependency analysis, which can be combined with existing concern location techniques to dramatically improve accuracy. We developed CERBERUS, a potent hybrid technique for locating concerns that combines information retrieval, execution tracing, and prune dependency analysis . Our experiments show that prune dependency analysis can boost the recall of information-retrieval-based concern location by 155% and execution tracing by 104%. In addition, we show that our combined technique outperformed other techniques when run individually or in pairs. After using our techniques to locate all the code that implements a concern, our novel concern metrics quantify the amount of crosscutting that exists. We assessed the crosscutting concern problem by performing rigorous empirical studies of five medium-sized programs. We found a moderate to strong statistically significant correlation between the amount of crosscutting and the number of defects. That is, the more a concern crosscuts the program, the more likely it is to have defects. We also found that the crosscutting concern problem was prevalent: 86% of the concerns we analyzed were crosscutting, concerns were implemented by 6 classes on average, and classes implement 10 concerns on average

    Experimentation, Languages, Performance

    No full text
    We present an Edit-and-Continue implementation that allows regular source files to be treated like interactively updatable, compiled scripts, coupling the speed of compiled native machine code, with the ability to make changes without restarting. Our implementation is based on the Microsoft.NET Framework and allows applications written in any.NET language to be dynamically updatable. Our solution works with the standard version of the Microsoft Common Language Runtime, and does not require a custom compiler or runtime. Because no application changes are needed, it is transparent to the application developer. The runtime overhead of our implementation is low enough to support updating real-time applications (e.g., interactive 3D graphics applications)

    Statement annotations for fine-grained advising

    No full text
    AspectJ-like languages are currently ineffective at modularizing heterogeneous concerns that are tightly coupled to the source code of the base program, such as logging, invariants, error handling, and optimization. This leads to complicated and fragile pointcuts and large numbers of highly-repetitive and incomprehensible aspects. We propose statement annotations as a robust mechanism for exposing the join points needed by heterogeneous concerns and for enabling declarative fine-grained advising. We propose an extension to Java to support statement annotations and AspectJ’s pointcut language to match them. This allows us to implement heterogeneous concerns using a combination of simple and robust aspects and explicit and local annotations. We illustrate this using a logging aspect that logs messages at specific locations in the source code. Statement annotations also simplify advising specific object instances, local variables, and statements. We demonstrate this using an aspect that traces method calls made to specific object instances and calls made from specific call sites. Keywords statement annotations, byte code annotations, fragile pointcut problem, logging problem, statement-level join points, instance-local advising 1

    Identifying, Assigning, and Quantifying Crosscutting Concerns

    No full text
    Crosscutting concerns degrade software quality. Before we can modularize the crosscutting concerns in our programs to increase software quality, we must first be able to find them. Unfortunately, accurately locating the code related to a concern is difficult, and without proper metrics, determining how much the concern is crosscutting is impossible. We propose a systematic methodology for identifying which code is related to which concern, and a suite of metrics for quantifying the amount of crosscutting code. Our concern identification and assignment guidelines resolve some of the ambiguity issues encountered by other researchers. We applied this approach to systematically identify all the requirement concerns in a 13,531 line program. We found that 95 % of the concerns were crosscutting—indicating a significant potential for improving modularity—and that our metrics were better able to determine which concerns would benefit the most from reengineering

    My Own Private Kiosk: Privacy-Preserving Public Displays

    No full text
    Ubiquitous, high-resolution, large public displays offer an attractive complement to wearable displays. Unfortunately, the inherently public nature of these public displays makes them unsuitable for displaying sensitive information. We present EyeGuide, a wearable system that allows the user to obtain information quickly from a public display without sacrificing privacy. To this end, EyeGuide employs a lightweight head-worn eyetracker for hands-free object selection and an earphone for private communication
    corecore