Summary

This presentation introduces UML (Unified Modeling Language) fundamentals. It explores the purpose and complexity of software, highlighting factors that contribute to it. The presentation also discusses object-oriented design and its advantages for software development.

Full Transcript

UML Fundamentos Propósito de Software ◦Desarrollar tareas y/o cálculos complejos. ◦Reducir intervención humana. ◦Reducir errores. ◦Facilitar la complejidad. ◦Desarrollar tareas repetitivas. Complejidad de Software ◦Muchos objetos del mundo real muestran una gran complejidad. ◦Esto también...

UML Fundamentos Propósito de Software ◦Desarrollar tareas y/o cálculos complejos. ◦Reducir intervención humana. ◦Reducir errores. ◦Facilitar la complejidad. ◦Desarrollar tareas repetitivas. Complejidad de Software ◦Muchos objetos del mundo real muestran una gran complejidad. ◦Esto también aplica al software: ◦ Sistemas de bases de datos. ◦ Sistemas financieros. ◦ Controlador de tráfico aéreo. ◦La complejidad nunca puede ser eliminada, pero puede ser minimizada. Razones para la complejidad de Software ◦Problema de la complejidad del dominio. ◦Algunos dominios son muy complejos, por ejemplo: finanzas, telecomunicaciones etc. ◦Esta complejidad se transmite al software. ◦Los requerimientos no funcionales, como usabilidad, desempeño, costo, etc. Agrega más complejidad. Razones para la complejidad de Software ◦Comunicación entre usuarios y desarrolladores ◦ Usuarios tienen una idea muy vaga de que esperar del software. ◦ Dificultad de los usuarios para expresar sus requerimientos. ◦ Desarrolladores esperan los requerimientos en un formato especifico. ◦ Desarrolladores y usuarios carecen de experiencia en el dominio. ◦ Los usuarios obtienen una idea mejor después de ver un prototipo o un diseño. ◦ Pueden requerir un cambio que es difícil de implementar. Razones para la complejidad de Software ◦Naturaleza volátil de los requerimientos ◦ Cambio en los requerimientos. ◦ Puede ser difícil pero no imposible implementar un cambio. ◦ Cambios futuros deben ser anticipados. ◦Comportamiento impredecible del software ◦ Software se ejecuta en sistemas con componentes discretos. ◦ La aplicación puede tener múltiples hilos, variables, asignación de memoria. ◦ Un gran número de eventos y estados. ◦ Interacción entre componentes Razones para la complejidad de Software ◦Proceso de desarrollo ◦ Tamaño de los equipos de desarrollo. ◦ Ubicaciones geográficas. ◦ Comunicación y coordinación entre desarrolladores. ◦ Falta de recursos. Minimizando la Complejidad ◦Descomponer en partes más pequeñas hasta que cada una tenga un significado individualmente. ◦Integrar las partes para construir el sistema final ◦“Divide et impera” - Divide y vencerás. Descomposición Algorítmica ◦Descomponer el problema en algoritmos ◦Cada algoritmo es parte de una serie de pasos (parte de todo el proceso) ◦Este es un enfoque de arriba hacia abajo (top-down) ◦ Se inicia de una manera general ◦ Luego se divide en pequeñas partes ◦El resultado final soluciona el problema como un diagrama de flujo Ejemplo ◦Desarrollar un programa para la calificación de estudiantes ◦La aplicación deberá: ◦ Enrollar estudiantes ◦ Aceptar resultados de exámenes ◦ Calcular notas ◦ Calcular promedios ◦ Mostrar máximos y mínimos Ejemplo Ejemplo Desventajas ◦ Desarrollo basado en especificaciones de alto nivel: ◦ Cambian a menudo en el tiempo ◦ Código debe ser recodificado ◦ Los algoritmos con específicos para la aplicación por tanto dificultan su reutilización ◦ Dificultan agregar nuevas funcionalidades ◦ Los datos son tratados con baja significancia ◦ Se enfoca en operaciones ◦ No se tiene idea de en qué entidad se realizan las operaciones ◦ La comprensión en general de la aplicación se complica. ◦ No hay una relación entre las entidades del mundo real. Lenguajes de Programación ◦ Algunos lenguajes basados en descomposición algorítmica: ◦ Fortran ◦ Cobol ◦ Pascal ◦C ◦… Descomposición Orientada a Objetos ◦ La abstracción de la complejidad y enfocarse solo en los detalles necesarios. ◦ Detalles no requeridos son ignorados ◦ Solo enfocarse en los detalles esenciales ◦ Esto lleva a entidades simples en el dominio del problema Descomposición Orientada a Objetos Descomposición Orientada a Objetos ◦ Reconoce la relación entre diferentes entidades ◦ Algunas entidades pueden ser generalizadas. ◦ Entender como es la interacción y coordinación entre estas entidades ◦ Esta coordinación da lugar a la funcionalidad del sistema Descomposición Orientada a Objetos ◦ Utiliza un diseño de abajo hacia arriba (bottom-up) ◦ El sistema se descompone en un conjunto autónomo pero cooperativo de objetos ◦ Algunas entidades pueden ser generalizadas. ◦ Estos objetos son representaciones abstractas en el dominio del problema ◦ Diseñados con gran detalle ◦ Cada objeto tiene su propio comportamiento ◦ Modelan objetos del mundo real Descomposición Orientada a Objetos ◦ Los objetos coordinan entre si ◦ Esta coordinación da lugar a la funcionalidad del sistema ◦ Envían mensajes unos a otros Descomposición Orientada a Objetos Descomposición Orientada a Objetos Descomposición Orientada a Objetos ◦ Ventajas ◦ Separación de responsabilidades ◦ Sistema es construido a base de objetos que representan entidades del mundo real ◦ Muy cercano a problemas del mundo real ◦ Los datos tienen una importancia muy alta ◦ Parte del objeto que no es visible externamente ◦ Permite la generalización de objetos ◦ Promueve la reutilización de funcionalidades comunes ◦ Permite sistemas mas pequeños ◦ Evolucionan incrementalmente en un periodo de tiempo Definición de Objeto ◦ Un objeto representa a un individuo, un item identificable, unidad o entidad ya sea real o abstracta con un rol claramente definido en el problema del dominio. ◦ Modela alguna parte de la realidad ◦ Existe en espacio y tiempo ◦ Tiene un comportamiento identificado y un propósito definido ◦ Colabora con otros objetos para proveer un comportamiento de mayor nivel Definición de Objeto ◦ Características: ◦ Un objeto posee las siguientes características ◦ Estado ◦ Identidad ◦ Comportamiento ◦ La estructura y comportamiento de objetos similares son especificados en una clase ◦ Un objeto es una instancia de una clase ◦ Una clase es una plantilla para crear objetos Definición de Objeto ◦ Estado ◦ Las propiedades y sus valores constituyen el estado de un objeto ◦ Se muestra como los atributos de un objeto ◦ Campos, variables, etc ◦ Puede ser de dos tipos ◦ Estáticos: Atributos principales que no cambian ◦ Dinámicos: Atributos que cambian como resultado de una operación realizada en un objeto. Definición de Objeto ◦ Identidad ◦ Rasgo que hace que un objeto sea único y le da individualidad. ◦ Se representa a través de uno o más de un atributo del objeto. ◦ Campos, variables, etc. ◦ Ayuda a identificar objetos en el sistema (número de serie, DPI, IMEI, etc.) Definición de Objeto ◦ Comportamiento ◦ Respuesta de un objeto durante una interacción ◦ Parte de la responsabilidad de un objeto ◦ Sucede debido a las operaciones sobre los atributos ◦ Las operaciones cambian el estado de un objeto ◦ Estas operaciones son realizadas por los métodos (Java) y/o funciones (C++) ◦ Ejemplos: Cuenta bancaria, tarjeta de crédito, empleado etc.

Use Quizgecko on...
Browser
Browser