Please enable JavaScript.
Coggle requires JavaScript to display documents.
Estructuras de Datos-Capítulo-1-Desarollo-de-Software :red_flag: (Calidad…
Estructuras de Datos-Capítulo-1-Desarollo-de-Software
:red_flag:
Calidad
de Software
Corrección
La capacidad de funcionar para lo que debería
Legible y comprensible
Fácil y sencillo de leer/comprender
Extensibilidad
Facilidad para adaptarse a cambios
Robusto
El funcionar en situaciones anormales
Eficiente
Hacer un buen uso de los recursos del computador
Facilidad de uso
Que sea cómodo de usar
Portabilidad
sencillo transportarlo a otro sistema lógico/físico
Verificabilidad
Capacidad para soportar procedimientos de validación (¿Cómo lo boto?)
Reutilización
reutilizar productos (código)(sistemas)(Software)
Integridad
Protege sus componentes
Compatibilidad
facilidad del producto de ser combinado con otro y usados en diferentes plataformas
El Software
Características
Posee instrucciones que controlan el Hardware
Evolución=+Potencia,+Amigable
De
aplicación
Programas escritos que resuelven tareas específicas
Ayuda al usuario a ejecutar tareas
Brinda acceso a los lenguajes de programación
Escriben programas para solucionar problemas de un usuario
Traducen al código máquina por compilación/ interpretación
"Programadores de aplicaciones"
Del
sistema
Gestiona recursos del computador
Medio entre Hardware y el software de aplicación
Contiene los programas "base" para funcionar
"Programadores en sistemas"
Sistema Operativo
(OS)
Gestiona/controla actividad del computador
Programas que interaccionan con el usuario
Almacenado en la ROM
MonoUsuario/MultiUsuario--MultiTarea/MonoCarga
Múltiples programas comparten recursos del CPU
Multiproceso
Puede enlazar 2 CPU
Resolución
de Problemas y Desarrollo de Software
Modelos
Cascada
Incremental
Evolutivo; Prototipo/Espiral
Especializados de proceso (formales/basado en componentes)
Extreme Programming
Faces de
Implementación
Análisis
Se
define el problema
(entradas para producir salidas necesarias)
Se especifica el problema/definen objetivos/descripción exacta
se obtienen parámetros y lineamientos
"Analista en sistemas/Programadores"
¿qué debe hacer?¿qué salidas?¿qué entradas requieren esas salidas?
Diseño
Implica el uso de algoritmos
Instrucciones que procesan datos para resolver problemas
Mediante diagramas de flujo/Pseudocódigo
Se da la resolución de problemas
Requiere de un paradigma estructurado
Implementación
Diseño-->Código
Legible/Comprensible/Fiable
Depuración
Fija/ localiza errores
Más comunes
Sintáxis
Ejecución
Lógicos
Sistema de pruebas
Asegura la funcionalidad del proyecto (algoritmos, modulos,etc)
Verificación
“¿Estamos construyendo el producto correctamente?”
El software funciona correctamente
Validación
“¿Estamos construyendo el programa correcto?”
Corresponde con los
requisitos
del cliente
Pruebas
De unidad (en métodos,clase,objeto), de Integración (en conjunto de métodos, clases)
Elección de datos
Conocer las salidas correctas
Incluir entradas con mayor % de error
Uso de valores frontera
Documentación
Manual
útil para programador/ Organización
Datos Importantes
Descripción del problema
Cambio/desarrollo de algoritmos
Listado de programas
Ejecución de prueba maestra
Manual de usuario
Mantenimiento
"Garantía"
con el producto en circulación
Soluciona problemas futuros
Es costoso
(Se añaden nuevas características)
Código límpio = Mantenimiento sencillo
Algoritmos
Solución concreta de un problema
Pasos/reglas
a seguir
Descripción de pasos (receta) (NO ambigua)
Programación del algoritmo
Ejecución/Validación
Reutilisable tras el proceso de diseño
Diseñado por mapas de flujo/ Pseudocódigo
Características
Preciso/ Ordenado
Bien definido
Finito
Requiere Entradas/ procesos/ salidas
Abstracción
en Lenguajes de Programación
Control
Describe el orden en el que se ejecutan sentencias
(Do-loop.do-whie,if,for,while)
Se crean subprogramas con el fin de reutilizar código
Unidades; Abstracción procedimental; mediante métodos y clases
Facilita el entendimiento al programador
Datos
Permite inventar o definir nuevos tipos de datos adecuados para la aplicación
(ADT's)
+Programas cortos, legibles y flexibles
Solo las operaciones modifican y acceden a los objetos
[Datos+operaciones] Su representación queda oculta de otras clases
Se separa la interfaz del tipo de dato
T
ipos de
D
atos
A
bstractos (Abstract Data Type)
Definidos por el programador
No
son visibles al público
(Datos+Operaciones)
Ventajas
Mejora el modelado y conceptualización, rendimiento y optimización al compilar
+Facil de representar y comprender
Sistemas + robustos
Facilita la comprobación de tipos
Evita errores en el tiempo de ejecución
Modifica y mejora la implementación sin afectar interfaz pública
+Extensibilidad en el sistema
Reutilización de código
Especificación
Formal
Axiomas que describen operaciones sintáctica y semánticamentente.
Operaciones constructoras (se generan todos los posibles valores del ADT),
Se llama igual que la clase y se señala con un (*)
"Operación (Tipo de argumento,...)-->Tipo resultado
"Operación(valores particulares argumentos) --> expresión resultado"
Informal
Describe datos y operaciones en lenguaje natura
(simple)
Detalla en los datos los valores que puede tomar
Describe operaciones
"TAD
nombre
(valores y descripción)"
"Operación (argumentos)"
Programación
Estructurada
Datos
Local
Internos en la función, protegidos de ser modificados por otras funciones.
Global
Cualquier función del programa puede acceder a ellos.
Modelado
Dato && función != RealWorld
Organiza sentencias por
"funciones"
Problemas
Trabajar con un código largo/complejo
El acceso de las funciones a datos globales
La función representa un modelo pobre del mundo real
Cantidad de conexiones Función-DatoGlobal dificulta la comprensión, lectura y modificaciones (mantenimiento)
P
rogramación
O
rientada a
O
bjetos
módulos/objetos/clases
Con datos y operaciones que actúan para
resolver
el problema
Hace
énfasis
en los
datos
Especializados para cada proyecto (características únicas)
Protegidos de accidentes (encapsulamiento)
Simplifica
depuración/mantenimiento/escritura
Pasos para diseñar
Identifica objetos-->grupa en clases objetos comúnes-->idenftifica datos/métodos de clases-->identifica relaciones entre clases
Fundamentos
Abstracción
Crea un programa +Corto/legible/flexible
Inventa nuevos tipos de datos que sean más adecuados a una aplicación
Produce programas a partir de solo los
aspectos importantes
Propiedades de composición interna y externas de un problema
Niveles
de abstracción
Estructuran la complejidad del problema del mundo real
¿Qué es y qué hace el objeto?
Centralización en la parte del sistema más relevante
Encapsulamiento
Datos y Métodos en objetos y clases
Separa la interfaz
de los
detalles internos
de implementación
Clases
Describe un conjunto de objetos similares
Define los
datos comunes
que representan el
grupo de objetos
Permite la creación de objetos que compartan características
Tipo de dato
que contiene datos y funciones
Ej: Clase alimentos
Encapsula los datos y operaciones para entender un problema del mundo real
Objetos
"Algo" que se visualiza (con importancia)
Genera una solución
(Realiza algo en concreto o tangible)
Abstracto o descriptivo
Facilita el modelado en el mundo real
"Datos+Atributos"
EJ: Recursos humanos, colecciones de datos, Elementos de computadoras, objetos físicos, etc
Herencia
Características de clase:
"padre"----> "hija"
Las clases hijas tiene sus propias nuevas características
Da consistencia
Reduce el código
Las propiedades comunes solo se implementan una vez
Polimorfismo
La función/moderador
actúa diferente
según el
objeto
al que se aplica
La operación solo es interpretada por el objeto que lo invoca.
Durante la Compilación
Una operación con mismo nombre en clases diferentes
"Sobrecarga"
, cuando un operador existente (+,=) opera sobre nuevos tipos de datos
Reusabilidad
Capacidad de
distribuir
una clase hecha. (previamente depurada para el uso de otros programadores)
Permite agregar nuevas funcionalidades creando una clase nueva a partir de la original
Basado en: "Estructuras de Datos en C++ (2007, Joyanes Luis, Sánchez Lucas, Zahonero Ignacio)