Open Access. Powered by Scholars. Published by Universities.®

Software Engineering Commons™

Open Access. Powered by Scholars. Published by Universities.®

Publications and Research

Discipline
Keyword
Publication Year
File Type

Articles 31 - 60 of 67

Full-Text Articles in Software Engineering

Safe Automated Refactoring For Intelligent Parallelization Of Java 8 Streams, Raffi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh, Syed Ahmed May 2019

Safe Automated Refactoring For Intelligent Parallelization Of Java 8 Streams, Raffi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh, Syed Ahmed

Publications and Research

Streaming APIs are becoming more pervasive in mainstream Object-Oriented programming languages. For example, the Stream API introduced in Java 8 allows for functional-like, MapReduce-style operations in processing both finite and infinite data structures. However, using this API efficiently involves subtle considerations like determining when it is best for stream operations to run in parallel, when running operations in parallel can be less efficient, and when it is safe to run in parallel due to possible lambda expression side-effects. In this paper, we present an automated refactoring approach that assists developers in writing efficient stream code in a semantics-preserving fashion. The …


Open Source Foundations For Spatial Decision Support Systems, Jochen Albrecht Dec 2018

Open Source Foundations For Spatial Decision Support Systems, Jochen Albrecht

Publications and Research

Spatial Decision Support Systems (SDSS) were a hot topic in the 1990s, when researchers tried to imbue GIS with additional decision support features. Successful practical developments such as HAZUS or CommunityViz have since been built, based on commercial desktop software and without much heed for theory other than what underlies their process models. Others, like UrbanSim, have been completely overhauled twice but without much external scrutiny. Both the practical and the theoretical foundations of decision support systems have developed considerably over the past 20 years. This article presents an overview of these developments and then looks at what corresponding tools …


A Tool For Optimizing Java 8 Stream Software Via Automated Refactoring, Raffi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh, Syed Ahmed Sep 2018

A Tool For Optimizing Java 8 Stream Software Via Automated Refactoring, Raffi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh, Syed Ahmed

Publications and Research

Streaming APIs are pervasive in mainstream Object-Oriented languages. For example, the Java 8 Stream API allows for functional-like, MapReduce-style operations in processing both finite and infinite data structures. However, using this API efficiently involves subtle considerations like determining when it is best for stream operations to run in parallel, when running operations in parallel can be less efficient, and when it is safe to run in parallel due to possible lambda expression side-effects. In this paper, we describe the engineering aspects of an open source automated refactoring tool called Optimize Streams that assists developers in writing optimal stream software in …


An Application Of Game Theory In Distributed Collaborative Decision Making, Angran Xiao Jul 2018

An Application Of Game Theory In Distributed Collaborative Decision Making, Angran Xiao

Publications and Research

In a distributed product realization environment, new paradigms and accompanying software systems are necessary to support the collaborative work of geographically dispersed engineering teams from different disciplines who have different knowledge, experience, tools and resources. To verify the concept of collaboration by separation, we propose a generic information communication medium to enable knowledge representation and exchange between engineering teams, a digital interface. Across digital interfaces, each engineering team maintains its own perspective towards the product realization problem, and each controls a subset of design variables and seeks to maximize its own payoff function subject to individual constraints. Hence, we postulate …


Poster: Towards Safe Refactoring For Intelligent Parallelization Of Java 8 Streams, Yiming Tang, Raffi Khatchadourian, Mehdi Bagherzadeh, Syed Ahmed May 2018

Poster: Towards Safe Refactoring For Intelligent Parallelization Of Java 8 Streams, Yiming Tang, Raffi Khatchadourian, Mehdi Bagherzadeh, Syed Ahmed

Publications and Research

The Java 8 Stream API sets forth a promising new programming model that incorporates functional-like, MapReduce-style features into a mainstream programming language. However, using streams correctly and efficiently may involve subtle considerations. In this poster, we present our ongoing work and preliminary results towards an automated refactoring approach that assists developers in writing optimal stream code. The approach, based on ordering and typestate analysis, determines when it is safe and advantageous to convert streams to parallel and optimize a parallel streams.


