Learn More
Software developers often fail to respect the intentions of designers due to missing or ignored documentation of design intent. SCL (Structural Constraint Language) addresses this problem by enabling designers to formalize and confirm compliance with design intent. The designer expresses his intent as constraints on the program model using the SCL language.(More)
Programmers often copy and paste code so that they can reuse the existing code to complete a similar task. Many times, modifications to the newly pasted code include renaming all instances of an identifier, such as a variable name, consistently throughout the fragment. When these modifications are done manually, undetected inconsistencies and errors can(More)
Capacitive Voltage Transformers (CVTs) are common in high-voltage transmission line applications. These same applications require fast, yet secure protection. However, as the requirement for faster protective relays grows, so does the concern over the poor transient response of some CVTs for certain system conditions. Solid-state and microprocessor relays(More)
Programmers copy and paste code for many reasons. Regardless of the specific reasons, similar code fragments (clones) are introduced into software systems. Like other software artifacts, clones may require attention and effort from programmers so that they can be understood, and correctly adapted and evolved. More specifically, when understanding and(More)
Power systems are subjected to a wide range of small or larger disturbances during operating conditions. Small changes in loading conditions occur continually. The power system must adjust to these changing conditions and continue to operate satisfactorily and within the desired bounds of voltage and frequency. The power system should be designed to survive(More)
Keystroke authentication can help significantly improve computer security by hardening passwords or offering active, continuous authentication. Over the years, many keystroke authentication algorithms have been reported to produce promising results. However, these results are tested on proprietary datasets with varying numbers of subjects and amounts of(More)
Large software frameworks and APIs can be hard  to learn and use, impeding software productivity. But what are the specific challenges that programmers actually face when using frameworks and APIs in practice? What makes APIs hard to use, and what can be done to alleviate the problems associated with API usability and learnability? To explore(More)
Software engineering activities often produce large amounts of unstructured data. Useful information can be extracted from such data to facilitate software development activities, such as bug reports management and documentation provision. Online forums, in particular, contain extensive valuable information that can aid in software development. However, no(More)