Please use this identifier to cite or link to this item:
http://hdl.handle.net/11375/27687
Title: | FIXME: Memoirs of a Code Plumber |
Authors: | Dalimonte, Gabriel |
Department: | Computing and Software |
Keywords: | drasil;scientific computing;software development |
Publication Date: | Oct-2019 |
Publisher: | Department of Computing and Software, McMaster University |
Abstract: | This report investigates the design and use of the Drasil software framework, which uses knowledge capture to facilitate automation of scientific computing software creation. Drasil is developed in a collaborative setting amongst several developers with range of backgrounds and experience. Contributing to a collaborative codebase poses many challenges, from the unfamiliarity of code layout, to the overarching design, to the myriad of preexisting undocumented choices. With Drasil’s design being driven on an as-needed basis, it can be hard to discern whether an odd design is intentional and relevant, historical, or ad-hoc. Drasil’s ad-hoc development process leads to designs lack foresight leading to designs that are difficult to extend. We inspect several odd Drasil designs from the dual perspective of a developer and user of Drasil. We uncover several design oddities stemming from the just-in-time nature of Drasil’s development. Many of the faults appear shallow at first glance; however, they have a cascading effect requiring large swathes of changes to address. We inspect how an odd constructor propagates throughout the Drasil codebase to discover that, while each individual component is designed appropriately, the macro-level design is incoherent and requires development attention. Discovered design faults, related to consistency, coalesced, seeing resolution through an introspective data-structure, used to ensure the consistency of all sections in a requirements document. Aside from investigating design faults, this report looks for automation candidates, considering both perspectives. From the user-facing perspective we identify nonsensical incantations required for otherwise automated sections of a requirements document. We improve the user experience by removing the unnecessary incantations while maintaining, and abstracting, the function the boilerplate performed. We realize developer automation improvements by through convenience of the build system, the number and depth of tests the continuous integration process performs, automating and improving select forms of feedback for developers, and automatically producing an up-to-date demonstration website of Drasil and its capabilities whenever a change occurs. Even a reasonable design, or minor fault, is worth investigating in depth. The investigation may reveal additional faults, or design oversights, before they compound to a point of untenable technical debt. |
URI: | http://hdl.handle.net/11375/27687 |
Appears in Collections: | Masters of Engineering Technical Reports |
Files in This Item:
File | Description | Size | Format | |
---|---|---|---|---|
Dalimonte_Gabriel_2019October_MEng.pdf | 616.2 kB | Adobe PDF | View/Open |
Items in MacSphere are protected by copyright, with all rights reserved, unless otherwise indicated.