LEXOS 2017: BUILDING RELIABLE SOFTWARE IN PYTHON * Cheng Zhang, Weiqi Feng, Emma Steffens, Alvaro de Landaluce, Scott Kleinman, Mark D. LeBlanc Department of Computer Science Wheaton College Norton, Massachusetts 02766 508-286-3970 {zhang_cheng, feng_weiqi, steffens_emma, delandaluce_alvaro, mleblanc}@wheatoncollege.edu, scott.kleinman@csun.edu ABSTRACT Refactoring software is challenging, but necessary to ensure software correctness and extensibility. We present a plan that blends automated tools and human reviews when refactoring the back-end of a web-based application. The Lexos software, developed by the NEH-funded Lexomics Project, provides a simple, web-based workflow for text processing, statistical analysis, and visualization of results when exploring digitized texts. The development of Lexos spans six years and includes over fifty undergraduate developers, many who assumed leadership roles in architectural design and systems engineering over three software releases. This paper shares our current refactoring effort on the Python backend to produce Lexos v3.2, an effort that includes a transition from Python v2.7 to Python v3.6. Good software engineering practices guide the effort, including the use of type hinting, a Model-View-Control pattern, PEP 8 code and PEP 257 documentation styles, unit testing, and continuous integration. 1. INTRODUCTION Refactoring software is hard and there are many reasons not to refactor [21]. We present our software group's plan and actions when we decided it was necessary to refactor the back-end of our web-based application to ensure the code's future integrity and extendibility. ___________________________________________ * Copyright © 2018 by the Consortium for Computing Sciences in Colleges. Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the CCSC copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a fee and/or specific permission. 124