Bloque III. Desarrollo de sistemas - La web de emijrp

Oposiciones
Apuntes Bloque I · Bloque II · Bloque III · Bloque IV

El Bloque III. Desarrollo de sistemas de las Oposiciones a TAI 2017 se compone de 10 temas.

Tabla de contenidos
 1. Tema 1: Modelo conceptual de datos
    1.1 Modelo conceptual de datos
    1.2 Diagramas de flujo de datos
 2. Tema 2: Diseño de bases de datos
    2.1 Diseño lógico y físico
    2.2 Normalización
    2.3 12 reglas de Codd
 3. Tema 3: Lenguajes de programación
    3.1 Paradigmas
    3.2 Estructuras
    3.3 Lenguajes
 4. Tema 4: Lenguajes de interrogación de bases de datos
    4.1 ANSI SQL
    4.2 Procedimientos almacenados
    4.3 Eventos y disparadores
 5. Tema 5: Diseño y programación orientada a objetos
    5.1 UML
    5.2 Patrones de diseño
 6. Tema 6: Arquitectura Java EE y plataforma .NET
    6.1 Java
    6.2 C
    6.3 C++
    6.4 C#
 7. Tema 7: Arquitectura de sistemas cliente/servidor
    7.1 Cliente/servidor
    7.2 Servicios web
       7.2.1 Orientada a servicios
 8. Tema 8: Aplicaciones web
    8.1 HTML, XHTML y XML
       8.1.1 HTML
       8.1.2 XHTML
       8.1.3 XML
    8.2 CSS
    8.3 Javascript
    8.4 PHP
    8.5 Sintaxis de comentarios, etc
 9. Tema 9: Accesibilidad y usabilidad
    9.1 Definiciones
    9.2 Herramientas
    9.3 Software
    9.4 WCAG
    9.5 Software
 10. Tema 10: Herramientas CASE
    10.1 Control de versiones
    10.2 Plataformas de desarrollo colaborativo de software
 11. Fuentes
 12. Referencias

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

Diagrama ER.
Diagrama ER.

Pregunta relacionada en convocatoria 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í.

Pregunta relacionada en convocatoria 2015 (IL)

Diagramas de flujo de datos

Componentes de los DFD.
Componentes de los DFD.

Un Diagrama de Flujo de Datos (DFD) es una representación gráfica del flujo de datos y los cambios que 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 convocatoria 2015 (IL) 2015 (PI)

Componentes de los DFD:

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 convocatoria 2016 (IL) 2016 (PI)

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 convocatoria 2016 (IL) 2016 (PI)

Diseño lógico y físico

Normalización

Pregunta relacionada en convocatoria 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):

Segunda Forma Normal (2FN):

Tercera Forma Normal (3FN):

Existe niveles superiores a la 3FN: BCNF, 4NF, 5NF.

12 reglas de Codd

Pregunta relacionada en convocatoria 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.

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 convocatoria 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.

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.

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:

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 convocatoria 2016 (IL) 2015 (IL)

Las transacciones de un sistema de gestión de bases de datos deben cumplir la regla ACID:

Pregunta relacionada en convocatoria 2015 (IL)

Los niveles de abstracción de base de datos son:

Pregunta relacionada en convocatoria 2015 (IL) 2015 (PI) 2014 (PI)

En el álgebra relacional las operaciones son:

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 convocatoria 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.

Pregunta relacionada en convocatoria 2015 (IL)

Cláusula JOIN:

Para búsquedas aproximadas con LIKE se puede usar el comodín %, por ejemplo '%drid' serviría para encontrar 'Madrid'.

Pregunta relacionada en convocatoria 2015 (PI)

La operación ROLLBACK devuelve la base de datos a un estado anterior.

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:

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 convocatoria 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:

Pregunta relacionada en convocatoria 2015 (IL) 2014 (PI)

Características de la POO:

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 convocatoria 2016 (PI)

Patrones de diseño

Pregunta relacionada en convocatoria 2016 (IL) 2015 (IL)

Los patrones de diseño son técnicas para resolver problemas típicos durante el desarrollo de software.

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.

Java

Intro, breve historia, caracteristicas del lencuaje, hello world, variables, operadores, estructuras de control, funciones, excepciones, entrada y salida, interfaz gráfica

En Java hay que declarar las variables antes de usarlas.

Palabras reservadas en JAVA:

Pregunta relacionada en convocatoria 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.

C

Intro, breve historia, caracteristicas del lencuaje, hello world, variables, operadores, estructuras de control, funciones, excepciones, entrada y salida, interfaz gráfica

En C hay que declarar las variables antes de usarlas.

Palabras reservadas en C:

Pregunta relacionada en convocatoria 2016 (IL)

Secuencias de escape en C:

Pregunta relacionada en convocatoria 2015 (IL)

Biblioteca estándar de C:

La biblioteca no estándar conio.h es para operaciones de entrada y salida.

Pregunta relacionada en convocatoria 2015 (PI)

Las bibliotecas se importan con la directiva #include si se quiere que busque en todos los directorios especificados en la llamada al compilador, o con #include "biblioteca.h" si se quiere que de prioridad al directorio donde está el código.

C++

Intro, breve historia, caracteristicas del lencuaje, hello world, variables, operadores, estructuras de control, funciones, excepciones, entrada y salida, interfaz gráfica

Palabras reservadas en C++:

Biblioteca estándar de C++:

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#

Intro, breve historia, caracteristicas del lencuaje, hello world, variables, operadores, estructuras de control, funciones, excepciones, entrada y salida, interfaz gráfica

Las variables pueden empezar por _ y contener caracteres Unicode.

Palabras reservadas en C#:

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 convocatoria 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.

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:

Pregunta relacionada en convocatoria 2015 (PI)

Frameworks para servicios web:

Pregunta relacionada en convocatoria 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.

Orientada a servicios

Pregunta relacionada en convocatoria 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.

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 convocatoria 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:

Pregunta relacionada en convocatoria 2015 (IL)

XHTML

Las diferencias entre HTML y XHTML son las siguientes:

XML

Algunas normas para XML:

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.

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.

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.

Sintaxis de comentarios, etc

Sintaxis para comentarios:

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

Herramientas

Pregunta relacionada en convocatoria 2014 (PI)

Software

Software para discapacitados:

WCAG

Pregunta relacionada en convocatoria 2014 (PI)

WCAG significa Web Content Accesibility Guidelines.

Pautas WCAG 2.0:[1]

Los niveles o criterios de conformidad son A, AA y AAA.[2]

Para el nivel A son 25 criterios:

Para el nivel AA son 13 criterios:

Para el nivel AAA son 23 criterios:

Software

Pregunta relacionada en convocatoria 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.

Las herramientas CASE se pueden clasificar según las fases en las que se apliquen:

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:

Pregunta relacionada en convocatoria 2015 (IL)

Algunas de estas herramientas son:

Algunos conceptos frecuentes:

Comandos básicos de Git:

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).

Fuentes

Referencias

  1. Pautas WCAG 2.0
  2. Criterios de conformidad de WCAG 2.0
Oposiciones
Apuntes Bloque I · Bloque II · Bloque III · Bloque IV