A method to identify toggle debt in a project from its source code.

dc.contributor.advisorEspinosa Bedoya, Albeiro
dc.contributor.authorHoyos Rentería, Juan David
dc.contributor.researchgroupCalidad de Softwarespa
dc.date.accessioned2021-10-13T14:06:05Z
dc.date.available2021-10-13T14:06:05Z
dc.date.issued2021
dc.descriptionilustraciones, diagramas, tablasspa
dc.description.abstractContinuous Delivery has benefited companies such as IBM, Google and Microsoft after the adoption of practices to deliver friction-less value. These lean and agile practices help teams to adjust to implicit variability when developing software and to provide non-stop features and enhancements. Practitioners that use feature toggles in their source code can control the execution of features with a high degree of precision. As this execution control effectively decouples the feature implementation from its release, feature toggles help practitioners move valuable software artifacts closer to the user. However, there is evidence of unwanted risks and negative consequences that impact the quality of a software project when, for example, a feature hidden under a toggle remains in the source code longer than expected. Although practitioners of feature toggles have crafted mechanisms to keep their feature toggles inventory in check, little is known about the automated identification of feature toggles and their associated technical debt. This thesis focuses on the proposal of a method to identify source code where both feature toggles and technical debt coincide in the repository of a project. This method is based on two complementary empirical explorations. First, we identified areas of code containing feature toggles in 72 open source projects that use toggling libraries. And second, we selected one of the toggled projects and identified technical debt that intersects with the previously identified feature toggles. The proposed method uncovers the presence of toggle debt in the early stages of the development process. These results demonstrate the feasibility of a systematic approach to find toggle debt from a software repository, and advise practitioners on the importance for automated, reliable and up-to-date quality measurement tools.eng
dc.description.abstractLa Entrega Continua de software ha beneficiado a compañías como IBM, Google y Microsoft luego de haber adoptado prácticas para generar valor sin fricción. Estas prácticas limpias y ágiles ayudan a los equipos de desarrollo a ajustarse a la variabilidad implícita, y a proveer funcionalidades y mejoras sin parar. Quienes usan feature toggles en su código fuente pueden controlar la ejecución de funcionalidades con un alto grado de precisión. A la vez que este control efectivamente desacopla la etapa de implementación de la del lanzamiento de una funcionalidad, los feature toggles ayudan a los equipos de desarrollo a enfocarse en el valor de uso de sus implementaciones. Sin embargo, existe evidencia de riesgos no esperados y de consecuencias negativas que impactan la calidad del proyecto de software cuando, por ejemplo, una funcionalidad bajo la guarda de un toggle permanece escondida en el código fuente por más tiempo de lo esperado. A pesar que las personas que usan feature toggles han creado mecanismos para mantener controlado el inventario de feature toggles, poco se conoce sobre la identificación automatizada de feature toggles y su technical debt asociado. Esta tesis se enfoca en proponer un método para identificar código fuente donde los feature toggles y el technical debt coinciden en el repositorio de un proyecto. Este método se basa en dos exploraciones empíricas complementarias. Primero, identificamos áreas de código que contienen feature toggles en 72 proyectos de código abierto que usan librerías de toggling. Y segundo, seleccionamos uno de los proyectos que usa toggles e identificamos la deuda técnica que se cruza con los feature toggles previamente identificados. El método propuesto descubre la presencia de toggle debt en las primeras etapas del proceso de desarrollo. Estos resultados demuestran la viabilidad de un acercamiento sistemático para encontrar toggle debt en un repositorio de software y advierte a los practicantes sobre la importancia de usar herramientas automatizadas, confiables y actualizadas para medir la calidad. (Texto tomado de la fuente)spa
dc.description.degreelevelMaestríaspa
dc.description.degreenameMagíster en Ingeniería - Ingeniería de Sistemasspa
dc.description.researchareaInteligencia de softwarespa
dc.format.extentxiii, 60 páginasspa
dc.format.mimetypeapplication/pdfspa
dc.identifier.instnameUniversidad Nacional de Colombiaspa
dc.identifier.reponameRepositorio Institucional Universidad Nacional de Colombiaspa
dc.identifier.repourlhttps://repositorio.unal.edu.co/spa
dc.identifier.urihttps://repositorio.unal.edu.co/handle/unal/80530
dc.language.isoengspa
dc.publisherUniversidad Nacional de Colombiaspa
dc.publisher.branchUniversidad Nacional de Colombia - Sede Medellínspa
dc.publisher.departmentDepartamento de la Computación y la Decisiónspa
dc.publisher.facultyFacultad de Minasspa
dc.publisher.placeMedellín, Colombiaspa
dc.publisher.programMedellín - Minas - Maestría en Ingeniería - Ingeniería de Sistemasspa
dc.relation.references[Dja, 2018a] (2018a). Django Packages: Feature Flipping. https://djangopackages.org/grids/g/feature-flip/. Accessed 2018-11-05.spa
dc.relation.references[Dja, 2018b] (2018b). The Web framework for perfectionists with deadlines — Django. https://www.djangoproject.com/. Accessed 2019-03-05.spa
dc.relation.references[OSF, 2019] (2019). Center for Open Science. https://github.com/CenterForOpenScience/osf.io. Accessed 2019-01-09.spa
dc.relation.references[Waf, 2019] (2019). Django Waffle — django-waffle 0.14.0 documentation. https://waffle.readthedocs.io/en/stable/. Accessed 2019-01-11.spa
dc.relation.references[Adams and McIntosh, 2016] Adams, B. and McIntosh, S. (2016). Modern release engineering in a nutshell – why researchers should care. In Leaders of Tomorrow: Future of Software Engineering, Proceedings of the 23rd IEEE International Conference on Software Analysis, Evolution, and Reengineering (SANER), pages 78–90, Osaka, Japan.spa
dc.relation.references[Alfayez et al., 2020] Alfayez, R., Alwehaibi, W., Winn, R., Venson, E., and Boehm, B. (2020). A systematic literature review of technical debt prioritization. In Proceedings of the 3rd International Conference on Technical Debt, pages 1–10.spa
dc.relation.references[Alves et al., 2014] Alves, N. S., Ribeiro, L. F., Caires, V., Mendes, T. S., and Spinola, R. O. (2014). Towards an ontology of terms on technical debt. pages 1–7. IEEE.spa
dc.relation.references[Arif and Rana, 2020] Arif, A. and Rana, Z. (2020). Refactoring of code to remove technical debt and reduce maintenance effort.spa
dc.relation.references[Asthagiri, 2018] Asthagiri, N. (2018). OEP-17: Feature Toggles. https:// open-edx-proposals.readthedocs.io/en/latest/oep-0017-bp-feature-toggles.html. Accessed 2020-01-10.spa
dc.relation.references[Avgeriou et al., 2016] Avgeriou, P., Kruchten, P., Ozkaya, I., and Seaman, C. (2016). Managing technical debt in software engineering. http://drops.dagstuhl.de/opus/volltexte/2016/6693/.spa
dc.relation.references[Chen, 2015] Chen, L. (2015). Continuous delivery: Huge benefits, but challenges too. IEEE Software, 32(2):50–54.spa
dc.relation.references[Claps et al., 2015] Claps, G. G., Berntsson Svensson, R., and Aurum, A. A. (2015). On the journey to continuous deployment: Technical and social challenges along the way. Information and Software Technology, 57(1):21–31.spa
dc.relation.references[Cunningham, 1993] Cunningham, W. (1993). The wycash portfolio management system. Proc. Object-Oriented Programming Systems, Languages, and Applications (OOPSLA ’92) (Addendum), 4:29–30.spa
dc.relation.references[edX, 2019] edX (2019). edx-platform. https://github.com/edx/edx-platform. Accessed 2019-01-09.spa
dc.relation.references[edX, 2021a] edX (2021a). 5.3. Code Quality — Open edX Developer’s Guide documentation. https://edx.readthedocs.io/projects/edx-developer-guide/en/latest/testing/code-quality.html#code-quality. Accessed 2021-01-01.spa
dc.relation.references[edX, 2021b] edX (2021b). edx/ecommerce: Service for managing edX’s product catalog and handling orders for those products. https://github.com/edx/ecommerce. Accessed 2021-01-01.spa
dc.relation.references[edX, 2021c] edX (2021c). Gating E-Commerce Service Features. https://edx-ecommerce.readthedocs.io/en/latest/additional_features/gate_ecommerce.html. Accessed 2021-01-01.spa
dc.relation.references[edX, 2021d] edX (2021d). Projects - JIRA. https://openedx.atlassian.net/projects. Accessed 2021-01-01.spa
dc.relation.references[Feitelson et al., 2013] Feitelson, D. G., Frachtenberg, E., and Beck, K. L. (2013). Development and deployment at facebook. IEEE Internet Computing, 17(4):8–17.spa
dc.relation.references[Fowler, 2009] Fowler, M. (2009). Technicaldebtquadrant. https://martinfowler.com/bliki/TechnicalDebtQuadrant.html. Accessed 2017-01-04.spa
dc.relation.references[Hodgson, 2017] Hodgson, P. (2017). Feature Toggles. https://martinfowler.com/articles/feature-toggles.html. Accessed 2017-08-30.spa
dc.relation.references[Hoyos et al., 2020] Hoyos, J., Abdalkareem, R., Mujahid, S., Shihab, E., and Espinosa Bedoya, A. (2020). On the Removal of Feature Toggles: A Study of Python Projects and Practitioners Motivations. Submitted to Empirical Software Engineering.spa
dc.relation.references[Humble and Farley, 2010] Humble, J. and Farley, D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment.spa
dc.relation.references[Jabangwe et al., 2015] Jabangwe, R., B ̈orstler, J., Sˇmite, D., and Wohlin, C. (2015). Empirical evidence on the link between object-oriented measures and external quality attributes: a systematic literature review. Empirical Software Engineering, 20(3):640–693.spa
dc.relation.references[Kasting, 2015] Kasting, P. (2015). Announcing base::feature api - chromium-dev mailing list. https://groups.google.com/a/chromium.org/g/chromium-dev/c/Esavy4-JTHY/m/CJ_zXzBQAAAJ. Accessed 2020-11-22.spa
dc.relation.references[Khomyakov et al., 2020] Khomyakov, I., Makhmutov, Z., Mirgalimova, R., and Sillitti, A. (2020). An analysis of automated technical debt measurement. volume 378 LNBIP.spa
dc.relation.references[Kruchten et al., 2019] Kruchten, P., Nord, R., and Ozkaya, I. (2019). Managing Technical Debt: Reducing Friction in Software Development. Addison-Wesley Professional.spa
dc.relation.references[LaunchDarkly, 2018] LaunchDarkly (2018). Feature Flags - Feature Flags, Toggles, Controls. http://featureflags.io/feature-flags/. Accessed 2018-11-03.spa
dc.relation.references[Leite et al., 2019] Leite, L., Rocha, C., Kon, F., Milojicic, D., and Meirelles, P. (2019). A survey of devops concepts and challenges. ACM Computing Surveys (CSUR), 52(6):1–35.spa
dc.relation.references[Lenarduzzi et al., 2020] Lenarduzzi, V., Besker, T., Taibi, D., Martini, A., and Fontana, F. A. (2020). A systematic literature review on technical debt prioritization: Strategies, processes, factors, and tools. Journal of Systems and Software, 171:110827.spa
dc.relation.references[Leon-Sigg et al., 2020] Leon-Sigg, M. D., Vazquez-Reyes, S., and Rodriguez-Avila, D. (2020). Towards the use of a framework to make technical debt visible. pages 86–92.spa
dc.relation.references[Li et al., 2015] Li, Z., Avgeriou, P., and Liang, P. (2015). A systematic mapping study on technical debt and its management. Journal of Systems and Software, 101:193–220.spa
dc.relation.references[Mahdavi-Hezaveh et al., 2019] Mahdavi-Hezaveh, R., Dremann, J., and Williams, L. (2019). Software development with feature toggles: Practices used by practitioners.spa
dc.relation.references[Marinescu, 2012] Marinescu, R. (2012). Assessing technical debt by identifying design flaws in software systems. IBM Journal of Research and Development, 56:9:1–9:13.spa
dc.relation.references[McConnell, 2007] McConnell, S. (2007). Technical debt. http://www.construx.com/10x_Software_Development/Technical_Debt/. Accessed 2017-01-04.spa
dc.relation.references[Meinicke et al., 2020a] Meinicke, J., Hoyos, J., Vasilescu, B., and K ̈astner, C. (2020a). Capture the feature flag: Detecting feature flags in open-source. In International Conference on Mining Software Repositories.spa
dc.relation.references[Meinicke et al., 2020b] Meinicke, J., Wong, C.-P., Vasilescu, B., and K ̈astner, C. (2020b). Exploring differences and commonalities between feature flags and configuration options. In Proc. Int’l Conf. Software Engineering–Software Engineering in Practice (ICSE-SEIP). ACM.spa
dc.relation.references[Molnar and Motogna, 2020] Molnar, A.-J. and Motogna, S. (2020). Long-term evaluation of technical debt in open-source software.spa
dc.relation.references[Mozilla, 2019] Mozilla (2019). Bedrock configurator. https://www-config.readthedocs.io/. Accessed 2019-02-21.spa
dc.relation.references[Neely and Stolt, 2013] Neely, S. and Stolt, S. (2013). Continuous delivery? Easy! Just change everything (well, maybe it is not that easy). Proceedings - AGILE 2013, pages 121–128.spa
dc.relation.references[Osherove, 2018] Osherove, R. (2018). Feature Toggles – Enterprise DevOps. http://enterprisedevops.org/feature-toggle-frameworks-list/. Accessed 2018-12-11.spa
dc.relation.references[Pecorelli et al., 2020] Pecorelli, F., Nucci, D. D., Roover, C. D., and Lucia, A. D. (2020). A large empirical assessment of the role of data balancing in machine-learning-based code smell detection. Journal of Systems and Software, 169.spa
dc.relation.references[Poppendieck and Poppendieck, 2006] Poppendieck, M. and Poppendieck, T. (2006). Implementing lean software development : from concept to cash. Addison-Wesley.spa
dc.relation.references[Potdar and Shihab, 2014] Potdar, A. and Shihab, E. (2014). An exploratory study on self-admitted technical debt.spa
dc.relation.references[Rahman et al., 2015] Rahman, A. A. U., Helms, E., Williams, L., and Parnin, C. (2015). Synthesizing Continuous Deployment Practices Used in Software Development. 2015 Agile Conference, pages 1–10.spa
dc.relation.references[Rahman et al., 2016] Rahman, M. T., Querel, L.-P., Rigby, P. C., and Adams, B. (2016). Feature toggles: Practitioner practices and a case study. In Proceedings of the 13th International Conference on Mining Software Repositories, MSR ’16, pages 201–211, New York, NY, USA. ACM.spa
dc.relation.references[Rahman et al., 2018] Rahman, M. T., Rigby, P. C., and Shihab, E. (2018). The modular and feature toggle architectures of google chrome. Empirical Software Engineering, pages 1–28.spa
dc.relation.references[Rajalakshmi et al., 2021] Rajalakshmi, V., Sendhilkumar, S., and Mahalakshmi, G. S. (2021). Classification of technical debts in software development using text analytics. pages 313–323. Springer International Publishing.spa
dc.relation.references[Ramanathan et al., 2020] Ramanathan, M. K., Clapp, L., Barik, R., and Sridharan, M. (2020). Piranha: reducing feature flag debt at uber. In Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering in Practice, pages 221–230.spa
dc.relation.references[Ramasubbu and Kemerer, 2019] Ramasubbu, N. and Kemerer, C. (2019). Integrating technical debt management and software quality management processes: A normative framework and field tests. IEEE Transactions on Software Engineering, 45:285–300.spa
dc.relation.references[Rodríguez et al., 2017] Rodríguez, P., Haghighatkhah, A., Lwakatare, L. E., Teppola, S., Suomalainen, T., Eskeli, J., Karvonen, T., Kuvaja, P., Verner, J. M., and Oivo, M. (2017). Continuous deployment of software intensive products and services: A systematic mapping study. Journal of Systems and Software, 123:263–291.spa
dc.relation.references[Rios et al., 2018] Rios, N., de Mendonça Neto, M. G., and Spínola, R. O. (2018). A tertiary study on technical debt: Types, management strategies, research trends, and base information for practitioners. Information and Software Technology, 102:117–145.spa
dc.relation.references[Alves et al., 2016] Alves, N. S., Mendes, T. S., de Mendonç̧a, M. G., Spínola, R. O., Shull, F., and Seaman, C. (2016). Identification and management of technical debt: A systematic mapping study. Information and Software Technology, 70:100–121.spa
dc.relation.references[Sayagh et al., 2018] Sayagh, M., Kerzazi, N., Adams, B., and Petrillo, F. (2018). Software configuration engineering in practice: Interviews, survey, and systematic literature review. IEEE Transactions on Software Engineering.spa
dc.relation.references[Schermann et al., 2016] Schermann, G., Cito, J., Leitner, P., Zdun, U., and Gall, H. (2016). An empirical study on principles and practices of continuous delivery and deployment. PeerJ Preprints, 4:e1889v1.spa
dc.relation.references[Securities and Commission, 2013] Securities and Commission, E. (2013). Administrative and cease-and-desist proceedings against Knight Capital Americas LLC. https://www.sec.gov/litigation/admin/2013/34-70694.pdf. Accessed 2019-01-19.spa
dc.relation.references[Sowa and Loh, 2010] Sowa, E. C. and Loh, R. Y. (2010). Feature bits: Enabling flow within and across teams.spa
dc.relation.references[Viswanathan, 2018] Viswanathan, S. (2018). Dynamic configuration at Twitter. https://blog.twitter.com/engineering/en_us/topics/infrastructure/2018/dynamic-configuration-at-twitter.html. Accessed 2019-03-25.spa
dc.relation.references[Yli-Huumo et al., 2015] Yli-Huumo, J., Maglyas, A., and Smolander, K. (2015). The benefits and consequences of workarounds in software development projects. volume 210.spa
dc.relation.references[Zazworka et al., 2014] Zazworka, N., Vetro’, A., Izurieta, C., Wong, S., Cai, Y., Seaman, C., and Shull, F. (2014). Comparing four approaches for technical debt identification. Software Quality Journal, 22:403–426.spa
dc.rights.accessrightsinfo:eu-repo/semantics/openAccessspa
dc.rights.licenseReconocimiento 4.0 Internacionalspa
dc.rights.urihttp://creativecommons.org/licenses/by/4.0/spa
dc.subject.ddc620 - Ingeniería y operaciones afines::629 - Otras ramas de la ingenieríaspa
dc.subject.ddc000 - Ciencias de la computación, información y obras generales::005 - Programación, programas, datos de computaciónspa
dc.subject.lembSoftware engineeringeng
dc.subject.lembIngeniería de softwarespa
dc.subject.proposalSoftware qualityeng
dc.subject.proposalContinuous deliveryeng
dc.subject.proposalFeature toggleseng
dc.subject.proposalTechnical debteng
dc.subject.proposalCalidad de softwarespa
dc.subject.proposalEntrega continuaspa
dc.subject.proposalDeuda técnicaspa
dc.titleA method to identify toggle debt in a project from its source code.eng
dc.title.translatedUn método para identificar toggle debt en un proyecto a partir de su código fuente.spa
dc.typeTrabajo de grado - Maestríaspa
dc.type.coarhttp://purl.org/coar/resource_type/c_bdccspa
dc.type.coarversionhttp://purl.org/coar/version/c_ab4af688f83e57aaspa
dc.type.contentTextspa
dc.type.driverinfo:eu-repo/semantics/masterThesisspa
dc.type.redcolhttp://purl.org/redcol/resource_type/TMspa
dc.type.versioninfo:eu-repo/semantics/acceptedVersionspa
dcterms.audience.professionaldevelopmentEstudiantesspa
dcterms.audience.professionaldevelopmentInvestigadoresspa
oaire.accessrightshttp://purl.org/coar/access_right/c_abf2spa

Archivos

Bloque original

Mostrando 1 - 1 de 1
Cargando...
Miniatura
Nombre:
71360425.2021.pdf
Tamaño:
994.39 KB
Formato:
Adobe Portable Document Format
Descripción:
Tesis de Maestría en Ingeniería - Ingeniería de Sistemas

Bloque de licencias

Mostrando 1 - 1 de 1
Cargando...
Miniatura
Nombre:
license.txt
Tamaño:
3.87 KB
Formato:
Item-specific license agreed upon to submission
Descripción: