Complejidad y Propósito del Software
16 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Qué enfoque se utiliza al implementar la descomposición algorítmica?

  • Centrado en entidades específicas
  • Sin un enfoque definido
  • De arriba hacia abajo (correct)
  • De abajo hacia arriba

Una desventaja de la descomposición algorítmica es que:

  • Facilita la reutilización del código
  • La especificación de alto nivel cambia a menudo (correct)
  • Descarta la relación entre entidades
  • Permite una comprensión clara de la aplicación

En la descomposición orientada a objetos, el diseño se realiza:

  • De manera adaptativa
  • De arriba hacia abajo
  • Sin considerar la complejidad
  • De abajo hacia arriba (correct)

En la descomposición orientada a objetos, ¿cómo se consideran las entidades?

<p>Relativas y generalizables (A)</p> Signup and view all the answers

Los siguientes lenguajes están basados en la descomposición algorítmica, excepto:

<p>Python (D)</p> Signup and view all the answers

Una característica clave de la descomposición algorítmica incluye:

<p>Generar un diagrama de flujo (B)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones es cierta con respecto a la descomposición orientada a objetos?

<p>Propicia un diseño eficiente de sistemas (A)</p> Signup and view all the answers

La descomposición algorítmica tiende a:

<p>Requerir recodificación frecuente (A)</p> Signup and view all the answers

¿Qué característica de un objeto se refiere a sus propiedades y valores?

<p>Estado (D)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones es verdadera sobre la identidad de un objeto?

<p>La identidad hace que un objeto sea único. (B)</p> Signup and view all the answers

En la descomposición orientada a objetos, los objetos se comunican entre sí mediante:

<p>Mensajes (C)</p> Signup and view all the answers

¿Cuál de las siguientes es una razón por la que la complejidad del software puede aumentar?

<p>Los requerimientos no funcionales, como usabilidad y costo. (C)</p> Signup and view all the answers

¿Cuál es una característica del comportamiento impredecible del software?

<p>La aplicación puede tener múltiples hilos y variables. (A)</p> Signup and view all the answers

Una clase se puede definir como:

<p>Una plantilla utilizada para crear objetos. (D)</p> Signup and view all the answers

¿Cuál es uno de los desafíos que enfrentan los desarrolladores al alterar los requerimientos?

<p>Los cambios futuros deben anticiparse aunque sea difícil. (B)</p> Signup and view all the answers

El comportamiento de un objeto se asocia principalmente a:

<p>Sus interacciones con otros objetos (A)</p> 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.

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.
  • 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.
    • 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.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

UML Fundamentos PDF

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.

More Like This

Use Quizgecko on...
Browser
Browser