Modelos de ingeniería del software



¿Que es la ingeniería de software?

La ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estos enfoques, es decir, la aplicación de la ingeniería al software. 

Integra matemáticas, ciencias de la computación y prácticas cuyos orígenes se encuentran en la ingeniería.

Proceso unificado del desarrollo de software

Es de vital importancia seguir un proceso unificado del desarrollo de ingeniería del software al aplicarlo, esta abarca con el tiempo de vida adherible o esperado.

El proceso en la ingeniería del software es un conjunto de actividades, herramientas y resultados que harán posible la creación de un producto de software, puede ser utilizado para una gran cantidad de tipos de sistemas de software, para diferentes áreas de aplicación, diferentes tipos de organizaciones, diferentes niveles de competencia y diferentes tamaños de proyectos, la relación de todo esto cumple con un enfoque disciplinado y responsable que pretende crear software de muy alta calidad que satisfaga las necesidades de los usuarios finales, dentro de un calendario y presupuesto predecible.

De esta manera las actividades involucradas en el desarrollo de software, el mantenimiento que se le dé al mismo, abarcan la vida del sistema desde la definición de requisitos hasta la culminación de su uso. Todo esto bajo un marco de referencia llamado modelado de ciclo de vida de software.

Procesos del ciclo de vida

Procesos principales:

Procesos de la organización (generales)

Procesos de soporte:

Nuevos procesos:

El proceso unificado tiene dos dimensiones:

La primera dimensión representa el aspecto dinámico del proceso conforme se va desarrollando, se expresa en términos de fases, iteraciones e hitos (milestones).

La segunda dimensión representa el aspecto estático del proceso: cómo es descrito en términos de componentes del proceso, disciplinas, actividades, flujos de trabajo, artefactos y roles.

El refinamiento más conocido y documentado del proceso unificado es el RUP (proceso unificado racional).

El proceso unificado no es simplemente un proceso, sino un marco de trabajo extensible que puede ser adaptado a organizaciones o proyectos específicos. De la misma manera, el proceso unificado de racional, también es un marco de trabajo extensible, por lo que muchas veces resulta imposible decir si un refinamiento particular del proceso ha sido derivado del proceso unificado o del RUP. Por dicho motivo, los dos nombres suelen utilizarse para referirse a un mismo concepto.

Métodos y herramientas para el desarrollo del software

Las metodologías de desarrollo de software se basan en una combinación de los modelos de proceso genéricos (cascada, evolutivo, incremental, etc).

Un método de ingeniería del software es un enfoque estructurado para el desarrollo de software cuyo propósito es facilitar la producción de software de alta calidad de una forma costeable. Métodos como Análisis Estructurado (De Marco, 1978) y JSD (Jack- son, 1983) fueron los primeros desarrolladores en los años 70. Estos métodos intentaron identificar los componentes funcionales básicos de un sistema de tal forma que los métodos orientados a funciones aún se utilizan ampliamente.

Todos los métodos basados en la idea de modelos gráficos de desarrollo de un sistema y en el uso de estos modelos como un sistema de especificación o de diseño. Los métodos incluyen una variedad de componentes diferentes que son:

De todas las metodologías ágiles, ésta es la que ha recibido más atención. Esto se debe en parte a la notable habilidad de los líderes XP, en particular Kent Beck, para llamar la atención. También se debe a la habilidad de Kent Beck de atraer a las personas a este acercamiento, y tomar un papel principal en él. De algunas maneras, sin embargo, la popularidad de XP se ha vuelto un problema, pues ha acaparado la atención fuera de las otras metodologías y sus valiosas ideas. La XP empieza con cuatro valores: Comunicación, Retroalimentación, Simplicidad y Coraje.

Scrum es una metodología ágil y flexible para gestionar el desarrollo de software, cuyo principal objetivo es maximizar el retorno de la inversión para su empresa (ROI). Se basa en construir primero la funcionalidad de mayor valor para el cliente y en los principios de inspección continua, adaptación, auto-gestión e innovación.

