Podcast Beta
Questions and Answers
¿Qué enfoque se utiliza al implementar la descomposición algorítmica?
Una desventaja de la descomposición algorítmica es que:
En la descomposición orientada a objetos, el diseño se realiza:
En la descomposición orientada a objetos, ¿cómo se consideran las entidades?
Signup and view all the answers
Los siguientes lenguajes están basados en la descomposición algorítmica, excepto:
Signup and view all the answers
Una característica clave de la descomposición algorítmica incluye:
Signup and view all the answers
¿Cuál de las siguientes afirmaciones es cierta con respecto a la descomposición orientada a objetos?
Signup and view all the answers
La descomposición algorítmica tiende a:
Signup and view all the answers
¿Qué característica de un objeto se refiere a sus propiedades y valores?
Signup and view all the answers
¿Cuál de las siguientes afirmaciones es verdadera sobre la identidad de un objeto?
Signup and view all the answers
En la descomposición orientada a objetos, los objetos se comunican entre sí mediante:
Signup and view all the answers
¿Cuál de las siguientes es una razón por la que la complejidad del software puede aumentar?
Signup and view all the answers
¿Cuál es una característica del comportamiento impredecible del software?
Signup and view all the answers
Una clase se puede definir como:
Signup and view all the answers
¿Cuál es uno de los desafíos que enfrentan los desarrolladores al alterar los requerimientos?
Signup and view all the answers
El comportamiento de un objeto se asocia principalmente a:
Signup and view all the answers
Study Notes
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 presentan complejidad.
- Esto también se aplica al software:
- Sistemas de bases de datos.
- Sistemas financieros.
- Control 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., agregan más complejidad.
Razones para la complejidad de Software
- Comunicación entre usuarios y desarrolladores
- Los usuarios tienen una idea muy vaga de qué esperar del software.
- Dificultad de los usuarios para expresar sus requerimientos.
- Los desarrolladores esperan los requerimientos en un formato específico.
- Los desarrolladores y usuarios carecen de experiencia en el dominio.
- Los usuarios obtienen una mejor idea 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
- Cambios en los requerimientos.
- Puede ser difícil, pero no imposible, implementar un cambio.
- Los cambios futuros deben ser anticipados.
- Comportamiento impredecible del software
- El 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.
- La aplicación deberá:
Desventajas
- Desarrollo basado en especificaciones de alto nivel:
- Cambian a menudo en el tiempo.
- El código debe ser recodificado.
- Los algoritmos son específicos para la aplicación, por tanto, dificultan su reutilización.
- Dificultan agregar nuevas funcionalidades.
- Los datos se tratan 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
- Reconoce la relación entre diferentes entidades:
- Algunas entidades pueden ser generalizadas.
- Entender cómo 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 sí.
- Esta coordinación da lugar a la funcionalidad del sistema.
- Envían mensajes unos a otros.
Descomposición Orientada a Objetos
- Ventajas
- Separación de responsabilidades.
- El sistema se construye a base de objetos que representan entidades del mundo real.
- Muy cercano a los 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.
- Un objeto posee las siguientes características:
- La estructura y comportamiento de objetos similares se especifican 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.
- Se muestra como los atributos de un objeto.
- 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.
- Las propiedades y sus valores constituyen el estado de 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.
- Se representa a través de uno o más de un atributo del objeto.
- Rasgo que hace que un objeto sea único y le da individualidad.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Este cuestionario explora los propósitos y la complejidad del software, así como las razones detrás de su desarrollo y dificultades. Profundiza en cómo la complejidad se presenta en diferentes dominios, como finanzas y telecomunicaciones, y cómo afectar la interacción entre usuarios y desarrolladores.