Introducción

Para la solución de problemas que se generan en la industria del software es necesario que el ingeniero de software se apoye en diferentes herramientas, las cuales contribuyen en su proceso, la metodología y las capas del desarrollo; esto conocido como métodos de desarrollo o paradigmas de la Ingeniería de Software.

Dichas herramientas permiten visualizar, de manera simplificada, los diferentes escenarios implicados en cada uno de los procesos. Incluyen un conjunto amplio de tareas, como lo son la comunicación, el análisis de los requerimientos, modelación del diseño, construcción del programa, pruebas y apoyo. (Pressman, R., 2005, p.12)

Propósitos de aprendizaje

Propósito general

Presentarle al estudiante los diferentes tipos de modelos existentes para el proceso de desarrollo de software de modo tradicional, evolutivo y basado en componentes, permitiendo establecer las fortalezas, características y estrategias de trabajo con cada uno de ellos.

Propósitos específicos

  • Conocer los modelos de procesos existentes para la generación de proyectos de ingeniería de software.
  • Clasificar los modelos de procesos implementados en la ingeniería de software.
  • Diferenciar la aplicación de cada modelo de los procesos del software disponible, identificando sus fortalezas y características.
  • Demostrar soluciones lógicas de problemas reales a partir de la implementación de modelos de procesos de software.

Diseño de software

La Ingeniería de Software es una disciplina que abarca el desarrollo de proyectos informáticos. A su vez, involucra en el contexto muchas más áreas de aplicación, de las cuales es importante identificar las diferentes metodologías del desarrollo junto con las métricas utilizadas para el diseño de software, insumo de la fase de desarrollo de un sistema.


En el proceso de diseño, se deben realizar ciertas revisiones. A continuación se presentan las razones de esta evaluación y recomendaciones para la fase de diseño.

Material
de apoyo

Diseño de software

Procesos del diseño de software

Los procesos de diseño de software son una estructura que se aplica al momento de construir un sistema de información.

Dichas actividades van acompañadas de los diferentes modelos por los cuales desarrollamos el software. Los modelos son diferentes entre sí y se pueden implementar dependiendo de la necesidad al momento de realizar el desarrollo del software. En la anterior interactividad se explican los modelos de metodología tradicional.


Un buen diseño es sinónimo de calidad de software. A continuación se presentan las metodologías ágiles en este proceso.

Diseño de software

Principios del diseño de software

Los principios básicos de diseño de software se definen como la ruta de navegación de la ingeniería de software.

El diseño de software es el conjunto de conceptos y prácticas. Los conceptos apoyan a el ingeniero, diseñador o desarrollador de software para crear una estructura necesaria y para realizar la tarea correctamente.


En el siguiente video encontrarás una breve explicación de la concepción del diseño de software.

El software con orientación a objetos

Para entender aún más el término orientación a objetos, debemos aclarar qué es un objeto. De acuerdo a la programación, existe un modelo definido como POO Programación Orientada a Objetos. Esta técnica es utilizada para desarrollar software, que nos permite, desde un perspectiva abstracta, identificar, definir y construir objetos que adicionalmente involucra nuevos elementos, como los son:

  • Clases.
  • Objetos.
  • Método.
  • Evento.
  • Propiedades.
  • Atributos.
  • Herencia.
  • Polimorfismo.
  • Encapsulamiento.
  • Modularidad.

El software con orientación a objetos

RUP

Es definida como la metodología Rational Unified Process - Proceso Unificado Racional, el cual es un proceso propietario de la ingeniería de software creado por Rational Software. Esta metodología fue adquirida por IBM, ganando un nuevo nombre IRUP que ahora es una abreviatura Rational Unified Process y lo que es una marca en el área de software, proporcionando técnicas que deben seguir los miembros del equipo de desarrollo de software con el fin de aumentar su productividad en el proceso de desarrollo. (Metodoss, s.f.).

La metodología RUP utiliza el enfoque de la orientación a objetos en su diseño y se encuentra construido, diseñado y documentado para el uso de la notación UML (Unified Modeling Language) para ilustrar los procesos en acción. (Metodoss, s.f.).

El software con orientación a objetos

Arquitectura de software

La definición de arquitectura desoftware, según IEEE 1471-2002, es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución.

Según Roger S. Pressman (2005), “es la estructura de organización de los componentes de un programa (módulos), la forma en la que ellos interactúan y la estructura que utilizan”. (p.190)

Lenguaje de Modelamiento Unificado - UML

UML (Lenguaje de Modelado Unificado) es una especificación de notación orientada a objetos, el cual se compone de diferentes diagramas, los cuales representan las diferentes etapas del desarrollo del proyecto. (Canchala, A.,s.f.).

En lo práctico, UML es un estándar internacional que nos ayuda, por medio de diagramas, a representar el esquema del software en estructura como en comportamiento. Propiamente dicho, UML no es un lenguaje de programación pero aún así es utilizado con mucha frecuencia por ingenieros, analistas y programadores de software.

Lenguaje de Modelamiento Unificado - UML

Diagramas estructurales

En esta gran clasificación, se encuentran los siguientes diagramas:

  • Diagrama de clases: Muestra las relaciones entre las clases involucradas en el sistema.
  • Diagrama de componentes: Muestra los componentes que hacen parte de un sistema con un nivel de abstracción mas elevado que el diagrama de clases.
  • Diagrama de estructura compuesta: Muestra la relación interna de clases, interfaces o componentes para describir una funcionalidad.
  • Diagrama de despliegue: Presenta cómo y dónde se desplegará el sistema.
  • Diagrama de objetos: Describe los objetos instanciados de una clase.
  • Diagrama de paquetes: Permite agrupar elementos de UML.

