SlideShare uma empresa Scribd logo
1 de 81
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Arquitectura del Software
Parte II. Taxonomías de arquitectura
Tema 2: Disposición
Jose Emilio Labra Gayo2013
Universidad de Oviedo
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Disposición (Allocation)
Relación del software con el entorno
Construcción, despliegue y distribución
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Esquema
Construcción
Estilos de desarrollo
Tradicionales, iterativos, ágiles
Gestión de configuraciones
Control de versiones
Gestión de dependencias
Despliegue e integración continua
Distribución
Canales de distribución
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Nota: Se ha incluido una selección. Puede consultarse una extensa lista en:
http://en.wikipedia.org/wiki/List_of_software_development_philosophies
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Incremental piecemeal
Crecimiento según necesidad
Codificar sin considerar la arquitectura
Software de usar y tirar
Limitaciones presupuestarias
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Propuesto en años 70
Cascada
Análisis de
requisitos
Diseño de
software y
sistema
Implementación
y pruebas
unitarias
Pruebas
integración y
sistema
Despliegue y
mantenimiento
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Modelo en V
Requisitos
Análisis
Diseño
Diseño
Objetos
Pruebas
Unitarias
Pruebas
Integración
Pruebas
Sistema
Pruebas
Aceptación
Tiempo
Nivel
de detalle
Bajo
Alto
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Big Design Up Front
Antipatrón de modelos tradicionales
Demasiada documentación que nadie lee
Documentación diferente al sistema desarrollado
Arquitectura degradada
Sistemas que no son usados
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Modelos iterativos
Basado en prototipos
Evaluación de riesgos
Requisitos
Análisis
Diseño
Prueba
Despliegue
Valoración
Iteración 1
Requisitos
Análisis
Diseño
Prueba
Despliegue
Valoración
Iteración 2
Requisitos
Análisis
Diseño
Prueba
Despliegue
Valoración
Iteración 3
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
RUP (Rational Unified Process)
Fuente: Wikipedia.
http://es.wikipedia.org/wiki/Archivo:Rup_espanol.gif
Uno de los modelos más utilizados
Proceso iterativo
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos Ágiles
Numerosas variantes
RAD (www.dsdm.org, 95)
SCRUM (Sutherland & Schwaber, 95)
XP - eXtreme Programming (Beck, 99)
Feature driven development (DeLuca, 99)
Adaptive software development (Highsmith, 00)
Lean Development (Poppendieck, 03)
Crystal Clear (Cockburn, 04)
Agile Unified Process (Ambler, 05)
. . .
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
Manifiesto ágil (www.agilemanifesto.org)
Individuos e interacciones
sobre procesos y herramientas
Software que funcione
sobre documentación
Colaboración con el cliente
sobre negociación de contrato
Respuesta al cambio
sobre seguimiento de un plan
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
Realimentación
Ajustes constantes en el código
Minimizar riesgo
Software en intervalos cortos
Iteraciones de horas o días
Cada iteración pasa todo el ciclo de desarrollo
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
Algunas prácticas (XP)
1. Planificaciones cortas
2. Pruebas
3. Programación en parejas (revisiones de código)
4. Refactorización
5. Diseño simple
6. Propiedad de código compartida
7. Integración continua
8. Cliente en lugar de desarrollo
9. Entregas pequeñas
10. Horarios normales
11. Estándares de codificación
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
1. Planificaciones cortas
Después de cada iteración, volver a planificar
Requisitos mediante historias de usuario
Descripciones breves (Tamaño tarjeta)
Objetivos priorizados por clientes
Riesgo y recursos estimados por desarrolladores
Historias de usuario = pruebas aceptación
Preparación para el cambio
Plan original
Plan actual
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
2.- Utilización de pruebas
Utilización de pruebas extensiva
Objetivo: Desarrollo basado en pruebas
TDD (Test Driven Development)
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
2.- Pruebas
Tipos de pruebas
Pruebas de aceptación
Funcionales
Demostraciones
Pruebas usabilidad
Pruebas exploración
Pruebas aceptación
no funcional
(capacidad,
seguridad,…)
Pruebas unitarias
Pruebas integración
Pruebas sistema
Automáticas Manuales
Automáticas Manuales/
Automáticas
Soportealdesarrollo
Criticaalproyecto
Dirigidas al negocio
Dirigidas a tecnología
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
2. Pruebas
Desarrollo basado en pruebas
Antes de codificar, realizar una prueba
Se arranca con un código que falla
Objetivo: pasar la prueba
Resultado:
Batería de pruebas automatizada
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
2. Pruebas
Behaviour-driven development (BDD)
Pruebas a partir de historias de usuario
Deben escribirse junto con cliente
Herramientas: Cucumber, JBehave, Specs2,...
Sirven como contrato
Miden el progreso Feature: Buscar cursos
Para mejorar el uso de los cursos
Los estudiantes deberían ser capaces de buscar cursos
Scenario: Búsqueda por asunto
Given hay 240 cursos que no tienen el asunto “Biología”
And hay 2 cursos A001, B205 que tienen el asunto “Biología"
When Yo busco el asunto “Biología"
Then Yo debería ver los cursos:
| Código |
| A001 |
| B205 |
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
2. Pruebas
Principios FIRST
F - Fast
La ejecutación de pruebas debe ser rápida
I - Independent:
Los casos de prueba son independientes entre sí
R - Repeatable:
Tras ejecutarlos N veces, el resultado debe ser el mismo
S - Self-checking
Se puede comprobar si se cumplen automáticamente, sin
intervención humana
T - Timely
Pruebas escritos al mismo (o antes) tiempo que código
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
2. Pruebas
Definiciones
Dobles de pruebas
Objetos Dummy: se pasan pero no se utilizan
Objetos fake: Tienen implementación parcial
Stubs: respuestas precocinadas a ciertas preguntas
Espías: son stubs que pueden registrar cierta información
para depuración
Mocks: objetos programados con ciertas expectativas sobre
qué tipo de llamadas deben recibir
Fixtures. Elementos fijos de soporte a las pruebas
Ej. Bases de datos con ciertas entradas, determinados
ficheros, etc.
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
3. Programación en parejas
2 ingenieros software trabajan juntos en un
ordenador
El conductor maneja el teclado y crea implementación
El observador identifica fallos y da ideas
Los roles se intercambian cada cierto tiempo
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
4. Diseño simple
Reacción a Big Design Up Front
Diseño más simple que funcione
Documentación automatizada
JavaDoc y similares
Utilización opcional de tarjetas CRC
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
5. Refactorización
Mejorar diseño sin cambiar la funcionalidad
Simplificar código (eliminar código duplicado)
Buscar activamente oportunidades de abstracción
Pruebas de regresión
Se basa en la batería de pruebas
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
6. Propiedad colectiva del código
El código pertenece al proyecto, no a un ingeniero
particular
A medida que los ingenieros desarrollan, deben
poder navegar y modificar cualquier clase
Aunque no la hayan escrito ellos
Evitar fragmentos de una única persona
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
7. Integración continua
Cada pareja escribe sus propios casos de prueba y
trabaja para satisfacerlos
Pasar 100% de casos de prueba
Integrar
El proceso debe realizarse 1 ó 2 veces al día
Objetivo: evitar integration hell
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
8. Cliente en lugar de desarrollo
Cliente disponible para clarificar historias de
usuarios y tomar decisiones críticas de negocio
Ventajas
Desarrolladores no realizan suposiciones
Desarrolladores no tienen que esperar para decisiones
Mejor comunicación
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
9. Entregas pequeñas
Tan pequeñas como sea posible pero que ofrezcan
valor al usuario
Entregas no son, por ejemplo, implementar BD
Obtener realimentación temprana del cliente
Planificar siguiente entrega tras cada iteración
Entregar algo cada semana
Cuidado:
No todo el mundo puede trabajar así
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
10. Horarios normales
40h/semana = 40h/semana
Evitar horas extra
Programadores cansados escriben código pobre
A largo plazo ralentiza el desarrollo
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
11. Código limpio
Facilitar modificación de código por otras personas
Utilizar buenas prácticas
Estilos y normas de codificación
Evitar code smells
Manifiesto software craftmanship
Libro Clean Code (Robert C. Martin)
Fuente: Clean Code. Robert Martin
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Métodos ágiles
Variantes
Scrum
Gestión de
proyectos/personas
División de trabajo en sprints
Reunión diaria de 15'
Backlog del producto
Kanban
Modelo lean (esbelto)
Desarrollo Just in Time
Limitar cargas de trabajo
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Gestión de configuraciones
Diferentes versiones de software
Funcionalidades nuevas o diferentes
Corrección de bugs
Nuevos entornos de ejecución
Gestión de configuraciones: gestión de la
evolución del software
Cambios del sistema = actividades en equipo
Costes y esfuerzo necesarios
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Control de versiones
Sistemas que gestionan las diferentes versiones
del código
Acceso a todas las versiones del sistema
Facilidad para volver atrás
Diferencias entre versiones
Código colaborativo
Facilidad para gestión de ramificaciones
Metadatos
Autor de la versión, fecha actualización, etc.
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Baseline
Baselines (línea de referencia): Software que es
sometido a gestión de configuraciones.
Versión
1.0
Windows
Versión
1.5
Sun
Versión
1.5
Linux
Versión
2.0
Windows
Versión
2.5 Escritorio
Linux
Versión
2.5 Escritorio
Servidor
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Releases y versiones
Versión: instancia de un sistema funcionalmente
distinta de otras instancias
Release (entregable): instancia de un sistema que
es distribuida a usuarios externos al equipo de
desarrollo.
Puede ser considerado un producto final
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Nombres habituales de versiones
Pre-alfa
Antes de las pruebas
Alfa
En pruebas
Beta (o prototipo)
Pruebas por usuarios
Beta-tester: usuario que hace pruebas
Release-candidate
Versión beta que podría ser producto final
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Otros esquemas de nombres
Números simples
1.1, 1.1-alpha
Utilización de atributos
Fecha, creador, lenguaje, cliente, estado,...
Nombres reconocibles
Ganimede, Galileo, Helios, Indigo, Juno,...
Precise Pangolin, Quantal Quetzal,...
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Publicación de entregables
Una release supone cambios de funcionalidad
Planificación
Publicar una release no es barato
Los usuarios no suelen querer nuevas releases
Factores externos:
Marketing, clientes, hardware, ...
Modelo ágil: releases my frecuentes
Utilizando integración continua se minimiza el riesgo
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Publicación de entregables
Una release no es sólo software
Ficheros de configuración
Ficheros de datos necesarios
Programas de instalación
Documentación
Publicidad y empaquetamiento
Distribución: medios físicos (CDs, DVDs), Web
(descargas), stores
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Control de versiones
Definiciones
Almacén (repositorio): Lugar en el que se
almacenan los cambios.
Baseline: Producto inicial en control de
versiones
Delta: cambios de una versión respecto a la
anterior
Trunk: Tronco o rama principal de un
producto. Rama master en Git
Branch (Rama): desviación de la rama
principal
Tag: Etiqueta de una línea de versiones
1
Baseline
4
Trunk
2
3
Branchs
5
6
9
7
T1
T2
8
10
Tags merge
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Control de versiones
Definiciones
Check-out: Copia local de trabajo de una
determinada rama o revisión.
Commit: Comprometer los cambios locales en
el sistema de control de versiones.
Merge (fusión) : Combinación de dos
conjuntos de cambios en uno.
Estilos de ramificación: por característica,
por equipo, por versión
1
Baseline
4
Trunk
2
3
Branchs
5
6
9
7
T1
T2
8
10
Tags
merge
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Control de versiones
2 tipos
Centralizados
Repositorio centralizado de todo el código
Administración centralizada
CVS, Subversion, ...
Distribuidos
Cada usuario tiene su propio repositorio
Git, Mercurial
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Git
Sistema de control de versiones distribuido
Diseñado por Linus Torvalds (Linux)
Objetivos:
Aplicaciones con gran nº de archivos de código
Trabajo distribuido
Apoyo a desarrollo no lineal (ramificaciones)
El siguiente contenido es un resumen de:
http://rogerdudler.github.com/git-guide/
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Git – Sistema distribuido
Cada desarrollador tiene copia local de todo el
historial de cambios
El repositorio se puede crear:
git init
o clonar
git clone
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Git – flujo de trabajo local
Git gestiona 3 árboles:
Directorio de trabajo local
Index ó área de ensayo (stage)
HEAD (última versión comprometida)
Directorio
de trabajo
Index
(stage)
add commit
HEAD
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Git – Flujo de trabajo local
git add: Envía ficheros al área de ensayo (Index)
git commit: Compromete ficheros (HEAD)
Tras hacer commit, los ficheros están en control de
versiones, pero no en repositorio remoto
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Git – Enviando ficheros
git remote add origin <servidor>
Añade un servidor remoto
Si el repositorio es clonado no es necesario
git push origin master
Envía la versión de HEAD al repositorio remoto
Puede ser “master” u otra rama
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Git - Ramificaciones
Git da buen soporte a ramificaciones (branching)
Master = rama por defecto
Es buena costumbre crear otras ramas
Ejemplo: develop, release-1, …
Las ramas pueden mezclarse (merge)
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Git - ramificaciones
git checkout –b rama1
Crea una rama llamada “rama1” y cambia a ella
git checkout master
Regresa a la rama “master”
git push origin rama1
Envía rama1 al repositorio remoto
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Git – Actualizaciones y mezclas
git pull
Actualiza repositorio local a la última versión
Este comando debería ejecutarse al iniciar el trabajo
git merge rama2
Intenta mezclar la rama “rama2” con la rama actual
Si se producen conflictos hay que resolverlos
manualmente y marcarlos mediante “git add”
También pueden verse mediante “git diff”
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Git - Entorno
En Eclipse: EGit
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Ciclo de trabajo
Estación de trabajo
local
Desarrollo
Construir
Build
Almacén
Central código
Construir
Build
pull
push
Construir
Build
Done!
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Gestión de dependencias
Librería: Colección de funcionalidades utilizadas
por el sistema que se desarrolla
El sistema depende de dicha librería
La librería puede depender de otras librerías
La librería puede evolucionar
Versiones incompatibles
Grafo de dependencias
Grafo de dependencias de Mozilla Firefox
Fuente: The purely functional deployment model. E. Dolstra (PhdThesis, 2006)
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Gestión de dependencias
Modelos
Instalación local: las librerías se instalan para todo
el sistema.
Ejemplo: Ruby Gems
Inclusión en proyecto (control de versiones)
Garantiza versión adecuada
Enlace externo
Repositorio con librerías
Dependencia de Internet y evolución de la librería
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Automatización de construcción
Herramientas de automatización de la
construcción y el despliegue
Organizar las diferentes tareas
Dependencias entre tareas
Deben garantizar:
Ejecutar todos los prerrequisitos
Ejecutarlos una sola vez
Inicializar
Preparar
datos
de prueba
Compilar
código
fuente
Compilar
código
prueba
Ejecutar
pruebas
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Automatización de construcción
make: Incluido en Unix
Orientado a producto
Lenguaje declarativo basado en reglas
Cuando el proyecto es complejo, los ficheros de
configuración pueden ser difíciles de depurar
Varias versiones: BSD, GNU, Microsoft
Muy popular en C, C++, etc.
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Automatización de construcción
ant: Plataforma Java
Orientado a tareas
Sintaxis XML (build.xml)
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Automatización de construcción
maven: Plataforma Java
Convención sobre configuración
Gestionar ciclo de vida del proyecto
Gestión de dependencias
Descarga automática y almacenamiento local
Sintaxis XML (pom.xml)
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Automatización de construcción
Lenguajes empotrados
Lenguajes específicos empotrados en lenguajes
interpretados de alto nivel
Gran versatilidad
Ejemplos:
gradle (Groovy)
sbt (Scala)
rake (Ruby)
Buildr (Ruby)
…
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Maven
Herramienta de construcción
Gestión de dependencias
Principio: Convención sobre configuración
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Maven
Fases de desarrollo habituales:
clean, compile, build, test, package, install, deploy
Identificación de módulos
3 coordenadas: Grupo, artefacto, versión
Dependencias entre módulos
Configuración mediante fichero XML
pom.xml
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Maven
Almacenes de artefactos
Guardan diferentes tipo de artefactos
Ficheros JAR, EAR, WAR, ZIP, plugins, etc.
Todas las interacciones a través del repositorio
Sin caminos relativos
Compartir módulos entre equipos de desarrollo
Local Artifact
Repository
Remote
Artifact
Repository
<usuario>/.m2/repository Maven Central
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Maven
Fichero POM (pom.xml)
Sintaxis XML
Describe un proyecto
Nombre y versión
Tipo de artefacto (jar, pom, ...)
Localizaciones de código fuente
Dependencias
Plugins
Profiles
Configuraciones alternativas de construcción
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Maven
Identificación de proyecto
GAV (Grupo, artefacto, versión)
Grupo: Identificador de agrupamiento
Artefacto: Nombre del proyecto
Versión: Formato {Mayor}.{Menor}.{Mantenimiento}
Se puede añadir "-SNAPSHOT" (en desarrollo)
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>es.uniovi.asw</groupId>
<artifactId>Entrecine8</artifactId>
<version>1.0</version>
</project>
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Maven
Estructura de directorios
Maven utiliza una estructura convencional
src/main
src/main/java
src/main/webapp
src/main/resources
src/test/
src/test/java
src/test/resources
. . .
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Maven
Ciclo de desarrollo
generate-sources/generate-resources
compile
test
package
integration-test
install
deploy
clean
Invocación:
mvn clean
mvn compile
mvn clean compile
mvn compile install
...
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Maven
Gestión automática de dependencias
Identificación mediante GAV
Ámbito
compile
test
provide
Tipo
jar, pom, war,...
<project>
...
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
. . .
</dependencies>
</project>
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Maven
Gestión automática de dependencias
Las dependencias son descargadas
Alojadas en repositorio local
Pueden crearse repositorios intermedios (proxies)
Ejemplo: artefactos comunes de una empresa
Transititivdad
B depende de C
A depende de B  C también se descarga
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Maven
Múltiples módulos
Proyectos grandes pueden descomponerse
Cada proyecto crea un artefacto
Tiene su propio fichero pom.xml
El proyecto padre agrupa los módulos
<project>
...
<packaging>pom</packaging>
<modules>
<module>maven-training</module>
<module>maven-training-web</module>
</modules>
</project>
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Maven
Otras fases y plugins
archetype:generate - Genera esqueleto de un proyecto
eclipse:eclipse - Genera proyecto eclipse
site - Genera sitio web del proyecto
site:run - Genera sitio web y arranca servidor
javadoc:javadoc - Generar documentación
cobertura:cobertura - Informe del código ejecutado en pruebas
checkstyle:checkstyle - Chequear el estilo de codificación
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Entornos de ejecución
Entornos habituales
Entorno
desarrollo
Entorno
pruebas
Entorno
producción
Servidor
pruebas
Servidor
integración
Control de
versiones
Servidor producción
Granja de servidores
También puede haber un entorno de ensayo (staging environment)
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Integración
continua
Interfaz
Web
Integración continua
Servidores de integración continua
Hudson, Jenkins, Travis, Bamboo
Informes
checkout/commit
Almacén central
de código
Equipo de
desarrollo
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Codificación social
Almacenes públicos de código
Diferentes políticas
Ejemplos:
Sourceforge
Google projects
Bitbucket
Github
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Github
Herramienta de codificación social
Compañía Github Inc. creada en 2008
2013: >3 millones de usuarios, >5millones proyectos
Gestión gratuita de proyectos de código abierto
Proyectos públicos por defecto y gratis
Es posible tener proyectos privados pagando
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Herramientas en la nube
Existen diversas herramientas para desarrollo en
la nube
Ejemplos:
IaaS: Infraestructura
Amazon ECS
PaaS: Plataforma
Google AppEngine, Heroku
SaaS: Software
GMail, GDocs, etc.
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Líneas de producto
Canales de distribución
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Líneas de producto
Línea de producto: productos que comparten una
serie de características comunes satisfaciendo un
segmento de mercado concreto
Objetivo:
Reducción esfuerzo desarrollo
Mejorar productividad
Pasar de un único producto a una línea de productos
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Líneas de producto
Requisitos
Identificar soluciones genéricas a problemas
comunes
Desarrollo basado en componentes
Plataformas genéricas
Reutilización de software
Generación automática de sistemas
Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Canales de distribución
Distribución tradicional
CDs, DVDs, etc.
Distribución vía Web
Descargas, FTP, etc.
Mercados de aplicaciones
Paquetes de aplicaciones Linux
Apple AppStore,
Google Play,
Windows Store

Mais conteúdo relacionado

Mais procurados

Ingeniería de software II - Parte 4
Ingeniería de software II - Parte 4Ingeniería de software II - Parte 4
Ingeniería de software II - Parte 4Marta Silvia Tabares
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modularguestb97266b9
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de softwaremireya2022
 
Mod 1 introducción a la programación
Mod 1 introducción a la programaciónMod 1 introducción a la programación
Mod 1 introducción a la programaciónPedro Montecinos Gaete
 
Ingeniería de Software
Ingeniería de SoftwareIngeniería de Software
Ingeniería de SoftwareUacm Lis Slt
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software'Jorge Martinez
 
Acti deaprendizaje equipo_software1
Acti deaprendizaje equipo_software1Acti deaprendizaje equipo_software1
Acti deaprendizaje equipo_software1Dalia Sandiego
 
Diapositivas De Ingenieria De Software
Diapositivas De Ingenieria De SoftwareDiapositivas De Ingenieria De Software
Diapositivas De Ingenieria De Softwarerapa69
 
Conceptos Básicos de Ingeniería del Software y Control de Proyectos
Conceptos Básicos de Ingeniería del Software y Control de ProyectosConceptos Básicos de Ingeniería del Software y Control de Proyectos
Conceptos Básicos de Ingeniería del Software y Control de Proyectosedwinlemmon
 
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?Kudos S.A.S
 
Tecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwareTecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwarejuankexmisiodj
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Softwareem3marquez
 
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARE
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARECUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARE
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWAREFreddy Aguilar
 

Mais procurados (20)

Conceptos
ConceptosConceptos
Conceptos
 
Apuntes2
Apuntes2Apuntes2
Apuntes2
 
Ingeniería de software II - Parte 4
Ingeniería de software II - Parte 4Ingeniería de software II - Parte 4
Ingeniería de software II - Parte 4
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Mod 1 introducción a la programación
Mod 1 introducción a la programaciónMod 1 introducción a la programación
Mod 1 introducción a la programación
 
Ingeniería de Software
Ingeniería de SoftwareIngeniería de Software
Ingeniería de Software
 
Software y ciclo de vida
Software  y ciclo de vidaSoftware  y ciclo de vida
Software y ciclo de vida
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software
 
La importancia del_modelado_en_la_producción_de_sw_vf
La importancia del_modelado_en_la_producción_de_sw_vfLa importancia del_modelado_en_la_producción_de_sw_vf
La importancia del_modelado_en_la_producción_de_sw_vf
 
Introducción a la ingeniería del software
Introducción a la ingeniería del softwareIntroducción a la ingeniería del software
Introducción a la ingeniería del software
 
Acti deaprendizaje equipo_software1
Acti deaprendizaje equipo_software1Acti deaprendizaje equipo_software1
Acti deaprendizaje equipo_software1
 
Diapositivas De Ingenieria De Software
Diapositivas De Ingenieria De SoftwareDiapositivas De Ingenieria De Software
Diapositivas De Ingenieria De Software
 
Conceptos Básicos de Ingeniería del Software y Control de Proyectos
Conceptos Básicos de Ingeniería del Software y Control de ProyectosConceptos Básicos de Ingeniería del Software y Control de Proyectos
Conceptos Básicos de Ingeniería del Software y Control de Proyectos
 
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?
 
Tecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwareTecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.software
 
Ingenieria De Software
Ingenieria De SoftwareIngenieria De Software
Ingenieria De Software
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARE
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARECUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARE
CUADRO COMPARATIVO DE LOS MODELOS DE CICLO DE VIDA DE SOFTWARE
 

Destaque

Destaque (6)

RDF Validation Future work and applications
RDF Validation Future work and applicationsRDF Validation Future work and applications
RDF Validation Future work and applications
 
RDF validation tutorial
RDF validation tutorialRDF validation tutorial
RDF validation tutorial
 
SHACL by example
SHACL by exampleSHACL by example
SHACL by example
 
ShEx vs SHACL
ShEx vs SHACLShEx vs SHACL
ShEx vs SHACL
 
Arquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorArquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el Servidor
 
WTF - Why the Future Is Up to Us - pptx version
WTF - Why the Future Is Up to Us - pptx versionWTF - Why the Future Is Up to Us - pptx version
WTF - Why the Future Is Up to Us - pptx version
 

Semelhante a Arquitectura software.taxonomias.construccion.002

Administracion y Gestion de Proyectos
Administracion y Gestion de ProyectosAdministracion y Gestion de Proyectos
Administracion y Gestion de ProyectosRodolfoRojasEscalante
 
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.pptELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.pptMarko Zapata
 
Sesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoSesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoCoesi Consultoria
 
Sesión 3: Modelos prescriptivos de proceso de software
Sesión 3: Modelos prescriptivos de proceso de softwareSesión 3: Modelos prescriptivos de proceso de software
Sesión 3: Modelos prescriptivos de proceso de softwareLuis Fernández
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaremat3matik
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryynelly
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16Ramon
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de softwareMarilupe
 
Ingen de software
Ingen de softwareIngen de software
Ingen de softwareerikapoh
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaresamantha
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software142918
 
Manual de Ingeniería de Software
Manual de Ingeniería de SoftwareManual de Ingeniería de Software
Manual de Ingeniería de SoftwareDavidHerrera295
 
Metodologías Agiles - APIT - UTN FRBA
Metodologías Agiles - APIT - UTN FRBAMetodologías Agiles - APIT - UTN FRBA
Metodologías Agiles - APIT - UTN FRBAGustavo Andres Brey
 

