Proceso de desarrollo de software
Introduccion
El Software es omnipresente en la vida de millones de seres humanos alrededor del mundo. Hoy en día todos dependemos en gran medida en los sistemas de software, ya que muchos aspectos de nuestra vida se encuentran relacionados con las diversa implementaciones del mismo. El software nos ayuda a comunicarnos, socializar, y desempeñar actividades diarias en casa y en el trabajo. Sin embargo, existen muchas preocupaciones acerca de la calidad y la confiabilidad del software que producimos y consumimos.
El software existente está plagado con miles de defectos; algunos son conocidos y han sido detectados, mientras que otros aún no se han manifestado y están por ser descubiertos. Los defectos han causado muchos desastres, que van desde pérdidas financieras, daño físico a humanos, y hasta situaciones que han atentado contra la vida.
La principal razón del estado actual de la tecnología de software es la falta de profesionales entrenados adecuadamente, y la carencia de herramientas y técnicas que puedan escalar a niveles que permitan manejar las complejidades del software requerido.
La administración de proyectos de software engloba un conjunto de actividades que son desempeñadas durante las diferentes fases de un típico proyecto de desarrollo de software.
El Administrador de Proyectos de Software debe asegurar continuamente que el producto es desarrollado de acuerdo con los requerimientos de negocio del cliente, dentro del tiempo especificado, y el presupuesto establecido. Muchos proyectos de software fallan debido a una pobre administración. El administrador puede haber pasado por alto uno o más de los elementos cruciales de la administración del proyecto, los cuales incluyen:
- Ingeniería y administración de riesgos
- Administración de recursos humanos
- Estimación de esfuerzo y costos
- Monitoreo del proyecto
- Seguimiento y control
- Administración del tiempo
- Administración financiera
- Uso adecuado de herramientas de administración de proyectos
Es necesario desarrollar un plan de administración que se debe seguir durante la ejecución del proyecto. Este plan debe ser monitoreado y actualizado constantemente para asegurar la entrega oportuna de un producto de software de calidad.
Administración de proyectos
La administración de proyectos es la disciplina de gestionar proyectos exitosamente, la cual puede y debe aplicarse durante el ciclo de vida de cualquier proyecto (Dixon, 2000).
Para Pressman, la administración de proyectos involucra las llamadas 4 P’s:
- Personal: Es un elemento clave en el desarrollo de software, ya que es el talento humano quien va a generar el producto final. Toda organización requiere mejorar continuamente sus estrategias y habilidades para atraer, desarrollar, motivar, y retener el talento humano.
- Producto: Antes de planear un proyecto se deben establecer los objetivos del producto, así como otras consideraciones que permitan identificar los datos, funciones y comportamientos principales.
- Proceso: Proporciona el marco conceptual desde el cual puede establecerse un plan completo para desarrollar el software.
- Proyecto: Es el medio para planear y controlar la ejecución de las acciones necesarias para generar el producto.
La administración de proyectos de software se enfoca en el manejo adecuado de personas y procesos, para permitir la ejecución fluida de un plan de proyecto y la entrega de un producto de alta calidad.
Los cuatro elementos principales de la administración de proyectos son: 1) el mismo proyecto, 2) las personas trabajando en el proyecto, 3) los procesos utilizados para producir los entregables del proyecto, y 4) el producto final entregado al cliente. Los proyectos de software fallan cuando hay una deficiencia al lidiar con al menos uno de esos cuatro elementos.
Un plan de proyecto es un entregable importante que debe ser desarrollado con mucho cuidado. Una vez escrito, el plan de proyecto debe ser ejecutado por el Administrador del Proyecto. Los procesos y las fases que dan forma al plan del proyecto deben ser comprendidos y definidos porque determinan los entregables y los esfuerzos involucrados en su ejecución.
El progreso de las actividades planeadas debe ser monitoreado de cerca por el administrador para asegurar la ejecución en tiempo. Cualquier demora debe ser detectada, y cualquier riesgo identificado debe ser registrado. Es necesario utilizar herramientas de monitoreo adecuadas para asegurar la detección temprana de problemas. Las acciones correctivas deben ser ejecutadas por el administrador. Una revisión del plan de proyecto y el calendario puede ser necesaria como resultado de una acción correctiva.
Obviamente, las personas son el recurso más importante para la ejecución del proyecto, por lo tanto las personas involucradas en la ejecución del plan deben tener suficiente experiencia. Involucrar a las personas adecuadas para realizar las tareas prescritas de acuerdo con el plan del proyecto es importante. De igual forma, es esencial entrenar al equipo en el uso adecuado de las herramientas y técnicas. Una vez involucrados en el proyecto, los administradores deben asegurar que el personal es tratado adecuadamente y apoyado, para asegurar la retención y continuidad. Las líneas de comunicación y estructura organizacional debe ser bien definida y comunicada para facilitar un entorno sin fricciones. Por último, un monitoreo continuo y transparente del personal involucrado en el proyecto es crítico para la detección temprana de problemas.
Se debe adoptar un apropiado modelo de desarrollo de software para el proyecto, y comunicarse al equipo de desarrollo, asegurándose que todos tienen los conocimientos necesarios sobre el mismo.
Deben usarse herramientas probadas en la industria que respalden la ejecución adecuada de los procesos y personas capacitadas en el uso más efectivo de esas herramientas. Además, los estándares de la industria deben ser entendidos y seguidos de acuerdo con los requisitos del software. Las métricas deben recopilarse adecuadamente durante la ejecución de las fases del proyecto. Se pueden usar para mejorar los planes futuros del proyecto y para estimar el costo de los futuros esfuerzos de desarrollo.
Las interacciones adecuadas entre personas y procesos, utilizando un plan de proyecto factible, conducen a la producción de un producto de alta calidad entregado a tiempo y dentro del presupuesto. Los proyectos pueden fallar y las fechas de entrega pueden retrasarse debido al uso incorrecto de las herramientas y técnicas prescritas en el plan del proyecto y adaptadas como parte del modelo del ciclo de vida.
Definición del problema
Para Weitzenfeld, la definición del problema se trata de simular una descripción preparada por un cliente, la cual debe evolucionar por medio del modelo de requisitos para lograr la especificación final del sistema a desarrollarse. Esta descripción no necesariamente debe contener todos los detalles, necesidades y especificaciones, puede ser un boceto de lo que se necesita y muchas veces podría tener un tinte informal.
Análisis de Software
La primera fase de un modelo de ciclo de vida de desarrollo de software genérico es la fase de análisis de software. En esta fase, nos concentramos en la definición de lo que se supone que debe hacer el software en desarrollo.
El análisis de software implica definir el alcance del software que se desarrollará, capturar y documentar los requisitos de los usuarios, conocer las diversas limitaciones que se deben cumplir y comprender las interfaces con sistemas, entidades y usuarios externos. Las personas que deberían participar en la revisión de los requisitos del software incluyen representantes de los clientes y usuarios, los equipos de diseño y prueba, y el equipo de garantía de calidad del software, así como el analista de software. El plan de proyecto de software se actualiza si se necesitan cambios en los hitos y las actividades del proyecto.
El modelo de análisis no debe ser abstracto ni restrictivo en términos de forzar opciones específicas de diseño o implementación. Debe ser lo suficientemente detallado para comprender inequívocamente los requisitos, de modo que un diseñador no tenga que volver frecuentemente al analista de software, cliente o usuarios para obtener aclaraciones. Después de desarrollar un modelo de análisis inicial, el modelo debe ser validado y aprobado oficialmente por los representantes del cliente y del desarrollador. El modelo de análisis se concentra en la especificación de requisitos de software funcionales y no funcionales.
Como parte de las actividades de desarrollo de software, la primera etapa de la fase de análisis de software trata sobre el desarrollo de requisitos.
Los requisitos del software deben reflejar la visión del usuario de lo que el sistema de software debe hacer. Los requisitos deben ser tanto de diseño como de implementación independientes y fáciles de leer y comprender. Los requisitos deben ser desarrollados, administrados y documentados de una manera que facilite el mantenimiento futuro del software. Los requisitos deben ser obtenidos de todos los posibles interesados del software de una manera sistemática. Una vez escritos, los requisitos también deben analizarse y perfeccionarse antes del inicio de la fase de diseño.
El análisis completo y el refinamiento de los requisitos de software normalmente se incluyen en un documento de SRS (Software Requirements Specification).
La especificación de software es la segunda etapa que se realiza durante la fase de análisis de software del ciclo de vida de desarrollo de software. El objetivo principal de la etapa de especificación del software es utilizar técnicas de análisis apropiadas y relevantes para cerrar la brecha entre la especificación de requisitos de software (SRS) centrada en el usuario y el diseño de software centrado en el desarrollador. El producto de esta etapa es un documento de especificación de software separado o un documento SRS más refinado. La especificación de software se basa en los requisitos de software obtenidos de los usuarios o clientes y se describe en el documento de requisitos de software. Idealmente, el documento de especificación del software permite una mejor comprensión de los requisitos del software al modelar los aspectos de comportamiento, datos y procesamiento necesarios para cumplir con los requisitos.
El análisis de software se puede realizar utilizando técnicas de análisis de software clásico o técnicas de análisis orientado a objetos. Los resultados del análisis de software son utilizados por los diseñadores de software para producir un diseño de software apropiado. La validación y verificación de especificación es una actividad crítica que apunta a descubrir y eliminar errores de especificación tan pronto como sea posible en el proceso de desarrollo.
Diseño de software
El diseño del software abarca diversas actividades que se inician una vez que las especificaciones del software se completan y aprueban por los diversos interesados. Después de la etapa de definición de software, el diseño es la primera etapa en la implementación de un modelo de ciclo de vida de desarrollo de software genérico. Mientras que los resultados de la etapa de definición detallan lo que se supone que debe hacer el software, los resultados de las actividades de diseño conducen a una comprensión más profunda de cómo los programadores deben implementar el software. Las abstracciones de alto nivel de las fases de definición se perfeccionan aún más en la fase de diseño y se proporcionan detalles sobre la implementación del software. Las actividades de diseño conducen a cuatro resultados principales:
- Un diseño arquitectónico o de alto nivel que incluye los componentes básicos del software que se desarrollará y sus interrelaciones.
- Un diseño detallado que describe los pasos internos de los bloques de construcción identificados y las estructuras de datos necesarias.
- Un diseño de interfaz gráfica de usuario.
- Un diseño de base de datos.
Arquitectura de software
El diseño de alto nivel (High Level Design, HLD), también llamado diseño arquitectónico, transforma el modelo de especificación orientado al proceso, como el modelo de caso de uso (UCM) del enfoque orientado a objetos en una jerarquía de módulos. La jerarquía del módulo incluye todos los módulos de software necesarios para cumplir con las especificaciones. Además, la jerarquía muestra las interrelaciones entre estos módulos y describe sus respectivas interfaces. Normalmente, los módulos de bajo nivel en la jerarquía son módulos de utilidad que es más probable que se reutilicen desde o en otros diseños de software. Los módulos de alto nivel son típicamente módulos de control impulsados por la interfaz del usuario que son más específicos de la aplicación y, por lo tanto, son módulos de baja reutilización.
Se puede evaluar una jerarquía de diseño de alto nivel basada en las relaciones entre módulos a través de interfaces directas e indirectas y en algunas características estáticas de la jerarquía.
Proceso de la ingeniería de software
Para Sommerville, el proceso del software es un conjunto de actividades y resultados asociados que producen un producto de software. De acuerdo con este autor son cuatro las actividades principales y fundamentales del proceso de desarrollo de esta herramienta informática:
- Especificación de software, donde los clientes e ingenieros definen el producto informático a desarrollar y las restricciones sobre su operación.
- Desarrollo del software, donde se diseña y programa.
- Validación del software, donde se revisa el producto para asegurar que es lo que el cliente requiere.
- Evolución del software, donde se modifica para adaptarlo a los cambios requeridos por el cliente y el mercado.
Herramientas y métricas
El software de administración de proyectos es un término que cubre muchos tipos de software, incluso programación, asignación de recursos, software de colaboración, comunicación y sistemas de documentación, que están acostumbrados al trato con la complejidad de proyectos grandes (Project management software, 2005).
Como se ha mencionado anteriormente, es necesario hacer uso de las diversas herramientas de software, para apoyar la administración de los proyectos. Dichas herramientas son requeridas para automatizar y facilitar la aplicación de la metodología particular de la organización para la administración de proyectos.
La nueva generación de herramientas de Tecnologías de Información de administración de proyectos combinan las tres S’s: scope, scheduling y status. Es decir, herramientas para administrar el alcance, la programación de tareas y el estado en que se encuentran.
Una consideración importante sobre el uso de aplicaciones de Administración de Proyectos, es que por más potente que sea la herramienta, de nada servirá si el personal que la utiliza no la utiliza adecuadamente y más aún, los productos más sofisticados nunca podrán sustituir a un buen Administrador de Proyectos (Murtagh, 2004).
Conclusión
La ingeniería del software es un enfoque disciplinado para el desarrollo de productos de software de alta calidad, dado el tiempo y las limitaciones presupuestarias. Este enfoque disciplinado consiste en técnicas, métodos, estándares, directrices y prácticas que se pueden utilizar durante el proceso de desarrollo de software. El objetivo principal de la ingeniería de software es permitir que los profesionales del software se ocupen de la creciente complejidad de los productos de software necesarios. Existen varios interesados en productos de software, por lo tanto, la adecuada captura y mediación de las diversas inquietudes de las partes interesadas, a veces en conflicto, es un desafío interesante de tratar en ingeniería de software. Los sistemas de software pueden exhibir comportamientos y estructuras complejas, y, con frecuencia, requieren arquitecturas sólidas para abordar problemas tales como la escalabilidad y el rendimiento.
La gestión adecuada de los proyectos de software es clave para su finalización con éxito. Un proyecto de software se considera exitoso si cumple con todos los requisitos especificados del cliente y se entrega a tiempo y dentro del presupuesto. Se deben realizar varias actividades de gestión de proyectos durante la vida útil de un proyecto de software. Estas actividades aseguran que el producto en desarrollo cumplirá con los requisitos de calidad establecidos y se desarrollará a tiempo y dentro del presupuesto.
Referencias
- Saleh, Kaseem (2009). Software Engineering. J. Ross Publishing
- Caballero, O. (2006). Tecnologías de Información y herramientas para la administración de proyectos de software. En Revista Digital Universitaria
- Pressman, R. (2010). Ingenieria del Software. Un enfoque practico. Mexico: McGraw-Hill.
- Sommerville, I. (2006). Ingenieria de Software. Espania: Pearson Education.
Comentarios
Publicar un comentario