Sesión 4:
Diseño de software
INGENIERÍA DE
SOFTWARE
Contextualización
El diseño de un software es un procedimiento en el que se deben estipular varios elementos antes de comenzar con el desarrollo del mismo, es decir, se tienen que crear varios elementos importantes en los que se puede medir la efectividad o las necesidades a cumplir para el usuario final.
Introducción
El diseño de software actualmente es muy importante, pues 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. Tómese en cuenta que 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.
El diseño del software es la parte en la que se estipulan los elementos que contendrá la aplicación y la manera en que éstas funcionarán. El software puede desarrollarse en el lenguaje que se desee, los más comunes son;
C# Visual Basic.NET ActionScript 1, 2, 3 PHP ASP AJAX Etc.
Hoy en día el software que se desarrolla puede ser para el medio educativo, entretenimiento, etc.
Los contextos de desarrollo del software es el medio o el entorno que se le dará para la aplicación para un usuario en específico. El contexto puede ser educación, seguridad, edición, retoque digital, etc.
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 las plataforma para la cual se ha desarrollado.
¿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.
¿Por qué es importante la arquitectura?
Es importante porque presenta algunas ventajas en el desarrollo de aplicaciones y pueden ser aprovechadas para la creación de cualquier software;
Las representaciones permiten la comunicación entre todos los elementos.
La arquitectura resalta las primeras decisiones que tendrá un efecto profundo en todo el trabajo.
¿Qué es un patrón de diseño?
Son la base para buscar soluciones a problemas comunes en el de desarrollo de software, este resulta ser la solución a un problema de diseño, también se conocen como design patterns, también pueden crearse ámbitos referentes al diseño de interacción e interfaces.
Los patrones de diseño no tienen un lenguaje estándar en el cual se puedan aplicar únicamente, lo que da la libertad de utilizarlo en cualquier lenguaje de desarrollo de aplicaciones, ya sea; Java, ASP, .NET, PHP, HTML o cualquier otro.
Notaciones
Las notaciones son formas de representar las acciones y los medios con los que se cuentan, las más importantes con las que se trabajan son;
Abstracción
Generalización
Potencia expresiva
Eficiencia
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.
Conclusión
La programación actualmente 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.
Para tener resultados positivos en la producción de un software es importante
que se diseñe una arquitectura funcional y que cubra todas las necesidades
con las cuales se ha ideado el mismo, si la arquitectura es buena, puede
ejecutarse de manera óptima en la plataforma del sistema en la que se ha
ideado.
Para aprender más
Notaciones
Abstracción; se considera como una característica útil de los lenguajes para describir un sistema sin la necesidad de conocer a detalle la máquina en la que se ejecutará la aplicación. Sus notaciones pueden ser graficas o de forma abstracta.
Generalización; estas presentan mecanismos de abstracción necesarios para soportar las diferentes fases del ciclo de vida, éste 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 describen éstos 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.
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 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
Referencias
iKohm, Diseño de software. Consultado el 18 de jul. de 13, obtenido de:
http://www.ikohm.com/diseno_de_software.php
Cabero J., Diseño de software informático. Consultado el 18 de jul. de 13, obtenido de:
http://edutec.rediris.es/documentos/1992/2.htm
Dr. Lemus C., López P., Arquitectura de software, mucho más que un diagrama tradicional.
Consultado el 18 de jul. de 13, obtenido de: http://www.cimat.mx/~clemola/Ponencias/CECIC-UAAgs.pdf
Arends T. Di Nardo M., Sistema de programas. Modelo dinámico. Consultado el 18 de jul. de 13, obtenido de: http://ldc.usb.ve/~teruel/ci3711/dinam2/Sistemas.html