Semelhante a Arquitectura software.taxonomias.construccion.002 (20)

Gestion de Proyectos
Gestion de ProyectosGestion de Proyectos
Gestion de Proyectos
 
Cap1 gestion
Cap1 gestionCap1 gestion
Cap1 gestion
 
Administracion y Gestion de Proyectos
Administracion y Gestion de ProyectosAdministracion y Gestion de Proyectos
Administracion y Gestion de Proyectos
 
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.pptELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
 
Sesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoSesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de proceso
 
Sesión 3: Modelos prescriptivos de proceso de software
Sesión 3: Modelos prescriptivos de proceso de softwareSesión 3: Modelos prescriptivos de proceso de software
Sesión 3: Modelos prescriptivos de proceso de software
 
Ingenieria de software.
Ingenieria de software.Ingenieria de software.
Ingenieria de software.
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
 
Ingen de software
Ingen de softwareIngen de software
Ingen de software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Clase 11
Clase 11Clase 11
Clase 11
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
3. modelos prescriptivos de proceso
3. modelos prescriptivos de proceso3. modelos prescriptivos de proceso
3. modelos prescriptivos de proceso
 
Manual de Ingeniería de Software
Manual de Ingeniería de SoftwareManual de Ingeniería de Software
Manual de Ingeniería de Software
 
