El Modelo de Implementación de Usuario

¿Qué es el Modelo de Implementación de Usuario? Surge de ampliar el Modelo Esencial con los requisitos no funcionales. Se recomienda que sea desarrollado en conjunto con el usuario, el analista, el diseñador y los programadores. Se crea entre la fase de análisis y la de diseño.

Componentes del Modelo de Implementación de Usuario

  • Determinación de la Frontera de Automatización: Límite entre tareas automáticas y manuales, establecido por el usuario con ayuda del analista, diseñador y programador.
  • Determinación de la Interfaz Humano-Máquina (IHM): Forma en la que el humano interactuará con el sistema. Incluye dispositivos de E/S, formato de entrada y salida, y secuencia de E/S.
  • Restricciones Operacionales:
    • Seguridad: Minimizar el uso no autorizado del sistema mediante perfiles.
    • Rendimiento: Parámetros que afectan a la arquitectura del sistema.
    • Ambientales: Entorno/contexto disponible.
    • Políticas: Decisiones del usuario fundadas en motivos no técnicos.
  • Actividades Manuales Requeridas: Pautado y documentación.

Definición y Objetivos del Diseño de Software

El diseño es un proceso iterativo que toma un modelo lógico (como el Modelo Esencial o la Especificación Estructurada) de un sistema, junto con un conjunto de objetivos claramente establecidos, y produce las especificaciones (Modelo Físico o de Diseño) de un sistema físico que pueda satisfacer dichos objetivos.

Objetivos Clave del Diseño

  • Rendimiento: Cuán rápido permitirá el diseño realizar el trabajo del usuario dado un recurso de hardware.
  • Control: La medida en que el diseño está protegido contra errores humanos, máquinas defectuosas o errores intencionales.
  • Cambiabilidad: La facilidad con la cual el diseño permite modificar el sistema.

Actividades del Ciclo de Vida del Proyecto

Complete el siguiente cuadro con los nombres de las actividades del ciclo de vida de un proyecto:

  • Modelo de Implementación de Programas: Diseño
  • Modelo Esencial: Análisis
  • Técnicas de Entrevista: Encuesta
  • Prueba: Generación de Prueba de Aceptación

Selección de Opciones Correctas

Elija la opción correcta para completar cada frase:

  • La frontera de automatización… se determina en el Modelo de Implementación de Usuario.
  • El diseño tiene entre sus objetivos… el rendimiento y el control.
  • La cohesión es… el grado de relación entre diferentes módulos.

Las Cinco Cuestiones Clave en la Programación según Yourdon

Según Yourdon, las cinco cuestiones importantes en la programación son:

  • Productividad: Se refiere a la velocidad de desarrollo. Implica escribir más software más rápidamente; actualmente se considera más importante que la eficiencia. Es crucial dejar tiempo para la fase final, que es cuando suelen surgir las dificultades.
  • Eficiencia: Consiste en cumplir los requerimientos o condiciones no funcionales con un rendimiento óptimo (bien y rápido, minimizando la utilización de recursos). Es diferente de la eficacia, que solo implica cumplir los requerimientos correctamente.
  • Corrección: El cumplimiento de los requerimientos funcionales. Es la cuestión más importante, ya que la eficiencia no tiene valor si el programa no funciona como debería.
  • Portabilidad: La adaptabilidad del software a diferentes escenarios físicos (distintos tipos de computadoras o dispositivos).
  • Mantenibilidad: La facilidad de adaptación o escalado por parte de terceros. Los sistemas de software suelen tener una larga vida útil, por lo que la capacidad de mantener el software es fundamental. Tiene una relación directa con el objetivo general de cambiabilidad.

Concepto de Herencia en Programación Orientada a Objetos

Definición de Herencia

La Herencia es el mecanismo por el cual elementos más específicos (clases hijas) incorporan la estructura y comportamientos de elementos más generales (clases padres). Implica una relación de generalización/especialización.

Relación Implicada por la Herencia

El mecanismo de herencia implica una relación de generalización, donde una clase más específica (subclase) es una forma particular de una clase más general (superclase).

Representación de la Herencia en UML

En UML, la herencia se representa con una flecha con una punta de triángulo hueca que apunta desde la clase hija (más específica) hacia la clase padre (más general).

Imagen

Conceptos Clave en Programación Orientada a Objetos y UML

¿Qué es una Clase Abstracta?

Una clase abstracta no puede ser instanciada directamente, pero sí puede ser heredada. Las clases hijas son las encargadas de agregar la funcionalidad a los métodos abstractos. Si una clase hija no implementa todos los métodos abstractos de su clase padre, entonces la clase hija también debe ser declarada como abstracta.

Abstracción

La abstracción es el acto o resultado de eliminar diferencias entre elementos para ver con claridad sus aspectos comunes y enfocarse en lo esencial.

Definición de Interfaz y su Representación en UML

Una interfaz es una colección de operaciones que se utiliza para especificar el servicio que una clase debe proporcionar. En UML, una interfaz se representa como una clase con el estereotipo <<interface>> o mediante un círculo pequeño (notación de piruleta) conectado a la clase que la implementa.

Acoplamiento

El acoplamiento es el grado en el cual los módulos de un sistema se interrelacionan o dependen entre sí.

Cohesión

La cohesión es el grado en el cual los componentes internos de un módulo son suficientes y están relacionados para llevar a cabo una función bien definida.

Alcance de Efecto y Control

El alcance de efecto/control establece que cualquier módulo afectado por el resultado de una decisión debe ser subordinado del módulo que tomó dicha decisión.

UML (Unified Modeling Language)

UML es una herramienta de modelado y un lenguaje estándar para escribir planos de software. Es un lenguaje para:

  • Visualizar
  • Especificar
  • Construir
  • Documentar

