SlideShare una empresa de Scribd logo
1 de 28
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Métodos Avanzados de Desarrollo de Software
Asignatura Optativa de 4º Año
Grado en Informática
Departamento de Sistemas Informáticos
Universidad de Castilla-La Mancha
Métodos avanzados de
desarrollo de software
Tema I: Introducción
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Índice
• ¿Por qué necesitamos nuevos métodos de desarrollo?
• ¿Qué se ha estado haciendo para mejorarlo?
• ¿Qué es una Arquitectura dirigida por modelos (ADM), del
inglés Model-driven Architecture (MDA)
El material que aquí se presenta está parcialmente basado en una traducción de:
Stephen J. Mellor, Kendall Scott, Axel Uhl, Dirk Weise. MDA Distilled: Principles of Model-
Driven Architecture. Addison Wesley. 2004.
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
¿Por qué necesitamos nuevos
métodos de desarrollo de software?
• El software es caro [A]
• En US se gastan aprox. $ 250.000.000.000 en 175.000 proyectos
• Más del 30% de los proyectos son cancelados
• Más del 50% de los proyectos cuesta más del doble
• La demanda sigue subiendo, ya que los dispositivos tienen
• > Capacidades de comunicación
• > Capacidad de percepción (Sensores)
• Acelerómetros
• Cámaras infrarrojas
• Reconocimiento de voz
• De movimiento / gestos
• > Capacidades de Pantallas
• Táctiles y multi-táctiles
• > Diversidad de plataformas
• IOS
• MACOS
• Windows
• Linux
• Android
[A] Fuente Ovum (http://www.ovum.com) y el
Standish Group (http://www.standishgroup.com)
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
¿Qué ha sucedido durante los
últimos 50 años?
• Se ha elevado el nivel de abstracción de los lenguajes
• ASSEMBLER < C# ó Java
• Se ha elevado el nivel de re-uso en la construcción de sistemas
• Procedimientos / Funciones < Librerías, APIs, Servicios Web, etc.
movl $1, %eax
movl $2, %ebx
addl %eax, %ebx
a = 1;
b = 2;
b = a + b;
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
NIVEL DE ABSTRACCIÓN
Lenguaje de programación
Herramientas
Plataforma
Modelos
Evolución
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Elevando el nivel de abstracción
Lenguajes de programación
• Las historia del desarrollo de software es una historia de
elevar el nivel de abstracción
• Programas cableados. Interruptores para ingresar
instrucciones … (0 y 1)
• Ensambladores Mnemonicos => 0 y 1 (Única plataforma)
• Lenguajes de programación
• FORTRAN (traducción de fórmulas)
• COBOL y C => portabilidad y programación estructurada
• + fácil de escribir, entender y mantener
• Smalltalk, C++, Eiffel y Java
• Orientados a objetos => datos y comportamiento en Clases y
Objetos
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Elevando el nivel de abstracción
Herramientas
• A medida que se pasa de un lenguaje a otro, se incrementa el
nivel de abstracción en el que trabaja el desarrollador
C++ => C => ASM => Lenguaje Máquina => Hardware
• Para ello se necesitan herramientas
• Ensambladores, Pre-procesadores y compiladores
• ¿Cuál es el resultado de elevar el nivel de abstracción?
• Ocultar los detalles de las capas inferiores. Por ej. JMP -> “GOTO”
• Escribir en un lenguaje de alto nivel que luego es mapeado
automáticamente a uno de nivel más bajo
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Elevando el nivel de abstracción
Independencia de la plataforma
• La independencia de la plataforma de software es análoga a la
de hardware
• Un lenguaje independiente de la plataforma de hardware
(Java o C) permite escribir una especificación que puede
ejecutarse en diferentes plataformas de hardware sin cambio.
• Un lenguaje independiente de la plataforma de software
permite escribir una especificación que puede ejecutarse en
diversas plataformas de software
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Independencia de la
Plataforma de Software
• Pregunta:
• ¿Qué lenguaje conocemos para especificar software de manera
independiente de la plataforma de software?
• Respuesta
• UML!
• Por ejemplo:
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Ejemplo
JavaScript - Mongoose
var mongoose = require('mongoose’);
var Schema = mongoose.Schema({
titulo:{type: String, required: true},
isbn:{type: String, required: true},
precio: {type: Number, required: true},
descripcion:{type: String, required: false},
iva:{type: Number, required: true, default: 21}
autores:{type: String, required: true},
});
module.exports = mongoose.model('Libro’, Schema);
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Ejemplo
Java EE - JPA
package libreria;
import java.io.Serializable;
import java.lang.String;
import javax.persistence.*;
@Entity
public class Libro implements Serializable {
private String titulo;
public String getTitulo() {return this.titulo;}
public void setTitulo(String titulo){this.titulo = titulo;}
private String isbn;
public String getIsbn() {return this.isbn;}
public void setIsbn(String isbn) {this.isbn = isbn;}
private double precio;
public double getPrecio(){return this.precio;}
public void setPrecio(double precio){this.precio = precio;}
private String descripcion;
public String getDescripcion() {return this.descripcion;}
public void setDescripcion(String descripcion){this.descripcion =
descripcion;}
private double iva;
public double getIva(){return this.iva;}
public void setIva(double iva) {this.iva = iva;}
private String autores;
public String getAutores() {return this.autores;}
public void setAutores(String autores) {this.autores = autores;}
private static final long serialVersionUID = 1L;
public Libro() {super();}
}
UML
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Elevando el nivel de abstracción
Evolución de la abstracción
Código
Ensamblador
Ensamblador
Sin
Plataforma
Código de
Máquina
1960s
Código Fuente
de Lenguaje de
Alto Nivel
Compilador
de Código
Fuente
Plataforma
de
Hardware
Código
Ensamblador
1980s
Modelo
Ejecutable
Compilador
de Modelos
Plataforma
de Software
Código Fuente
2000s
Figura basada en la presentada en [1].
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
NIVEL DE RE-USO
Lenguajes de programación
Evolución
Problemas del re-uso
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Elevando el nivel de re-uso
Lenguajes de programación
• En los sistemas antiguos, la memoria era tan «cara» que a menudo era necesario ahorrarla
• Código In-line (código reusable)
•  contexto de uso => banderas
• Función => transforma entradas en salidas (no hay que preocuparse del estado) ej. Raíz
cuadrada
•  funciones que dependen de estados previos, ej. Stock de un libro
• Estructuras de datos compartidas (globales)
•  = que los códigos in-line (acceso no controlado => banderas)
•  cambios en la estructura revisión de todas las subrutinas
• Objetos (estructura + comportamiento)
•  re-uso a pequeña escala
• Abre el camino al re-uso de colecciones de objetos
• Componentes => re-uso de conjunto de objetos con un conjunto de interfaces definidas.
•  ¿Qué pasa si una interfaz cambia?
• Cambiar cada lugar en donde se usa la interfaz, testear el código, reintegrarlo y re-testear el
sistema.
•  Pequeño cambio en la interfaz => gran trabajo en el sistema
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Evolución del nivel de re-uso
Modelos de Dominio
Componentes y frameworks
Objetos
Funciones
1970s 1980s 1990s 2000s
Figura basada en la presentada en [1].
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Problemas de re-uso
• Caracterización
• El proyecto comienza con un entendimiento del problema
incompleto que es dividido entre varios equipos de desarrollo.
• Situación
• Los equipos comparten interfaces definidas que se enchufan
(plug) al final del proyecto
• Cuestión
• Hasta las mejores especificaciones de interfaces pueden ser mal
interpretadas
• Conclusión
• Así, componentes y frameworks no son usualmente (Plug &Play)
=> mucho tiempo en escribir el código pegamento (Glue Code)
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Ejemplo
Arquitecturas multi-capa
Persistencia (Servidor de Bases de Datos)
Servicios Web (Servidor Web)
Interfaz de Usuario (Aplicación cliente)
Lógica de Negocios (Servidor Web / Bases de Datos)
MySQL SQLServer MongoDB
.NET JavaEE Node.JS
SOAP ReST XML-RPC
Web iOS Android
Experto 1
Experto 2
Experto 3
Experto 4
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Ejemplo
Arquitecturas multi-capa
1. ¿Qué sucede si queremos la misma aplicación en distintas
plataformas cliente? Por ej. Android, iOS y Web
• 1 experto => 3 expertos diferentes
2. ¿Qué sucede si queremos soportar diferentes servicios Web?
• Por ej. ReST (aplicaciones B2C), SOAP (aplicaciones B2B) y XML-RPC
(aplicaciones legadas)
3. ¿Qué sucede si necesitamos soportar soluciones propietarias y
abiertas? Por ej. .NET, Node .JS o PHP
• 1 experto => 3 expertos diferentes
4. ¿Qué sucede si necesitamos soportar el acceso a datos con
distintos modelos de datos?
• No-Relacional (MongoDB)
• Relacional (MySQL y SQLServer, abierta y propietaria
respectivamente)
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Elevando el nivel de re-uso
Solución: Modelos de dominio
• Se basa en la división del trabajo de áreas de interés (modelos
de dominio)
• Lógica de Negocios, Bases de datos, Interfaces de usuario, etc.
• Así las interfaces a nivel de reglas
• «Los datos persistentes de una clase se guardan en una tabla»
• «Las propiedades de tipo String se representan como campos de
texto en la Interfaz de usuario»
• Las reglas se aplican uniformemente => “Glue Code” puede
ser generado automáticamente
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Modelos de dominio
Libro
titulo
precio
descripcion
iva
autores
isbn
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Persistencia
Libro
titulo
precio
descripcion
iva
autores
isbn
CREATE TABLE Libro (
isbn VARCHAR(30) PRIMARY KEY,
title VARCHAR(30) NOT NULL,
descipcion VARCHAR(255),
autores VARCHAR(50) NOT NULL,
iva DECIMAL (4,2) NOT NULL,
precio DECIMAL(15,2) NOT NULL)
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Servicios
Lógica de Negocios
var mongoose = require('mongoose’);
var Schema = mongoose.Schema({
titulo:{type: String, required: true},
isbn:{type: String, required: true},
precio: {type: Number, required: true},
descripcion:{type: String, required: false},
iva:{type: Number, required: true, default: 21}
autores:{type: String, required: true},
});
module.exports = mongoose.model('Libro’, Schema);
var express = require('express’);
var Libro = require('../model/libro’);
var router = express.Router();
router.get(‘/libros', function(req, res, next) {
return Libro.find({})
.then((result) => res.status(200).send(result))
.catch((err) => res.status(500).send(err));
} …
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Presentación
<form>
<h2>Libro</h2><br>
<label>Isbn:</label><br>
<inputtype="TEXT"><br>
<label>Titulo:</label><br>
<inputtype="TEXT"><br>
<label>Autores:</label><br>
<inputtype="TEXT"><br>
<label>Descipcion:</label><br>
<textarearows="5"></textarea><br>
<label>Precio:</label><br>
<inputtype="NUMBER"><br>
<label>Iva:</label><br>
<inputtype="NUMBER"><br>
<inputtype="BUTTON"value="Save">
</form>
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
¿Cuál es el objetivo de una MDA?
• Enfatizar el re-uso
• Enfatizar la abstracción
REUSO + ABSTRACCIÓN
• Para conseguir “Interoperabilidad en tiempo de diseño”
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
INTEROPERABILIDAD
Lenguajes de programación
Evolución
Problemas del re-uso
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Sistema
Interoperabilidad
en tiempo de diseño
• Situación
• Los sistemas re-implementan funcionalidad para
usar una tecnología mejor
• Los sistemas no pueden reusar las plataformas
porque están mezclados con la aplicación
• Estándares e Interoperabilidad ayudan
• Ejemplo
• Sistema de 2 aplicaciones (cliente y servidor)
• Cliente
• 3 plataformas => 3 aplicaciones
• Servidor
• 3 tecnologías de Servidor para la Lógica de
Negocios
• 3 tecnologías de Servicios Web por tecnología de
• 3 tecnologías de persistencia por cada tecnología
de Servidor
• Configuraciones
• Servidor: 3 x 3 x 3 = 27
• Cliente: 3 x 3 = 9
• Sistema: 27 + 9 = 36
Servidor de Bases de datos (Persistencia)
MySQL SQLServer MongoDB
Servidor Web (Lógica de Negocios)
.NET NodeJS PHP
Servidor Web (Servicios Web)
SOAP ReST XML-RPC
Cliente (Interfaz de Usuario)
iOS Android Web
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Sistema
Servidor de Bases de datos (Persistencia)
MySQL SQLServer MongoDB
Servidor Web (Lógica de Negocios)
.NET NodeJS PHP
Servidor Web (Servicios Web)
SOAP ReST XML-RPC
Cliente (Interfaz de Usuario)
iOS Android Web
Interoperabilidad
en tiempo de diseño
• Solución
• Reuso independiente de capas
• “Glue Code” independiente del
contenido de las capas
• Bridges «Puentes» entre capas
expresados como “mapeos”
entre elementos de las capas
• Bridges interceptan las interfaces
entre capas y los cambios son
propagados al resto del código
• Consecuencias
• La dependencia entre capas es
externalizada y añadida
solamente cuando es desplegada
(al ultimo momento)
• Modelos reusables
Bridge (Glue Code)
Bridge (Glue Code)
Bridge (Glue Code)
Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Referencias
1. Stephen J. Mellor, Kendall Scott, Axel Uhl, Dirk Weise. MDA
Distilled: Principles of Model-Driven Architecture. Addison
Wesley. 2004.

Más contenido relacionado

Similar a Métodos avanzados desarrollo software

Grammarware engineering: un enfoque dirigido por modelos
Grammarware engineering: un enfoque dirigido por modelosGrammarware engineering: un enfoque dirigido por modelos
Grammarware engineering: un enfoque dirigido por modelosPatxi Gortázar
 
Planes De Entrenamiento En TecnologíA
Planes De Entrenamiento En TecnologíAPlanes De Entrenamiento En TecnologíA
Planes De Entrenamiento En TecnologíALUISVALENZUELA
 
Transformaciones modelo a texto: ACCELEO
Transformaciones modelo a texto: ACCELEOTransformaciones modelo a texto: ACCELEO
Transformaciones modelo a texto: ACCELEORicardo Tesoriero
 
Programación visual con VB.NET
Programación visual con VB.NETProgramación visual con VB.NET
Programación visual con VB.NETYamil Lambert
 
Web ocsdsl
Web ocsdslWeb ocsdsl
Web ocsdslmonikia
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptxDyllanBastidas
 
Syllabus Redes II
Syllabus Redes IISyllabus Redes II
Syllabus Redes IIUAE
 
Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónIsaias Toledo
 
Como programar en Java - 7ma Edicion - P. J. Deitel.pdf
Como programar en Java - 7ma Edicion - P. J. Deitel.pdfComo programar en Java - 7ma Edicion - P. J. Deitel.pdf
Como programar en Java - 7ma Edicion - P. J. Deitel.pdfAnaLpez275
 
Como programar en Java - 7ma Edicion - P. J. Deitel (1).pdf
Como programar en Java - 7ma Edicion - P. J. Deitel (1).pdfComo programar en Java - 7ma Edicion - P. J. Deitel (1).pdf
Como programar en Java - 7ma Edicion - P. J. Deitel (1).pdfAnaLpez275
 
Como programar en Java - 7ma Edicion - P. J. Deitel.pdf
Como programar en Java - 7ma Edicion - P. J. Deitel.pdfComo programar en Java - 7ma Edicion - P. J. Deitel.pdf
Como programar en Java - 7ma Edicion - P. J. Deitel.pdfAnaLpez275
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionBoris Salleg
 
Modelos en Arquitecturas dirigidas por Modelos
Modelos en Arquitecturas dirigidas por ModelosModelos en Arquitecturas dirigidas por Modelos
Modelos en Arquitecturas dirigidas por ModelosRicardo Tesoriero
 
Presentacion de la maestra susana.
Presentacion de la maestra  susana.Presentacion de la maestra  susana.
Presentacion de la maestra susana.yz8001
 
Examen Profesional - Metodología para el Desarrollo de Interfaces de Usuario ...
Examen Profesional - Metodología para el Desarrollo de Interfaces de Usuario ...Examen Profesional - Metodología para el Desarrollo de Interfaces de Usuario ...
Examen Profesional - Metodología para el Desarrollo de Interfaces de Usuario ...David Céspedes-Hernández
 
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...LeonelCortes5
 

Similar a Métodos avanzados desarrollo software (20)

Grammarware engineering: un enfoque dirigido por modelos
Grammarware engineering: un enfoque dirigido por modelosGrammarware engineering: un enfoque dirigido por modelos
Grammarware engineering: un enfoque dirigido por modelos
 
Planes De Entrenamiento En TecnologíA
Planes De Entrenamiento En TecnologíAPlanes De Entrenamiento En TecnologíA
Planes De Entrenamiento En TecnologíA
 
Transformaciones modelo a texto: ACCELEO
Transformaciones modelo a texto: ACCELEOTransformaciones modelo a texto: ACCELEO
Transformaciones modelo a texto: ACCELEO
 
Programación visual con VB.NET
Programación visual con VB.NETProgramación visual con VB.NET
Programación visual con VB.NET
 
Web ocsdsl
Web ocsdslWeb ocsdsl
Web ocsdsl
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx
 
Syllabus Redes II
Syllabus Redes IISyllabus Redes II
Syllabus Redes II
 
Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de Información
 
Laboratorio 4
Laboratorio 4Laboratorio 4
Laboratorio 4
 
Como programar en Java - 7ma Edicion - P. J. Deitel.pdf
Como programar en Java - 7ma Edicion - P. J. Deitel.pdfComo programar en Java - 7ma Edicion - P. J. Deitel.pdf
Como programar en Java - 7ma Edicion - P. J. Deitel.pdf
 
Como programar en Java - 7ma Edicion - P. J. Deitel (1).pdf
Como programar en Java - 7ma Edicion - P. J. Deitel (1).pdfComo programar en Java - 7ma Edicion - P. J. Deitel (1).pdf
Como programar en Java - 7ma Edicion - P. J. Deitel (1).pdf
 
Como programar en Java - 7ma Edicion - P. J. Deitel.pdf
Como programar en Java - 7ma Edicion - P. J. Deitel.pdfComo programar en Java - 7ma Edicion - P. J. Deitel.pdf
Como programar en Java - 7ma Edicion - P. J. Deitel.pdf
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacion
 
Software
SoftwareSoftware
Software
 
Modelos en Arquitecturas dirigidas por Modelos
Modelos en Arquitecturas dirigidas por ModelosModelos en Arquitecturas dirigidas por Modelos
Modelos en Arquitecturas dirigidas por Modelos
 
Presentacion de la maestra susana.
Presentacion de la maestra  susana.Presentacion de la maestra  susana.
Presentacion de la maestra susana.
 
Examen Profesional - Metodología para el Desarrollo de Interfaces de Usuario ...
Examen Profesional - Metodología para el Desarrollo de Interfaces de Usuario ...Examen Profesional - Metodología para el Desarrollo de Interfaces de Usuario ...
Examen Profesional - Metodología para el Desarrollo de Interfaces de Usuario ...
 
lenguaje c.ppt
lenguaje c.pptlenguaje c.ppt
lenguaje c.ppt
 
Software
SoftwareSoftware
Software
 
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...
 

Más de Ricardo Tesoriero

Transformaciones modelo a modelo: ATL (ParteII)
Transformaciones modelo a modelo: ATL (ParteII)Transformaciones modelo a modelo: ATL (ParteII)
Transformaciones modelo a modelo: ATL (ParteII)Ricardo Tesoriero
 
Transformaciones modelo a modelo: ATL (Parte I)
Transformaciones modelo a modelo: ATL (Parte I)Transformaciones modelo a modelo: ATL (Parte I)
Transformaciones modelo a modelo: ATL (Parte I)Ricardo Tesoriero
 
Modelos de Marcas en Arquitecturas dirigidas por Modelos
Modelos de Marcas en Arquitecturas dirigidas por ModelosModelos de Marcas en Arquitecturas dirigidas por Modelos
Modelos de Marcas en Arquitecturas dirigidas por ModelosRicardo Tesoriero
 
Transformaciones de modelos
Transformaciones de modelos Transformaciones de modelos
Transformaciones de modelos Ricardo Tesoriero
 
Lenguajes específicos de dominio
Lenguajes específicos de dominioLenguajes específicos de dominio
Lenguajes específicos de dominioRicardo Tesoriero
 
MOF básico para Arquitecturas dirigidas por Modelos
MOF básico para Arquitecturas dirigidas por ModelosMOF básico para Arquitecturas dirigidas por Modelos
MOF básico para Arquitecturas dirigidas por ModelosRicardo Tesoriero
 
Metamodelos en Arquitecturas dirigidas por Modelos
Metamodelos en Arquitecturas dirigidas por ModelosMetamodelos en Arquitecturas dirigidas por Modelos
Metamodelos en Arquitecturas dirigidas por ModelosRicardo Tesoriero
 
OCL en Arquitecturas dirigidas por Modelos
OCL en Arquitecturas dirigidas por ModelosOCL en Arquitecturas dirigidas por Modelos
OCL en Arquitecturas dirigidas por ModelosRicardo Tesoriero
 
Distributing user interfaces. 4th Distributed User Interfaces Workshop on 14t...
Distributing user interfaces. 4th Distributed User Interfaces Workshop on 14t...Distributing user interfaces. 4th Distributed User Interfaces Workshop on 14t...
Distributing user interfaces. 4th Distributed User Interfaces Workshop on 14t...Ricardo Tesoriero
 
CAUCE - Model-driven development of ubiquitous computing environments
CAUCE - Model-driven development of ubiquitous computing environmentsCAUCE - Model-driven development of ubiquitous computing environments
CAUCE - Model-driven development of ubiquitous computing environmentsRicardo Tesoriero
 
UsiXML Eclipse-based Model Editors
UsiXML Eclipse-based Model EditorsUsiXML Eclipse-based Model Editors
UsiXML Eclipse-based Model EditorsRicardo Tesoriero
 

Más de Ricardo Tesoriero (11)

Transformaciones modelo a modelo: ATL (ParteII)
Transformaciones modelo a modelo: ATL (ParteII)Transformaciones modelo a modelo: ATL (ParteII)
Transformaciones modelo a modelo: ATL (ParteII)
 
Transformaciones modelo a modelo: ATL (Parte I)
Transformaciones modelo a modelo: ATL (Parte I)Transformaciones modelo a modelo: ATL (Parte I)
Transformaciones modelo a modelo: ATL (Parte I)
 
Modelos de Marcas en Arquitecturas dirigidas por Modelos
Modelos de Marcas en Arquitecturas dirigidas por ModelosModelos de Marcas en Arquitecturas dirigidas por Modelos
Modelos de Marcas en Arquitecturas dirigidas por Modelos
 
Transformaciones de modelos
Transformaciones de modelos Transformaciones de modelos
Transformaciones de modelos
 
Lenguajes específicos de dominio
Lenguajes específicos de dominioLenguajes específicos de dominio
Lenguajes específicos de dominio
 
MOF básico para Arquitecturas dirigidas por Modelos
MOF básico para Arquitecturas dirigidas por ModelosMOF básico para Arquitecturas dirigidas por Modelos
MOF básico para Arquitecturas dirigidas por Modelos
 
Metamodelos en Arquitecturas dirigidas por Modelos
Metamodelos en Arquitecturas dirigidas por ModelosMetamodelos en Arquitecturas dirigidas por Modelos
Metamodelos en Arquitecturas dirigidas por Modelos
 
OCL en Arquitecturas dirigidas por Modelos
OCL en Arquitecturas dirigidas por ModelosOCL en Arquitecturas dirigidas por Modelos
OCL en Arquitecturas dirigidas por Modelos
 
Distributing user interfaces. 4th Distributed User Interfaces Workshop on 14t...
Distributing user interfaces. 4th Distributed User Interfaces Workshop on 14t...Distributing user interfaces. 4th Distributed User Interfaces Workshop on 14t...
Distributing user interfaces. 4th Distributed User Interfaces Workshop on 14t...
 
CAUCE - Model-driven development of ubiquitous computing environments
CAUCE - Model-driven development of ubiquitous computing environmentsCAUCE - Model-driven development of ubiquitous computing environments
CAUCE - Model-driven development of ubiquitous computing environments
 
UsiXML Eclipse-based Model Editors
UsiXML Eclipse-based Model EditorsUsiXML Eclipse-based Model Editors
UsiXML Eclipse-based Model Editors
 

Métodos avanzados desarrollo software

  • 1. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Métodos Avanzados de Desarrollo de Software Asignatura Optativa de 4º Año Grado en Informática Departamento de Sistemas Informáticos Universidad de Castilla-La Mancha Métodos avanzados de desarrollo de software Tema I: Introducción
  • 2. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Índice • ¿Por qué necesitamos nuevos métodos de desarrollo? • ¿Qué se ha estado haciendo para mejorarlo? • ¿Qué es una Arquitectura dirigida por modelos (ADM), del inglés Model-driven Architecture (MDA) El material que aquí se presenta está parcialmente basado en una traducción de: Stephen J. Mellor, Kendall Scott, Axel Uhl, Dirk Weise. MDA Distilled: Principles of Model- Driven Architecture. Addison Wesley. 2004.
  • 3. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] ¿Por qué necesitamos nuevos métodos de desarrollo de software? • El software es caro [A] • En US se gastan aprox. $ 250.000.000.000 en 175.000 proyectos • Más del 30% de los proyectos son cancelados • Más del 50% de los proyectos cuesta más del doble • La demanda sigue subiendo, ya que los dispositivos tienen • > Capacidades de comunicación • > Capacidad de percepción (Sensores) • Acelerómetros • Cámaras infrarrojas • Reconocimiento de voz • De movimiento / gestos • > Capacidades de Pantallas • Táctiles y multi-táctiles • > Diversidad de plataformas • IOS • MACOS • Windows • Linux • Android [A] Fuente Ovum (http://www.ovum.com) y el Standish Group (http://www.standishgroup.com)
  • 4. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] ¿Qué ha sucedido durante los últimos 50 años? • Se ha elevado el nivel de abstracción de los lenguajes • ASSEMBLER < C# ó Java • Se ha elevado el nivel de re-uso en la construcción de sistemas • Procedimientos / Funciones < Librerías, APIs, Servicios Web, etc. movl $1, %eax movl $2, %ebx addl %eax, %ebx a = 1; b = 2; b = a + b;
  • 5. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] NIVEL DE ABSTRACCIÓN Lenguaje de programación Herramientas Plataforma Modelos Evolución
  • 6. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Elevando el nivel de abstracción Lenguajes de programación • Las historia del desarrollo de software es una historia de elevar el nivel de abstracción • Programas cableados. Interruptores para ingresar instrucciones … (0 y 1) • Ensambladores Mnemonicos => 0 y 1 (Única plataforma) • Lenguajes de programación • FORTRAN (traducción de fórmulas) • COBOL y C => portabilidad y programación estructurada • + fácil de escribir, entender y mantener • Smalltalk, C++, Eiffel y Java • Orientados a objetos => datos y comportamiento en Clases y Objetos
  • 7. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Elevando el nivel de abstracción Herramientas • A medida que se pasa de un lenguaje a otro, se incrementa el nivel de abstracción en el que trabaja el desarrollador C++ => C => ASM => Lenguaje Máquina => Hardware • Para ello se necesitan herramientas • Ensambladores, Pre-procesadores y compiladores • ¿Cuál es el resultado de elevar el nivel de abstracción? • Ocultar los detalles de las capas inferiores. Por ej. JMP -> “GOTO” • Escribir en un lenguaje de alto nivel que luego es mapeado automáticamente a uno de nivel más bajo
  • 8. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Elevando el nivel de abstracción Independencia de la plataforma • La independencia de la plataforma de software es análoga a la de hardware • Un lenguaje independiente de la plataforma de hardware (Java o C) permite escribir una especificación que puede ejecutarse en diferentes plataformas de hardware sin cambio. • Un lenguaje independiente de la plataforma de software permite escribir una especificación que puede ejecutarse en diversas plataformas de software
  • 9. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Independencia de la Plataforma de Software • Pregunta: • ¿Qué lenguaje conocemos para especificar software de manera independiente de la plataforma de software? • Respuesta • UML! • Por ejemplo:
  • 10. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Ejemplo JavaScript - Mongoose var mongoose = require('mongoose’); var Schema = mongoose.Schema({ titulo:{type: String, required: true}, isbn:{type: String, required: true}, precio: {type: Number, required: true}, descripcion:{type: String, required: false}, iva:{type: Number, required: true, default: 21} autores:{type: String, required: true}, }); module.exports = mongoose.model('Libro’, Schema);
  • 11. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Ejemplo Java EE - JPA package libreria; import java.io.Serializable; import java.lang.String; import javax.persistence.*; @Entity public class Libro implements Serializable { private String titulo; public String getTitulo() {return this.titulo;} public void setTitulo(String titulo){this.titulo = titulo;} private String isbn; public String getIsbn() {return this.isbn;} public void setIsbn(String isbn) {this.isbn = isbn;} private double precio; public double getPrecio(){return this.precio;} public void setPrecio(double precio){this.precio = precio;} private String descripcion; public String getDescripcion() {return this.descripcion;} public void setDescripcion(String descripcion){this.descripcion = descripcion;} private double iva; public double getIva(){return this.iva;} public void setIva(double iva) {this.iva = iva;} private String autores; public String getAutores() {return this.autores;} public void setAutores(String autores) {this.autores = autores;} private static final long serialVersionUID = 1L; public Libro() {super();} } UML
  • 12. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Elevando el nivel de abstracción Evolución de la abstracción Código Ensamblador Ensamblador Sin Plataforma Código de Máquina 1960s Código Fuente de Lenguaje de Alto Nivel Compilador de Código Fuente Plataforma de Hardware Código Ensamblador 1980s Modelo Ejecutable Compilador de Modelos Plataforma de Software Código Fuente 2000s Figura basada en la presentada en [1].
  • 13. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] NIVEL DE RE-USO Lenguajes de programación Evolución Problemas del re-uso
  • 14. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Elevando el nivel de re-uso Lenguajes de programación • En los sistemas antiguos, la memoria era tan «cara» que a menudo era necesario ahorrarla • Código In-line (código reusable) •  contexto de uso => banderas • Función => transforma entradas en salidas (no hay que preocuparse del estado) ej. Raíz cuadrada •  funciones que dependen de estados previos, ej. Stock de un libro • Estructuras de datos compartidas (globales) •  = que los códigos in-line (acceso no controlado => banderas) •  cambios en la estructura revisión de todas las subrutinas • Objetos (estructura + comportamiento) •  re-uso a pequeña escala • Abre el camino al re-uso de colecciones de objetos • Componentes => re-uso de conjunto de objetos con un conjunto de interfaces definidas. •  ¿Qué pasa si una interfaz cambia? • Cambiar cada lugar en donde se usa la interfaz, testear el código, reintegrarlo y re-testear el sistema. •  Pequeño cambio en la interfaz => gran trabajo en el sistema
  • 15. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Evolución del nivel de re-uso Modelos de Dominio Componentes y frameworks Objetos Funciones 1970s 1980s 1990s 2000s Figura basada en la presentada en [1].
  • 16. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Problemas de re-uso • Caracterización • El proyecto comienza con un entendimiento del problema incompleto que es dividido entre varios equipos de desarrollo. • Situación • Los equipos comparten interfaces definidas que se enchufan (plug) al final del proyecto • Cuestión • Hasta las mejores especificaciones de interfaces pueden ser mal interpretadas • Conclusión • Así, componentes y frameworks no son usualmente (Plug &Play) => mucho tiempo en escribir el código pegamento (Glue Code)
  • 17. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Ejemplo Arquitecturas multi-capa Persistencia (Servidor de Bases de Datos) Servicios Web (Servidor Web) Interfaz de Usuario (Aplicación cliente) Lógica de Negocios (Servidor Web / Bases de Datos) MySQL SQLServer MongoDB .NET JavaEE Node.JS SOAP ReST XML-RPC Web iOS Android Experto 1 Experto 2 Experto 3 Experto 4
  • 18. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Ejemplo Arquitecturas multi-capa 1. ¿Qué sucede si queremos la misma aplicación en distintas plataformas cliente? Por ej. Android, iOS y Web • 1 experto => 3 expertos diferentes 2. ¿Qué sucede si queremos soportar diferentes servicios Web? • Por ej. ReST (aplicaciones B2C), SOAP (aplicaciones B2B) y XML-RPC (aplicaciones legadas) 3. ¿Qué sucede si necesitamos soportar soluciones propietarias y abiertas? Por ej. .NET, Node .JS o PHP • 1 experto => 3 expertos diferentes 4. ¿Qué sucede si necesitamos soportar el acceso a datos con distintos modelos de datos? • No-Relacional (MongoDB) • Relacional (MySQL y SQLServer, abierta y propietaria respectivamente)
  • 19. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Elevando el nivel de re-uso Solución: Modelos de dominio • Se basa en la división del trabajo de áreas de interés (modelos de dominio) • Lógica de Negocios, Bases de datos, Interfaces de usuario, etc. • Así las interfaces a nivel de reglas • «Los datos persistentes de una clase se guardan en una tabla» • «Las propiedades de tipo String se representan como campos de texto en la Interfaz de usuario» • Las reglas se aplican uniformemente => “Glue Code” puede ser generado automáticamente
  • 20. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Modelos de dominio Libro titulo precio descripcion iva autores isbn
  • 21. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Persistencia Libro titulo precio descripcion iva autores isbn CREATE TABLE Libro ( isbn VARCHAR(30) PRIMARY KEY, title VARCHAR(30) NOT NULL, descipcion VARCHAR(255), autores VARCHAR(50) NOT NULL, iva DECIMAL (4,2) NOT NULL, precio DECIMAL(15,2) NOT NULL)
  • 22. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Servicios Lógica de Negocios var mongoose = require('mongoose’); var Schema = mongoose.Schema({ titulo:{type: String, required: true}, isbn:{type: String, required: true}, precio: {type: Number, required: true}, descripcion:{type: String, required: false}, iva:{type: Number, required: true, default: 21} autores:{type: String, required: true}, }); module.exports = mongoose.model('Libro’, Schema); var express = require('express’); var Libro = require('../model/libro’); var router = express.Router(); router.get(‘/libros', function(req, res, next) { return Libro.find({}) .then((result) => res.status(200).send(result)) .catch((err) => res.status(500).send(err)); } …
  • 23. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Presentación <form> <h2>Libro</h2><br> <label>Isbn:</label><br> <inputtype="TEXT"><br> <label>Titulo:</label><br> <inputtype="TEXT"><br> <label>Autores:</label><br> <inputtype="TEXT"><br> <label>Descipcion:</label><br> <textarearows="5"></textarea><br> <label>Precio:</label><br> <inputtype="NUMBER"><br> <label>Iva:</label><br> <inputtype="NUMBER"><br> <inputtype="BUTTON"value="Save"> </form>
  • 24. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] ¿Cuál es el objetivo de una MDA? • Enfatizar el re-uso • Enfatizar la abstracción REUSO + ABSTRACCIÓN • Para conseguir “Interoperabilidad en tiempo de diseño”
  • 25. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] INTEROPERABILIDAD Lenguajes de programación Evolución Problemas del re-uso
  • 26. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Sistema Interoperabilidad en tiempo de diseño • Situación • Los sistemas re-implementan funcionalidad para usar una tecnología mejor • Los sistemas no pueden reusar las plataformas porque están mezclados con la aplicación • Estándares e Interoperabilidad ayudan • Ejemplo • Sistema de 2 aplicaciones (cliente y servidor) • Cliente • 3 plataformas => 3 aplicaciones • Servidor • 3 tecnologías de Servidor para la Lógica de Negocios • 3 tecnologías de Servicios Web por tecnología de • 3 tecnologías de persistencia por cada tecnología de Servidor • Configuraciones • Servidor: 3 x 3 x 3 = 27 • Cliente: 3 x 3 = 9 • Sistema: 27 + 9 = 36 Servidor de Bases de datos (Persistencia) MySQL SQLServer MongoDB Servidor Web (Lógica de Negocios) .NET NodeJS PHP Servidor Web (Servicios Web) SOAP ReST XML-RPC Cliente (Interfaz de Usuario) iOS Android Web
  • 27. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Sistema Servidor de Bases de datos (Persistencia) MySQL SQLServer MongoDB Servidor Web (Lógica de Negocios) .NET NodeJS PHP Servidor Web (Servicios Web) SOAP ReST XML-RPC Cliente (Interfaz de Usuario) iOS Android Web Interoperabilidad en tiempo de diseño • Solución • Reuso independiente de capas • “Glue Code” independiente del contenido de las capas • Bridges «Puentes» entre capas expresados como “mapeos” entre elementos de las capas • Bridges interceptan las interfaces entre capas y los cambios son propagados al resto del código • Consecuencias • La dependencia entre capas es externalizada y añadida solamente cuando es desplegada (al ultimo momento) • Modelos reusables Bridge (Glue Code) Bridge (Glue Code) Bridge (Glue Code)
  • 28. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha [ricardo.tesoriero@uclm.es] Referencias 1. Stephen J. Mellor, Kendall Scott, Axel Uhl, Dirk Weise. MDA Distilled: Principles of Model-Driven Architecture. Addison Wesley. 2004.

Notas del editor

  1. Soy Ricardo Tesoriero, profesor de la asignatura Métodos Avanzados de Desarrollo de Software de la Universidad de Castilla-La Mancha.
  2. En esta clase haremos una introducción los problemas que aquejan al desarrollo de software y la dirección que se sigue para poder plantear soluciones a esos problemas. También, discutiremos cómo ha evolucionado el desarrollo de software desde dos perspectivas, la del nivel de abstracción y la del nivel de re-uso. Como consecuencia de esta evolución, nos centraremos en las Arquitecturas dirigidas por modelos (MDAs) como método de desarrollo a ser estudiado a lo largo de la asignatura.
  3. La primera pregunta que surge cuando hablamos de métodos de desarrollo de software es ¿Por qué necesitamos nuevos métodos de desarrollo de software? Existen dos motivos principales, El primero es que el software es caro (en US se gasta aprox. 250.000 millones de dólares en 175,000 proyectos anualmente) y complejo (el 30 % de los proyectos se cancelan y el 50 % cuesta más del doble) El segundo es que la demanda sigue subiendo ya que los dispositivos incorporan nuevas capacidades de manera muy frecuente. Respecto a las capacidades de comunicación, el la red 3G de comunicaciones revolucionó la capacidad de comunicación de los dispositivos móviles dándoles capacidades inéditas hasta entonces. Esto sucedió hace menos de 4 años (recordar que el iPhone 3G salió en Julio de 2008). Respecto a las capacidades de percepción la Wii salió hace 8 años y la Kinect hace solo 4 años! El eso masivo de tabletas no lleva mucho tiempo tampoco Finalmente, respecto a la diversidad de plataformas, ¿cuántas plataformas de ejecución conocemos? En ordenadores, los más comunes son: Windows, Unix, MAC OS X En dispositivos móviles los más comunes (pero no los únicos) son: Android, iOS, Windows Phone, Symbian …
  4. Estos aspectos nos llevan a preguntarnos: ¿Cuáles fueron los avances durante los últimos 50 años en materia de desarrollo de software? Un hecho irrefutable es el aumento en el nivel de abstracción de los lenguajes. En los comienzos, se programaba en lenguaje ensamblador, hoy en día utilizamos lenguajes como C# o Java.
  5. Patrón utilizado para elevar el nivel de abstracción Formalizar el conocimiento de la aplicación al nivel de abstracción más alto posible Aprendemos cómo usar el lenguaje y las convenciones para usarlo Se formalizan las convenciones y se crea un nuevo lenguaje que se mapea automáticamente en uno de menor nivel de abstracción Así sucesivamente…
  6. Sin embargo, ¿qué pasa, si … ? 2 componentes piensan que tienen el control exclusivo sobre un dispositivo (ej. impresora) Un componente piensa que debe pedir las actualizaciones, mientras que otros piensan que son avisados de ellos (ej. Event-driven vs. polling) Problema => Diferentes conceptos acerca de la arquitectura software del sistema