INGENIERÍA DEL SOFTWARE
INGENIERÍA DEL SOFTWARE
1
Sesión No. 4 Nombre: Diseño de software Contextualización
¿Por qué es importante el diseño de software?
Al desarrollar software necesitamos crear el diseño especifico de cómo lo vamos
a realizar, este diseño parte de los requerimientos y engloba las funciones,
restricciones operaciones y limitaciones con las que va a contar el sistema, en la
parte técnica, operativa y metodológica.
El procedimiento para realizar el diseño de un software es muy preciso, además
de que es importante no omitir nada para que al final de la producción éste sea
totalmente funcional y cumpla con la calidad necesaria, se requiere de crear
estrictamente medios informativos para el usuario, estipulando en qué medios es
compatible y los recursos de hardware que utilizar para ser efectivo dentro del
ambiente de aplicación.
.
INGENIERÍA DEL SOFTWARE
2
Introducción al Tema
En el diseño de software no sólo se esquematiza la parte técnica o el
comportamiento del sistema, sino todo el proyecto en sí, como la gestión de
tiempo, recursos, restricciones, entre otros.
Con la evolución de los dispositivos móviles y los equipos de escritorio, las
aplicaciones que se desarrollan pueden ser más poderosas, presentar una
calidad gráfica superior y un manejo de varios procesos simultáneamente, por lo
que al momento de diseñar un software se deben considerar varios de los
elementos que pueden o no afectar alguna característica de ejecución o de
procesamiento de información. Cuando se habla de un software debe pensarse
en locaciones dentro del equipo en las cuales se instalarán las bibliotecas de
aplicación y de ejecución de cada herramienta, contando los aspectos que
interactúan directamente con el sistema operativo sin que interfieran con sus
funciones ni creen errores.
Por tal motivo es muy importante hacer pruebas para verificar y cualificar éstos.
INGENIERÍA DEL SOFTWARE
3
Explicación
Diseño de software
¿Qué es el diseño software?
Como vimos anteriormente el diseño de software es la fase donde se
esquematizan los requerimientos planteados, interpretándolos en esquemas
técnicos para su posterior desarrollo dependiendo del lenguaje en el que serán
creados, así como la gestión de tiempos, recursos humanos, recursos materiales,
restricciones de uso y demás cosas que se usaran en el proyecto.
Contexto y aspectos clave
El contexto del sistema representa el modelo del software que se está diseñando
y su entorno externo, ésta representa asociaciones donde se crean los
diagramas de bloques del sistema.
Para definir en qué entorno se utilizará la aplicación, se debe hacer un análisis
adecuado para determinar las funciones que tendrán las aplicaciones y las
herramientas adicionales que se ofrecerán.
Un contexto de desarrollo que no se estipula concretamente es un mal análisis,
por lo tanto el desarrollo puede retrasarse y tener problemas de ejecución y de
compatibilidad en la plataforma para la cual se ha desarrollado.
Los aspectos clave que determinan el desarrollo de la aplicación son funciones
especiales que se analizan por parte de los desarrolladores y que han sido las
necesidades de los usuarios. Estos aspectos pueden ser;
Sistema operativo en que se aplicarán
Características de arranque
Rango de memoria que requerirá
Capacidad de procesamiento
Plug-ins para ejecución de procesos
INGENIERÍA DEL SOFTWARE
4
Figura 1.Sommerville, I. (2005).Ingeniería de software [Subsistemas en el ejemplo de mapas
meteorológicos.] (p.294). Madrid: Pearson Educación
Arquitectura software
¿Qué es la arquitectura de software?
La arquitectura de software trata de una representación que permite analizar la
efectividad del diseño de la aplicación para cumplir con lo establecido. Ésta
considera alternativas arquitectónicas en una etapa en la que los cambios
pueden ser fáciles y así se pueden reducir los riesgos con la construcción del
software.
En la mayoría de los casos se cuenta con origen de datos corporativos los
cuales muestran la información con la que trabajan los usuarios, además, se
interactúa con otros servicios para brindar al usuario un sistema completo.
Cuando la arquitectura del sistema es inadecuada, tenemos el gran riesgo de
que el sistema sea difícil e incluso imposible de operar, ya que algunas veces, la
solución es más costosa que lo que se está llevando a cabo.
Sin embargo, cuando la arquitectura es adecuada, el software se lleva a cabo en
base a los requerimientos originales además de que maximiza algunas ventajas
como rendimiento, fiabilidad, practicidad, entre otros.
INGENIERÍA DEL SOFTWARE
5
Figura 2. Microsoft Developer Network. [Proceso de diseño arquitectónico iterativo]. Recuperado
de https://msdn.microsoft.com/es-es/hh144976.aspx
¿Por qué es importante la arquitectura?
El software debe proporcionara seguridad para el performance de la aplicación y
el manejo de los datos, esta protección debe abarcar ataques provocados y
errores accidentales, también debe ser sostenible para minimizar sus costos
administrativos y de soporte técnico, además de moldeable para futuros cambios.
INGENIERÍA DEL SOFTWARE
6
Figura 3. Microsoft Developer Network. Los requisitos conflictivos de un cliente típico].
Recuperado de https://msdn.microsoft.com/es-es/hh144976.aspx
Patrones de diseño
¿Qué es un patrón de diseño?
Conocidos también design patterns como Son una estructura que brinda una
solución que ha sido implementada y documentada en entornos similares al
planteado, para poder implementarlo debemos de conocer el nombre, la
situación en la que es aplicable, su posible solución y las consecuencias al
llevarlo a cabo. Se clasifican en:
Patrones creacionales.
Patrones estructurales.
Patrones de comportamiento.
INGENIERÍA DEL SOFTWARE
7
Figura 4. [Patrones de Gamma et al. (1994) organizados por niveles de uso.]. Recuperado
de http://ares.cnice.mec.es/informes/21/contenidos/11.htm
Notaciones Las notaciones son formas de representar las acciones y los medios con los que
se cuentan, las cuales tienes atributos específicos con los cuales se puede
trabajar de una mejor manera con un mejor detalle en las tareas y eficiencia. Las
más importantes son:
Abstracción: se considera como una característica útil de los lenguajes
para describir un sistema sin la necesidad de conocer a detalle la
maquina en la que se ejecutará la aplicación. Sus notaciones pueden ser
graficas o de forma abstracta.
Generalización: éstas presentan mecanismos de abstracción necesarios
para soportar las diferentes fases del ciclo de vida, este soporte se logra
con la reducción del ámbito de aplicación o de características del sistema
y se describen de una forma simple.
Potencia expresiva: éste utiliza un conjunto de conceptos característicos
del dominio en el que se trabaja. Si las notaciones con las que se
INGENIERÍA DEL SOFTWARE
8
describen estos sistemas cuentan con construcciones pueden expresar
conceptos en el lenguaje que se desee, cuando un lenguaje permite la
descripción de un dominio se puede decir que cuenta con potencia
expresiva suficiente en ese dominio.
Eficiencia: sabemos que una notación debe contar con construcciones
que permitan a los compiladores generar un código ejecutable para que el
programa pueda aprovechar los atributos que ofrece la computadora.
La eficiencia se aborda con la creación de un buen diseño de
compiladores y la forma en que se aprovechen los conocimientos de la
máquina.
Descripciones estructurales (estática)
Las descripciones estructurales se basan en modelos informáticos, de los cuales
el estático es uno de los tres que se utilizan. En esta sección se pueden utilizar
diagramas estáticos;
Diagrama de caso de uso
Diagrama de clases
Diagrama de objetos
Diagrama de componentes
Diagrama de despliegue
Estos diagramas funcionan cuando la estructura se basa en el UML, por lo que
es importante conocer los elementos que lo componen y determinar la prioridad
de cada uno dentro del proyecto que deseamos realizar.
Descripciones de comportamiento (dinámica)
El comportamiento dinámico a comparación del estático presenta movimiento y
una forma en que se expresen soluciones posibles a elementos que no se
consideran para este aspecto, como se mencionó anteriormente esto se conoce
INGENIERÍA DEL SOFTWARE
9
como modelos. Este caso se puede utilizar en varias situaciones, puede ser
aplicada para elementos con funciones en tiempo real o para crear estructuras
un poco más compiladas que los medios estáticos.
Algunos de los principios más importantes de este tema son;
Constituye una abstracción de la realidad
Omiten detalles no esenciales
Es sencillo de manipular que al medio original
Puede expresarse a diferentes niveles de precisión
Con estas consideraciones se tiene que el modelo dinámico no tenga como
ajenos requisitos expuestos. Se utiliza para especificar e implementar los
aspectos de control del sistema, éste opera sobre el modelo de objetos el cuales
el más importante porque se utiliza en la orientación de objetos permitiendo la
construcción del sistema en torno sí mismo y no a la funcionalidad.
INGENIERÍA DEL SOFTWARE
10
Conclusión
Diseño de software en la actualidad
Actualmente los usuarios esperan que sus aplicaciones tengan más funciones,
las aplicaciones deben de ser interactivas con otras aplicaciones y servicios,
como servicios de nube y servicios portátiles, por esta razón las aplicaciones de
escritorio han sido reemplazadas por software orientado a servicios, manejo de
datos web y redes compartidas.
La programación por ser parte importante del mundo de la comunicación y el
entretenimiento presenta herramientas con las cuales se apoya para mejorar el
software y hacerlo en un corto tiempo, por ejemplo, el uso de los patrones ayuda
a disminuir el tiempo en que se efectúa todo y puede adaptarse el código a
varias plataformas y lenguajes.
INGENIERÍA DEL SOFTWARE
11
Para aprender más
Arquitectura de software para aplicaciones web.
• Tahuiton, J. (2011).Arquitectura de software para aplicaciones Web.
(Tesis de maestría inédita) Departamento de Computación. Unidad
Zacatenco. Centro de Investigación y de Estudios Avanzados del Instituto
Politécnico Nacional, Sitio Web:
http://delta.cs.cinvestav.mx/~pmalvarez/tesis-tahuiton.pdf
Patrones de diseño, Refactorización y Antipatrones.
• Campo, G. (2009).Patrones de Diseño, Refactorización y Antipatrones.
Ventajas y Desventajas de su Utilización en el Software Orientado a
Objetos. Cuaderno de la facultad (n.4). Facultad de Ingeniería e
Informática. Universidad Católica de Salta, Sitio Web:
http://www.ucasal.edu.ar/htm/ingenieria/cuadernos/archivos/4-p101-
Campo.pdf
INGENIERÍA DEL SOFTWARE
12
Actividad de Aprendizaje
Instrucciones:
Con la finalidad de reforzar los conocimientos adquiridos a lo largo de esta
sesión, ahora tendrás que realizar una actividad en la cual a través de un
cuadro sinóptico expliques el Diseño de software.
Deberás guardarlo en formato JPG, para subirlo a la plataforma de la asignatura.
Es muy importante que tengas claros los conceptos de esta sesión, ya que más
adelante harás uso de ellos de manera práctica.
Para esta actividad se tomará en cuenta lo siguiente:
Título
Datos personales
Ortografía y redacción
Cuadro sinóptico
Bibliografía
INGENIERÍA DEL SOFTWARE
13
Bibliografía
• Pressman, R. (2002). Ingeniería de software .Un enfoque práctico. Madrid:
McGraw-Hill.
• Laudon, K. & Laudon, J. (2004). Sistemas de información gerencial:
administración de la empresa. México: Pearson Educación.
• Sommerville, I. & Alfonso, M. (2005). Ingeniería del software Madrid:
Pearson Educación.
• Cabero, J. Diseño de software informático. 1992, de Universidad de
Sevilla. Sitio web: http://edutec.rediris.es/documentos/1992/2.htm
• Lemus, C. Arquitectura de software, mucho más que un diagrama
tradicional. 2004, de Centro de Investigación en Matemáticas (CIMAT).
Sitio Web: http://www.cimat.mx/~clemola/Ponencias/CECIC-UAAgs.pdf
• Arends, T. y Di Nardo, M. Sistema de programas. Modelo dinámico (1999).
Sitio web: http://ldc.usb.ve/~teruel/ci3711/dinam2/Sistemas.html