introducción ingeniería de software
introducción  ingeniería de  softwareintroducción  ingeniería de  software
introducción ingeniería de software
 
Metodologías Agiles - APIT - UTN FRBA
Metodologías Agiles - APIT - UTN FRBAMetodologías Agiles - APIT - UTN FRBA
Metodologías Agiles - APIT - UTN FRBA
 

Mais de Jose Emilio Labra Gayo

Introducción a la investigación/doctorado
Introducción a la investigación/doctoradoIntroducción a la investigación/doctorado
Introducción a la investigación/doctoradoJose Emilio Labra Gayo
 
Challenges and applications of RDF shapes
Challenges and applications of RDF shapesChallenges and applications of RDF shapes
Challenges and applications of RDF shapesJose Emilio Labra Gayo
 
Legislative data portals and linked data quality
Legislative data portals and linked data qualityLegislative data portals and linked data quality
Legislative data portals and linked data qualityJose Emilio Labra Gayo
 
Validating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesValidating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesJose Emilio Labra Gayo
 
Legislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesLegislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesJose Emilio Labra Gayo
 
Como publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosComo publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosJose Emilio Labra Gayo
 

Mais de Jose Emilio Labra Gayo (20)

Publicaciones de investigación
Publicaciones de investigaciónPublicaciones de investigación
Publicaciones de investigación
 