El RUP es un armazón de proceso y como tal puede acomodar una gran variedad de procesos. De hecho ésta es mi crítica principal al RUP - como puede ser cualquier cosa acaba siendo nada. Yo prefiero un proceso que dice qué hacer en lugar de dar opciones infinitas. Como resultado de esta mentalidad de armazón de procesos, el RUP puede usarse en un estilo muy tradicional de cascada o de una manera ágil. Como resultado usted puede usar el RUP como un proceso ágil, o como un proceso pesado - todo depende de cómo lo adapte a su ambiente. 

La ingeniería de software es un mercado sustancial. Un gran número de proveedores venden herramientas y entornos para ayudar a los ingenieros a desarrollar aplicaciones de software. Estas con frecuencia recibe el nombre de herramienta de ingeniería de software asistida por computadora (CASE, Computer- arded Software Engineering). En ocasiones, quienes respaldan las herramientas CASE prometen mucho y entregan menos.

A continuación se muestra un cuadro enumerando los componentes posibles de una herramienta CASE.

Los grandes proyectos, sencillamente se pueden manejar sin al menos una de estas componentes CASE. Por ejemplo en un proyecto grande, las herramientas de administración de configuración son indispensables.

Las Herramienta CASE son herramientas computacionales (software) que están destinadas a asistir en los procesos de ciclo de vida de un software, facilitan la producción del software, varias se basan principalmente en la idea de un modelo gráfico

Modelos del proceso de software

El modelo de proceso de desarrollo de software es quizás la pieza más importante de este engranaje conocido como ingeniería de software. Existen varios modelos para el proceso de desarrollo software. Los modelos están conformados por etapas que son generales a todos los enfoques. Las diferencias están básicamente en los tiempos en los cuales se realizan dichas etapas, la simultaneidad, la prioridad que se le da a cada etapa, entre otros elementos. Otras características se pueden observar en detalle en la definición de cada uno de los modelos.

Monografias.com

La figura muestra el ciclo de vida que debe cumplir un software que da paso al tiempo de vida que este pueda adquirir con la implementación de los modelos del proceso de la ingeniería del software.

Fuente: Roger S. Pressman. Ingeniería del Software, Un enfoque práctico. Quinta edición. McGraw Hill

Modelo en cascada el más conocido, está basado en el ciclo convencional de una ingeniería, el paradigma del ciclo de vida abarca las siguientes actividades:

Monografias.com

Esta figura representa la serie de fases que se ejecutan secuencialmente.

Fuente: Roger S. Pressman. Ingeniería del Software, Un enfoque práctico. Quinta edición. McGraw Hill

Representación del modelo en cascada

Se desarrolla el software en etapas y que después del término de una etapa no es posible regresar a ella, este modelo tiene cuatro etapas que son:

- Planificación: se determinan los objetivos, metas, requerimientos y restricciones en el proyecto.- Análisis de riesgos: identificación de situaciones inconvenientes para evitarlas y solucionarlas.- Ingeniera: desarrollo del producto con respecto al diseño y otras consideraciones planteadas.

- Evaluación del cliente: valorización de los resultados del proyecto (producto obtenido).  El modelo en lineal secuencial es también conocido como el ciclo de vida del software, está conformado por las etapas de Análisis de requerimientos, Diseño, Codificación y pruebas. Cada etapa tiene dependencias de finalización y orden la una de la otra. En ese orden de ideas no se podrá iniciar la etapa de codificación sino no se ha pasado ya por la etapa de análisis y diseño previamente y respectivamente.

Debido a la forma en la que este proceso aborda la solución de proyectos software tiene algunas ventajas y falencias.

-Análisis de requerimientos: en esta etapa se procede a recopilar todos los requisitos que debe cumplir el software a desarrollar, el cliente aquí tiene un papel fundamental, ya que analiza junto con los desarrolladores del software los requisitos que debe cumplir el software a desarrollar.