Proactive Empirical Assessment Of New Language Feature Adoption Via Automated Refactoring: The Case Of Java 8 Default Methods, Raffi Khatchadourian, Hidehiko Masuhara Apr 2018

Proactive Empirical Assessment Of New Language Feature Adoption Via Automated Refactoring: The Case Of Java 8 Default Methods, Raffi Khatchadourian, Hidehiko Masuhara

Publications and Research

Programming languages and platforms improve over time, sometimes resulting in new language features that offer many benefits. However, despite these benefits, developers may not always be willing to adopt them in their projects for various reasons. In this paper, we describe an empirical study where we assess the adoption of a particular new language feature. Studying how developers use (or do not use) new language features is important in programming language research and engineering because it gives designers insight into the usability of the language to create meaning programs in that language. This knowledge, in turn, can drive future innovations …


Proactive Empirical Assessment Of New Language Feature Adoption Via Automated Refactoring: The Case Of Java 8 Default Methods, Raffi Khatchadourian, Hidehiko Masuhara Apr 2018

Proactive Empirical Assessment Of New Language Feature Adoption Via Automated Refactoring: The Case Of Java 8 Default Methods, Raffi Khatchadourian, Hidehiko Masuhara

Publications and Research

Programming languages and platforms improve over time, sometimes resulting in new language features that offer many benefits. However, despite these benefits, developers may not always be willing to adopt them in their projects for various reasons. In this paper, we describe an empirical study where we assess the adoption of a particular new language feature. Studying how developers use (or do not use) new language features is important in programming language research and engineering because it gives designers insight into the usability of the language to create meaning programs in that language. This knowledge, in turn, can drive future innovations …


Poster: Towards Safe Refactoring For Intelligent Parallelization Of Java 8 Streams, Yiming Tang, Raffi Khatchadourian, Mehdi Bagherzadeh, Syed Ahmed Mar 2018

Poster: Towards Safe Refactoring For Intelligent Parallelization Of Java 8 Streams, Yiming Tang, Raffi Khatchadourian, Mehdi Bagherzadeh, Syed Ahmed

Publications and Research

The Java 8 Stream API sets forth a promising new programming model that incorporates functional-like, MapReduce-style features into a mainstream programming language. However, using streams correctly and efficiently may involve subtle considerations. In this poster, we present our ongoing work and preliminary results to- wards an automated refactoring approach that assists developers in writing optimal stream code. The approach, based on ordering and typestate analysis, determines when it is safe and advantageous to convert streams to parallel and optimize a parallel streams.


Defaultification Refactoring: A Tool For Automatically Converting Java Methods To Default, Raffi Khatchadourian, Hidehiko Masuhara Oct 2017

Defaultification Refactoring: A Tool For Automatically Converting Java Methods To Default, Raffi Khatchadourian, Hidehiko Masuhara

Publications and Research

Enabling interfaces to declare (instance) method implementations, Java 8 default methods can be used as a substitute for the ubiquitous skeletal implementation software design pattern. Performing this transformation on legacy software manually, though, may be non-trivial. The refactoring requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods. All of this is necessary to preserve type-correctness and confirm semantics preservation. We demonstrate an automated refactoring tool called Migrate Skeletal Implementation to Interface for transforming legacy Java code to use the new default construct. The …


Automated Refactoring Of Legacy Java Software To Default Methods, Raffi Khatchadourian, Hidehiko Masuhara May 2017

Automated Refactoring Of Legacy Java Software To Default Methods, Raffi Khatchadourian, Hidehiko Masuhara

Publications and Research

Java 8 default methods, which allow interfaces to contain (instance) method implementations, are useful for the skeletal implementation software design pattern. However, it is not easy to transform existing software to exploit default methods as it requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods to preserve type-correctness and confirm semantics preservation. In this paper, we present an efficient, fully-automated, type constraint-based refactoring approach that assists developers in taking advantage of enhanced interfaces for their legacy Java software. The approach features an extensive …


