INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la...

14
INGENIERÍA DEL SOFTWARE

Transcript of INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la...

Page 1: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

INGENIERÍA DEL SOFTWARE

Page 2: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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.

.

Page 3: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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.

Page 4: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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

Page 5: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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.

Page 6: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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.

Page 7: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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.

Page 8: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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

Page 9: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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

Page 10: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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.

Page 11: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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.

Page 12: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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

Page 13: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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

Page 14: INGENIERÍA DEL SOFTWARE - UNIDEn el diseño de software no sótécnicalo se o el esquematiza la parte comportamiento del sistema, sino todo el en sí, como la gestión de proyecto

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