Con el objetivo de profundizar más en cada uno de estos diagramas, estudia la siguiente interactividad.

Material
de apoyo

Lenguaje de Modelamiento Unificado - UML

Diagramas de comportamiento

En esta clasificación se encuentran los siguientes diagramas:

  • Diagrama de caso de uso: es conocido como la representación de los requisitos funcionales del sistema.
  • Diagramas de actividades: modela el comportamiento su relación global con el sistema.
  • Diagrama de comunicación: presenta las interacciones entre los elementos en el momento de ejecución.
  • Diagrama de panorama de interacciones: presentan el flujo de control de manera global de los elementos que lo componen.
  • Diagrama de secuencia: muestra el comportamiento con pasos secuenciales.
  • Diagrama de máquina de estados: muestra cómo un elemento de una clase, se puede mover entre estados.
  • Diagrama de tiempos: presenta el comportamiento de los elementos en un lapso de tiempo.

Profundiza en cada uno de los diagramas, estudiando la siguiente interactividad y leyendo el material de apoyo.

Material
de apoyo

Lenguaje de Modelamiento Unificado - UML

Modelo de datos

Los datos son los elementos responsables de conducir a una mejor estructura de programa, a una modularidad efectiva y a una complejidad procedimental reducida y principalmente orientada a bases de datos. Por lo cual hay que tener en cuenta: las estructuras de datos, las restricciones de integridad de los datos y las operaciones que manipulan los datos. A continuación, se presentan los principios para el diseño de datos.

A su vez el modelo de datos permite describir los elementos reales que intervienen en el problema y la forma en la que se relaciona entre sí. Estos modelos se pueden clasificar, dependiendo el nivel de abstracción, en:

  • Modelos de datos conceptuales.
  • Modelos de datos lógicos.
  • Modelos de datos físicos.

Lenguaje de Modelamiento Unificado - UML

Diseño con patrones

Según Pressman (2005), el objetivo de cada patrón de diseño es proporcionar una descripción que permita al diseñador determinar:

  • Si el patrón es aplicable al trabajo en cuestión.
  • Si puede volverse a usar para ahorrar tiempo en el diseño.
  • Si nos sirve como guía para desarrollar un patrón distinto

Estos patrones se pueden clasificar en: creacionales, estructurales y de comportamiento.


Los patrones de diseño establecen un lenguaje común entre todos los miembros de un equipo.

Lenguaje de Modelamiento Unificado - UML

Diseño para webapps

Para hablar de webapps tenemos que tener en cuenta sus dos enfoques: el enfoque artístico y el enfoque desarrollador. El primero busca una experiencia visual más placentera y el segundo, una solución a un problema de un cliente.

Según jacyntho et al (s.f), las aplicaciones deben construirse con el empleo de capas que tomen en cuenta distintas preocupaciones; en particular, deben separarse los datos de la aplicación de los contenidos de esta (modo navegación), y estos a su vez, deben separarse con toda claridad del aspecto y la sensación de la interfaz. (Pressman, R., 2005, p.328).

Se propone entonces desacoplar al mínimo, en tres capas, una de aplicación, dos de interfaz y la tercera de navegación, lo cual permitiría una mejora continua en el software. Uno de los patrones sugeridos para la infraestructura de webapps es de controlador de la vista de modelos.


Actividad de aprendizaje

Actividad de Aprendizaje

De acuerdo con todo lo estudiado hasta este punto, juega y fortalece tus conocimientos respondiendo falso o verdadero.

Resumen

A partir de una idea generalizada de la unidad, tenemos en cuenta que la implementación de métodos de desarrollo de software, apoyan al diseñador, programador e ingeniero de software, en la medida que es posible diseñar he implementar sistemas complejos con una abstracción adecuada, con el fin de que aquellos que trabajan sobre los sistemas entiendan de manera sencilla los procesos, elementos e iteraciones necesarias para el desarrollo de software; además de las herramientas, técnicas y habilidades que se puedan usar para crear sistemas complejos, que a su vez pueden ser visualizados.


Caso de estudio

Actividad de Aprendizaje

Continuando con el caso de estudio de la unidad 1, modela y diseña el sistema de gestión de inventarios de la empresa. Recuerda siempre presentar los resultados a tu docente de clase.

Bibliografía ()

  • Amo, F. A., Martínez Normand, L. y Segovia Pérez, F. J. (2005). Introducción a la Ingeniería del Software. Modelos de desarrollo de programas. España: Delta Publicaciones.
  • Braude, E. (2003). Ingeniería del Software: una perspectiva orientada a objetos. RA-MA Editorial.
  • Jacobson, I. (1992) Object Oriented Software Engineering. A Use Case Driven Approach. Estados Unidos: Addison Wesley.
  • James, S. (2001). Análisis y diseño de sistemas de información. (2da ed.) México: Mc Graw Hill.
  • Kendall, K. y Kendall, J. (2005). Análisis y Diseño de Sistemas. (6ta ed.) México: Pearson Educación.
  • Pressman, R. S. (2002). Ingeniería del Software: un enfoque práctico. (5ta ed.) McGraw Hill.
  • Pressman, R. S. (2005). Ingeniería del Software. (6ta ed.) México: McGraw Hill.
  • Pressman, R. S. (2010). Ingeniería del Software. (7ma ed.) México: McGraw Hill.
  • Shaw, M. y Garlan, D. (1996) Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall
  • Sommerville, I. (2005). Ingeniería del Software.(7ma ed.) Madrid, España: Pearson Educación S.A.
  • Weitzenfeld, A. (2004). Ingeniería del Software orientada a objetos con UML, Java e Internet. México: Thomson Learning.

Referencias Web