Automated Refactoring Of Legacy Java Software To Default Methods, Raffi Khatchadourian, Hidehiko Masuhara May 2017

Automated Refactoring Of Legacy Java Software To Default Methods, Raffi Khatchadourian, Hidehiko Masuhara

Publications and Research

Java 8 introduces enhanced interfaces, allowing for default (instance) methods that implementers will inherit if none are provided [3]. Default methods can be used [2] as a replacement of the skeletal implementation pattern [1], which creates abstract skeletal implementation classes that implementers extend. Migrating legacy code using the skeletal implementation pattern to instead use default methods can require significant manual effort due to subtle language and semantic restrictions. It requires preserving typecorrectness by analyzing complex type hierarchies, resolving issues arising from multiple inheritance, reconciling differences between class and interface methods, and ensuring tie-breakers with overriding class methods do not alter …


Comparing Tensorflow Deep Learning Performance Using Cpus, Gpus, Local Pcs And Cloud, John Lawrence, Jonas Malmsten, Andrey Rybka, Daniel A. Sabol, Ken Triplin May 2017

Comparing Tensorflow Deep Learning Performance Using Cpus, Gpus, Local Pcs And Cloud, John Lawrence, Jonas Malmsten, Andrey Rybka, Daniel A. Sabol, Ken Triplin

Publications and Research

Deep learning is a very computational intensive task. Traditionally GPUs have been used to speed-up computations by several orders of magnitude. TensorFlow is a deep learning framework designed to improve performance further by running on multiple nodes in a distributed system. While TensorFlow has only been available for a little over a year, it has quickly become the most popular open source machine learning project on GitHub. The open source version of TensorFlow was originally only capable of running on a single node while Google’s proprietary version only was capable of leveraging distributed systems. This has now changed. In this …


Automated Refactoring Of Legacy Java Software To Default Methods, Raffi Khatchadourian, Hidehiko Masuhara Jan 2017

Automated Refactoring Of Legacy Java Software To Default Methods, Raffi Khatchadourian, Hidehiko Masuhara

Publications and Research

Java 8 default methods, which allow interfaces to contain (instance) method implementations, are useful for the skeletal implementation software design pattern. However, it is not easy to transform existing software to exploit default methods as it requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods to preserve type-correctness and confirm semantics preservation. In this paper, we present an efficient, fully-automated, type constraint-based refactoring approach that assists developers in taking advantage of enhanced interfaces for their legacy Java software. The approach features an extensive …


Detecting Broken Pointcuts Using Structural Commonality And Degree Of Interest, Raffi Khatchadourian, Awais Rashid, Hidehiko Masuhara, Takuya Watanabe Jan 2017

Detecting Broken Pointcuts Using Structural Commonality And Degree Of Interest, Raffi Khatchadourian, Awais Rashid, Hidehiko Masuhara, Takuya Watanabe

Publications and Research

Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base-code can lead to join points incorrectly falling in or out of the scope of pointcuts. Deciding which pointcuts have broken due to base-code changes is a daunting venture, especially in large and complex systems. We present an automated approach that recommends pointcuts that are likely to require modification due to a particular base-code change, as well as ones that do not. Our hypothesis is that join points selected by a pointcut exhibit common structural characteristics. Patterns describing such commonality are used to recommend pointcuts that have potentially …


Sefo: A Package For Generating Probabilistic Forecasts From Nmme Predictive Ensembles, Nir Krakauer Mar 2016

Sefo: A Package For Generating Probabilistic Forecasts From Nmme Predictive Ensembles, Nir Krakauer

Publications and Research

Long-range weather forecasts based on output from ensembles of computer simulations are attracting increasing interest. A variety of methods have been proposed to convert the ensemble outputs to calibrated probabilistic forecasts. The package presented here (SeFo, for Seasonal Forecasting) implements a number of methods for producing forecasts of monthly surface air temperature anomalies up to 9 months in advance using output from the North American Multi-Model Ensemble (NMME). The package contains modules for downloading and reading past observations and ensemble output; producing forecast probability distributions; and verifying and calibrating a user-determined subset of methods using arbitrary past periods. By changing …


