Browsing by Author "Walker, Robert J."
Now showing 1 - 20 of 25
Results Per Page
Sort Options
Item Open Access An evaluation of simultaneous evolvability and efficiency in aspect-oriented software development(2007) Siadat, Seyed Jamal; Walker, Robert J.Item Open Access Characterization of the usage of logging functionality via pattern inference(2011) Sadi, Iftekar Amin; Walker, Robert J.Item Open Access Communication History Patterns: Direct Implementations of Protocol Specifications(2004-02-12) Walker, Robert J.; Viggers, KevinThe interactions between separated crosscutting concerns and the base modularityof a system must be specified. These specifications include descriptions of the join points in the base code where behavior is to be added or replaced. At present, the means available for describing join points generally treat each join point in isolation, rather than allowing multiple join points to be related to each other. When the interactions to be specified consist of complex, stateful communication protocols, the protocols must be hand-compiled into a description of isolated join points. As a result, errors can be introduced into the implementation of the protocols, and the intent of each protocol can become obscured.This paper describes the use of communication history patterns to interrelate multiple join points when implementing complex interaction protocols. A practical language for communication history patterns is described, involving the addition of constructs and preprocessing to AspectJ. A case study is discussed that compares the use of this extended language to both a Java implementation and an unextended AspectJ implementation.
Item Open Access Data analytics for decision support in software release management(2018-04-26) Didar Al Alam, S. M.; Ruhe, Günther; Pfahl, Dietmar; Elhajj, Reda; Moussavi, Mahmood; Izurieta, Clemente; Walker, Robert J.The dynamism and uncertainty in iterative software development demand for frequent releases with shorter duration, reduced scope, and strong stakeholder involvement. The lack of custom-built integrated support for release management in iterative releases mainly motivated this research. Key contribution of this thesis is the proposed Plan-Monitor-Improve (PMI) Framework. PMI integrates i) strategic planning of a release, ii) monitoring release readiness and iii) improving release readiness. Methodologically, this thesis is positioned at the intersection of three key concepts: i) release management ii) data analytics techniques, and iii) decision support systems. The PMI-Plan method introduces a multi-objective particle swarm optimization-based planning method to support the multi-dimensional nature of iterative releases. Maximum stakeholder incorporation is achieved in a three-stage interactive modeling. The research is triggered by industry collaborators in an NSERC CRD project and studies with a prototype tool in real world planning problems. Inspired by statistical process control approaches, the PMI-Monitor method continuously monitors release readiness. PMI-Monitor formulates release readiness prediction as a binary classification problem and solves using machine learning classifiers. The PMI-Improve method addresses release readiness by identifying key attributes to be used for decision-making. PMI-Improve also applies analogy-based reasoning for proactively identifying bottlenecks and their characteristics. The release readiness improvement factor identification is formulated as a search problem and solved using a genetic algorithm. The PMI is an integrated decision centric framework, custom built to support iterative release management. PMI integrates a portfolio of data analytics techniques (e.g. analogical reasoning, multi-objective optimization, classification, process control, interactive search) to gain better insight from the frequent release iterations and strong stakeholder involvements. PMI integrates the characteristics of iterative development and applies it towards an operational platform to make better data driven decisions. Initial empirical evaluation of PMI further supports applicability and benefits of the framework in real world iterative software development.Item Open Access Fast and Scalable Change Propagation through Context-Insensitive Slicing(2018-12-17) Men, Hao; Walker, Robert J.; Denzinger, Jörg; Aycock, John Daniel; Ghaderi, Majid; Atlee, Joanne M.Change propagation (CP) is an activity to restore systems from inconsistent states caused by changes to their source code. Because where the inconsistencies happen is usually unknown, the current practice relies on code navigation facilities provided by integrated development environments (IDEs) to search every relevant piece of code. However, the work becomes difficult due to the increasing complexity and size of the code; inconsistencies are missed due to the lack of a systematic approach to the search and navigation. Current research approaches struggle between efficiency and effectiveness. Those working at fine-grained levels can produce very precise results, but they are hard to integrate into daily development practice for industrial developers due to a lack of scalability and maintainability; those working at coarse-grained levels are fast but generate lots of false positives, placing a heavy burden on developers. The thesis of this dissertation is that by combining the advantages of both fine- and coarse-grained approaches, we can support CP tasks for programmers efficiently in daily development. We propose a novel dependency model, providing algorithms to incrementally update the model and to produce results by tracing statement-level dependencies. Based on these, we implement a prototype tool called ModCP to support CP by an interactive workflow. We conduct several studies to evaluate our approach against current ones. We find that our model scales to large code bases, in terms of both space and time; that incremental maintenance can quickly synchronize the model with changes, saving over 96% of time on average for large systems compared to rebuilding the model; and that our approach consistently outperforms the alternatives in terms of F-score. Furthermore, we conduct an experiment to evaluate developer use of ModCP against a standard IDE-based CP methodology, showing that developers can complete these tasks faster by using our tool than by IDEs, with improved effectiveness; for complex tasks, the time savings (statistically significant) can reach approximately 50%.Item Open Access Finding relevant starting points with source code indexes(2008) Chang, Joseph Jia-Chen; Walker, Robert J.Item Open Access IConJ 0.1: A Proof of Concept Tool for Applying Implicit Context to Java Software(2004-08-17) Walker, Robert J.Implicit context is a model for the generative adaptation of software modules that can be declaratively incomplete or inconsistent with other modules in a system. This technical report describes the syntax and semantics of a proof-of-concept tool (1ConJ 0.1) for the application of the implicit context model to software written in the Java language.Item Open Access Identifying the Problems of Software Re-architecting and a Knowledge Representation Framework to Address Them(2018-06-25) Moazzen, Elham; Walker, Robert J.; Denzinger, Jörg; Oehlberg, Lora A.; Anvik, John; Hu, YaopingReal-world software undergoes constant change: to fix bugs; to extend functionality; to interact with the changing “ecosystem” around it; and to make internal improvements. Non-trivial software must possess a software architecture: a division into smaller pieces, how those pieces are meant to interact, and how those pieces are deployed physically. As a software architecture can have a significant impact on important properties of the software, the architecture for a software system may need to change as the system itself undergoes change: this is software re-architecting. Unfortunately, software re-architecting is poorly understood: without understanding what is involved in software re-architecting and what problems people encounter in approaching it, we cannot help solve or avoid those problems. I begin this thesis by conducting a case study on a real world example of a software re-architecting, for which documentation and records of discussions were available, to find basic issues that arose during the process. I also conducted a series of interviews with software engineers centred around those issues to deepen our understanding of the process of software re-architecting and discovered the notion of discrete change steps that must be organized and coordinated. I identify a set of critical challenges that must be addressed in any concrete solution. Software engineers lacked a systematic approach to the communication and record management of change steps, suggesting a set of design guidelines for future collaboration tools tailored for re-architecting. They need collaboration tools that facilitate viewing, recording, and retrieving the change steps, and involving the communications within and between the levels of the development team. I then propose a knowledge representation framework for the change process in asynchronous collaboration. This framework is a first step toward a re-architecting collaboration tool that would help to systematize the change process without disrupting it. I developed a paper prototype of the framework and conducted a user evaluation study to determine if the new approach meets the needs of software engineers working on a software re-architecting. My study suggests that the ii approach supported by the prototype allows software engineers to better present changes to their team relative to traditional mechanisms, thereby enabling them to consider more detail. I illustrate the potential value of the framework as a platform for deeper study and further investment in tools, highlighting promising areas for future research.Item Open Access Identifying, Structuring, and Evolving Features in Software Product Lines(2019-06-26) Sayed, Mostafa Ahmed Hamza; Elaasar, Maged; Walker, Robert J.; Ruhe, Guenther; Safavi-Naeini, Reyhaneh Alsadat; Stroulia, Eleni; Far, Behrouz H.; Maurer, FrankSoftware product lines (SPLs) are a set of similar software products that are developed in a coordinated manner, sharing commonalities. Software product line engineering (SPLE) aims to better manage SPLs through the use of both source code artifacts and a variability model (VM) that describes legal configurations of the source code artifacts. Current approaches lack support for recommending, structuring, and evolving features in SPLE, requiring manual intervention that can result in the introduction of severe inconsistencies and flaws. We propose two approaches to address these issues: (1) a recommendation system for software engineering (RSSE), called FFRE, to support the extraction, maintenance, and categorization of VMs; and (2) an approach for change impact analysis that assists in identifying the prone artifacts in SPLs, identifying dependencies through analysis of code artifacts, variability model, and source code history. We evaluate our approaches through five studies. (1)We evaluate FFRE qualitatively from four SRS documents and compare it against other tools and approaches. (2)We study the unanticipated evolution of a software product family, implemented both as separate products and in delta-oriented programming (DOP), comparing the ease of change within the two versions through quantitative measurements and qualitative observations. (3) We compare six different configurations of our CIA approach (reified in the tool CIAHelper) and one based on an existing tool by performing seven case studies on three different SPLs developed using DOP. (4) We evaluate CIAHelper in supporting semi-automated RTE such that the initial set of changes could either occur in the model or in the code artifacts. (5) We conduct a controlled experiment where software developers were given change requests to estimate using either CIAHelper or a manual approach. By providing SPL developers and practitioners with semi-automated support to identify, structure, and evolve features, we can provide better understanding of the implications of proposed changes that affect features’ evolution in SPLs.Item Open Access Improving the modularity of context-sensitive concerns through the use of declarative event patterns(2005) Viggers, Kevin Douglas; Walker, Robert J.Item Open Access Library Migration: A Retrospective Analysis and Tool(2019-03-18) Zaidi, Syed Sajjad Hussain; Walker, Robert J.; Ruhe, Günther; Denzinger, Jörg; Aycock, John DanielModern software engineering practices advocate the principle of reuse through third-party software libraries. Software libraries offer application programming interfaces (APIs) for use by developers, thereby significantly reducing development cost and time. These libraries are however subject to deprecation, vulnerabilities, and instability. Furthermore, as the product matures, developers have to worry about upgrading and migrating to better alternatives in order to attract and retain clients. Refactoring a system to start using a new library can cause a domino effect resulting in serious damage to the software system. Little is currently known about library migration; the few existing studies are either too preliminary or too problematic to tell us much. We perform an empirical study of 114 open source Java-based software systems in which library migration had occurred. We find that library migration leads to significant compatibility issues and breakage of source code in practice: library migration broke 67% of the software projects in which it occurred, while 22% of the transitively dependent projects broke due to coupling of APIs with external dependencies. Developers do not effectively use available resources to notify their clients about such migrations, preferring to use internal GitHub threads in contrast to the release notes, and even then often failing to discuss or announce the fact that library migration is planned or has been performed. We also found that mitigating library migration requires substantial effort by developers: on average, transformations affected 9.3% of the total classes in the dependent system, while impacting 15% of the total lines of code. We propose a systematic recommendation tool to assist developers in migrating or upgrading to a new software library. Our prototype tool, named EDW (for External Dependency Watcher), can be utilized to estimate and predict impacts while mitigating migrations among third-party libraries. We evaluate EDW by detecting the impacts of migration across three granularities in ten distinct open source projects: our tool has perfect precision for all three granularities; for recall, it obtained over 0.99 for class- and field-granularity while achieving 0.86 for method-granularity. We conduct a controlled experiment on EDW: human participants were able to perform the tasks in significantly less time and with better precision/recall using EDW as compared to JRipples.Item Open Access A Lightweight Approach to Technical Risk Estimation via Probabilistic Impact Analysis(2006-02-15) Walker, Robert J.; Holmes, Reid; Hedgeland, Ian; Kapur, Puneet; Smith, AndrewAn evolutionary development approach is increasingly commonplace in industry but presents increased difficulties in risk management, for both technical and organizational reasons. In this context, technical risk is the product of the probability of a technical event and the cost of that event. This paper presents a technique for more objectively assessing and communicating technical risk in an evolutionary development setting that (1) operates atop weaklyestimated knowledge of the changes to be made, (2) analyzes the past change history and current structure of a system to estimate the probability of change propagation, and (3) can be discussed vertically within an organization both with development staff and high-level management. A tool realizing this technique has been developed for the Eclipse IDE.Item Open Access Ligthweight support for estimation of polylingual dependencies(2008) Cossette, Bradley E.; Walker, Robert J.; Ruhe, GuentherItem Open Access Modular Dependency Analysis in Heterogeneous Software Systems(2020-09-25) Afzal, Raheela; Walker, Robert J.; Aycock, John; Ruhe, GuentherOne way to develop and manage software systems is to build them using reusable components instead of developing them from the ground up. Over the past two decades, there has been growth in the use of multiple programming languages to develop a software system; we refer to such systems as heterogeneous software systems. Several technologies have been introduced to make the bridging of languages in these systems easier. Software analysis, e.g., change impact analysis and change propagation, helps in retaining consistency within the software system. While there exist many single-language approaches to perform change propagation for homogeneous systems, there is a lack of analogous research on heterogeneous systems. Inter-language dependencies, known as cross-language links, are the root cause of issues for a complete analysis of such systems. This thesis contributes a method to support change propagation by building upon an existing dependency analysis model to design a standard meta-model for multiple languages called a unified meta-model. We use abstract syntax representation models to act as modules for each language to be plugged into the meta-model for every new language introduced. We present a novel approach for cross-language analysis that is generalizable to new languages and does not require hard coding of bridging semantics. We adapt an existing framework to accommodate dependency analysis, which is performed using static source code analysis, as well as program slicing for heterogeneous systems. We identify the cross-language links between sets of languages based on an initial study of technologies that allow bridging between languages. The single-language analysis is used as the baseline for the evaluation while our approach is a cross-language analysis. The study revealed that cross-links are identified with a static source code analysis. We evaluated our approach for effectiveness, scalability, and accuracy on 15 homogeneous systems, 5 for each language among C#, Python, and TSQL. Additionally, to evaluate the cross-link identification process, we studied 6 heterogeneous software systems and compared our results against the actual execution path to evaluate the accuracy of cross-links. Our results show that our approach is able to correctly identify cross-language links with an F-score of over 75% for the set of evaluated projects.Item Open Access Optimization Aspects in Network Simulation(2005-10-05) Siadat, Jamal; Walker, Robert J.; Kiddle, CameronA primary goal of AOSD in the context of systems software has been to permit improved modularity without significantly degrading performance. Optimizations represent important crosscutting concerns in this context but also a significant challenge due to their fine-grained nature. This paper investigates how well the current state-of-the-art in AOSD can support such optimization aspects, via a case study involving an optimized network simulator, IP-TN. Duplication of optimizations achieved via low-level modifications to IP-TN in C++ have been attempted via aspectization of those optimizations in AspectC++. While comparable run-time performance is achieved with AspectC++ and (un)pluggability is clearly simpler, the effects on comprehensibility are less clear.Item Open Access Pragmatic software reuse(2008) Holmes, Reid; Walker, Robert J.Item Open Access Protecting Private Keys on Mobile Devices(2022-08) Ngure, Joan Watiri; Safavi-Naeini, Reyhane; Sanders, Barry; Yanushkevich, Svetlana; Walker, Robert J.A cryptocurrency wallet is a software stored in a user's device, such as a mobile phone or personal computer. This wallet software holds a public-private key pair that is used for digital cryptocurrency transactions, like Bitcoin. The private key is used to access, authorize and sign transactions, hence it should be secured. The public key on the other hand, serves as the user's public address. Mobile phones and personal computers are susceptible to device failure, external attacks, theft and loss. In the event of a user's device failure, the private key could become inaccessible. If the device is lost or stolen, the private key would fall into the wrong hands and the user will irrecoverably lose their funds. This thesis addresses the question of secure storage of the private key. More precisely, we study this problem such that the following conditions are satisfied: (i) The private key is broken into shares and stored on remote servers; (ii) A user can retrieve their private key by triggering a reconstruction protocol using only a human-memorable password, and the reconstruction is successful as long as at least some threshold number of servers are honest and available. We have designed and implemented a Password Protected Secret Sharing (PPSS) scheme, that can be used to construct a system that satisfies the above. Our PPSS uses two building blocks: (i) Threshold Password-Authenticated Key Exchange (TPAKE) protocol (for authentication); and (ii) A symmetric key encryption scheme (to emulate secure channels for sending the shares). The user divides the private key into shares, and stores each share on a different remote server. When the key is needed, the user enters their password to the device, and the device will reconstruct the secret key by contacting the servers and obtaining the stored shares. Our protocol is provably secure under Computational Diffie-Hellman (CDH) assumption, while providing state-of-the-art security guarantees. We give an implementation as an application for a mobile phone. Efficiency analysis shows that the proposed system is highly deployable.Item Open Access Refactoring references for library migration(2010) Kapur, Puneet; Walker, Robert J.Item Open Access Refactoring References for Library Migration - Appendix(2010-06-09T17:24:11Z) Kapur, Puneet; Cossette, Brad; Walker, Robert J.This report is a companion to the paper “Refactoring References for Library Migration” published at the ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity (SPLASH) 2010. It provides the detailed results mentioned therein.Item Open Access Semi-automating small-scale source code reuse via structural correspondence(2008) Cottrell, Rylan; Walker, Robert J.; Denzinger, Jörg