Introducción a la investigación/doctorado
Introducción a la investigación/doctoradoIntroducción a la investigación/doctorado
Introducción a la investigación/doctorado
 
Challenges and applications of RDF shapes
Challenges and applications of RDF shapesChallenges and applications of RDF shapes
Challenges and applications of RDF shapes
 
Legislative data portals and linked data quality
Legislative data portals and linked data qualityLegislative data portals and linked data quality
Legislative data portals and linked data quality
 
Validating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesValidating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectives
 
Wikidata
WikidataWikidata
Wikidata
 
Legislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesLegislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologies
 
ShEx by Example
ShEx by ExampleShEx by Example
ShEx by Example
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
Introducción a la Web Semántica
Introducción a la Web SemánticaIntroducción a la Web Semántica
Introducción a la Web Semántica
 
RDF Data Model
RDF Data ModelRDF Data Model
RDF Data Model
 
2017 Tendencias en informática
2017 Tendencias en informática2017 Tendencias en informática
2017 Tendencias en informática
 
RDF, linked data and semantic web
RDF, linked data and semantic webRDF, linked data and semantic web
RDF, linked data and semantic web
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
19 javascript servidor
19 javascript servidor19 javascript servidor
19 javascript servidor
 
Como publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosComo publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazados
 
16 Alternativas XML
16 Alternativas XML16 Alternativas XML
16 Alternativas XML
 
XSLT
XSLTXSLT
XSLT
 
XPath
XPathXPath
XPath
 
RDF data model
RDF data modelRDF data model
RDF data model
 

Arquitectura software.taxonomias.construccion.002