Towards Improving Interface Modularity In Legacy Java Software Through Automated Refactoring, Raffi T. Khatchadourian, Olivia Moore, Hidehiko Masuhara Mar 2016

Towards Improving Interface Modularity In Legacy Java Software Through Automated Refactoring, Raffi T. Khatchadourian, Olivia Moore, Hidehiko Masuhara

Publications and Research

The skeletal implementation pattern is a software design pattern consisting of defining an abstract class that provides a partial interface implementation. However, since Java allows only single class inheritance, if implementers decide to extend a skeletal implementation, they will not be allowed to extend any other class. Also, discovering the skeletal implementation may require a global analysis. Java 8 enhanced interfaces alleviate these problems by allowing interfaces to contain (default) method implementations, which implementers inherit. Java classes are then free to extend a different class, and a separate abstract class is no longer needed; developers considering implementing an interface need …


Towards Improving Interface Modularity In Legacy Java Software Through Automated Refactoring, Raffi Khatchadourian, Olivia Moore, Hidehiko Masuhara Mar 2016

Towards Improving Interface Modularity In Legacy Java Software Through Automated Refactoring, Raffi Khatchadourian, Olivia Moore, Hidehiko Masuhara

Publications and Research

The skeletal implementation pattern is a software design pattern that defines an abstract class that provides a partial interface implementation. However, since Java allows only single class inheritance, if implementers decide to extend a skeletal implementation, they will not be allowed to extend any other class. Also, discovering the skeletal implementation may require a global analysis. Java 8 enhanced interfaces alleviate these problems by enabling interfaces to contain (default) method implementations, which implementers inherit. Java classes are then free to extend a different class, and a separate abstract class is no longer needed; developers considering implementing an interface need only …


Automated Refactoring Of Legacy Java Software To Enumerated Types, Raffi Khatchadourian Jan 2016

Automated Refactoring Of Legacy Java Software To Enumerated Types, Raffi Khatchadourian

Publications and Research

Modern Java languages introduce several new features that offer significant improvements over older Java technology. In this article we consider the new enum construct, which provides language support for enumerated types. Prior to recent Java languages, programmers needed to employ various patterns (e.g., the weak enum pattern) to compensate for the absence of enumerated types in Java. Unfortunately, these compensation patterns lack several highly-desirable properties of the enum construct, most notably, type safety. We present a novel fully-automated approach for transforming legacy Java code to use the new enumeration construct. This semantics-preserving approach increases type safety, produces code that is …


The Mathematics And Applications Behind Image Warping And Morphing, Tanvir Prince, Maria Malik, Ildefonso Salva, Ariel Mazor, Sakhr Aldaylam Nov 2015

The Mathematics And Applications Behind Image Warping And Morphing, Tanvir Prince, Maria Malik, Ildefonso Salva, Ariel Mazor, Sakhr Aldaylam

Publications and Research

This research is conducted in the summer of 2015 and is possible by the support of various agency, in particular, by the grant of Prof. Angulo Nieves and the New York City Research Initiative.

The purpose of this research is to reveal the mathematics and applications of the computer animation techniques of warping and morphing. A warp is a twist or distortion in the form of an object in an image while a morph is the smooth and gradual transformation of an object in one image into the object in another image. Linear algebra makes these computer animation techniques possible; …


Detecting Broken Pointcuts Using Structural Commonality And Degree Of Interest, Raffi Khatchadourian, Awais Rashd, Hidehiko Masuhara, Takuya Watanabe Nov 2015

Detecting Broken Pointcuts Using Structural Commonality And Degree Of Interest, Raffi Khatchadourian, Awais Rashd, Hidehiko Masuhara, Takuya Watanabe