- Diseño: esta etapa está enfocada hacia el desarrollo de un esbozo de la arquitectura, la interfaz y el manejo de datos del software.

- Generación  de código: es cuando se implementa el diseño del software en algún lenguaje de programación definido en el mismo diseño.

-  Pruebas: se hace una revisión de los procesos que realiza el software, para determinar que esté haciendo lo planteado para cumplir con los requerimientos.

- Mantenimiento: se verifica el correcto funcionamiento del software en su entorno de uso, y si existen errores o defectos, proceden a corregirlos

El paradigma de desarrollo por prototipos permite refinar sistemas complejos con base en un sistema mínimo definido al principio del proceso de la especificación del sistema y de los cuales el cliente no tiene la definición completa de requisitos.

El paradigma de construcción por prototipos

Monografias.com

Fuente: Roger S. Pressman. Ingeniería del Software, Un enfoque práctico. Quinta edición. McGraw Hill

El proceso comienza con la definición de requisitos por parte del cliente y así se llega a los objetivos globales del sistema. Con base en los requisitos conocidos se diseña un primer acercamiento a la solución el cual se implementa como una versión funcional del software. Dicho prototipo es evaluado por el cliente y así definir nuevos alcances y nuevos requisitos. Por medio de dichas iteraciones, de un prototipo a otro se logra el sistema completo.

Este enfoque tiene ventajas y desventajas entre otras están:

Monografias.com

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 N versiones hasta que se desarrolle el sistema adecuado. En la Figura 6 se observa cómo las actividades concurrentes: especificación, desarrollo y validación, se realizan durante el desarrollo de las versiones hasta llegar al producto final.

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:

El enfoque incremental de desarrollo se ve como una forma de reducir la repetición del trabajo en el proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en los requisitos hasta adquirir experiencia con el sistema. Es una combinación del Modelo de Cascada y Modelo Evolutivo.

El modelo espiral para la ingeniería de software ha sido desarrollado para cubrir las mejores características tanto del ciclo de vida clásico, como de la creación de prototipos, añadiendo al mismo tiempo un nuevo elemento: el análisis de riesgo.

Actividades principales:

Planificación: determinación de objetivos, alternativas y restricciones.

Análisis de riesgo: análisis de alternativas e identificación/resolución de riesgos.

Ingeniería: desarrollo del producto del "siguiente nivel",

Evaluación del cliente: Valorización de los resultados de la ingeniería.

¿Cuál es el modelo de proceso más adecuado?

Cada proyecto de software requiere de una forma de particular de abordar el problema. Las propuestas comerciales y académicas actuales promueven procesos iterativos, donde en cada iteración puede utilizarse uno u otro modelo de proceso, considerando un conjunto de criterios (Por ejemplo: grado de definición de requisitos, tamaño del proyecto, riesgos identificados, entre otros). En la Tabla 1 se expone un cuadro comparativo de acuerdo con algunos criterios básicos para la selección de un modelo de proceso, la medida utilizada indica el nivel de efectividad del modelo de proceso de acuerdo al criterio (Por ejemplo: El modelo Cascada responde con un nivel de efectividad Bajo cuando los Requisitos y arquitectura no están predefinidos):

Bibliografía

https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software

https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software#Metodolog.C3.ADa

http://www.istr.unican.es/asignaturas/is1/is1-t02-trans.pdf

http://ingenieriadesoftwarerigo.blogspot.com/2012/08/tecnicas-metodos-y-herramientas-para-el.html

https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software#Metodolog.C3.ADa

http://www.monografias.com/trabajos108/modelos-del-proceso-del-software/modelos-del-proceso-del-software.shtml.

Profesionales en formación de la Universidad Estatal del Sur de Manabí, Facultad de Ciencias Técnicas, carrera de Ingeniería en Computación y Redes.

 

 

 

Autor:

Briones Pacheco Luis Alfredo.

Loor Santana Cristhian Alexander.

Pincay Alvarado Karen Thalía.

Poveda Conforme Juana Lucia.