Podcast Beta
Questions and Answers
La complejidad del software siempre puede ser eliminada por completo.
False
Los requerimientos no funcionales como desempeño y costo pueden agregar más complejidad al software.
True
Los usuarios suelen expresar sus requerimientos de manera clara y precisa.
False
La metodología 'Divide et impera' sugiere que se debe descomponer un problema en partes más pequeñas para facilitar su resolución.
Signup and view all the answers
La naturaleza volátil de los requerimientos significa que los cambios son totalmente imposibles de implementar.
Signup and view all the answers
El comportamiento impredecible del software es causado por la interacción entre componentes discretos.
Signup and view all the answers
El tamaño del equipo de desarrollo y las ubicaciones geográficas no influyen en el proceso de comunicación y coordinación.
Signup and view all the answers
La complejidad del software no se ve afectada por la falta de recursos en el proceso de desarrollo.
Signup and view all the answers
La descomposición algorítmica utiliza un enfoque de abajo hacia arriba.
Signup and view all the answers
La descomposición orientada a objetos permite ignorar detalles no necesarios.
Signup and view all the answers
Los algoritmos en descomposición algorítmica son fácilmente reutilizables.
Signup and view all the answers
El desarrollo basado en especificaciones de alto nivel rara vez cambia con el tiempo.
Signup and view all the answers
La descomposición orientada a objetos utiliza un diseño de arriba hacia abajo.
Signup and view all the answers
Los objetos en la descomposición orientada a objetos no tienen comportamiento propio.
Signup and view all the answers
En la descomposición orientada a objetos, se puede generalizar algunas entidades.
Signup and view all the answers
La identidad de un objeto es el rasgo que le confiere individualidad y lo hace único.
Signup and view all the answers
Lenguajes como Fortran y Pascal se basan en la descomposición orientada a objetos.
Signup and view all the answers
En descomposición orientada a objetos, los datos son menos importantes que los comportamientos de los objetos.
Signup and view all the answers
El proceso de calificación de estudiantes incluye el cálculo de promedios y la visualización de máximos y mínimos.
Signup and view all the answers
Un objeto estático se refiere a atributos que nunca cambian.
Signup and view all the answers
La descomposición orientada a objetos no permite la generalización de objetos.
Signup and view all the answers
Un objeto puede ser considerado una instancia de una clase.
Signup and view all the answers
Los objetos en la descomposición orientada a objetos evolucionan de manera abrupta y en períodos cortos de tiempo.
Signup and view all the answers
Los atributos de un objeto se refieren a su comportamiento y no a su estado.
Signup and view all the answers
Study Notes
Fundamentos del UML
- El propósito del software es desarrollar tareas o cálculos complejos, reducir la intervención humana, reducir errores, facilitar la complejidad y desarrollar tareas repetitivas.
- La complejidad del software radica en que muchos objetos del mundo real son complejos, y ese patrón se refleja en el software como sistemas de bases de datos, sistemas financieros, controladores de tráfico aéreo y muchos otros.
- La complejidad del software nunca se elimina, pero se puede minimizar aplicando buenas prácticas.
Razones para la complejidad del software
- Complejidad del dominio: Algunos dominios son intrínsecamente complejos (finanzas, telecomunicaciones, etc.), y esta complejidad se traslada al software.
- Requerimientos no funcionales: La usabilidad, rendimiento, costo, etc., añaden complejidad al desarrollo de software.
- Comunicación entre usuarios y desarrolladores: Los usuarios pueden tener una idea vaga de lo que quieren, dificultando expresar sus requerimientos. Los desarrolladores esperan información específica, y puede haber falta de experiencia en el dominio por parte de ambos lados. Esto se soluciona con prototipos o diseños para que los usuarios tengan una mejor idea y puedan pedir modificaciones.
- Naturaleza volátil de los requerimientos: Los requisitos pueden cambiar, lo que genera la necesidad de adaptaciones en el software. Se deben anticipar cambios futuros.
- Comportamiento impredecible del software: Debido a sistemas con componentes discretos, múltiples hilos, variables y asignación de memoria, el software muestra comportamientos impredecibles con un alto número de eventos y estados.
- Interacción entre los componentes: La interacción entre diferentes componentes también añade complejidad.
- Proceso de desarrollo: La gestión del desarrollo con grandes equipos, ubicaciones geográficas diferentes, comunicación y coordinación entre desarrolladores, y falta de recursos, también añaden complejidad.
Minimizando la complejidad
- La herramienta principal para minimizar la complejidad es la descomposición: dividir el problema en partes más pequeñas hasta que cada una tenga un significado independiente. Luego se integran las partes para construir el sistema final. Este enfoque se resume como "Divide y vencerás".
Descomposición algorítmica
- Se descompone el problema en algoritmos, cada uno compuesto por una serie de pasos.
- Este es un enfoque de arriba hacia abajo (top-down) que empieza con una perspectiva general y se divide en partes más pequeñas.
- El resultado final se representa como un diagrama de flujo.
Ejemplo de Descomposición algorítmica
- Una aplicación para calificar estudiantes podría descomponerse en:
- Enrollar estudiantes.
- Aceptar resultados de exámenes.
- Calcular notas.
- Calcular promedios.
- Mostrar máximos y mínimos.
Desventajas de la Descomposición algorítmica
- Se basa en especificaciones de alto nivel que cambian con frecuencia, obligando a recodificar.
- Los algoritmos son específicos de la aplicación, dificultando la reutilización.
- Agregar funcionalidades nuevas es difícil.
- Los datos se tratan superficialmente sin una representación de la entidad en la que se realizan las operaciones, dificultando la comprensión general de la aplicación.
- No hay relación con las entidades del mundo real.
Lenguajes de programación basados en Descomposición algorítmica
- Fortran, Cobol, Pascal, C, etc.
Descomposición orientada a objetos
- Se enfoca en la abstracción de la complejidad, ignorando los detalles irrelevantes y enfocándose en los esenciales.
- Se buscan entidades simples en el dominio del problema que representen partes de la realidad.
- Tiene en cuenta la relación entre entidades, algunas de las cuales se pueden generalizar.
- Se enfoca en la interacción y coordinación entre entidades para dar lugar a la funcionalidad del sistema.
Descomposición orientada a objetos
- Es un enfoque de abajo hacia arriba (bottom-up) que descompone el sistema en un conjunto de objetos autónomos pero cooperativos.
- Los objetos representan abstracciones del dominio del problema, diseñados con gran detalle.
- Cada objeto tiene su propio comportamiento y modela objetos del mundo real.
- Los objetos se coordinan entre sí mediante mensajes para producir la funcionalidad del sistema.
Ventajas de la Descomposición orientada a objetos
- Separación de responsabilidades.
- El sistema se construye con objetos que representan entidades del mundo real.
- Es más cercano a los problemas del mundo real.
- Los datos se tratan con gran importancia.
- Permite la generalización de objetos y la reutilización de funcionalidades comunes.
- Crea sistemas más pequeños.
- Permite la evolución incremental del sistema.
Definición de Objeto
- Un objeto representa un individuo, un elemento identificable, una unidad o una entidad, real o abstracta, con un rol definido en el problema del dominio.
- Representa una 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.
Características de un objeto
- Estado
- Identidad
- Comportamiento
Estado de un objeto
- Las propiedades y sus valores constituyen el estado de un objeto.
- Se representa mediante los atributos del objeto (campos, variables, etc.).
- Puede ser estático (atributos principales que no cambian) o dinámico (atributos que cambian como resultado de una operación realizada en el objeto).
Identidad de un objeto
- Es el rasgo que hace único un objeto y le da individualidad.
- Se representa a través de uno o más atributos del objeto (campos, variables, etc.).
Comportamiento de un objeto
- Las acciones que un objeto puede realizar, especificadas en la clase.
- Se representa con los métodos (funciones, procedimientos, etc.).
Clase
- Una clase es una abstracción que define el comportamiento de un conjunto de objetos con las mismas características.
- Un objeto es una instancia de una clase.
- Es una plantilla para crear objetos.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Este cuestionario explora los principios básicos del UML y su importancia en la reducción de la complejidad del software. Discute cómo las características del dominio y los requerimientos no funcionales contribuyen a la complejidad en el desarrollo. Ideal para estudiantes de ciencias de la computación o interesados en diseño de software.