Publications and Research

Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base code can lead to join points incorrectly falling in or out of the scope of pointcuts. Deciding which pointcuts have broken due to base-code changes is daunting, especially in large and complex systems. We present an automated approach that recommends pointcuts that are likely to require modification due to a certain base-code change and ones that do not. Our hypothesis is that join points selected by a pointcut exhibit common structural characteristics. Patterns describing such commonalities recommend pointcuts that have potentially broken to the developer. The approach …


Porting The Netbeans Java 8 Enhanced For Loop Lambda Expression Refactoring To Eclipse, Md Arefin, Raffi Khatchadourian Oct 2015

Porting The Netbeans Java 8 Enhanced For Loop Lambda Expression Refactoring To Eclipse, Md Arefin, Raffi Khatchadourian

Publications and Research

Java 8 is one of the largest upgrades to the popular language and framework in over a decade. However, the Eclipse IDE is missing several key refactorings that could help developers take advantage of new features in Java 8 more easily. In this paper, we discuss our ongoing work in porting the enhanced for loop to lambda expression refactoring from the NetBeans IDE to Eclipse. We also discuss future plans for new Java 8 refactorings not found in any current IDE.


Porting The Netbeans Java 8 Enhanced For Loop Lambda Expression Refactoring To Eclipse, Md Arefin, Raffi Khatchadourian Oct 2015

Porting The Netbeans Java 8 Enhanced For Loop Lambda Expression Refactoring To Eclipse, Md Arefin, Raffi Khatchadourian

Publications and Research

Java 8 is one of the largest upgrades to the popular language and framework in over a decade. However, the Eclipse IDE is missing several key refactorings that could help developers take advantage of new features in Java 8 more easily. In this paper, we discuss our ongoing work in porting the enhanced for loop to lambda expression refactoring from the NetBeans IDE to Eclipse. We also discuss future plans for new Java 8 refactorings not found in any current IDE.


Fraglight: Shedding Light On Broken Pointcuts In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Awais Rashid, Hidehiko Masuhara, Takuya Watanabe Oct 2015

Fraglight: Shedding Light On Broken Pointcuts In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Awais Rashid, Hidehiko Masuhara, Takuya Watanabe

Publications and Research

Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base code can lead to join points incorrectly falling in or out of the scope of pointcuts. Deciding which pointcuts have broken due to base-code changes is daunting, especially in large and complex systems. We demonstrate an automated tool called FRAGLIGHT that recommends a set of pointcuts that are likely to require modification due to a certain base-code change. The underlying approach is rooted in harnessing unique and arbitrarily deep structural commonality between program elements corresponding to join points selected by a pointcut in a particular software version. …


Framing The Question, "Who Governs The Internet?", Robert J. Domanski Jan 2015

Framing The Question, "Who Governs The Internet?", Robert J. Domanski

Publications and Research

There remains a widespread perception among both the public and elements of academia that the Internet is “ungovernable”. However, this idea, as well as the notion that the Internet has become some type of cyber-libertarian utopia, is wholly inaccurate. Governments may certainly encounter tremendous difficulty in attempting to regulate the Internet, but numerous types of authority have nevertheless become pervasive. So who, then, governs the Internet? This book will contend that the Internet is, in fact, being governed, that it is being governed by specific and identifiable networks of policy actors, and that an argument can be made as to …


Pointcut Rejuvenation: Recovering Pointcut Expressions In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Phil Greenwood, Awais Rashid, Harry Xu May 2012

Pointcut Rejuvenation: Recovering Pointcut Expressions In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Phil Greenwood, Awais Rashid, Harry Xu

Publications and Research

Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base code can lead to join points incorrectly falling in or out of the scope of pointcuts. In this paper, we present an automated approach that limits fragility problems by providing mechanical assistance in pointcut maintenance. The approach is based on harnessing arbitrarily deep structural commonalities between program elements corresponding to join points selected by a pointcut. The extracted patterns are then applied to later versions to offer suggestions of new join points that may require inclusion. To illustrate that the motivation behind our proposal is well founded, …


