Introducción
Con el pasar del tiempo los proyectos que buscan desarrollar software implementan diferentes procesos que les permiten tener un orden lógico en el proceso a seguir para la elaboración del producto de software, por lo que con el pasar del tiempo se requieren diferentes procesos para cada proyecto que surja, ya sea para software complejos o sencillos requieren un diferente ritmo de trabajo y organización de las actividades para el equipo de trabajo.
Desarrollo
Un proceso de desarrollo de software tiene como propósito la producción eficaz y eficiente de un producto de software que pueda reunir los requisitos del cliente. Algo que debemos tener claro es que los procesos de software son complejos además de que dependen totalmente de las decisiones y el juicio del equipo de trabajo que busca satisfacer las necesidades del cliente.
A pesar de la variedad de propuestas de proceso de software, existe un conjunto de actividades fundamentales que se encuentran presentes en todos ellos:
- Especificación de software. Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software.
- Diseño e implantación. Se diseña y construye el software de acuerdo a la especificación.
- Validación. El software debe validarse, para asegurar que cumpla con lo que quiere el cliente.
- Evolución. El software debe evolucionar, para adaptarse a las necesidades del cliente.
Modelo de proceso de software
Un modelo de proceso de software se define como una representación simplificada de un proceso de software, representada desde una perspectiva específica. Por su naturaleza los modelos son simplificados, por lo tanto un modelo de procesos del software es una abstracción de un proceso real.
Algunos de los modelos de proceso de software existentes son:
- Modelo en cascada
- Desarrollo evolutivo
- Basado en componentes
Modelo de cascada
Considera las actividades fundamentales del proceso de especificación, desarrollo, validación y evolución. Los representa como fases separadas del proceso, tales como especificación de requerimientos, el diseño de software, la implantación, las pruebas, etc.
Las principales etapas de este modelo se transforman en actividades de desarrollo:
- Análisis y definición de requerimientos. Os servicios, restricciones y metas del sistema se definen a partir de las consultas con los usuarios. Se definen en detalle y sirven como una especificación del sistema.
- Diseño del sistema de software. El proceso de diseño de sistema divide los requerimientos en sistemas en hardware y software. Establece la arquitectura completa del sistema. El diseño del software identifica y describe las abstracciones fundamentales del sistema de software y sus relaciones.
- Implantación y prueba de unidades. En esta etapa el diseño del software se lleva a cabo como un conjunto o unidades de programa. La prueba de unidades implica verificar que cada una cumpla su especificación.
- Integración y prueba del sistema. Los programas o las unidades individuales de programas se integran y prueban como sistema completo para asegurar que se cumplan los requerimientos del software. Después de las pruebas, el sistema del software se entrega al cliente
- Funcionamiento y mantenimiento. Por lo general, ésta es la fase más larga del ciclo de vida. El sistema se instala y se pone en funcionamiento. El mantenimiento implica corregir errores no cubiertos en las etapas anteriores del ciclo de vida, mejorar la implantación de las unidades del sistema y resaltar los servicios del sistema una vez que se descubren nuevos requerimientos.
![Resultado de imagen para modelo de cascada](data:image/png;base64,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)
Desarrollo evolutivo
La idea detrás de este modelo es el desarrollo de una implantación del sistema inicial, exponerla a los comentarios del usuario, refinarla en versiones hasta que se desarrolle el sistema final adecuado. Una ventaja de este modelo es que se obtiene una rápida realimentación del usuario, ya que las actividades de especificación, desarrollo y pruebas se ejecutan en cada iteración.
Existen dos tipos de desarrollo evolutivo:
- Desarrollo exploratorio, donde el objetivo del proceso es trabajar con el cliente para explorar sus requerimientos y entregar un sistema final. El desarrollo empieza con las partes del sistema que se comprenden mejor. El sistema evoluciona agregando nuevos atributos propuestos por el cliente.
- Prototipos desechables., donde su objetivo del proceso de desarrollo evolutivo es comprender los requerimientos del cliente y entonces desarrollar una definición mejorada de los requerimientos del sistema. El prototipo se centra en experimentar con los requerimientos del cliente que no se comprenden del todo.
Basado en componentes
En la mayoría de proyectos de software se reutiliza software. Esto sucede cuando las personas que trabajan en el proyecto conocen diseños o códigos similares al requerido. En los últimos años ha surgido un enfoque de desarrollo de software denominado ingeniería de software basado en componentes que se basa en la reutilización. Algunas veces estos componentes son sistemas por si mismos que pueden proporcionar funcionalidad específica. Las etapas son las siguientes:
- Especificación de requerimientos. Similar al modelo de cascada.
- Análisis de componentes. A partir de la especificación de buscan los componentes para implementar esta especificación. Por lo general no existe una concordancia exacta y los componentes que se utilizan sólo proporcionan parte de la funcionalidad.
- Modificación de requerimientos. Los requerimientos se analizan utilizando información acerca de los componentes que se han descubierto.. Entonces estos componentes se modifican para reflejar los componentes disponibles. Si las modificaciones no son posibles, la actividad de análisis de componentes se puede llevar a cabo nuevamente para buscar soluciones alternativas.
- Diseño del sistema con reutilización. En esta fase se diseña o se reutiliza un marco de trabajo para el sistema. Los diseñadores tienen en cuenta los componentes que se reutilizan y organizan el marco de trabajo para que los satisfaga. Si los componentes reutilizables no están disponibles, se puede tener que diseñar nuevo software.
- Desarrollo e integración. Para crear el sistema, el software que no se puede adquirir externamente se desarrolla, y los componentes y los sistemas adquiridos se integran.
- Validación del sistema. Similar al modelo de cascada
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXhyphenhyphenbBY8Q9xN5aAfJdxVIGiocG8ojMqtY0XP6uwvbyw0hXVb5Wi06_jOloABCVSCv5jYreytYC1icentH0VcIt5Gh9yughHa4ZGyBE7qXxBOGOEnQMAnMSp51Dry6dFDDRrjaHFXdRUVU/s1600/Modelo+del+proceso+de+software.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirDvLNMerMDHEYOGR2yX5IisXkp7wNDkU5U5X7buLh8w27oGBHzOsSzW1wtr9wqYQswJ0CEZbxhVQ3ercx-BlUORl18700WPPYNjASipA5RuH7OljvWijMSfDRx8edpXpoEU7KxKaVpc8/s1600/cuestionario+modelos+de+desarrollo.png)
Conclusion
Como hemos visto, los diferentes clientes que podemos encontrar tendrán diferentes necesidades que cubrir, por lo que el utilizar un único modelo de desarrollo de software para todos los proyectos resulta ser insuficiente para cubrir las necesidades del cliente, por lo que siempre debemos elegir el que se acople mejor a las necesidades tanto del cliente como del equipo de trabajo para la realización del software.
Bibliografía
- Pressman, R, Ingeniería del Software: Un enfoque práctico, McGraw Hill 1997.
- http://ele-mariamoliner.dyndns.org/~fperal/proy/ingenieriaSW.pdf
- http://yaqui.mxl.uabc.mx/~molguin/as/IngSoft%201-4.pdf