¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Gestión de proyectos informáticos
  3. El desarrollo del proyecto
Extrait - Gestión de proyectos informáticos Desarrollo, análisis y control (3ª edición)
Extractos del libro
Gestión de proyectos informáticos Desarrollo, análisis y control (3ª edición) Volver a la página de compra del libro

El desarrollo del proyecto

El control de la calidad del código

La calidad general de un software depende, en gran medida, del código que lo forma. La principal cualidad de un programa no es solo que funcione. El cumplimiento de las especificaciones sólo se podrá realizar introduciendo código legible.

1. Las normas de codificación

a. La indentación

La primera regla consiste en respetar el alineamiento de las instrucciones (también denominado indentación de código). Las instrucciones de un programa tienen una relación de dependencia y el desplazamiento, que se materializa mediante la tabulación o grupo de espacios, representa la existencia de esta dependencia. Dicho de otra manera, las instrucciones que están en la misma línea vertical se ejecutarán las unas después de las otras, sin condición. Un desplazamiento indica que la instrucción más a la izquierda decide (o controla) la ejecución de las instrucciones alineadas a la derecha.


int x;  
int y;  
  
x = 2;  
y = 2 * x;  
  
if (x % 2 == 0) // decide la ejecución de la instrucción siguiente
  y = 3 * x; // esta línea se ejecuta de manera condicionada
 

Actualmente, la mayor parte de los entornos de programación descodifican la sintaxis sobre la marcha y organizan la indentación del programa, en lugar de hacerlo el desarrollador. Esta funcionalidad puede ser útil tanto para el principiante en programación como para aquel que busque controlar la lógica de su módulo.

Sin embargo, un número alto de niveles de anidamiento a menudo revela un algoritmo cuya estructura se debería revisar para intentar simplificarla.

b. Los nombres en los programas