Formalizing Reusable Aspect-Oriented Concurrency Control, Neelam Soundarajan, Derek Bronish, Raffi Khatchadourian Jul 2011

Formalizing Reusable Aspect-Oriented Concurrency Control, Neelam Soundarajan, Derek Bronish, Raffi Khatchadourian

Publications and Research

Java and its library provide powerful concurrency control mechanisms. However, their use can lead to similar synchronization code scattered across multiple classes, synchronization and functional code being tangled together, and similar code being duplicated in many applications. Aspect-oriented (AO) programming makes it possible to address these problems. However, the specific behavior of systems built using AO techniques can be challenging to comprehend. We propose a specification approach to precisely express such systems' critical concurrency and synchronization properties. We illustrate the method with a simple example.


Enumeration Refactoring: A Tool For Automatically Converting Java Constants To Enumerated Types, Raffi Khatchadourian, Benjamin Muskalla Sep 2010

Enumeration Refactoring: A Tool For Automatically Converting Java Constants To Enumerated Types, Raffi Khatchadourian, Benjamin Muskalla

Publications and Research

Java 5 introduces several new features that significantly improve older Java technology. We consider the new enum construct, which provides language support for enumerated types. Before Java 5, programmers needed to employ various patterns to compensate for the absence of enumerated types in Java. Unfortunately, these compensation patterns lack several highly desirable properties of the enum construct, notably type-safety. We demonstrate an automated refactoring tool called Convert Constants to Enum for transforming legacy Java code to use the new enumeration construct. An interprocedural type inferencing algorithm that tracks the flow of enumerated values drives the approach, and the tool is …


Pointcut Rejuvenation: Recovering Pointcut Expressions In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Phil Greenwood, Awais Rashid, Guoqing Harry Xu Nov 2009

Pointcut Rejuvenation: Recovering Pointcut Expressions In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Phil Greenwood, Awais Rashid, Guoqing Harry Xu

Publications and Research

Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base-code can lead to join points incorrectly falling in or out of the scope of pointcuts. We present an automated approach that limits fragility problems by providing mechanical assistance in pointcut maintenance. The approach is based on harnessing arbitrarily deep structural commonalities between program elements corresponding to join points selected by a pointcut. The extracted patterns are then applied to later versions to offer suggestions of new join points that may require inclusion. We demonstrate the usefulness of our technique by rejuvenating pointcuts in multiple versions of several …


Contributing Factors To Pointcut Fragility, Phil Greenwood, Awais Rashid, Raffi Khatchadourian Oct 2009

Contributing Factors To Pointcut Fragility, Phil Greenwood, Awais Rashid, Raffi Khatchadourian

Publications and Research

Pointcut fragility is a well-documented problem of Aspect-Oriented Programming with changes to the base-code causing join points to incorrectly fall in or out of scope. In order to combat this problem a tool was developed that provides mechanical assistance to pointcut maintenance. This tool relied on the deep structural commonalities between program elements to detect when pointcut fragility occurs. During the assessment of this tool a number of common practices were uncovered that were employed both in the aspect and base-code that contributed to or prevented pointcut fragility. This paper documents the practices uncovered and describes how they can affect …


Specifying Reusable Aspects, Neelam Soundarajan, Raffi Khatchadourian Jan 2009

Specifying Reusable Aspects, Neelam Soundarajan, Raffi Khatchadourian

Publications and Research

Aspect-Oriented Programming enables developers to manage, in a more modular fashion, implementations of crosscutting concerns that might be scattered or tangled if aspect-oriented techniques were not utilized. Our interest in this paper is in considering techniques for specifying precise properties of aspects. In particular, we are interested in specifying reusable aspects; i.e., aspects that correspond to crosscutting concerns that occur in many systems. These abstract aspects can be reused in various systems where a particular concern is applicable. Although there has been work on issues related to reasoning about aspects and the behaviors of aspect-oriented systems, specifying reusable abstract aspects …