los artefactos de un sistema con gran cantidad de software.

Modelo

Un modelo es una simplificación de la realidad. Se construyen modelos para comprender mejor el sistema que se está desarrollando.

Polimorfismo

El polimorfismo ocurre cuando una operación tiene el mismo nombre en diferentes clases, pero el método (la forma en que la operación es realizada) es distinto. En la Programación Orientada a Objetos (POO), esto permite que objetos de diferentes clases respondan a un mismo mensaje de maneras distintas.

Encapsulamiento

El encapsulamiento es el resultado (o acto) de ocultar los detalles de implementación de un objeto respecto de su usuario, exponiendo solo una interfaz pública.

Dominio

Un dominio es un área de conocimiento o actividad que se caracteriza por un conjunto de conceptos y una terminología que entienden los profesionales y usuarios de esa área.

Modelo de Dominio

Un modelo de dominio es un diagrama de clases abreviadas (que muestran solo atributos, sin operaciones) y sus relaciones, basado en el vocabulario del dominio específico.

Artefacto

Un artefacto es una pieza de información utilizada o producida durante un proceso de desarrollo de software.

Conceptos Avanzados de Clases en POO

Clase

Una clase es la especificación de un conjunto de objetos con las mismas características o rasgos. Es una manifestación abstracta que, además de categorizar elementos, funciona como una “plantilla” para la creación de objetos.

Características de una Clase

  • Estructura: Definida por sus atributos.
  • Comportamiento: Definido por sus operaciones (métodos).
  • Responsabilidad: El propósito o la función que cumple la clase.

Tipos Especiales de Clases

  • Clase Abstracta: Una clase que tiene al menos una operación abstracta. No es instanciable directamente.
  • Clase Abreviada: Aquella que oculta en el diagrama al menos uno de sus elementos (no se muestra completa).
  • Clase Raíz: Una clase sin padres, pero con hijos.
  • Clase Hoja: Una clase con padres, pero sin hijos.

Mensaje

Un mensaje es la forma de comunicación utilizada entre los objetos. El objeto emisor solicita al receptor que realice una operación, y este último la ejecuta.

Asociación

Una asociación es una relación semántica (con significado) estructural, con nombre y cardinalidad, entre elementos (clasificadores), que implica la conexión entre sus instancias.

Multiplicidad

La multiplicidad es el rango de cardinalidad permisible en una asociación. Indica la cantidad de objetos de una clase que se relacionan con un objeto en particular de la clase asociada.

Agregación

La agregación es una forma especial de asociación que especifica una relación del tipo “todo-parte” (un elemento constituido por otros). El “todo” se denomina agregado.

Composición

La composición es una forma especial de agregación donde existe un tiempo de vida coincidente entre el “todo” y las “partes”. Esto significa que las partes no pueden existir sin el todo.

Programación y Pruebas de Software

La fase de Programación y Pruebas involucra las actividades de generación de pruebas de aceptación y de control de calidad (puesta en práctica de dichas pruebas).

El proceso de prueba es iterativo: la primera tanda de pruebas busca la presencia de errores, y las posteriores verifican si los programas corregidos funcionan correctamente. Las pruebas pueden ser manuales o automáticas, según convenga.

Estrategias de Prueba

  • Ascendente (Bottom-Up): Empieza por probar módulos individuales pequeños y los va combinando en unidades cada vez más grandes hasta llegar a probar el sistema completo.
  • Descendente (Top-Down): Comienza con un esqueleto del sistema, continuando con aspectos cada vez más detallados del mismo.

Tipos de Pruebas según el Momento del Proyecto

  • Prueba de Caja Negra: Se conocen las entradas y salidas del sistema, pero no su implementación interna o algoritmo. Puede realizarse al final de la etapa de análisis.
  • Prueba de Caja Blanca / de Vidrio: Se basan en la lógica interna del programa existente. Es más rigurosa, pero requiere conocimiento del diseño e implementación.

Tipos de Pruebas según el Aspecto que Verifican

  • Prueba Funcional: Asegura que el sistema realiza sus funciones normales de manera correcta.
  • Prueba de Recuperación: Asegura que el sistema pueda recuperarse adecuadamente de diversos tipos de fallas (errores, defectos de hardware y/o daños intencionales). Tiene relación con el objetivo general de control.
  • Prueba de Desempeño: Asegura que el sistema pueda manejar el volumen de datos y transacciones de entrada especificados en el modelo de implementación del usuario, además de asegurar el tiempo de respuesta requerido (rendimiento/performance).
  • Prueba Exhaustiva: Consiste en generar casos de prueba para cubrir cada combinación posible de situaciones que puede enfrentar el sistema para asegurar que su comportamiento sea perfecto. Lógicamente, es imposible o irreal concretar una prueba así al 100%, por lo que en la práctica se busca aproximarse lo más posible a la calidad requerida.

Plan de Pruebas

El Plan de Pruebas es un documento más o menos formal (según el caso) que especifica la planificación de dónde, cuándo, cómo y quién (entre otras cosas) va a realizar las pruebas. La documentación y los resultados que se recaben durante el proceso se vuelcan luego en este plan.

El Modelo Esencial en el Ciclo de Vida Estructurado

¿Qué es el Modelo Esencial?

El Modelo Esencial es el resultado de la fase de análisis. Representa lo que el sistema debe hacer para satisfacer los requerimientos del usuario, expresando lo mínimo posible acerca de cómo se implementará. Se compone del Modelo Ambiental y del Modelo de Comportamiento.

¿En qué actividad del ciclo de vida estructurado del proyecto se crea?

El Modelo Esencial se crea durante la actividad de Análisis en el ciclo de vida estructurado del proyecto.