Los proyectos de desarrollo de software (SDPs, por sus siglas en inglés) no son homogéneos. Vienen en varios tamaños y tipos. Algunos ejemplos nos ayudarán a comprender la amplitud de los SDPs:
- Una organización desea trasladar un proceso empresarial del procesamiento manual de información al procesamiento informático. Este proyecto incluirá el estudio de los requisitos del usuario y la realización de todas las actividades necesarias para implementar el sistema basado en computadora.
- Una organización desea trasladar un proceso empresarial del procesamiento manual de información al procesamiento informático. La organización no quiere que el software se desarrolle «desde cero». Quiere utilizar un producto de software comercial listo para usar (COTS, por sus siglas en inglés). Este proyecto incluirá la implementación y quizás alguna personalización del producto COTS para adaptarlo a las necesidades de la organización.
- Una organización tiene un sistema basado en computadora que necesita ser trasladado a otro sistema informático porque el sistema existente se ha vuelto obsoleto y ya no hay soporte disponible para mantenerlo en funcionamiento. Este proyecto podría incluir la migración del código, la capacitación de los usuarios y la prueba de la nueva implementación.
- Una organización tiene un sistema basado en computadora y desea trasladarlo de un sistema de archivos planos a un sistema basado en RDBMS (sistema de gestión de bases de datos relacionales). Las actividades incluirán la conversión de datos además de otras tareas.
- Una organización tiene un sistema de procesamiento de información basado en computadora y necesita realizar modificaciones en el software o agregar funcionalidades adicionales. Las actividades incluyen añadir funcionalidades y realizar las modificaciones necesarias en el software de un tercero (si es necesario).
- Una organización ha desarrollado un sistema de procesamiento de información basado en computadora y quiere que sea probado exhaustivamente por una organización independiente. Las actividades incluirán las pruebas y la interacción entre las organizaciones.
Estos ejemplos apenas rozan la superficie de la amplitud de los proyectos de software, y nuevos tipos de proyectos siguen apareciendo. Sin embargo, en todos los casos, los proyectos están relacionados con software, pero las tareas, actividades y, por lo tanto, el trabajo en cada uno de los proyectos son enormemente diferentes.
Clasificación de los tipos de proyecto
Los proyectos de software pueden clasificarse de varias maneras. Por ejemplo, los proyectos de software pueden clasificarse como:
- Proyectos del ciclo de vida del desarrollo de software (SDLC, por sus siglas en inglés)
- Proyectos de ciclo de vida completo
- Proyectos de ciclo de vida parcial
- Proyectos de desarrollo de software impulsados por enfoques
- Desarrollo “desde cero” (creación completa del software desde “cero”)
- Personalización/implementación de productos COTS (software comercial listo para usar)
- Portabilidad (Porting)
- Migración
- Conversión de software existente para cumplir con cambio de condiciones, como cuando se presentaron las conversiones al año 2000 (Y2K) y al euro respectivamente.
- Proyectos de mantenimiento
- Reparación de defectos
- Expansión funcional
- Soporte operativo
- Corrección de comportamientos inusuales
- Modificación de software
- Proyectos de aplicaciones web
- Proyectos de desarrollo ágil
Basado en el ciclo de vida del desarrollo de software
Software de ciclo de vida completo. Un proyecto de ciclo de vida completo es un proyecto que abarca todo el arco de la metodología que se está utilizando: comienza al inicio y termina al final. Un problema al discutir un proyecto de ciclo de vida completo es que no hay estandarización con respecto a qué constituye un ciclo de vida del desarrollo de software (SDLC, por sus siglas en inglés). Generalmente, se acepta que el análisis de los requisitos del usuario, el análisis de los requisitos del software, el diseño del software, la construcción y las pruebas (independientemente de cómo se llamen) son partes de un SDLC. Algunos de los componentes de un SDLC que aún están en debate incluyen:
- Un estudio de viabilidad que determine si el proyecto vale la pena.
- Pruebas especiales que van más allá de las pruebas unitarias, pruebas de integración, pruebas del sistema y pruebas de aceptación.
- Implementación, incluida la instalación de hardware, software del sistema, software de aplicación, etc.
- Puesta en marcha del software, incluida la creación de archivos maestros de datos, capacitación de usuarios, ejecuciones piloto, ejecuciones paralelas, etc.
En muchos casos, cuando el producto final se utiliza dentro de la misma organización, estos cuatro componentes se consideran parte del ciclo de vida del desarrollo de software (SDLC). Por otro lado, en otras circunstancias, estos componentes se excluyen para organizaciones que se especializan en el desarrollo de software y/o desarrollan software para ser utilizado por otra organización (a menos que se incluyan contractualmente o formen parte de una arquitectura de software como servicio).
Software de ciclo de vida parcial. Los proyectos de ciclo de vida parcial son aquellos que incluyen solo una parte del SDLC. En los proyectos de ciclo de vida parcial, pueden ocurrir diversas combinaciones, incluidas:
- Proyectos de pruebas en los que el alcance del trabajo consiste en realizar las pruebas especificadas o necesarias sobre el producto de software para certificar el producto. (Normalmente, las pruebas unitarias y las revisiones de código no están incluidas en este tipo de proyecto.)
- Proyectos de verificación y validación independientes (IV&V) en los que los proyectos van más allá de las simples pruebas, incluyendo revisiones de código y otras formas de validación para determinar la eficiencia de la codificación.
- Un proyecto dividido entre dos o más proveedores según la especialidad, para aprovechar las ventajas de las mejores prácticas desarrolladas a través de la especialización, lo que puede llevar a definir el proyecto por fases o por combinaciones de fases, como:
- Análisis de requisitos
- Diseño
- Construcción del software
- Pruebas
Como se ha expuesto, los proyectos de desarrollo de software son diversos y pueden clasificarse según su enfoque, alcance y ciclo de vida. Cada tipo de proyecto implica tareas y actividades específicas, desde la creación de software desde cero hasta la personalización de productos comerciales, la migración de sistemas o el mantenimiento de software existente. Además, los proyectos pueden abarcar el ciclo de vida completo del desarrollo de software o solo una parte de él, dependiendo de los objetivos y necesidades de cada organización. Esta diversidad resalta la importancia de una planificación adecuada y de la selección de metodologías apropiadas para garantizar el éxito en la implementación y mantenimiento de los sistemas de software.