Herramientas y buenas prácticas para el desarrollo, mantenimiento y evolución de Software en Java

Dumitru Boboia, Radu (2019). Herramientas y buenas prácticas para el desarrollo, mantenimiento y evolución de Software en Java. Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S.I. de Sistemas Informáticos (UPM), Madrid.

Description

Title: Herramientas y buenas prácticas para el desarrollo, mantenimiento y evolución de Software en Java
Author/s:
  • Dumitru Boboia, Radu
Contributor/s:
  • Arroyo Montoro, Fernando
Item Type: Final Project
Degree: Grado en Ingeniería del Software
Date: June 2019
Subjects:
Freetext Keywords: Desarrollo de software
Faculty: E.T.S.I. de Sistemas Informáticos (UPM)
Department: Sistemas Informáticos
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[img]
Preview
PDF - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (2MB) | Preview
[img] Archive (ZIP) - Users in campus UPM only
Download (640kB)

Abstract

Durante la carrera nos hemos enfrentado a numerosos retos, actividades y proyectos en los que hemos tenido que aplicar los conocimientos adquiridos. Aunque esto es algo positivo y que no debería cambiar, existe una característica que todas ellas tienen en común y que se debería replantear. Esto es, su focalización en los conocimientos específicos adquiridos durante un periodo relativamente breve de tiempo. Esto es algo útil de cara a poner en práctica las nuevas habilidades que se pretenden aprender, pero limita la integración de dichos conocimientos en nuestros hábitos de trabajo, es decir, su interiorización. Esta interiorización es importante de cara a la capacidad de aplicar estos conocimientos específicos y aislados en un proyecto donde se deben poner y trabajar todos en común ya que todos ellos son complementarios y necesarios para llevar un proyecto correctamente. Una vez superados 3 años y medio de la carrera de Ingeniería del Software durante los cuales hemos adquirido multitud de conocimientos tanto dentro de la universidad como por cuenta propia, he considerado conveniente y oportuno realizar un proyecto en el que intentaría aplicar todo lo aprendido con el objetivo de empezar a integrar los distintos conocimientos, habilidades y herramientas en un único proyecto. Este proyecto consiste en el presente documento junto a una aplicación de ejemplo o modelo que se desarrollará acorde a los objetivos y metodologías propuestos. Para ello, en primer lugar he definido una serie de buenas prácticas a seguir que afectarían positivamente tanto al proceso como al producto en cuanto estructuración y calidad se refiere. Estas buenas prácticas se podrían entender como unas “reglas no escritas” que conviene seguir, pero que no son de obligado cumplimiento. En segundo lugar conviene pensar en el lenguaje en el que se desarrollará la aplicación ya que de éste dependen en gran parte las herramientas que posteriormente utilizaremos para dar soporte a los objetivos propuestos. En este caso se ha optado por el lenguaje de programación orientada a objetos Java. Se ha elegido este lenguaje por mi experiencia y familiarización con él y las herramientas que lo soportan, adicionalmente a su popularidad. Una vez definido el lenguaje se ha recopilado todas las herramientas que ayudarán al desarrollo de la aplicación. Las herramientas que se han seleccionado dan soporte al desarrollo, a la aplicación de las buenas prácticas, al análisis del código (calidad, bugs, vulnerabilidades, etc.) y a la puesta en producción, entre otros. Aunque el desarrollo se haya llevado a cabo con una sola persona, estas herramientas están pensadas también para ayudar al trabajo en equipo. Un último paso antes de proceder a desarrollar la aplicación ha sido definir la metodología de desarrollo que se utilizará. En este caso se ha optado por el desarrollo ágil mediante Sprints o iteraciones. Mediante esta metodología se establecen plazos frecuentes de entrega del software desarrollado hasta el momento y se obtiene una retroalimentación constante al final de cada iteración para facilitar que el producto sea el adecuado. En cuanto a la aplicación, se ha desarrollado en un total de 2 Sprints (excluyendo un Sprint 0 inicial de configuración del entorno de trabajo). Una vez finalizada la aplicación, ésta ha sufrido una evolución por petición del cliente para incorporar nuevas funcionalidades. Adicionalmente, se ha aprovechado esta evolución para realizar el mantenimiento que se haya considerado conveniente. Finalmente se han recogido algunos resultados proporcionados por las herramientas de análisis para determinar que la aplicación se ha desarrollado correctamente y para determinar que su evolución y mantenibilidad futuros no se han visto comprometidos por malas prácticas. Cabe destacar que aunque estos informes se han incluido al final de la memoria, se han ido teniendo en cuenta a lo largo de todo el proceso de desarrollo. Abstract: During our degree we were faced with many activities, projects and challenges where we had to apply the acquired knowledge. While this is something which I find helpful and something that shouldn't change, there is one specific aspect that all of them have in common and I wish that it was rethinked. That is the focus on specific knowledge acquired on a short term. This is something useful for practicing recently acquired skills, but it limits the integration of said skills in our working habits. That is, it limits their internalization, which I find important for being able to use this specific and isolated knowledge in a project as a whole. In a real project all the knowledge and skills must be used as complementary parts. The integration of all these "little pieces" is what I find essential. With 3 and a half years of my 4 year Software Engineering grade done where I learned many skills and acquired lots of knowledge both from the university and on my own, I started thinking about a project where I would be able to make my best effort into showing all that I learned. The main goal of this project is to integrate all the knowledge, skills and tools that I worked with in a single project. This project is composed of this document in addition to an example application where I would follow all the best practices that I know in addition to my technical skills. On the first place I described a series of best practices that I'm familiar with which will enhance the organization and quality of both the development and the final product. These best practices can be understood as some "non-written rules" which we should follow, but they are not mandatory. The following step is thinking about the programming language which will be used for the application's development. This is an important aspect to consider early one since it defines the tools that can be used for the set goals. In this case I decided to use the Java object oriented programming language. My main reasons for choosing Java is my experience with it and all the tools that were developed for and with it, in addition to its popularity. Once a programming language was chosen I could think about the tools that I would use. The chosen tools support the development, the use of best practices, the code analysis (quality, bugs, vulnerabilities, etc.) and the delivery to the end customer, among others. Despite the fact that this specific development was made by only one person, these tools support and help team work. A final step before developing the application was the selection of the development methodology that will be used. In this case we have opted for agile development through Sprints or iterations. This methodology establishes frequent delivery times for the software developed so far and a constant feedback is obtained at the end of each iteration to facilitate product's suitability. As for the application it has been developed in a total of 2 Sprints (excluding the initial Sprint where the development environment was configured and set). Once the application was finished, the client asked for new features to be developed. This request was defined as an evolution and it was developed in a new Sprint. Additionally, taking advantage of the fact that the application will be modified, some maintenance was performed in order to improve both the code and the product. Finally, some results provided by the analysis tools have been collected and included in this document to check that the application has been correctly developed. This information is needed to determine that the application's evolvability and maintainability have not been compromised by bad practices. It should be noted that although these reports have been included at the end of the report, they have been taken into account throughout all the development process.

More information

Item ID: 55663
DC Identifier: http://oa.upm.es/55663/
OAI Identifier: oai:oa.upm.es:55663
Deposited by: Biblioteca Universitaria Campus Sur
Deposited on: 03 Jul 2019 15:00
Last Modified: 03 Jul 2019 15:00
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM