TAI 2017. Bloque III. Desarrollo de sistemas - La web de emijrp
El Bloque III. Desarrollo de sistemas de las Oposiciones a TAI 2017 se compone de 10 temas.
Tema 1: Modelo conceptual de datos
Modelo conceptual de datos. Entidades, atributos y relaciones. Reglas de modelización. Diagramas de flujo de datos. Reglas de construcción. Descomposición en niveles. Flujogramas.
Modelo conceptual de datos
Pregunta relacionada en
2015 (PI)
El modelo entidad-relación ideado por Peter Chen en 1976 es el más frecuente para el diseño conceptual de bases de datos.
Los elementos básicos de un diagrama entidad-relación son las entidades, las relaciones y los atributos. Las entidades cuentan con atributos y ellas se relacionan entre sí.
- Entidad: representan objetos del mundo real independientes entre sí. Cuentan con atributos (propiedades). Se representan con rectángulos con el nombre de la entidad dentro. Ejemplos: una persona, una ciudad, un coche.
- Atributos: son las propiedades o particularidades de una entidad (o relación). Se representan con círculos con el nombre del atributo dentro. Los valores posibles vienen determinados por el dominio (caracteres, números, etc). Ejemplos: Una persona puede tener de atributos su nombre, fecha de nacimiento, DNI, etc. Los atributos identificativos son aquellos que diferencian claramente a un objeto de otro, por ejemplo para personas se suele usar el DNI.
Pregunta relacionada en
2015 (IL)
- Relación: describe la dependencia entre entidades y cómo se asocian entre ellas. Se representan con rombos con el nombre de la relación dentro. Si la relación es entre dos tipos de entidades, se llama binaria o de grado dos. El número de instancias de cada entidad que intervienen en la relación es la cardinalidad. Ejemplo: una entidad persona se relaciona con una entidad ciudad a través de la relación Persona - "nacido en N:1" - Ciudad. Como una persona solo puede nacer en 1 ciudad, la relación es N:1, ya que en una ciudad pueden nacer N personas. La cardinalidad puede ser 1:1 (uno a uno), 1:N (uno a varios), N:1 (varios a uno), N:M (varios varios). Las relaciones también pueden tener atributos como las entidades, un caso frecuente son aquellas relaciones con fecha u hora.
- Dependencia por existencia: los ejemplares de entidades débiles no pueden existir sin el ejemplar de entidad fuerte.
- Dependencia por identificación: los ejemplares de entidades débiles se identifican con atributos propios y el identificador de la entidad de la que dependen. Toda dependencia por identificación es una dependencia por existencia.
Diagramas de flujo de datos
Un Diagrama de Flujo de Datos (DFD) es una representación gráfica del flujo de datos y los cambios que este flujo sufre en un sistema de información, desde que entra al sistema hasta que sale. Existen distintos niveles de abstracción y detalle.
Pregunta relacionada en
2015 (IL) 2015 (PI)
Componentes de los DFD:
- Procesos: son las funciones que realizan operaciones sobre los datos, teniendo entradas y salidas (siempre al menos una entrada y una salida). Un proceso primitivo es aquel que no admite más descomposición.
- Almacenes: información almacenada en un punto del sistema en algún momento. Pueden ser ficheros, bases de datos o hasta información en papel.
- Agentes externos: las entidades que interactúan con el sistema. Las relaciones entre agentes externos no se representan en el DFD.
- Flujo de datos: camino que siguen los datos entre dos partes del sistema. El sentido de la flecha indica cómo se mueven los datos. Los procesos pueden conectarse con otros procesos, almacenes y agentes externos. Los almacenes y agentes externos solo con procesos.
Los flujos de datos entre procesos y almacenes son: Proceso <- Almacén (flujo de consulta), Proceso -> Almacén (flujo de actualización), Proceso <-> Almacén (flujo de diálogo).
Los niveles de un DFD son:
Pregunta relacionada en
2016 (IL) 2016 (PI)
- Nivel 0: Diagrama de contexto. Solo incluye un proceso que engloba al sistema completo. Se indican los flujos de datos entre el sistema y los agentes externos. No se indican otros procesos ni almacenes. Es el nivel más abstracto.
- Nivel 1: Diagrama de nivel superior. Se indican todos los procesos que describen al proceso principal. Aquí los procesos no suelen relacionarse entre ellos, sino entre almacenamientos y agentes externos.
- Nivel 2: Diagrama de detalle o expansión. Se admiten relaciones entre procesos. El detalle es mayor.
Tema 2: Diseño de bases de datos
Diseño de bases de datos. Diseño lógico y físico. El modelo lógico relacional. Normalización.
Pregunta relacionada en
2016 (IL) 2016 (PI)
- Regla de integridad de entidad: los atributos de la clave primaria no pueden ser nulos.
- Regla de integridad referencial: los atributos de las claves foráneas deben existir en la clave primaria o ser nulos.
- Regla de integridad de dominio: los valores no nulos de un atributo deben pertenecer al dominio del atributo.
Diseño lógico y físico
Normalización
Pregunta relacionada en
2016 (PI) 2014 (PI)
Si una base de datos no está normalizada se pueden producir inconsistencias en los datos además de redundancias. Se eliminan dependencias, proporciona una estructura más regular a las tablas.
Primera Forma Normal (1FN):
- Todos los atributos son atómicos (indivisibles)
- La tabla tiene una clave primaria única
- La clave primaria no contiene atributos nulos
Segunda Forma Normal (2FN):
- La tabla está en 1FN
- Ningún atributo no principal es funcionalmente dependiente de una clave candidata
Tercera Forma Normal (3FN):
- La tabla está en 2FN
- Ningún atributo no principal depende transitivamente de una clave primaria
Existe niveles superiores a la 3FN: BCNF, 4NF, 5NF.
12 reglas de Codd
Pregunta relacionada en
2016 (IL) 2016 (PI) 2015 (IL)
En realidad son 13 reglas propuestas por Edgar Codd que se deben cumplir para el modelo relacional de bases de datos.
- Regla 0: un sistema relacional debe gestionar sus bases de datos mediante capacidades relacionales.
- Regla 1: toda la información se representa unidireccionalmente, con valores en columnas dentro de filas de tablas.
- Regla 2: todos los datos se deben poder acceder sin ambiguëdad. Acceso garantizado.
- Regla 3: debe permitir la existencia de valores nulos.
- Regla 4: ofrecer acceso a la estructura de la base de datos.
- Regla 5: el sistema debe soportar un lenguaje relacional con sintaxis lineal, interactivo y que soporte definición de datos.
- Regla 6: todas las vistas teóricamente actualizables deben poderse actualizar.
- Regla 7: alto nivel de inserción, actualización y borrado. Operaciones sobre múltiples filas.
- Regla 8: independencia física de los datos.
- Regla 9: independencia lógica de los datos.
- Regla 10: independencia de la integridad.
- Regla 11: independencia de la distribución.
- Regla 12: regla del orden, no se debe poder trabajar a bajo nivel sin que haya seguridad relacional e integridad.
Tema 3: Lenguajes de programación
Lenguajes de programación. Representación de tipos de datos. Operadores. Instrucciones condicionales. Bucles y recursividad. Procedimientos, funciones y parámetros. Vectores y registros. Estructura de un programa.
Paradigmas
Pregunta relacionada en
2016 (PI)
Los paradigmas de programación son formas de clasificar los lenguajes de programación en base a las características de su estructura, control de flujo y elementos. Un mismo lenguaje puede pertenecer a varios paradigmas.
- Imperativo: es el más extendido. Consiste en dar instrucciones al ordenador, en forma de algoritmos, sobre cómo hacer las cosas. Ejemplos: lenguaje máquina, Ada, B, BASIC, Bourne Shell, C, Caml, Cython, Genie, Linotte, Lua, Ocaml, Pascal.
- Orientado a objetos: basado en el imperativo pero encapsula variables y funciones en entidades llamadas objetos. Ejemplos: C++, C#, Eiffel, Java, Object Pascal, Perl, PHP, Python, Ruby, Smalltalk.
- Procedural: agrupa el código en funciones. Ejemplos: ALGOL, BASIC, C, COBOL, Fortran.
- Declarativo: describen la lógica pero sin expresar el control de flujo. Ejemplos: Curry, Haskell, Lisp, ML, Prolog.
- Funcional: se basa en el uso de funciones matemáticas en vez de en la mutación de variables (imperativa). Ejemplos: Alice, Clojure, Haskell, Elm, Erlang, J.
- Lógico: basado en la lógica formal, expresando hechos y reglas sobre el dominio del problema a resolver. Ejemplos: Curry, Datalog, Fril, Godel, Prolog.
- Algebraicos: Ejemplos: Maude, SQL.
- Simbólico: permite manipular sus propias fórmulas y componentes como si fueran datos. Ejemplos: Wolfram, Lisp, Prolog.
- Orientado a aspectos: AspectJ.
- Programación visual: Scratch, VisSim.
- Concurrente:
- Distribuida:
- Paralela:
Estructuras
Una instrucción condicional es aquella que tras ser evaluada determina qué fragmento de código se ejecutará. Puede ser un if simple (solo un caso, la evaluación afirmativa), un if-else (con código tanto para la evaluación afirmativa como negativa de la condición) o un switch/select-case (múltiples casos).
Un bucle es una sentencia que ejecuta repetidas veces un trozo de código, hasta que la condición asignada a dicho bucle deja de cumplirse. Los tres bucles más utilizados en programación son el bucle while, el bucle for y el bucle do-while.
Un algoritmo recursivo es un algoritmo que expresa la solución de un problema en términos de una llamada a sí mismo. La llamada a sí mismo se conoce como llamada recursiva o recurrente.
Un procedimiento es una subrutina dentro de un programa que resuelve una tarea específica. Una función es aquella subrutina que devuelve un valor. Los parámetros son aquellas variables que se le pasan a los procedimientos o funciones para que sean utilizados en la resolución de la tarea.
Pregunta relacionada en
2014 (PI)
Un módulo es una porción de un programa, separado del resto de módulos, almacenado en ficheros individuales, con la finalidad de hacer el código más manejable y legible. Un bajo acoplamiento y una alta cohesión son señales de un sistema bien estructurado.
- Acoplamiento: es la interdependencia entre módulos, cuanto más baja mejor.
- Acoplamiento normal: un módulo llama a otro inferior y se intercambian datos. Existen tres tipos, acoplamiento de datos (comunicación mediante parámetros), acoplamiento de marca (comunicación mediante estructuras de datos), acomplamiento de control (un módulo controla a otro).
- Acoplamiento común: dos módulos acceden a un recurso común (memoria, variable, fichero). Si se trata de dispositivos de entrada-salida o comunicaciones, sería acoplamiento externo.
- Acoplamiento de contenido: un módulo accede a una parte de otro módulo.
- Cohesión: es la relación funcional entre los elementos del mismo módulo, cuanto más alta mejor.
- Cohesión funcional: los elementos del módulo desempeñan una función conjuntamente.
- Cohesión secuencial: los elementos hacen tareas en secuencia, siendo la salida de una tarea la entrada de la tarea siguiente.
- Cohesión comunicacional: el módulo hace tareas paralelas con los mismos datos.
- Cohesión procedimental: similar a la secuencial.
- Cohesión temporal: las tareas se relacionan por el momento en que se realizan.
- Cohesión lógica: las tareas se agrupan por categorías.
- Cohesión casual: la relación entre los elementos del módulo es escasa. Esta cohesión es poco deseable.
Lenguajes
Algunos lenguajes de programación y una breve reseña sobre ellos. Algunos no son estrictamente lenguajes de programación (como HTML, CSS, XML) pero se incluyen por ser de interés:
- Ada 95: lenguaje orientado a objetos y fuertemente tipado.
- ALGOL: familia de lenguajes imperativos cuya primera versión ALGOL 58 apareció en 1958. Fue el que más influyó a lenguajes posteriores en cuanto a sintaxis de entre sus contemporáneos de alto nivel (FORTRAN, Lisp y COBOL).
- AWK: lenguaje para procesado de texto y extracción de datos. Creado en Bell Labs en los años 70.
- Batch: un script batch es un fichero en texto plano que incluye comandos para ser ejecutados por el intérprete de comandos. Su extensión suele ser .bat, .cmd o .btm.
- Bash: escrito por Brian Fox para el Proyecto GNU. Primera versión en 1989.
- BASIC: familia de lenguajes de alto nivel y de propósito general con la finalidad de ser fáciles de usar. Primera versión en 1964.
- C: lenguaje imperativo de propósito general, estructurado y con capacidad de recursión, de tipado estático. Desarrollado por Dennis Ritchie en los Laboratorios Bell entre 1969 y 1972. Proviene del lenguaje B.
- C++: imperativo, orientado a objetos, de propósito general. Creado por Bjarne Stroustrup en 1985.
- C#: lenguaje multiparadigma, desarrollado por Microsoft en 2000.
- COBOL: lenguaje imperativo y procedural. Enfocado a finanzas y negocios. Creado en 1959.
- CSS: lenguaje de hojas de estilo para describir cómo se presenta un documento escrito en un lenguaje de marcado. Aunque en su mayoría se utiliza para el diseño de páginas web HTML/XHTML, también sirve para documentos XML, SVG y XUL.
- Eiffel: lenguaje orientado a objetos, diseñado por Bertrand Meyer, publicado en 1986. Conceptos introducidos por Eiffel fueron incorporados más tarde a Java y C#.
- Erlang: lenguaje de propósito general concurrente y funcional, con recolector de basura. Diseñado en 1986 por Ericsson, liberado en 1998.
- Ensamblador: lenguaje de bajo nivel, imperativo, no estructurado. Específico de cada arquitectura de computador. El código ensamblador se convierte en ejecutable con un programa llamado a su vez ensamblador.
- FORTRAN: lenguaje de propósito general, imperativo, enfocado a computación numérica y científica. Desarrollado originalmente por IBM en los años 50. Significa Formula Translation.
- Go: lenguaje imperativo, concurrente, compilado, creado por Google en 2009.
- Haskell: lenguaje de propósito general, funcional, con tipado fuerte.
- HTML: lenguaje de marcado para crear páginas web y aplicaciones web. Junto con CSS y Javascript suponen los tres lenguajes básicos de la World Wide Web. Los navegadores web reciben los documentos HTML desde un servidor web o almacenados localmente y los renderizan. El HTML permite embeber programas escritos en Javascript o a través de applets.
- Java: lenguaje de propósito general, concurrente, orientado a objetos, diseñado para ser compilado una sola vez (bytecode) y ejecutado en cualquier plataforma que soporte la máquina Java. Empleado mayoritariamente para aplicaciones cliente-servidor. Creado por James Gosling en 1995 en Sun Microsystems (luego adquirida por Oracle). Sintaxis derivada de C y C++.
- JavaScript: lenguaje de alto nivel, interpretado, multiparadigma, de tipado débil. Se utiliza para hacer dinámicas las páginas web, aunque ahora también se utiliza para aplicaciones de escritorio, en software PDF, procesadores de texto, etc.
- KML: Keyhole Markup Language, notación XML para expresar información geográfica para ser visualizada en mapas y 3D en navegadores. Comprimido es KMZ.
- LaTeX: lenguaje de marcado para la redacción de documentos. Creado en 1985 por Leslie Lamport. Permite definir la estructura del documento, el estilo del texto, añadir citas y referencias, etc.
- Lisp: lenguaje funcional, procedural, creado en 1958. Es el segundo lenguaje de alto nivel más antiguo, por detrás de FORTRAN. Existen varios dialectos, entre ellos Common Lisp y Scheme. Utilizado en inteligencia artificial.
- Lua: imperativo, estructurado y bastante ligero que fue diseñado como un lenguaje interpretado con una semántica extendible.
- make: lenguaje para compilar y enlazar código fuente, generando código objeto.
- Modula: descendiente de Pascal, creado por el autor de éste. Soporta módulos.
- Occam: lenguaje concurrente, imperativo.
- Pascal: lenguaje imperativo y procedural, diseñado por Niklaus Wirth y publicado en 1970. Creado para fomentar buenas prácticas de programación mediante el uso de programación estructurada y estructuras de datos. Existe el Object Pascal orientado a objetos.
- Perl: lenguaje de alto nivel, propósito general, interpretado.
- PHP: lenguaje del lado del servidor para desarrollo web y propósito general. Creado por Rasmus Lerdof en 1994. Puede embeberse dentro del HTML.
- Prolog: lenguaje lógico de propósito general, enfocado a la inteligencia artificial y lingüística computacional. Creado en los años 70 por Alain Colmerauer.
- Python: lenguaje interpretado, multiparadigma, de alto nivel y propósito general. Creado por Guido van Rossum en 1990. Con tipos dinámicos y control de memoria automático.
- R: lenguaje para estadística y gráficas. Creado en 1993.
- Ruby: lenguaje orientado a objetos, de propósito general, multiparadigma. Creado por Yukihiro Matsumoto en 1995.
- Scala: lenguaje de propósito general, funcional, diseñado para corregir algunas críticas de Java. Creado en 2004 por Martin Odersky.
- Smalltalk: lenguaje orientado a objetos puro, creado en parte con fines educativos por programadores de Xrox PARC en los años 70.
- Simula: lenguaje orientado a objetos creado en 1962. El primero en incluir el concepto de clase.
- SQL: lenguaje específico del dominio que permite hacer operaciones en sistemas de gestión de bases de datos relacionales. Declarativo.
- SVG: Scalable Vector Graphics es un formato gráfico basado en XML con soporte para animación.
- Vala: lenguaje multiparadigma, orientado a objetos. Creado en 2006.
- Visual Basic: lenguaje dirigido por eventos, publicado en 1991 por Microsoft. Derivado de BASIC, permite crear aplicaciones con interfaz gráfica rápidamente.
- Visual Basic .NET: lenguaje orientado a objetos, multiparadigma, lanzado en 2002 por Microsoft. Sucesor de Visual Basic.
- XML: Extensible Markup Language, lenguaje de marcado para definir reglas para codificar documentos en un formato que sea entendible por humanos y máquinas. Para hojas de estilo existe XLST.
- XUL: XML User Interface Language es un lenguage de marcas para interfaces de usuario desarrollado por Mozilla. Permite crear interfaces gráficas de usuario de forma similar a una página web.
Tema 4: Lenguajes de interrogación de bases de datos
Lenguajes de interrogación de bases de datos. Estándar ANSI SQL. Procedimientos almacenados. Eventos y disparadores.
Pregunta relacionada en
2016 (IL) 2015 (IL)
Las transacciones de un sistema de gestión de bases de datos deben cumplir la regla ACID:
- Atomicidad: cuando una operación se compone de varios pasos, se ejecutarán todos o ninguno.
- Consistencia: solo se empieza aquello que se va a acabar.
- Aislamiento (Isolation): una operación no afecta a otras.
- Durabilidad: una vez realizada la operación, no será deshecha ni ante un error del sistema.
Pregunta relacionada en
2014 (PI)
Efectos no deseados:
- Lectura fantasma: cuando en una transacción se leen filas que no existían cuando se comenzó la transacción.
- Lectura no repetible: cuando en una misma transacción se lee dos veces la misma fila y tiene valores distintos.
- Lectura sucia: cuando una operación de lectura lee una fila que va a ser modificada por otra operación en curso.
Pregunta relacionada en
2015 (IL)
Los niveles de abstracción de base de datos son:
- Nivel interno: describe el modelo físico de como se almacena la base de datos en ficheros, su estructura y como se accede a ellos.
- Nivel conceptural: describe las entidades, relaciones y operaciones de usuarios.
- Nivel externo: describe las vistas de usuario, lo que unos usuarios ven y otros no.
Pregunta relacionada en
2015 (IL) 2015 (PI) 2014 (PI)
En el álgebra relacional las operaciones son:
- Básicas o fundamentales:
- Selección: selecciona un subconjunto de tuplas de una relación que cumplan la condición.
- Proyección: extrae columnas (atributos) de una relación, un subconjunto vertical de la relación.
- Producto cartesiano: todas las tuplas (a, b) posibles, donde a pertenece a la primera relación y b a la segunda.
- Unión: las tuplas de ambas relaciones.
- Diferencia: las tuplas que están en una relación pero no en la otra.
- No básicas o derivadas:
- Intersección: las tuplas que pertenecen a las dos relaciones. Las que solo están presentes en una de ellas no.
- Unión natural:
- División o cociente:
- Agrupación:
ANSI SQL
SQL (Structured Query Language o Lenguaje de Consulta Estructurada) es un lenguaje estandarizado con el que acceder a un sistema de gestión de bases de datos relaciones y realizar operaciones.
Pregunta relacionada en
2016 (IL) 2016 (PI)
SQL consiste en un lenguaje de definición de datos, un lenguaje de manipulación de datos y un lenguaje de control de datos.
- Lenguaje de definición de datos (DDL): son las órdenes que permiten crear, modificar y eliminar las tablas, vistas, procedimientos, triggers y hasta las propias bases de datos.
- CREATE: permite crear bases de datos, tablas, vistas y procedimientos. Ejemplo: CREATE TABLE 'CLIENTES';
- ALTER: permite modificar una tabla, quitando o agregando campos, cambio de tipos, índices, triggers. Ejemplo: ALTER TABLE 'CLIENTES' ADD EDAD INT UNSIGNED;
- DROP: permite eliminar un objeto. Ejemplo: DROP TABLE 'CLIENTES';
- TRUNCATE: vacía todo el contenido de una tabla. Ejemplo: TRUNCATE TABLE 'ALUMNOS';
- Lenguaje de manipulación de datos (DML): son las órdenes que permite consulta y modificar los datos de la base de datos.
- SELECT: permite consultar los datos, y junto con otras cláusulas filtrar estos resultados, ordenarlos, etc. (A veces se considera DQL, Data Query Language)
- ALL/DISTINCT: selección todos los valores o solo los distintos.
- FROM: determina la tabla a explorar. Pueden ser varias usando JOIN (requiere entonces usar WHERE).
- WHERE: indica las condiciones que deben cumplirse para que los datos sean devueltos. Pueden ser varias condiciones, combinadas con AND y OR.
- GROUP BY: indica el campo sobre el que se agruparán los datos.
- HAVING: condición que se aplicará a los datos devueltos, requiere GROUP BY.
- ORDER BY: ordena los resultados usando las columnas indicadas. El orden puede ser ASC o DESC. El predeterminado es ASC. Si hay varios atributos en el ORDER BY, cada uno puede llevar su ASC o DESC.
- Ejemplo para recuperar todos los clientes de Madrid: SELECT nombre, dni, lugar FROM clientes WHERE lugar='Madrid' ORDER BY nombre;
- INSERT: inserta un registro o varios en una tabla. El número de columnas y de valores indicados debe ser igual. Si una columna no se indica le será asignado el valor por defecto. Ejemplo: INSERT INTO 'cliente' ('nombre', 'dni', 'lugar') VALUES ('Pepe', '12345678A', 'Segovia');
- Si se indican todos los valores no haría falta poner los nombres de las columnas. Para el ejemplo anterior suponiendo que la tabla solo tenga esos tres campos, sería: INSERT INTO 'cliente' VALUES ('Pepe', '12345678A', 'Segovia');
- Para insertar varios registros a la vez en la misma consulta INSERT, sería separándolos con comas: INSERT INTO 'cliente' VALUES ('Pepe', '12345678A', 'Segovia'), ('Maria', '87654321Z', 'Barcelona');
- UPDATE: permite modificar los valores de una tabla. Ejemplo para modificar el lugar de Pepe: UPDATE clientes SET lugar='Madrid' WHERE nombre='Pepe';
- DELETE: elimina un registro o varios. No confundir con DROP que elimina la tabla entera. Ejemplo: DELETE FROM clientes WHERE dni='12345678A';
- Lenguaje de control de datos (DCL): permite controlar el acceso a los datos.
- GRANT: concede permisos a uno o varios usuarios para realizar ciertas tareas (CONNECT, SELECT, INSERT, UPDATE, DELETE, USAGE).
- REVOKE: elimina permisos concedidos con GRANT.
Tipos de datos:
- INTEGER: número entero, con o sin signo.
- VARCHAR: cadena de caracteres.
- DATE: fecha año, mes y día.
- TIME: la hora del día en hora, minutos y segundos.
- INTERVAL: diferencia entre dos fechas.
Pregunta relacionada en
2015 (IL)
Cláusula JOIN:
- LEFT JOIN:
- RIGHT JOIN:
- FULL JOIN:
- CROSS:
Para búsquedas aproximadas con LIKE se puede usar el comodín %, por ejemplo '%drid' serviría para encontrar 'Madrid'.
Pregunta relacionada en
2015 (PI)
La operación ROLLBACK devuelve la base de datos a un estado anterior.
Explain Plan desglosa las operaciones SELECT, INSERT, UPDATE, DELETE.
Procedimientos almacenados
Los procedimientos almacenados son programas guardados dentro de la base de datos y que son accesibles para las aplicaciones que la consultan. Su utilidad puede ser para validar datos, controlar el acceso, etc. La ventaja es que se ejecutan en el motor de la base de datos y solo devuelven los resultados solicitados, siendo más rápido todo el proceso.
Eventos y disparadores
Los eventos o disparadores (triggers) son objetos que se ejecutan cuando se realiza una operación de INSERT, DELETE o UPDATE sobre una tabla de una base de datos. Esto mejoran el mantenimiento de la base de datos ya que no requiere de intervención humana, reduciendo los errores.
Los triggers se componen de:
- Llamada de activación: la sentencia que activa el trigger.
- Restricción: la condición que ha de cumplirse para que se ejecute el código asociado al trigger.
- Acción a ejecutar: el código en sí que se ejecuta al cumplirse la restricción o condición.
MySQL
ALL, ANY, LIKE, UNION, IN, tipos de datos
Operaciones con cadenas:[1]
- CONCAT(): concatena varias cadenas. Ej: CONCAT('H', 'ol', 'a!');
- LEFT(): devuelve los N caracteres más a la izquierda. Ej: LEFT('12345', 3);
- LENGTH(): longitud de la cadena. Ej: LENGTH('Una cadena');
- LIKE: compara con patrón. Ej: LIKE 'Maria%';
- LOWER(): minimiza una cadena. También LCASE(). Ej: LOWER('HOLA');
- LPAD(): rellena hasta N caracteres por la izquierda. Ej: LPAD('Ana', 10, ' ');
- LTRIM(): elimina espacios al comienzo. Ej: LTRIM(' Ana');
- REPLACE(): reemplaza subcadenas. Ej: REPLACE('Arg!', 'r', 'rrr');
- RIGHT(): devuelve los N caracteres más a la derecha. Ej: RIGHT('XYZ', 2);
- RPAD(): rellena hasta N caracteres por la derecha. Ej: RPAD('Ana', 10, ' ');
- RTRIM(): elimina espacios al final. Ej: RTRIM('Ana ');
- STR_TO_DATE(): convierte cadena en fecha. Ej: STR_TO_DATE('2010-01-01', '%Y-%m-%d');
- SUBSTRING(): extrae subcadena. También SUBSTR(). Ej: SUBSTRING('Nombre', 3, 2);
- UPPER(): maximiza una cadena. También UCASE(). Ej: UPPER('adios');
Las cadenas empiezan en la posición 1.
Operaciones con fechas:[2]
- CURRENT_DATE(): devuelve la fecha actual (YYYY-MM-DD). También CURDATE();
- CURRENT_TIME(): devuelve la hora actual (HH:MM:SS). También CURTIME();
- DATE_ADD(): sumar intervalo a una fecha. Ej: DATE_ADD(CURDATE(), INTERVAL 1 DAY);
- DATE_SUB(): resta intervalo a una fecha. Ej: DATE_SUB(CURDATE(), INTERVAL 1 YEAR);
- DATE_FORMAT(): imprime fecha en formato indicado. Ej: DATE_FORMAT(CURDATE(), "%Y-%m-%d %H:%i:%S");
- HOUR(): extrae la hora de una fecha (0..23). Ej: HOUR(NOW());
- MINUTE(): extrae los minutos de una fecha (0..59). Ej: MINUTE(NOW());
- MONTH(): extrae el mes de una fecha. Ej: MONTH(CURDATE());
- NOW(): devuelve la fecha y hora actual (YYYY-MM-DD HH:MM:SS).
- SECOND(): extrae los segundos de una fecha (0..59). Ej: SECOND(NOW());
- TO_DAYS(): convierte una fecha en días desde el año 0. Ej: TO_DAYS(CURDATE());
- TO_SECONDS(): convierte una fecha en segundos desde el año 0. Ej: TO_SECONDS(CURDATE());
- WEEKDAY(): devuelve el día de la semana (0..6, 0 = Monday). Ej: WEEKDAY(CURDATE());
- WEEKOFYEAR(): devuelve la semana del año (1..53). Ej: WEEKOFYEAR(CURDATE());
- YEAR(): extrae el año de una fecha. Ej: YEAR(CURDATE());
Formatos de fechas:
- %b: nombre del mes abreviado (Jan..Dec)
- %c: mes (0..12)
- %D: día del mes con sufijo (1st..3rd..)
- %d: día del mes (00..31)
- %e: día del mes (0..31)
- %H: hora (00..23)
- %h: hora (01..12)
- %i: minutos (00..59)
- %M: nombre del mes completo (January..December)
- %m: mes (01..12)
- %S: segundos (00..59)
- %T: hora (hh:mm:ss)
- %Y: año (YYYY)
- %y: año (YY)
PostgreSQL
ORACLE
NoSQL
Tema 5: Diseño y programación orientada a objetos
Diseño y programación orientada a objetos. Elementos y componentes software: objetos, clases, herencia, métodos, sobrecarga. Ventajas e inconvenientes. Patrones de diseño y lenguaje de modelado unificado (UML).
La programación orientada a objetos es un paradigma de la programación basado en el concepto de objetos, que pueden contener datos en forma de atributos, y código en forma de métodos.
Una característica de los objetos es que los métodos pueden acceder a sus datos y modificarlos (this/self). En el software orientado a objetos, los objetos interactúan entre ellos.
Pregunta relacionada en
2016 (PI)
Los lenguajes orientados a objetos más populares están basados en clases, siendo los objetos instancias de estas clases. Lenguajes orientados a objetos son Java, C++, C#, Python, PHP, Ruby, Perl, Object Pascal, Objective-C, Ada 95, Eiffel, Dart, Swift, Scala, Common Lisp, Vala, Visual Basic 6.0, y Smalltalk.
Algunos conceptos fundamentales de la POO:
- Clase: es la definición y abstracción de las características comunes de un conjunto de objetos.
- Objeto: instancia de una clase, se corresponde con un objeto del mundo real habitualmente. Contiene atributos y métodos.
- Atributo: propiedad o dato asociado a un objeto.
- Método: procedimiento asociado a un objeto.
Pregunta relacionada en
2015 (IL) 2014 (PI)
Características de la POO:
- Abstracción: expresa las características básicas de un objeto, lo que le diferencia de otros, permitiendo crear una clase con esas características compartidas.
- Herencia: permite crear clases reutilizando otras preexistentes. La subclase obtiene el comportamiento (métodos) y atributos de la superclase. La superclase es más general y la subclase más específica. Por ejemplo una clase perro puede heredar de una superclase mamífero.
- Herencia simple: una subclase hereda de una única superclase.
- Herencia múltiple: una subclase hereda de varias superclases. Java admite herencia simple y polimorfismo, no admite herencia múltiple para evitar ambigüedades. C++ sí soporta herencia múltiple, igualmente que Python, Eiffel y Perl.
- Sobrecarga: permite nombrar con el mismo identificador a más de una variable o método que realizan operaciones distintas. Por ejemplo una función podría llamarse igual, pero en un caso aceptar distintos parámetros y en otro caso no requerir ninguno.
- Polimorfismo: permite enviar mensajes sintácticamente iguales a objetos de clases distintas y ser comprendidos por estos.
- Encapsulamiento: oculta el estado interno de un objeto, de modo que sus atributos solo pueden accederse (leerse o modificarse) a través de los métodos proporcionados por la clase.
- Acoplamiento: es la interdependencia entre clases. Una clase hija depende y accede a las características de la clase padre, pero no al contrario.
- Recolección de basura: consiste en la liberación automática de zonas de memoria que contienen objetos que ya no se usan.
Ventajas e inconvenientes de la POO:
UML
El Lenguaje Unificado de Modelado (UML) es un lenguaje de propósito general en el campo de la ingeniería del software, para proveer de un modo estándar de visualizar el diseño de sistemas. Fue creado en los años 1990.
Pregunta relacionada en
2016 (PI)
- Diagramas:
- Estructurales: muestran la estructura estática de los objetos del sistema.
- De clases: es el más usado, fundamental para cualquier solución orientada a objetos. Contiene las clases, atributos y operaciones y relaciones entre clases.
- De componentes: muestran la relación estructural entre componentes de un sistema. Los componentes se comunican a través de interfaces, y estos se enlazan mediante conectores.
- De despliegue: muestra el hardware del sistema y el software de ese hardware.
- De objetos: similares a los diagramas de clases. Indican las relaciones entre objetos.
- De paquetes: indican las dependencias entre paquetes de un sistema.
- De perfiles:
- Estructura compuesta: muestran la estructura interna de una clase.
- Comportamiento: muestran el comportamiento dinámico de los objetos del sistema.
- De actividades: muestran los flujos de trabajo.
- De casos de uso: ofrecen una visión general de los actores del sistema, sus funciones y como interactúan. No deben ser ni muy genéricos ni muy específicos.
- De máquinas de estados:
- Interacción:
- Global de interacciones:
- De comunicación:
- De secuencia: muestran las interacciones entre objetos y el orden en que se producen.
- De tiempos: muestran el comportamiento de los objetos en un tiempo dado.
- Mecanismos de extensibilidad:
- Estereotipo: extiende el vocabulario UML.
- Restricciones: extiende la semántica.
- Valores etiquetados: extiende las propiedades de un estereotipo permitiendo añadir más información.
Patrones de diseño
Pregunta relacionada en
2016 (IL) 2015 (IL)
Los patrones de diseño son técnicas para resolver problemas típicos durante el desarrollo de software.
- Creacionales: solucionan problemas de creación de instancias.
- Builder: abstrae el proceso de creación de un objeto complejo, centralizando dicho proceso en un único punto.
- Object Pool: se obtienen objetos nuevos clonando otros.
- Singleton: se restringe a uno el número de objetos que se pueden crear de una clase.
- Modelo vista controlador (MVC): separa los datos, la lógica de negocio y su representación. El modelo es la representación de la información, el controlador responde a los eventos y la vista muestra un formato adecuado para interactuar.
- Estructurales: solucionan problemas de composición (agregación) de clases y objetos:
- Adaptador: transforma una interfaz en otra, de tal modo que una clase que no pueda utilizar la primera haga uso de ella a través de la segunda.
- Bridge: separa una abstracción de su implementación para que ambas puedan ser modificadas por separado sin alterar la otra.
- Composite: construye objetos complejos a partir de otros más simples, a través de la composición recursiva y a una estructura en forma de árbol.
- Fachada: reduce la complejidad con la división en subsistemas, minimizando las comunicaciones y dependencias entre ellos.
- Proxy: patrón estructural que proporciona un intermediario de un objeto para controlar su acceso.
- Comportamiento: ofrecen soluciones respecto a la interacción y responsabilidades entre clases y objetos, así como los algoritmos que encapsulan.
- Command: permite solicitar una operación a un objeto sin conocer el contenido de la operación ni el receptor de la misma.
- Intérprete: dado un lenguaje, define una gramática para dicho lenguaje, así como las herramientas necesarias para interpretarlo.
- Iterator: permite realizar recorridos sobre objetos compuestos independientemente de la implementación de estos.
- Memento: permite volver a estados anteriores del sistema.
Tema 6: Arquitectura Java EE y plataforma .NET
Arquitectura Java EE y plataforma .NET: componentes, persistencia y seguridad. Características, elementos y funciones en entornos Java, C, C++ y .Net.
Pregunta relacionada en
2016-SE (PI)
La diferencia entre un struct y una class es que los miembros de las estructuras son públicos por defecto, mientras que los de las clases son privados. Cuando un struct se pasa como argumento, en realidad se está pasando una copia del struct, y si es modificada dentro de la función, no afectará a los valores del struct original. Mientras que los objetos (class) se pasan por referencia, por lo que cualquier cambio se verá reflejado en el objeto original.
Java
Java es un lenguaje de programación de propósito general, concurrente, de tipado fuerte y orientado a objetos. Creado en 1996 por Sun Microsystems. El codigo Java programado es compilado, generando un bytecode, que se ejecuta sobre la máquina virtual Java (JVM). En teoría, el código puede ejecutarse en cualquier dispositivo o plataforma para la que exista una máquina virtual Java, con ningún cambio o mínimos cambios en el código, lo que se conoce como independiente de la plataforma.
Java cuenta con recolector de basura. Los ficheros java suelen tener la extensión .java, generándose un .class al compilar.
Un IDE popular es Eclipse con gran cantidad de plugins.
Un Hola mundo en Java: public class HolaMundo { public static void main(String[] args) { System.out.println("Hola mundo"); } } Los atributos, métodos y clases pueden ser:
Las variables se declaran e inicializan de la siguiente forma: boolean booleano = true; int entero = 5; // tambien long float flotante = 5.7; // tambien double String cadena = "Hola"; // tambien char Integer[] enteros = {1, 2, 3} // vector de enteros Vector Las variables pueden empezar por _ y contener caracteres Unicode. |
Las estructuras de control son: if (condicion) { ...; } else { ...; } variable = (condicion) ? ... : ...; switch (condicion) { case 1: ...; break; case 2: ...; break; default: ...; break; } for (inicio; condicion; incremento) { ...; } while (condicion) { ...; } do { ...; } while (condicion); Las excepciones se controlan así: try { int a = 1; int b = 0; int n = a / b; } catch (ArithmeticException e) { System.out.println("No se puede dividir por cero"); } |
Palabras reservadas en JAVA:
- true, false, null
- abstract
- assert
- boolean
- break
- byte
- case
- catch
- char
- class
- const (sin uso)
- continue
- default
- do
- double
- else
- enum
- extends
- final
- finally
- float
- for
- goto (sin uso)
- if
- implements
- import
- instanceof
- int
- interface
- long
- native
- new
- package
- private
- protected
- public
- return
- short
- static
- strictfp
- super
- switch
- synchronized
- this
- throw
- throws
- transient
- try
- void
- volatile
- while
Pregunta relacionada en
2016 (IL)
Las API Java son interfaces de programación de aplicaciones, proporcionan clases útiles para el desarrollo de programas. Pueden ser oficiales (paquetes java.*) o no.
- AWT: Abstract Window Toolkit, kit de herramientas para interfaces gráficas. Ahora forma parte de Java Foundation Classes (JFC). Ej: import java.awt.*
- JavaFX: para la creación de aplicaciones web con capacidades de aplicaciones de escritorio.
- JAXP: procesa documentos XML a través de SAX, DOM y XSLT.
- JAX-RPC: servicios web preservando descripción WSDL. Renombrado a JAX-WS.
- JAX-RS: creación de servicios web REST.
- JAX-WS: creación de servicios web en XML.
- JUnit: test unitarios.
- Swing: biblioteca gráfica con widgets como cajas de texto, botones, listas, tablas, etc. Ej: import javax.swing.*
- SWT: biblioteca gráfica creada por Eclipse.
Otros paquetes:
- java.io: operaciones de entrada-salida.
- java.lang: clases fundamentales de Java, como Object o Class.
- java.net: rutinas de entrada-salida para redes, permitiendo peticiones HTTP.
- java.util: estructuras de datos que agregan objetos.
- javax.servlet
Los applets se ejecutan en el navegador, mientras que los servlets se ejecutan en un servidor web.
En HTML5 ya no existe la etiqueta APPLET.
C
Intro, breve historia, caracteristicas del lencuaje, hello world, variables, operadores, estructuras de control, funciones, excepciones, entrada y salida, interfaz gráfica
Un Hola mundo en C: Las variables se declaran e inicializan de la siguiente forma: |
Las excepciones se controlan así: |
En C hay que declarar las variables antes de usarlas.
- Pueden: contener letras o números, empezar por _
- No pueden: comenzar por número, contener letras distintas a A-Z, ser palabra reservada o booleano.
Palabras reservadas en C:
- auto
- break
- case
- char
- const
- continue
- default
- do
- double
- else
- enum
- extern
- float
- for
- goto
- if
- int
- long
- register
- return
- short
- signed
- sizeof
- static
- struct
- switch
- typedef
- union
- unsigned
- void
- volatile
- while
Pregunta relacionada en
2016 (IL)
Secuencias de escape en C:
- \a: sonido alerta beep
- \b: backspace, retroceso
- \f: salto de página
- \n: salto de línea
- \r: retorno de carro
- \t: tabulador horizontal
- \v: tabulador vertical
- \\: barra invertida
- \': comilla simple
- \": comilla doble
- \?: interrogación
Pregunta relacionada en
2015 (IL)
Biblioteca estándar de C:
- assert.h: detección de errores lógicos al debuguear
- complex.h: operaciones con números complejos
- ctype.h: clasificación de caracteres
- errno.h: códigos de error
- fenv.h: entorno de coma flotante
- float.h: macros de coma flotante
- inttypes.h: enteros de ancho exacto
- iso646.h: conjunto de caracteres iso 646
- limits.h: macros de números enteros
- locale.h: localización (idioma)
- math.h: funciones matemáticas
- setjmp.h:
- signal.h: funciones para señales
- stdalign.h:
- stdatomic.h:
- stdbool.h: define el tipo booleano
- stddef.h: tipos y macros útiles
- stdint.h: enteros de ancho exacto
- stdio.h: funciones de entrada y salida
- stdlib.h: conversiones numéricas, números pseudo-aleatorios, reserva de memoria, procesos
- stdnoreturn.h:
- string.h: operaciones con cadenas
- tgmath.h: funciones matemáticas
- threads.h: manejo de hilos
- time.h: funciones de fecha y hora
- uchar.h: unicode
- wchar.h: cadenas de ancho largo
- wctype.h: conversión de cadenas
La biblioteca no estándar conio.h es para operaciones de entrada y salida.
Pregunta relacionada en
2015 (PI)
Las bibliotecas se importan con la directiva #include
C++
Intro, breve historia, caracteristicas del lencuaje, hello world, variables, operadores, estructuras de control, funciones, excepciones, entrada y salida, interfaz gráfica
Un Hola mundo en C++: Las variables se declaran e inicializan de la siguiente forma: |
Las excepciones se controlan así: |
Palabras reservadas en C++:
- asm
- auto
- bool
- break
- case
- catch
- char
- class
- const
- const_cast
- continue
- default
- delete
- do
- double
- dynamic_cast
- else
- enum
- explicit
- extern
- false
- float
- for
- friend
- goto
- if
- inline
- int
- long
- mutable
- namespace
- new
- operator
- private
- protected
- public
- register
- reinterpret_cast
- return
- short
- signed
- sizeof
- static
- static_cast
- struct
- switch
- template
- this
- throw
- true
- try
- typedef
- typeid
- typename
- union
- unsigned
- using
- virtual
- void
- volatile
- while
Biblioteca estándar de C++:
- array
- bitset
- deque: cola doblemente enlazada
- list: lista doblemente enlazada
- map
- queue: colas
- set: conjuntos
- stack: pilas
- vector: vectores
- fstream: ficheros
- iostream: e/s básica
- algorithm: algoritmos frecuentes
- complex: números complejos
- exception: excepciones
- iterator: iteradores
- memory: control de memoria
- numeric: procesamiento numérico
- stdexcept: excepciones
- string: cadenas de caracteres
A diferencia de C, en C++ la directiva #include no lleva el .h en el nombre de la biblioteca, pero sigue conservándose el formato de comillas y < >.
Para incluir una biblioteca estándar de C en C++, se añade una 'c' delante al nombre y se elimina el .h. Así la biblioteca assert.h se convierte en cassert, stdio.h en cstdio, etc.
C#
C# (C Sharp) es un lenguaje de programación multiparadigma con tipado fuerte. Desarrollado por Microsoft para la plataforma .NET y posteriormente aprobado como estándar por ECMA e ISO. C# es de propósito general y orientado a objetos.
El proyecto Mono proporciona un compilador open-source para C#. Existe un entorno de desarrollo integrado (IDE) llamado MonoDevelop.[3]
Un Hola mundo en C#: using System; namespace HolaMundo { class MainClass { public static void Main(string[] args) { Console.WriteLine("Hola mundo"); } } } Los atributos de las clases pueden ser:[4]
Las variables se declaran e inicializan de la siguiente forma: bool booleano = true; int entero = 5; // tambien long float flotante = 5.7; // tambien double string cadena = "Hola"; // tambien char int[] enteros = {1, 2, 3, 4}; // vector de enteros List< string > lista = new List< string >(); // clase lista Las variables pueden empezar por _ y contener caracteres Unicode. |
Las estructuras de control son: if (condicion) { ...; } else { ...; } variable = (condicion) ? ... : ...; switch (condicion) { case 1: ...; break; case 2: ...; break; default: ...; break; } Las excepciones se controlan así: try { int a = 1; int b = 0; int n = a / b; } catch (DivideByZeroException e) { Console.WriteLine("No se puede dividir por cero"); } |
Palabras reservadas en C#:
- abstract
- as
- base
- bool
- break
- byte
- case
- catch
- char
- checked
- class
- const
- continue
- decimal
- default
- delegate
- do
- double
- else
- enum
- event
- explicit
- extern
- false
- finally
- fixed
- float
- for
- foreach
- goto
- if
- implicit
- in
- int
- interface
- internal
- is
- lock
- long
- namespace
- new
- null
- object
- operator
- out
- override
- params
- private
- protected
- public
- readonly
- ref
- return
- sbyte
- sealed
- short
- sizeof
- stackalloc
- static
- string
- struct
- switch
- this
- throw
- true
- try
- typeof
- uint
- ulong
- unchecked
- unsafe
- ushort
- using
- using static
- virtual
- void
- volatile
- while
Pregunta relacionada en
2016-SE (PI)
Para hacer uso de espacios de nombres (namespaces) se utiliza la directiva using. Una muy frecuente es using System con funciones básicas del sistema. Dentro de los namespaces están las clases, por ejemplo la clase Console está dentro del namespace System. La llamada System.Console.WriteLine() imprimirá texto por consola.
Pregunta relacionada en
2016-SE (PI)
Namespaces, clases y métodos frecuentes:
- String: String cadena;
- Length: longitud de la cadena. Ej: cadena.Length;
- Split(): separa una cadena. Ej: cadena.Split(',');
- Substring(): extrae subcadena. Ej: cadena.Substring(0, 3);
- ToLower(): minimiza cadena. Ej: cadena.ToLower();
- ToUpper(): maximiza cadena. Ej: cadena.ToUpper();
- System.Collections.Generic:[5]
- BitArray: array de booleanos
- Comparer: compara dos objetos
- DictionaryBase: pares clave-valor
- Hashtable: pares clave-valor con clave hasheada
- List: el tamaño aumenta dinámicamente. Ej: lista.Add("hola"); lista.Count; lista.Remove("hola");
- Queue: colas. Ej: cola.Enqueue("hola"); cola.Peek(); cola.Dequeue();
- SortedList: lista de pares clave-valor ordenada por clave y accesible por clave e índice
- Stack: pilas. Ej: pila.Push(); pila.Peek(); pila.Pop();
- StructuralComparison: comparación estructural de dos colecciones de objetos
- System.Console
- Read(): lee el siguiente carácter de la entrada estándar.
- ReadLine(): lee la siguiente línea de la entrada estándar. Ej: cadena = Console.ReadLine();
- WriteLine(): escribe una línea en la salida estándar. Ej: Console.WriteLine("Hola {0}!", cadena);
- System.Web.UI.HtmlControls[6]
- HtmlAnchor: proporciona acceso al elemento HTML A
- HtmlButton:
- HtmlForm:
- HtmlHead:
- HtmlInputButton:
- HtmlInputCheckBox:
- HtmlInputHidden:
- HtmlInputPassword:
- HtmlInputRadioButton:
- HtmlInputSubmit:
- HtmlMeta:
- HtmlTable:
- HtmlTableCell: acceso a los elementos TD y TH
- HtmlTableRow: acceso al elemento TR
- HtmlTitle: acceso al elemento TITLE
Para conversiones entre tipos, son frecuentes .ToString() para convertir números en cadenas, o al contrario Int32.Parse("55"). Para convertir cadenas en fechas, se usa DateTime.Parse() y DateTime.ParseExact().
Pregunta relacionada en
2016-SE (PI)
Orden de secuencia de eventos para páginas ASP.NET: PreInit, Init, InitComplete, PreLoad, Load, LoadComplete, PreRender, PreRenderComplete, SaveStateComplete, Render, Unload.[7]
Tema 7: Arquitectura de sistemas cliente/servidor
Arquitectura de sistemas cliente/servidor y multicapas: componentes y operación. Arquitecturas de servicios web y protocolos asociados.
Cliente/servidor
Pregunta relacionada en
2016 (IL) 2015 (IL) 2014 (PI)
En la arquitectura cliente-servidor las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta.
En la arquitectura multicapa hay tres tipos de nodos: clientes, servidores de aplicación y servidores de base de datos. Se conoce como arquitectura en tres capas, siendo más escalable y modificable.
El middleware permite la interoperabilidad entre aplicaciones distribuidas.
El thin client se encarga de la presentación mientras el servidor hace todo lo demás.
Modelo de tres capas
- Capa de presentación: es lo que ve el usuario, presenta los resultados al usuario y recibe su interacción. También se llama capa de usuario. Se comunica con la capa de negocio solamente.
- Capa de negocio: comprende los programas, reciben las peticiones de la capa de presentación y hace las peticiones pertinentes a la capa de datos. También se llama capa de lógica de negocio.
- Capa de datos: recibe las peticiones de consulta o almacenamiento desde la capa de negocio. La forma uno o varios gestores de bases de datos.
Servicios web
Un servicio web es una tecnología que utiliza protocolos y estándares para intercambiar datos entre aplicaciones. Varios aplicaciones software en distintos lenguajes ejecutadas en cualquier plataforma, pueden usar los servicios web para intercambiar datos en una red. Esta interoperabilidad es posible con los estándares abiertos.
Estándares utilizados:
- Web Services Protocol Stack (WSPS): conjunto de servicios y protocolos de estos servicios.
- Extensive Markup Language (XML): formato para los datos que se intercambian.
- Simple Object Access Protocol (SOAP): protocolo para los intercambios.
- XML Remote Procedure Call (XML-RPC): protocolo para los intercambios.
- Web Services Description Language (WSDL): lenguaje de la interfaz pública de los servicios web.
- Universal Description, Discovery and Integration (UDDI): protocolo para publicar información sobre servicios web (si están disponibles, etc).
- Web Service Security (WS-Security): protocolo de seguridad, garantiza la autenticación de actores y la confidencialidad de los mensajes enviados.
- Representational State Transfer (REST): permite realizar operaciones utilizando el protocolo HTTP y sus métodos GET, POT, PUT, DELETE, etc.
Pregunta relacionada en
2015 (PI)
Frameworks para servicios web:
- Apache Axis
- Apache CXF
- CodeIgniter
- gSOAP
- GlassFish
- .NET Framework
- Web Services Interoperability Technology
- Web Services Invocation Framework
- WSO2 WSF/PHP
- XFire
- XML Interface for Network Services
- Zend Framework
Pregunta relacionada en
2016 (PI)
SOAP es un protocolo que define cómo se deben comunicar dos objetos de diferentes procesos empleando XML. Fue desarrollado por Microsoft e IBM. Todo mensaje SOAP tiene esta estructura: envelope (obligatorio), header, body (obligatorio) y fault. El envelope envuelve el conjunto y es el raíz.
WSDL (Web Services Description Language) es un formato de XML para describir servicios web, describe la forma de comunicación (requisitos y formatos). La estructura de WSDL contiene TYPES (tipos de datos usados en los mensajes), MESSAGE (elementos de mensaje), PORTTYPE (operaciones permitidas y mensajes intercambiados), BINDING (protocolos de comunicación usados), SERVICE (puertos y direcciones).
Orientada a servicios
Pregunta relacionada en
2016 (IL)
La arquitectura orientada a servicios (SOA) es un diseño de software en el que los servicios son proporcionados a otros componentes a través de un protocolo de comunicaciones sobre una red. Se trata de servicios independientes que pueden accederse remótamente y ser actualizados independientemente.
- Servicio: función que acepta una llamada y devuelve una respuesta mediante una interfa bien definida.
- Orquestación: coordinación de los servicios y proveer la lógica para procesar datos.
- Sin estado: un servicio no depende de la condición de otros servicios. Los servicios son orquestados en secuencias que realizan la lógica del negocio.
- Proveedor: la función que ofrece el servicio en respuesta a una petición de un consumidor.
- Consumidor: la función que consume la respuesta del proveedor.
Tema 8: Aplicaciones web
Aplicaciones web. Desarrollo web front-end y en servidor. Lenguajes: HTML, XML y sus derivaciones. Navegadores y lenguajes de programación web. Lenguajes de script.
Pregunta relacionada en
2015 (PI)
Las API REST cuentan con las operaciones básicas GET, POST, PUT, DELETE.
HTML, XHTML y XML
HTML
Un documento HTML se compone generalmente de un DOCTYPE, un elemento HTML raíz, un HEAD y un BODY. El DOCTYPE indica de qué tipo de documento se trata (versión del HTML, idioma, codificación, etc). El elemento HTML indica el comienzo del documento en sí. El HEAD permite indicar metadatos adicionales (autor, fecha, descripción, palabras clave. Y el BODY incluye todo el texto, imágenes, etc, de la página web.
En general las etiquetas se abren y cierran, aunque hay algunas como IMG que no.
Las etiquetas más frecuentes y su situación dentro del documento son las siguientes:
- HEAD
- BASE: indica una URL de base para todos los HREF relativos. Solo se permite un BASE por documento.
- LINK: enlaza a otros documentos, como a hojas de estilo CSS.
- link rel="stylesheet" type="text/css" href="url" title="descripcion del estilo"
- META: permite indicar metadatos como autor, fecha, descripción, palabras clave. También codificación.
- meta charset="utf-8"
- meta name="description" content="Una web sobre informatica"
- OBJECT: para incluir objetos, aunque es raramente usado en el HEAD.
- SCRIPT: para incrustar código (por ejemplo Javascript) o para enlazar a ficheros externos mediante el atributo SRC.
- script src="enlace/a/fichero.js"
- STYLE: indica los estilos del documento.
- style type="text/css"
- TITLE: define el título del documento.
- BODY
- ABBR: abreviaturas, ACRONYM está obsoleto.
- P: párrafos.
- H1/H6: distintos niveles de cabecera.
- OL: lista ordenada.
- UL: lista sin ordenar.
- LI: un elemento de una lista OL o UL.
- ASIDE: contenido separado del contenido principal, por ejemplo barras laterales o anuncios.
- BLOCKQUOTE: citas que pueden incluir párrafos. La cita sencilla es con Q.
- DIV: un bloque bien definido que puede tener su propio estilo u otras propiedades.
- FIGURE: agrupa imágenes y pies de foto.
- FIGCAPTION: para pies de foto, siempre se usa dentro de FIGURE.
- FOOTER: para incluir el autor o copyright.
- HR: línea horizontal.
- NOSCRIPT:
- PRE: texto con preformateado.
- SCRIPT: para incrustar código script en el documento.
Pregunta relacionada en
2015 (IL)
- A: para enlaces, ya sea dentro de propio sitio web o hacia otros sitios web. El atributo HREF indica la dirección de destino. El atributo TARGET permite abrir el enlace en varios sitios (_blank = nueva ventana/pestaña, _self = mismo frame (defecto), _parent = frame padre, _top = body, framename = frame indicado).
- B: negritas. También STRONG.
- I: cursivas. También EM para enfasis.
- S: tachado. También STRIKE o DEL.
- U: subrayado.
- TT: monoespaciado.
- SMALL: texto pequeño.
- BIG: texto grande.
- SUB: subíndice.
- SUP: superíndice.
- FONT: indica el tipo de fuente, color y tamaño. Mejor indicarlo con CSS.
- BR: salto de línea.
- MARK: sombreado amarillo para resaltar.
- APPLET: para embeber un applet de Java. Se prefiere OBJECT.
- AUDIO: añade un audio con reproductor.
- EMBED: inserta un objeto no estándar.
- IMG: para imágenes, se indica la dirección con el atributo SRC. Con el atributo USEMAP permite mapas de imagen.
- OBJECT: incluye un objeto indicando el tipo con TYPE. Para contenido Flash, applets Java, etc.
- SOURCE: para introducir un audio o vídeo. También con VIDEO.
- FORM: crea un formulario que hará lo estipulado en el atributo ACTION.
- BUTTON: un botón genérico.
- INPUT: elemento de entrada de datos que tiene muchos tipos.
- CHECKBOX: opción que se puede marcar o desmarcar.
- RADIO: muestra varios opciones y solo se puede escoger una.
- BUTTON: similar al botón genérico.
- SUBMIT: un botón para enviar el formulario.
- IMAGE: un botón con imagen.
- RESET: un botón para resetear el formulario a sus valores por defecto.
- TEXT: campo de texto de una línea. Con SIZE se indica el ancho visual del campo y con MAX-LENGTH el máximo de caracteres que se pueden escribir.
- SEARCH: similar a TEXT pero para búsquedas.
- PASSWORD: similar a TEXT pero oculta lo tecleado.
- FILE: para subir ficheros al servidor.
- TEL: para números de teléfono.
- EMAIL: para direcciones de email.
- URL: como TEXT pero para direcciones web.
- DATE: para escoger fecha.
- TIME: para escoger hora.
- NUMBER: como TEXT pero para números.
- RANGE: para escoger un número con una barra desplazable.
- Color: para escoger color.
- HIDDEN: no es visible en la página al ser renderizada pero sirve para almacenar datos que deban ser enviados junto al formulario.
- PROGRESS: barra de progreso.
- TEXTAREA: entrada de texto de múltiples líneas, indicandose el número de líneas con ROWS.
XHTML
Las diferencias entre HTML y XHTML son las siguientes:
- Estructura del documento
- El XHTML DOCTYPE es obligatorio
- El atributo xmlnses obligatorio
- Las etiquetas html, head, title y body son obligatorias
- Elementos XHTML
- Los elementos deben estar anidados correctamente
- Los elementos deben cerrarse siempre
- Los elementos deben estar en minúsculas
- Solo se admite un elemento raiz
- Atributos XHTML
- Los nombres de los atributos deben ir en minúscula
- Los valores de los atributos deben ir entre comillas
- No se permite la abreviación de atributos
XML
Algunas normas para XML:
- El prólogo es opcional pero debe ir en la primera línea del documento
- Solo se admite un elemento raiz
- Es sensible a mayúsculas y minúsculas
- Todos los elementos deben tener cierre
- Los elementos deben estar anidados correctamente
- Todos los valores de atributos deben ir entre comillas
- El DOCTYPE no tiene etiqueta de cierre (ni barra)
CSS
CSS es un lenguaje de hojas de estilo para describir cómo se presenta un documento escrito en un lenguaje de marcado.
Un preprocesador CSS es un programa que genera código CSS a partir de una sintaxis distinta más potente. Los preprocesadores CSS más conocidos son SASS, LESS, Stylus y PostCSS.
Selectores CSS:[8]
- *: todos los elementos
- .clase1: class="clase1"
- .clase1.clase2: class="clase1 clase2"
- .clase1 .clase2: class="clase1" y anidada class="clase2"
- #id1: id="id1"
- p: todos los elementos <p>
- div, p: todos los <div> y los <p>
- div p: todos los <p> anidados en <div>
- div > p: todos los <p> cuyo padre es <div>
- div + p: todos los <p> inmediatamente después de <div>
Javascript
JavaScript es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico.
- Definición de variables: var x; var y = 2; var z = "Hola";
- Impresión de errores: console.log("Error x");
- Función: function f(p) { p = p + 1; return p }
- Función anónima o lambda: function() { return ++p; }
- Bucle for: for (i=0;i<10;i++) { console.log(i); }
- Bucle while: while (i<10) { console.log(i); i++; }
- Bucle do-while: do { i+=1; console.log(i); } while (i<10);
- Switch: switch (x) { case "Hola": console.log("Hola..."); break; case "Adios": console.log("Adios..."); break; default: console.log("Nada"); }
- If-else: if (x == 1) { console.log("Uno"); } { else if (x == 2) { console.log("Dos"); } else { console.log("Otro"); }
- document.getElementById
- document.getElementsByName
- document.getElementsByClassname
- document.getElementsByTagname
PHP
PHP es un lenguaje de programación de propósito general de código del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico. El código es interpretado por un servidor web con un módulo de procesador de PHP que genera el HTML resultante.
Todas las variables van precedidas del carácter $. Los nombres de variables son sensibles a mínusculas y mayúsculas. Solo pueden empezar con una letra o guión bajo. No es necesario indicar el tipo al crear la variable.
- ?php echo "Hola"; ?>
- if ($a > $b) { echo "A es mayor"; } else { echo "B es mayor"; }
- for ($i = 1; $i <= 10; $i++) { echo $i; }
Algunas funciones básicas de PHP:[9]
- ceil(): redondeo al alza
- count(): cuenta los elementos de un array
- die(): equivalente a exit()
- echo(): imprime una o varias cadenas
- empty(): determina si una variable está vacía
- exit(): imprime un mensaje y sale del script
- file_get_contents(): lee un fichero
- file_put_contents(): escribe un fichero
- getenv(): lee variable de entorno
- header(): envía encabezado sin formato HTTP
- htmlentities(): convierte cadena a entidades HTML
- include(): incluye y evalúa un fichero
- ini_set(): establece una directiva de configuración
- isset(): determina si una variable está definida y no es null
- mail(): envía correo
- md5(): calcula hash md5 de una cadena
- mkdir(): crea un directorio
- phpinfo(): muestra la configuración de PHP
- preg_match(): busca una expresión regular en una cadena
- print_r(): imprime información sobre una variable
- rand(): genera un número entero aleatorio
- require(): igual que include() pero en caso de fallo se detiene el script (include() solo mostraría una advertencia)
- str_replace(): reemplaza subcadena en cadena
- str_len(): muestra longitud de una cadena
- trim(): elimina espacios en blanco al comienzo y final de una cadena
Sintaxis de comentarios, etc
Sintaxis para comentarios:
- Ada, Eiffel, Occam, ANSI SQL: -- comentario
- C, C++, C#, Java, JavaScript: //comentario /* comentario */
- HTML: < !-- -->
- JSP: <%-- --%>
- Pascal: (* comentario *)
- Perl, Ruby: #comentario
- PHP: #comentario //comentario /* comentario */
- Python: # comentario """ comentario """
- Smalltalk: "comentario"
- Visual Basic: 'comentario REM comentario
Tema 9: Accesibilidad y usabilidad
Accesibilidad, diseño universal y usabilidad. Acceso y usabilidad de las tecnologías, productos y servicios relacionados con la sociedad de la información. Confidencialidad y disponibilidad de la información en puestos de usuario final.
Definiciones
- Accesibilidad: determina si todos los usuarios pueden utilizar una aplicación o web en igualdad de condiciones. Hay que tener en cuenta las distintas discapacidades que pueden presentar los usuarios (vista, auditivas, motrices). Por ello, algunas pautas que mejoran la accesibilidad son:
- Proporcionar un texto alterntivo a las imágenes y enlaces, lo cual facilita a los usuarios invidentes el uso de lectores de pantalla.
- Vídeos con subtítulos, permiten que los sordos puedan consumir esos contenidos.
- Tamaño de texto grande o modificable, facilita su lectura.
- Elementos de interacción como botones o campos que sean claros y bien definidos, impide confusión cuando el usuario no cuenta con precisión de movimientos.
- No limitar la interacción a un dispositivo (ratón o teclado), permite que el usuario defina su dispositivo.
- Diseño universal: es aquel diseño que permite su uso al mayor número de personas posible, incuyendo por supuesto aquellas con discapacidades.
- Usabilidad: es el estudio del diseño de las aplicaciones y webs para mejorar la interacción de los usuarios, haciéndola más fácil, cómoda e intuitiva.
Herramientas
Pregunta relacionada en
2014 (PI)
- Licornio: casco con un utensilio alargado para presionar teclas, para personas con discapacidad motriz.
Software
Software para discapacitados:
- Dasher: permite escribir a personas con dificultada para usar un teclado.
- Gnopernicus: lector de pantalla para Linux, software libre.
- JAWS: lector de pantalla para Windows, software privativo.
- NVDA: lector de pantalla para Windows, software libre.
- Orca: lector de pantalla para Linux, software libre.
- Vinux: distribución basada en Ubuntu, diseñada para discapacitados visuales.
WCAG
Pregunta relacionada en
2014 (PI)
WCAG significa Web Content Accesibility Guidelines.
Los niveles de orientación son: principios, pautas, criterios de conformidad, técnicas suficientes y recomendables.
En el nivel más alto están los 4 principios fundamentales de la accesibilidad web: perceptible, operable, comprensible y robusto. Dentro de los principios están las 12 pautas.
Principios WCAG 2.0:[10]
- Perceptible
- Proporcionar alternativas textuales para todo contenido no textual de modo que se pueda convertir a otros formatos que las personas necesiten, tales como textos ampliados, braille, voz, símbolos o en un lenguaje más simple.
- Medios tempodependientes: proporcionar alternativas para los medios tempodependientes.
- Crear contenido que pueda presentarse de diferentes formas (por ejemplo, con una disposición más simple) sin perder información o estructura.
- Facilitar a los usuarios ver y oír el contenido, incluyendo la separación entre el primer plano y el fondo.
- Operable
- Proporcionar acceso a toda la funcionalidad mediante el teclado.
- Proporcionar a los usuarios el tiempo suficiente para leer y usar el contenido.
- No diseñar contenido de un modo que se sepa podría provocar ataques, espasmos o convulsiones.
- Proporcionar medios para ayudar a los usuarios a navegar, encontrar contenido y determinar dónde se encuentran.
- Comprensible
- Hacer que los contenidos textuales resulten legibles y comprensibles.
- Hacer que las páginas web aparezcan y operen de manera predecible.
- Ayudar a los usuarios a evitar y corregir los errores.
- Robusto
- Maximizar la compatibilidad con las aplicaciones de usuario actuales y futuras, incluyendo las ayudas técnicas.
Los niveles o criterios de conformidad son A, AA y AAA.[11]
Para el nivel A son 25 criterios:
- Contenido no textual
- Sólo audio y sólo vídeo (grabado)
- Subtítulos (grabados)
- Audiodescripción o medio alternativo (grabado)
- Información y relaciones
- Secuencia significativa
- Características sensoriales
- Uso del color
- Control del audio
- Teclado
- Sin trampas para el foco del teclado
- Tiempo ajustable
- Poner en pausa, detener, ocultar
- Umbral de tres destellos o menos
- Evitar bloques
- Titulado de páginas
- Orden del foco
- Propósito de los enlaces (en contexto)
- Idioma de la página
- Al recibir el foco
- Al recibir entradas
- Identificación de errores
- Etiquetas o instrucciones
- Procesamiento
- Nombre, función, valor
Para el nivel AA son 13 criterios:
- Subtítulos (en directo)
- Audiodescripción (grabado)
- Contraste (mínimo)
- Cambio de tamaño del texto
- Imágenes de texto
- Múltiples vías
- Encabezados y etiquetas
- Foco visible
- Idioma de las partes
- Navegación coherente
- Identificación coherente
- Sugerencias ante errores
- Prevención de errores (legales, financieros, datos)
Para el nivel AAA son 23 criterios:
- Lengua de señas (grabado)
- Audiodescripción ampliada (grabada)
- Medio alternativo (grabado)
- Sólo audio (en directo)
- Contraste (mejorado)
- Sonido de fondo bajo o ausente
- Presentación visual
- Imágenes de texto (sin excepciones)
- Teclado (sin excepciones)
- Sin tiempo
- Interrupciones
- Re-autentificación
- Tres destellos
- Ubicación
- Propósitos de los enlaces (sólo enlaces)
- Encabezados de sección
- Palabras inusuales
- Abreviaturas
- Nivel de lectura
- Pronunciación
- Cambios a petición
- Ayuda
- Prevención de errores (todos)
Software
Pregunta relacionada en
2015 (IL) 2015 (PI)
Entre el Software para comprobar la accesibilidad están Achecker, Examinator, SortSite y Wave.
ARIA es una especificación que indica cómo hacer accesibles aplicaciones web enriquecidas.
Tema 10: Herramientas CASE
Herramientas CASE: características. Repositorios: estructura y actualización. Generación de código y documentación. Programas para control de versiones. Plataformas de desarrollo colaborativo de software.
Las herramientas CASE son aplicaciones que ayudan en las distintas fases del desarrollo de software (o ciclo de vida), reduciendo costes, errores, etc.
- Mejora la productividad y aumenta la calidad del software
- Reduce el tiempo y coste de desarrollo y mantenimiento
- Mejora la planificación de un proyecto
- Aumenta la biblioteca de conocimiento informático de una empresa ayudando a la búsqueda de soluciones para los requisitos
- Automatiza el desarrollo del software, la documentación, la generación de código, las pruebas de errores y la gestión del proyecto
- Ayuda a la reutilización del software, portabilidad y estandarización de la documentación
- Gestión global en todas las fases de desarrollo de software con una misma herramienta
- Facilita el uso de metodologías de la ingeniería del software
Las herramientas CASE se pueden clasificar según las fases en las que se apliquen:
- Upper CASE (U-CASE): para las fases de planificación, análisis de requisitos y estrategia del desarrollo. Uso de diagramas UML.
- Middle CASE (M-CASE): para las fases de análisis y diseño.
- Lower CASE (L-CASE): ayudan a generar código de forma semiautomática, detección de errores, depuración y pruebas. También generan documentación automáticamente.
Control de versiones
El control de versiones es el seguimiento de las modificaciones realizadas en un software. Se puede hacer de forma manual pero lo apropiado es usar alguna herramienta específica, llamada sistema de control de versiones que facilita la gestión de los cambios.
Los sistemas de control de versiones pueden ser:
- Centralizados: son aquellos en los que el histórico completo se encuentra en un lugar central. Ejemplo: CVS, Subversion y Visual SourceSafe.
- Distribuidos: cada usuario tiene una copia del repositorio y suele existir uno donde se sincronizan los cambios entre usuarios. Ejemplo: Bazaar, BitKeeper, Mercurial y Git.
Pregunta relacionada en
2015 (IL)
Algunas de estas herramientas son:
- Bazaar: creado en 2007, patrocinado por Canonical. Distribuido.
- BitKeeper: creado en 2000, tiene licencia Apache. Era el usado para el kernel Linux antes de Git. Es de arquitectura distribuida.
- CVS: es acrónimo de Concurrent Versioning System. Creado en 1986 y soportado hasta 2008. Licencia GPL. Es de arquitectura centralizada.
- Darcs: creado en 2003 por David Roundy, software libre (GPL). Distribuido.
- Git: creado en 2005 por Linus Torvalds, con licencia GPL. Es de arquitectura distribuida. Se utiliza para el kernel Linux.
- GNU arch: con licencia libre, de arquitectura distribuida.
- Mercurial: creado en 2005 con licencia GPL. Es de arquitectura distribuida.
- Subversion: o SVN, creado en 2000 y tiene licencia Apache. Es de arquitectura centralizada.
- Visual SourceSafe: de Microsoft. Es centralizado.
Algunos conceptos frecuentes:
- Repositorio: lugar donde se guarda el histórico con todos los cambios y que permite regresar a cualquier punto anterior.
- Revisión: estado concreto del repositorio en un momento dado. Cada revisión se puede identificar con un número (es el caso de Subversion) o con un código o digest (Git usa SHA1).
- Rama: o branch, supone hacer una copia del código lo que permite avanzar el desarrollo de dos formas distintas. Si más adelante se considera que los cambios de una rama son útiles, se pueden fusionar (merge) con la rama principal.
- Commit: el acto de incorporar al repositorio código desarrollado en local, para que forme parte del histórico.
- Conflicto: se produce cuando dos usuarios distintos modifican la misma zona del código, lo que impide que el sistema de control de versiones pueda fusionar ambos cambios de manera autónoma.
- Diff: diferencia entre dos versiones distintas de un mismo fichero.
- Merge: fusión de los cambios en un mismo fichero. Si el merge no es posible y da conflicto, el usuario deberá resolverlo manualmente.
Comandos básicos de Git:
- git init: inicializa un repositorio vacío
- git clone: clona un repositorio
- git pull: actualiza el repositorio local
- git add fichero: añade el fichero al control de versiones, o si ya lo está sus cambios
- git commit -m "mensaje": hace un commit de los cambios añadidos al repositorio local
- git push: envía los cambios al repositorio remoto
- git branch: muestra las ramas
- git branch rama: crea una rama
- git checkout rama: cambia a dicha rama
- git merge rama: fusiona los cambios de la rama donde nos encontramos con la rama indicada
- git diff: muestra los cambios entre el repositorio local y los cambios realizados desde el último commit
- git log: muestra el log de cambios
- git mv fichero fichero2: renombra un fichero a fichero2
- git rm fichero: elimina un fichero del repositorio
- git status: muestra el estado del repositorio (cambios, ficheros nuevos, ficheros sin seguimiento, etc)
Plataformas de desarrollo colaborativo de software
Existe forjas que ofrecen alojamiento de proyectos para distintos sistemas de control de versiones. Para Git existe GitHub, GitLab (anteriormente Gitorious) y GNU Savannah. Para Subversion estaba Google Code.
Entre las herramientas de seguimiento de errores (bug tracking) destacan Bugzilla (creada por Mozilla y de código abierto), Trac (libre) y JIRA (propietaria).
El groupware es aquel software que facilita el trabajo en grupo.
Un LMS o Learning Management System es un software para el aprendizaje a distancia, utilizado entre otros por universidades. Entre sus capacidades están la gestión de usuarios, publicación de contenidos, foros, videoconferencias. Los LMS más usados son Blackboard, Canvas, Desire2Learn, Moodle y Sakai. Los cursos pueden exportarse empaquetados en formatos como SCORM (Shareable Content Object Reference Model). El e-learning (electronic learning) es el aprendizaje en línea, b-learning (blended-learning) combina aprendizaje en el aula y en línea, m-learning (mobile-learning) es el aprendizaje con dispositivos móviles. Un MOOC (Massive Online Open Courses) es un curso online en abierto para muchas personas, las plataformas más famosas son Coursera, edX, Khan Academy, Udacity, Udemy. Los NOOC (Nano-MOOC) son pequeños cursos de apenas unas horas.
Un CMS o Content Management System es un gestor de contenidos que facilita la creación de portales estructurados y su gestión. Los CMS más usados son WordPress, Joomla, Alfresco, DSpace, OpenCMS, Drupal, MediaWiki.
Un ERP o Enterprise Resource Planning es un sistema de planificación de recursos empresariales.
Fuentes
- Para confeccionar estos apuntes se han utilizado en ocasiones artículos de Wikipedia.
Referencias
- ↑ MySQL: String Functions
- ↑ Date and Time Functions
- ↑ Curso C# con Mono
- ↑ Niveles de accesibilidad
- ↑ System.Collections.Generic Namespace
- ↑ Espacio de nombres System.Web.UI.HtmlControls
- ↑ Understanding the order of Page events
- ↑ Selectores CSS
- ↑ 25 Essential PHP Functions
- ↑ Pautas WCAG 2.0
- ↑ Criterios de conformidad de WCAG 2.0
Oposiciones | |
---|---|
Apuntes TAI 2017 | Bloque I · Bloque II · Bloque III · Bloque IV |
Apuntes TAI 2018 | Bloque I · Bloque II · Bloque III · Bloque IV |
Exámenes | Análisis de exámenes |