Document Details

IndulgentCitrine

Uploaded by IndulgentCitrine

MIUMG

Tags

UML software design object-oriented programming software development

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