Cada lenguaje (C++, VB, Java, C#...) se publica junto con las reglas de formación de nombres que se dan a las variables, objetos, clases y paquetes... A nivel de los compiladores, las restricciones son casi siempre las mismas: no comenzar por un número o un carácter especial (como el punto o la flecha). Los lenguajes PERL y PHP se distinguen por el uso de un prefijo que anuncia el carácter de las variables ($ para funciones escalares, @ para las listas o % para las tablas).

A continuación se muestran algunos ejemplos de reglas empleadas en la escritura de programas. Estas...

La gestión de las versiones

Desde la generalización de los proyectos relacionados con Internet, los ciclos de desarrollo se han recortado considerablemente. Al menos, es frecuente realizar varias etapas para alcanzar el objetivo que nos hemos fijado: es la esencia de los métodos iterativos.

Cada etapa corresponde a una "versión" de un software (o release en inglés).

1. Producción de una versión

a. Los números de versión

Aparte de la moda de los fabricantes de software de etiquetar sus productos con el año de su probable comercialización (Office 2016, Symantec 2007...), muchos usuarios y desarrolladores hacen referencia al número de versión. Este número se compone normalmente de dos partes: la principal y la secundaria.

El primer número corresponde al índice principal de versión del software. El siguiente, al índice secundario. En principio, las evoluciones del índice secundario corresponden a los sucesivos mantenimientos de una versión principal y, así, no hay ruptura en el perímetro funcional de la aplicación. De esta manera las versiones 10.1 y 10.2 de un software comparten probablemente el mismo nivel de funcionalidades (noción de compatibilidad ascendente).

Algunas veces se completa esta identificación con otros índices:

  • El build number.

  • El build date.

Estos índices no están...

Las pruebas

Ya hemos mencionado la imagen que tienen las pruebas en la percepción de un proyecto; nadie afirma que no son suficientes, o que la zona que se les reserva es demasiado corta.

En realidad, normalmente es la metodología de prueba la que falla. Por consiguiente, vamos a descubrir las diferentes categorías de pruebas y su función en el método de prueba de un software.

1. Pruebas unitarias

Las pruebas unitarias tienen por objetivo validar el funcionamiento de los módulos (o componentes) de software de manera independiente los unos de los otros. Un módulo se asimila a una función que admite parámetros y proporciona de manera determinista un resultado.

Habitualmente, estas pruebas se automatizan, por lo que su desarrollo es sencillo: el autómata "instancia" el componente que se tiene que probar, le asigna los valores seleccionados con antelación y compara el resultado con un valor teórico, también determinado con antelación. Una regla (igualdad estricta, desigualdad estricta o amplia) decide el resultado de la prueba.

El entorno Eclipse ha popularizado el framework de pruebas unitarias JUnit, que se ha adaptado a otros entornos con el nombre NUnit. Por su parte, la versión Team tester de Visual Studio ofrece un mecanismo de pruebas unitarias, con un funcionamiento relativamente comparable a JUnit.

images/7-14.png

Ejecución de una prueba unitaria

2. Pruebas de integración

Las pruebas de integración validan el funcionamiento de un subsistema cuando sus componentes se unen los unos con los otros. En principio, siguen las pruebas unitarias y, como consecuencia, no buscan forzosamente controlar la validez cualitativa de los resultados.

El ensamblado (o integración) de componentes es, en primer lugar, una mezcla de tecnologías: C++, Java o .NET, SQL, XML... Las situaciones de bloqueo, de espera o contrarrendimiento son numerosas y el objetivo de las pruebas de integración es precisamente descubrirlas.

A continuación se muestra una tabla con los aspectos desarrollados por estas pruebas:

Aspecto

Ejemplo de pruebas

Conectividad

El servidor SQL se puede conectar al software.

El módulo de facturación puede estar integrado a la aplicación web.

Seguridad

El subsistema se ejecuta en las condiciones de seguridad del entorno de producción.

La aplicación inicia la impresión...

La industrialización

La industrialización normalmente se subestima en el plan de desarrollo. Sin embargo, juega un papel principal, ya que valida la configuración técnica de destino del software. Sin esta fase, el software resulta ineficaz cuando se instala fuera de los puestos de desarrollo.

1. La configuración

Un mismo software se puede desarrollar en diferentes versiones (o ediciones, para usar un vocabulario más orientado a marketing). Cada versión necesita una configuración particular, con despliegue de archivos, unos determinados ajustes o registro de componentes.

El software de gestión de configuraciones como MSBuild, Maven o ClearCase es justamente capaz de producir paquetes siguiendo las reglas definidas en las configuraciones.

Este tipo de software ha seguido a otros como ANT y otras utilidades de compilación, introduciendo potentes herramientas de definición y administración. Dan lo mejor de sí mismos cuando se integran a los entornos de desarrollo. De esta manera, existen plugins Maven para Eclipse, ClearCase para RAD y MSBuild para Visual Studio.

2. El setup o la instalación

En la actualidad, los usuarios no son los únicos en reclamar asistentes de instalación automatizados. Los administradores de sistema hacen peticiones similares para intervenir en entornos seguros y limitar las prestaciones de instalación que se va a propagar.

Como consecuencia...

El desarrollo del proyecto de control de actividad

Ángel se encuentra muy a gusto organizando el desarrollo del software de control de actividad. Organiza una reunión para todo el equipo de proyecto, en la que recuerda las modalidades de codificación, pruebas y despliegue. Aunque el calendario esté muy apretado, los desarrolladores tendrán que cumplir estrictamente estas recomendaciones.

1. Organización del desarrollo

a. La gestión del código fuente y los elementos de trabajo

El código fuente se comparte con el software TFS Online, siguiendo la metodología Agile-Scrum. Cada tarea trata el conjunto de peticiones (requerimientos) y anomalías (errores), que se deben realizar durante el periodo (hito o tarea).

Los desarrolladores recuperan la última versión de un módulo de código fuente antes de modificarlo. Al final del día, archivan, en la medida de lo posible, sus modificaciones y comprueban, antes y después, que los proyectos compilen sin errores.

Cada vez que se archiva, hay que asociar el identificador del elemento de trabajo y después actualizar el estado: activo, en curso, terminado, corregido… Los testers son los encargados de controlar estos estados y pueden cerrar los puntos o bien reabrirlos. Finalmente, los puntos realizados se incluyen en una subtarea actual, para que los testers puedan determinar el perímetro de una versión.

La ejecución de las pruebas unitarias es una condición inicial para la validación de un elemento de trabajo (terminado o corregido). Las modalidades particulares de pruebas ya están integradas en los elementos de trabajo por los desarrolladores. 

b. La documentación

El código se comenta siguiendo las normas establecidas para el lenguaje de programación. Ángel insiste en la calidad de los comentarios y su pertinencia respecto del código que describen.

Hay herramientas de extracción automáticas que se aplican de manera periódica para asegurarse de la presencia de comentarios en el código.

Ángel exige que las especificaciones técnicas se elaboren a partir de los documentos proporcionados por los analistas:

  • Modelos de bases de datos

  • Diagramas de clases

  • Gráficos

  • Navegación

  • Configuración

c. Las revisiones

Las revisiones de código tienen lugar todas...