@article{johnson_fancher_hou_jones_2019, title={Structure of HfO2 modified with Y, Gd, and Zr at ambient conditions and high pressures}, volume={126}, ISSN={["1089-7550"]}, DOI={10.1063/1.5121024}, abstractNote={High-resolution and high-pressure X-ray diffraction measurements were performed to determine the effects of 5% Y, 3% Gd, and 50% Zr substitution on the crystal structure and polymorphism of HfO2. High-resolution experiments at ambient pressure show a mixture of monoclinic and cubic fluorite phases in 5% Y:HfO2 and 3% Gd:HfO2, while 50% Zr:HfO2 formed a monoclinic, single-phase solid solution. Crystallographic refinement using the Rietveld method indicates that Y and Gd substitute for Hf in both the monoclinic and cubic phases. High-pressure X-ray diffraction was performed in situ up to 31 GPa and shows that the pressure-induced phase transitions were reduced with the addition of either Y, Gd, or Zr relative to the transition pressures in undoped HfO2. The pressure-induced changes in lattice parameter, relative volume, and spontaneous strain are reported.}, number={20}, journal={JOURNAL OF APPLIED PHYSICS}, author={Johnson, Brienne and Fancher, Chris M. and Hou, Dong and Jones, Jacob L.}, year={2019}, month={Nov} } @article{barik_song_johnson_murphy-hill_2016, title={From Quick Fixes to Slow Fixes: Reimagining Static Analysis Resolutions to Enable Design Space Exploration}, ISSN={["1063-6773"]}, DOI={10.1109/icsme.2016.63}, abstractNote={Quick Fixes as implemented by IDEs today prioritize the speed of applying the fix as a primary criteria for success. In this paper, we argue that when tools over-optimize this criteria, such tools neglect other dimensions that are important to successfully applying a fix, such as being able to explore the design space of multiple fixes. This is especially true in cases where a fix only partially implements the intention of the developer. In this paper, we implement an extension to the FindBugs defect finding tool, called FixBugs, an interactive resolution approach within the Eclipse development environment that prioritizes other design criteria to the successful application of suggested fixes. Our empirical evaluation method of 12 developers suggests that FixBugs enables developers to explore alternative designs and balances the benefits of manual fixing with automated fixing, without having to compromise in either effectiveness or efficiency. Our analytic evaluation method with six usability experts identified trade-offs between FixBugs and Quick Fix, and suggests ways in which FixBugs and Quick Fix can offer complementary capabilities to better support developers.}, journal={32ND IEEE INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE AND EVOLUTION (ICSME 2016)}, author={Barik, Titus and Song, Yoonki and Johnson, Brittany and Murphy-Hill, Emerson}, year={2016}, pages={212–222} } @inproceedings{barik_song_johnson_murphy-hill_2016, title={from quick fixes to slow fixes: reimagining static analysis resolutions to enable design space exploration}, booktitle={32nd ieee international conference on software maintenance and evolution (icsme 2016)}, author={Barik, T. and Song, Y. and Johnson, B. and Murphy-Hill, E.}, year={2016}, pages={212–222} } @article{johnson_pandita_murphy-hill_heckman_2015, title={Bespoke Tools: Adapted to the Concepts Developers Know}, DOI={10.1145/2786805.2803197}, abstractNote={Even though different developers have varying levels of expertise, the tools in one developer's integrated development environment (IDE) behave the same as the tools in every other developers' IDE. In this paper, we propose the idea of automatically customizing development tools by modeling what a developer knows about software concepts. We then sketch three such ``bespoke'' tools and describe how development data can be used to infer what a developer knows about relevant concepts. Finally, we describe our ongoing efforts to make bespoke program analysis tools that customize their notifications to the developer using them.}, journal={2015 10TH JOINT MEETING OF THE EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND THE ACM SIGSOFT SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (ESEC/FSE 2015) PROCEEDINGS}, author={Johnson, Brittany and Pandita, Rahul and Murphy-Hill, Emerson and Heckman, Sarah}, year={2015}, pages={878–881} } @article{smith_johnson_murphy-hill_chu_lipford_2015, title={Questions Developers Ask While Diagnosing Potential Security Vulnerabilities with Static Analysis}, DOI={10.1145/2786805.2786812}, abstractNote={Security tools can help developers answer questions about potential vulnerabilities in their code. A better understanding of the types of questions asked by developers may help toolsmiths design more effective tools. In this paper, we describe how we collected and categorized these questions by conducting an exploratory study with novice and experienced software developers. We equipped them with Find Security Bugs, a security-oriented static analysis tool, and observed their interactions with security vulnerabilities in an open-source system that they had previously contributed to. We found that they asked questions not only about security vulnerabilities, associated attacks, and fixes, but also questions about the software itself, the social ecosystem that built the software, and related resources and tools. For example, when participants asked questions about the source of tainted data, their tools forced them to make imperfect tradeoffs between systematic and ad hoc program navigation strategies.}, journal={2015 10TH JOINT MEETING OF THE EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND THE ACM SIGSOFT SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (ESEC/FSE 2015) PROCEEDINGS}, author={Smith, Justin and Johnson, Brittany and Murphy-Hill, Emerson and Chu, Bill and Lipford, Heather Richter}, year={2015}, pages={248–259} } @inproceedings{johnson_2014, title={Enhancing tools' intelligence for improved program analysis tool usability}, booktitle={2014 ieee symposium on visual languages and human-centric computing (vl/hcc 2014)}, author={Johnson, B.}, year={2014}, pages={191–192} } @article{soares_gheyi_murphy-hill_johnson_2013, title={Comparing approaches to analyze refactoring activity on software repositories}, volume={86}, ISSN={["1873-1228"]}, DOI={10.1016/j.jss.2012.10.040}, abstractNote={Some approaches have been used to investigate evidence on how developers refactor their code, whether refactorings activities may decrease the number of bugs, or improve developers’ productivity. However, there are some contradicting evidence in previous studies. For instance, some investigations found evidence that if the number of refactoring changes increases in the preceding time period the number of defects decreases, different from other studies. They have used different approaches to evaluate refactoring activities. Some of them identify committed behavior-preserving transformations in software repositories by using manual analysis, commit messages, or dynamic analysis. Others focus on identifying which refactorings are applied between two programs by using manual inspection or static analysis. In this work, we compare three different approaches based on manual analysis, commit message (Ratzinger's approach) and dynamic analysis (SafeRefactor's approach) to detect whether a pair of versions determines a refactoring, in terms of behavioral preservation. Additionally, we compare two approaches (manual analysis and Ref-Finder) to identify which refactorings are performed in each pair of versions. We perform both comparisons by evaluating their accuracy, precision, and recall in a randomly selected sample of 40 pairs of versions of JHotDraw, and 20 pairs of versions of Apache Common Collections. While the manual analysis presents the best results in both comparisons, it is not as scalable as the automated approaches. Ratzinger's approach is simple and fast, but presents a low recall; differently, SafeRefactor is able to detect most applied refactorings, although limitations in its test generation backend results for some kinds of subjects in low precision values. Ref-Finder presented a low precision and recall in our evaluation.}, number={4}, journal={JOURNAL OF SYSTEMS AND SOFTWARE}, author={Soares, Gustavo and Gheyi, Rohit and Murphy-Hill, Emerson and Johnson, Brittany}, year={2013}, month={Apr}, pages={1006–1022} } @inproceedings{johnson_2013, title={Novice understanding of program analysis tool notifications}, booktitle={Proceedings of the 35th International Conference on software engineering (ICSE 2013)}, author={Johnson, B.}, year={2013}, pages={1432–1434} } @inproceedings{johnson_song_murphy-hill_bowdidge_2013, title={Why don't software developers use static analysis tools to find bugs?}, DOI={10.1109/icse.2013.6606613}, abstractNote={Using static analysis tools for automating code inspections can be beneficial for software engineers. Such tools can make finding bugs, or software defects, faster and cheaper than manual inspections. Despite the benefits of using static analysis tools to find bugs, research suggests that these tools are underused. In this paper, we investigate why developers are not widely using static analysis tools and how current tools could potentially be improved. We conducted interviews with 20 developers and found that although all of our participants felt that use is beneficial, false positives and the way in which the warnings are presented, among other things, are barriers to use. We discuss several implications of these results, such as the need for an interactive mechanism to help developers fix defects.}, booktitle={Proceedings of the 35th International Conference on software engineering (ICSE 2013)}, author={Johnson, B. and Song, Y. and Murphy-Hill, E. and Bowdidge, R.}, year={2013}, pages={672–681} } @inproceedings{johnson_2012, title={A study on improving static analysis tools: Why are we not using them?}, booktitle={2012 34th international conference on software engineering (icse)}, author={Johnson, B.}, year={2012}, pages={1607–1609} }