Diferencias entre Estructuras de Datos y Tipos Abstractos de Datos (TAD)
Estructuras de Datos
Una estructura de datos es un método de almacenamiento de datos en la memoria de un ordenador. Ejemplos incluyen enteros, matrices y pilas. En definitiva, es cualquier forma de almacenar información en la memoria del ordenador.
Los programas que usan estructuras de datos, sin la abstracción de los TAD, pueden ser complejos.
Tipo Abstracto de Datos (TAD)
Un Tipo Abstracto de Datos (TAD) es una colección de datos y operaciones sobre estos datos, que se define mediante una especificación independiente de cualquier implementación. Es una herramienta que facilita la clasificación de tareas en la etapa de diseño, simplificando así la programación.
- Los TAD son más potentes que las estructuras de datos por sí solas.
- Aportan mejoras significativas a los programas.
Encapsulamiento y Ocultamiento de la Información en TAD
Un TAD se caracteriza por tener:
- Vista Exterior: Oculta detalles, estructuras de datos y los secretos de su comportamiento interno.
- Vista Interior: Muestra cómo está construido internamente, incluyendo las estructuras de datos utilizadas, el código y el comportamiento de cada operación.
La separación entre la vista externa e interna facilita el diseño y mejora la calidad del software. El cliente interactúa únicamente con la vista externa, utilizando la interfaz del TAD (las operaciones definidas), lo que evita operaciones no permitidas.
Este encapsulamiento es un pilar fundamental de la programación con TAD.
Factores de Calidad del Software
La calidad del software es el objetivo principal de la abstracción de datos. Un software de calidad debe cumplir con varios factores, que se clasifican en:
- Factores Internos: Solo los perciben quienes tienen conocimientos de programación.
- Factores Externos: Afectan y son percibidos directamente por el usuario.
- Factores Internos y Externos: Cumplen ambas características.
Estos factores dependen del programador y afectan, directa o indirectamente, al usuario final. Los factores de calidad incluyen:
- Corrección: Capacidad de realizar adecuadamente la tarea para la que fue creado, según la especificación de requisitos. (Factor externo)
- Robustez: Capacidad de manejar situaciones imprevistas o errores. (Factor externo)
- Fiabilidad: Medida en que proporciona resultados con la precisión requerida o satisfacción del usuario (depende de la corrección y robustez). (Factor externo)
- Reusabilidad: Capacidad de ser reutilizado, total o parcialmente, en otros productos. (Factor interno)
- Compatibilidad: Capacidad de combinarse con otros programas (mediante estandarización). (Factor externo)
- Eficiencia: Capacidad de realizar su cometido de la mejor forma posible (uso de memoria, tiempo de ejecución, etc.). (Factor interno y externo)
- Portabilidad: Facilidad de ejecutarse en diferentes hardware o plataformas software. (Factor interno y externo)
- Seguridad: Capacidad de proteger sus componentes de usos no autorizados y pérdida de información. (Factor externo)
- Extensibilidad: Facilidad de adaptarse a cambios en la especificación de requisitos (añadir funcionalidades). (Factor interno)
- Integridad: El producto no debe corromperse por uso masivo o acumulación de datos. (Factor externo)
- Facilidad de Uso: Facilidad para ser usado por cualquier persona. (Factor externo)
- Accesibilidad: Capacidad de acceso sin dificultad por discapacidad o deficiencia. (Factor externo)
- Oportunidad: Capacidad de ser lanzado cuando el mercado lo necesita. (Factor externo)
- Economía: Un producto software es mejor si es más sostenible económicamente. (Factor interno y externo)
Descomposición Funcional vs. Descomposición Basada en Objetos
Análisis Estructurado (Descomposición Funcional): Se basa en la descomposición funcional del sistema. Traduce el dominio del problema en funciones y subfunciones. El problema es que no hay un mecanismo para verificar si la especificación refleja con exactitud los requisitos del sistema.
Orientación a Objetos: Es un concepto más simple y menos ligado a la informática que el flujo de datos. Esto facilita la comunicación entre el analista y el cliente (experto en el dominio del problema).