Introducción

Anuncio
Desarrollo de una herramienta para mejorar la calidad de código ABAP
Autor: Francisco Rafael Yépez Pino
Directores: José Francisco Chicano García, Enrique Alba Torres
Introducción
En todo proceso de desarrollo software existe un conjunto de tareas cuyo fin es asegurar
la calidad del producto. Algunos ejemplos son la fase de pruebas, el uso de reglas de
estilo de programación, la elaboración de plantillas para la documentación del software,
etc. El control de calidad es uno de los más grandes retos que se pueden encontrar en un
proyecto software, ya que un error en el software, aún siendo pequeño, puede suponer
una gran pérdida económica para la empresa desarrolladora si es detectado demasiado
tarde. Es por esto que se dedica tanto esfuerzo al control de calidad.
Algunas de las tareas cuyo objetivo es asegurar la calidad del software pueden
automatizarse, ahorrando una considerable cantidad de recursos a la empresa. Por
ejemplo, existen herramientas que permiten organizar y simplificar las pruebas unitarias
[5], o técnicas que pueden usarse para generar casos de prueba de forma automática [6].
Este dominio de investigación es muy extenso y evoluciona rápidamente para crear
nuevas herramientas que facilitan la labor de los ingenieros encargados de velar por la
calidad del software, ya que es bien conocido que la fase de pruebas es una de las más
costosas de los proyectos (Figura 1).
Figura 1 La fase de pruebas es la más costosa de los proyectos software. El uso de técnicas para
mejorar la calidad del producto durante su desarrollo, como la inspección de código, permite
reducir el coste del proyecto.
En el sector del software para gestión empresarial, SAP [1] es una empresa líder a nivel
mundial. A través de sus soluciones de software de gestión, SAP ofrece alternativas
para más de 25 sectores industriales. Estas soluciones ayudan a las empresas a mejorar
las relaciones con sus clientes, a colaborar con sus socios y a ser eficientes en su cadena
de suministro y operativa del negocio. Por este motivo, el desarrollo de herramientas de
ayuda para la programación en entornos SAP tiene asegurado un gran impacto en el
sector empresarial.
El desarrollo de aplicaciones dentro de las plataformas software de SAP se realiza
habitualmente usando el lenguaje de programación ABAP [4] (Advanced Business
Application Programming). Se trata de un lenguaje de 4ª generación con una gran
cantidad de palabras clave y sentencias de muy alto nivel. Este lenguaje fue desarrollado
por SAP como lenguaje de informes para SAP R/2 en los años 80. Inicialmente fue
pensado como un lenguaje de programación para que los usuarios finales pudieran
manipular la información, pero con el paso del tiempo sus distintas versiones fueron
volviendo demasiado complicadas para los usuarios normales. Actualmente son
necesarios programadores experimentados para realizar desarrollos.
Al tratarse de un lenguaje propiedad de SAP, las herramientas para edición,
compilación y depuración de código ABAP se encuentran integradas dentro de sus
plataformas (e.g. NetWeaver, R/3). Estas herramientas ofrecen un análisis muy limitado
del código ABAP. Desde un punto de vista de la calidad del código generado sería
interesante tener a disposición del programador herramientas de análisis estático del
código que realicen una comprobación más allá del propio análisis sintáctico. Así por
ejemplo, sería interesante analizar las sentencias de definición y uso de variables para
comprobar si todas las variables son usadas o analizar la existencia de código no
alcanzable.
Al final del párrafo anterior mencionamos dos ejemplos de comprobaciones sencillas
sobre el código fuente que permitiría detectar posibles errores en la codificación.
Herramientas para realizar tales comprobaciones ya existen para otros lenguajes de
programación como Java (FindBugs [2]) o C (lint [3]). El objetivo del presente proyecto
es desarrollar una herramienta para el análisis estático de código ABAP que compruebe
un conjunto de reglas de buen estilo de programación. Una herramienta de este tipo
permitiría ahorrar una gran cantidad de tiempo a los programadores de ABAP que
actualmente deben compensar la ausencia de dicha herramienta mediante horas de
análisis y depuración. Puesto que ABAP es un lenguaje masivamente utilizado en el
software para gestión empresarial, se estima que el impacto de la mencionada
herramienta puede ser enorme. El lenguaje de implementación será principalmente Java,
ya que es un lenguaje multi-plataforma y previene de posibles problemas de despliegue.
Objetivos
El objetivo del presente proyecto de fin de carrera es desarrollar una herramienta,
principalmente implementada en Java, que permita realizar análisis estático de código
ABAP. Dicha herramienta deberá comprobar el cumplimiento de un conjunto de reglas
de estilo de programación y deberá ser fácilmente extensible. Como entrada, la
herramienta recibirá el código ABAP y el conjunto de reglas a comprobar junto con
parámetros para las mismas. La salida del mismo deberá ser un informe detallando qué
reglas se cumplen. Además, para las reglas que no se cumplen se deberá informar del
motivo y de una posible solución.
Fases del proyecto
Este proyecto posee varias fases de documentación previas al desarrollo, ya que tanto
las plataformas de SAP como el lenguaje ABAP son muy extensos.
1. Documentación acerca de la plataforma SAP NetWeaver (utilizada para el
proyecto).
2. Aprendizaje del lenguaje ABAP.
3. Determinación de las reglas de estilo a implementar.
4. Diseño a alto nivel de la herramienta de análisis estático.
5. Desarrollo de la herramienta y conexión con SAP NetWeaver.
6. Implementación de las reglas dentro de la herramienta.
7. Prueba de la herramienta en un entorno real y análisis del ahorro de tiempo para
el programador.
8. Creación de sitio Web con los resultados del proyecto.
Medios materiales
 Equipo portátil o sobremesa
 Plataforma SAP NetWeaver
 Entorno de desarrollo Java
 Editor de textos y compilador de LaTeX para la memoria y documentos
intermedios.
 Libros y artículos aportados por los directores del proyecto. Revistas de la
hemeroteca y de acceso electrónico.
Referencias
[1]
http://www.sap.com
[2]
http://findbugs.sourceforge.net
[3]
Ian F. Darwin, Checking C Programs with Lint, 1988, O’Reilly
[4]
Raquel Hijón, Programación en ABAP/4 para SAP R/3, 2005, Univ.
Pontificia de Comillas
[5]
Vincent Massol, JUnit in Action, 2003, Manning Publications Company
[6]
Phil McMinn, Search-Based Software Test Data Generation: A Survey,
Software Testing, Verification and Reliability, 14(2), pp. 105-156, 2004
Descargar