Etapas del desarrollo
Analisis, Diseño (UML: Unified Modeling Language), Programación, Testeo y Mantenimiento.
Paradigmas del desarrollo
Metodo en cascada, Metodo en espiral, Metodo de prototipos, Métodos ágiles
Sistema Empotrado
Sistema informático específicamente diseñado para resolver un problema concreto. Un sistema empotrado es un sistema con procesador que no es de propósito general.
Hardware en Empotrados
En unos casos HW es el de un PC: cajeros automático o PC-104. Pero en la mayoría es específico para: reducir costo, reducir consumo, reducir peso, optimizar prestaciones.
Tipos de ROM
ROM: grabada al fabricar el chip. EPROM: se borra con luz ultravioleta, se programa en dispositivo especial. EEPROM: borra y programa por software (proceso lento y con número finito de borrados.
Alimentación en empotrados
Se optimiza para el sistema { *consumo ajustado *disipación mínima. Suelen monitorizarse por el sistema { *tomar medida cuando va a fallar *redundantes en sistemas caóticos. Muchos sistemas Emp. utilizan baterías con control de la carga y la descarga. En los PCs debe haber generación de voltajes necesarios. Debe estar conectado a red eléctrica, estar sobredimensionado (implica ampliación HW), sin optimizar consumo.
STR
Sistema informático que tiene que responder a un estímulo de entrada generado externamente en un tiempo finito y específico. Interaccionan con el entorno. Podemos ver todos los sistemas como tiempo STR y pueden ser: STR BLANDO: de no cumplir produce degradación del rendimiento (Botón tele). STR DURO: de no cumplir se produce fallo o catástrofe. (Sistema de vuelo, ABS)
Software en empotrados
Debe ser fiable (fallos pueden ser muy costosos). Una vez instalado difícil de cambiar el software (correcciones o nuevas versiones solamente). Necesaria y extensa depuración: tanto SW como HW.
Fiabilidad en empotrados
Se aplican técnicas para salida de fallos o estados inadecuados: *temporizador perro guardián (resetea el sistema si este no es puesto a 0). *Subsistemas redundantes entre los que se puede elegir. *Modelo Software para estados de fallo (da parte de la funcionalidad).
Software Libre
Se llama SL porque está dotado de las 4 libertades: libertad para usarlo, libertad para copiarlo, libertad para modificarlo y libertad para distribuirlo. SOFTWARE LIBRE != SOFTWARE GRATIS // SOFTWARE NO LIBRE = SOFTWARE PRIVATIVO.
Ventajas del SL
El software libre es más fiable (se ha demostrado por tasa de fallos). Razones: *el software es revisado por otros. *comunidad unida para arreglar problemas (se informa de errores y se arreglan y mandan correcciones) *Desarrolladores se preocupan de la fiabilidad (código a la vista, genera mayor reputación). VENTAJAS PARA EL CLIENTE: No está a merced del vendedor y se evita los gastos derivados de licencias.
Preprocesado
Puro tratamiento de texto en fichero fuente. (genera ‘otro’ fichero fuente. Opción -E en el compilador). Acciones: *Quitar comentarios *Incluir otros ficheros fuente *Definir Etiquetas *Definir Macros *Quitar Código según condiciones. Definir etiquetas (definir constantes): *se sustituyen en el preprocesado *NO OCUPAN ESPACIO EN LA MEMORIA *Código más legible y modificable. Definir macros: *Parecidos a funciones *Se sustituyen (generan más código). Quitar código según condiciones: Distinto ejecutable según: *versiones del programa *arquitectura (portabilidad).
Librerías
Parte muy importante del C. Dependen del sistema operativo (algunas estándar y en todos los S.O.) Necesarios los ‘includes’. Indicarlos en el enlazado.
POO
Objetos y sus interacciones para hacer programas informáticos. Objetos: *Tienen estado: ATRIBUTOS *Realizan acciones: MÉTODOS. Seguridad: *Los atributos de un objeto solo modificados por sus métodos. *Objetos solo ‘reciben mensajes’ y ‘reaccionan’
Abstracción
Proceso inverso a la herencia: *Lo común a una serie de clases *Forma habitual de pensar estructuras de clases *De clase abstracta no se pueden instanciar objetos.
Polimorfismo
Objeto se hace pasar por cualquiera de sus clases ancestro, pero actúa como lo que es)
Sobrecarga
Varias funciones con el mismo nombre. (Se diferencian en número y tipo de argumentos de entrada: SIGNATURA.
Sobrecarga de operadores
Definir comportamiento cuando operando es un objeto: *simplificar los sistemas *clases como tipos básicos: string, iteradores,…
Concurrencia
Proceso: instancia de un programa en ejecución: *procesos concurrentes (solapan ejecución) *Procesos paralelos (se ejecutan al mismo tiempo)
Proceso UNIX
*Tiene un identificador: PID *Tienen un proceso padre: PPID *Hijos mueren antes que los padres *Deben ser esperados por sus padres (sino quedan zombis) *No comparten memoria (solo ficheros abiertos)
Problemas concurrencias
Exclusión mutua: {*Sección crítica: instrucciones que acceden al recurso compartido *Exclusión mutua: solo debe haber un proceso en su sección crítica. EJS: Impresora o variable compartida. Sincronización { *Acceden al recurso: cuando se esté en un estado adecuado. *Bloquear procesos si estado no adecuado.
Propiedades (soluciones) concurrencia
Las soluciones deben cumplir: SEGURIDAD (Exclusión mutua, Sincronización, No interbloqueo) VIVEZA (No interbloqueo activo (consumo de CPU sin producir), No inanición (postergación indefinida): *proceso nunca puede acceder al recurso *cuando se definen prioridades)
Hilos
Secuencia de ejecución independiente (*dentro de un proceso *entidades ligeras (crear un proceso= 23.61 microseg vs crear un hilo = 2.10 microseg) *comparten memoria (Variables globales y memoria dinámica (malloc))
Memoria y control del tiempo
*En STR es fundamental (medir el tiempo y controlar duración de las acciones) *Clasificación de las tareas (Periódicas: intervalos fijos y Específicas: interrupciones externas) *Hay que solucionar (relojes/temporizadores, retardos y tareas periódicas, timeouts y planificadores.