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</p> Signup and view all the answers

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

    <p>Python</p> Signup and view all the answers

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

    <p>Generar un diagrama de flujo</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</p> Signup and view all the answers

    La descomposición algorítmica tiende a:

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

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

    <p>Estado</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.</p> Signup and view all the answers

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

    <p>Mensajes</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.</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.</p> Signup and view all the answers

    Una clase se puede definir como:

    <p>Una plantilla utilizada para crear objetos.</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.</p> Signup and view all the answers

    El comportamiento de un objeto se asocia principalmente a:

    <p>Sus interacciones con otros objetos</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