SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Desarrollo	de	Software		
Basado	en	Componentes
Diego	Cardozo
	
	github.com/diegocard
Agenda
1.	 Motivación
2.	 ¿Qué	es	el	DSBC?
3.	 Componentes	vs	Objetos
4.	 Aplicaciones	conocidas
5.	 ¿Como	encajan	los	CMS?
6.	 Bajar	a	tierra	conceptos
WebMatrix
OrchardCMS
Advertencia:	Esta	es	una	charla	de	Ingeniería	de	Software
Motivación	(1)
Si	General	Motors	evolucionara	como	la
industria	de	la	computación,	hoy
tendríamos	autos	que	saldrían	$100
consumiendo	1	litro	de	combustible	cada
1	millón	de	kilómetros.
Motivación	(2)
Pero...	
Chocarías	al	menos	2	veces	al	día
Comprar	un	auto	nuevo	cada	vez	que	
se	cambia	una	señal	de	tránsito
Cada	vez	que	comprás	un	modelo	nuevo,
tenés	que	aprender	a	manejar	nuevamente.
¿Conclusión?
Otras	industrias	utilizan	enfoques	distintos
Obtienen	muy	buenos	resultados	en	áreas	donde	
nosotros	tenemos	problemas.
Automotriz:	procesos	ágiles,	producto	complejo
que	se	construye	de	forma	rápida.
Construcción:	tienen	costos	asociados	al	cambio
mucho	mayores	que	nosotros,	pero	se	arreglan	mejor.
¿Qué	es	lo	que	otras	industrias	
tienen	en	común?
Trabajan	utilizando	componentes
Mayor	nivel	de	re-utilización
Simplifica	las	pruebas
Simplifica	el	mantenimiento
Mayor	calidad
Componentes	desarrollados	por	terceros
Ciclos	de	desarrollo	mas	cortos
Mejor	ROI
¿Que	es	un	componente	en	SW?
"Un	componente	de	software	es	una	unidad	de	composicion
con	interfaces	especificadas	contractualmente	y	únicamente
depnedencias	contextuales	explícitas.
Un	componente	de	software	puede	ser	desplegado	de	forma
independiente	y	está	sujeto	a	composición	por	otras	partes."
Szyperski,	2002
7	Criterios
1.	 Puede	ser	usado	por	otros	elementos	de	SW
2.	 Puede	ser	usado	por	los	clientes	sin	la	necesidad	
de	intervención	del	desarrollador	(CMS).
3.	 Incluye	las	especificaciones	de	todas	las	dependencias.
4.	 Incluye	documentación	de	las	funcionalidades	que	ofrece.
5.	 Se	puede	entender	su	funcionamiento	en	base	
a	las	especificaciones.
6.	 Se	puede	acoplar	a	otros	componentes.
7.	 Puede	ser	incorporado	a	un	sistema	de	manera	suave	
y	rápida.
Desventajas
Clarividencia:	diseñar	un	componente	sin	conocer	
quien	lo	utilizará.
Particularización:			es	difícil	"customizar"	un	
componente	sin	acceder	a	su	implementación.
Falta	de	soporte:	una	vez	que	un	componente	es
creado	y	sellado,	¿como	y	quien	lo	mantiene?
Componentes	vs	Objetos
Objeto Componente
Polimorfismo Si No
Instanciación Algo
tardía
Lo	mas	tarde	posible
Encapsulación Algo Real	y	forzada
Herencia Si Por	interfaz	y	reuso	de
binarios
Aplicaciones	conocidas
Bajo	nivel:	COM	(Component	Object	Model)
Comunicación	de	procesos	en	distintos	lenguajes
Precursores	de	.NET
CORBA
Estándar	creado	por	el	OMG
Usado	dentro	del	mundo	Java
Otras	aplicaciones
Programación	para	diseño	gráfico
Modelo	del	pintor	(1)
Modelo	del	pintor	(2)
Hay	2	técnicas	utilizadas	para	crear	imágenes
Una	de	ellas	es	el	método	del	pintor
Se	trata	de	tomar	un	elemento	(pincel,	lápiz)
y	utilizarlo	para	crear	imágenes	desde	0.
Se	utilizan	trazos	libres.
Es	el	enfoque	más	natural	para	el	ser	humano.
Yo	creo	que	es	la	mejor	analogía	a	como	creamos
software	usualmente. 	
1.	 Comenzamos	con	una	hoja	en	blanco.
2.	 Imaginamos	el	producto	terminado.
3.	 Implementamos	la	solución	línea	por	línea.
Modelo	de	composición	(1)
Modelo	de	composición	(2)
Se	trata	de	crear	imágenes	a	partir	de	elementos
existentes.
Por	ejemplo:	mosaico
Ejemplo:	dibujar	un	tablero	de	ajedrez.
Yo	creo	que	es	el	enfoque	que	debemos	seguir	al	crear
software.
1.	 Tomar	elementos	conocidos	y	definidos.
2.	 Unirlos	de	una	forma	inteligente.
3.	 Crear	solamente	los	componentes	que	faltan.
En	el	mundo	del	software	hay	una	enorme	cantidad
de	componentes	existentes.
Pintor	vs	composición
Según	el	tipo	de	imagen,	un	método	puede	ser	mas	
rápido	que	el	otro.
También	se	debe	analizar	cual	consigue	mejores
resultados.
Sin	embargo,	yo	creo	que	en	el	mundo	del	software	la
mayoría	de	los	problemas	se	asemejan	más	al	modelo
de	composición.
Basta	de	filosofía...
Ejemplo	concreto:
Crear	un	sitio	web	para	la	comunidad	de	.NET	Uruguay
Incluír	un	foro
¿Por	qué	con	un	CMS?
Se	basan	en	la	idea	de	DSBC.
Tanto	la	estructura	como	el	contenido	son	componentes
Páginas,	imágenes,	posts,	widgets,	módulos,	etc.
Cuentan	con	una	comunidad	y	un	catálogo	de	
componentes	existentes	enorme.
Microsoft	WebMatrix	(1)
Ambiente	de	desarrollo	gratuito	de	Microsoft
Liviano:	40MB	recién	instalado	comparado
con	varios	gigas	de	Visual	Studio
Pensado	para	la	nube
Soporta	varios	lenguajes	y	plataformas
ASP.NET
PHP
Node.js
Integración	con	GIT	y	TFS
Microsoft	WebMatrix	(2)
Visual	Studio	se	siente	como	un	laboratorio	para	crear
WebMatrix	es	ideal	para	DSBC
Proporciona	componentes:
Galería	de	frameworks
Incorpora	NuGet	package	manager
Extensiones	útiles
Aisla	al	framework	de	los	componentes
OrchardCMS	(1)
Completamente	Open	Source
Creciendo	rápidamente
Arquitectura	MVC
Eso	significa	que	todos	los	componentes
siguen	una	arquitectura	MVC.
Crear	nuevos	componentes	es	sencillo
Los	componentes	existentes	son	fáciles
de	comprender	y	extender
Orchard	CMS	(2)
Componentes
Contenido
Módulo
Features
Temas
Templates
Formas	(shapes)
Widgets
Usuarios,	roles,	permisos
Recursos
Charla	y	código:
github.com/diegocard/CBSD-presentation
DSBC	en	MSDN:
http://msdn.microsoft.com/es-
es/library/bb972268.aspx#ref07back
Excelente	presentación	relacionada:	
http://www.slideshare.net/ulicruz/desarrollo-de-
software-basado-en-componentes
Paper
Component-Based	Software	Engineering	–	New
Paradigm	of	Software	Development	(Crnkovic,	Larsson)
Fin
"La	Revolución	Industrial	del	software	está	finalmente	ante
nosotros.	La	especialización	de	recursos,	estándares	para
partes	intercambiables,	y	herramientas	de	ensamblaje	de
última	generación	han	sido	usadas	en	otras	industrias	por
cientos	de	años	para	acelerar	el	desarrollo	de	productos
altamente	complejos.	
A	pesar	de	su	ubicuidad,	la	aplicación	de	estos	conceptos	a	la
industria	moderna	del	software	solamente	ha	empezando."
Bill	Gates,	1997

Weitere ähnliche Inhalte

Andere mochten auch

Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentesUlises Cruz
 
Ingeniería del software basada en componentes
Ingeniería del software basada en componentesIngeniería del software basada en componentes
Ingeniería del software basada en componentesjose_macias
 
Metodología de desarrollo de software basada en componentes
Metodología de desarrollo de software basada en componentesMetodología de desarrollo de software basada en componentes
Metodología de desarrollo de software basada en componentesEmmanuel Fontán
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentesmartin
 
Desarrollo SW Basado en Componentes
Desarrollo SW Basado en ComponentesDesarrollo SW Basado en Componentes
Desarrollo SW Basado en Componentestoryneutral
 
Metodología basada en componentes
Metodología basada en componentes Metodología basada en componentes
Metodología basada en componentes Anibal Ulibarri
 
Desarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productosDesarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productosJOSEPHPC3000
 
herramientas ofimaticas
 herramientas ofimaticas herramientas ofimaticas
herramientas ofimaticasSofos PAK
 
Desarrollo web blog
Desarrollo web blogDesarrollo web blog
Desarrollo web blogBruno Aracil
 
Software basado en Componentes
Software basado en ComponentesSoftware basado en Componentes
Software basado en ComponentesJeissonAlexander7
 
Diagramas de clases y aplicaciones JAVA en NetBeans 6.9.1
Diagramas de clases y aplicaciones  JAVA en NetBeans 6.9.1Diagramas de clases y aplicaciones  JAVA en NetBeans 6.9.1
Diagramas de clases y aplicaciones JAVA en NetBeans 6.9.1Henry Upla
 
Herramientas ofimaticas
Herramientas ofimaticasHerramientas ofimaticas
Herramientas ofimaticasSantiago Arias
 
Delitos informaticos
Delitos informaticosDelitos informaticos
Delitos informaticosmiralejo
 
Curso Sobre Delitos InformáTicos
Curso Sobre Delitos InformáTicosCurso Sobre Delitos InformáTicos
Curso Sobre Delitos InformáTicosclaudyprincs
 
Unidad 1 introduccion a las herramientas ofimaticas
Unidad 1   introduccion a las herramientas ofimaticasUnidad 1   introduccion a las herramientas ofimaticas
Unidad 1 introduccion a las herramientas ofimaticasJose Roque
 

Andere mochten auch (20)

Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentes
 
Ingeniería del software basada en componentes
Ingeniería del software basada en componentesIngeniería del software basada en componentes
Ingeniería del software basada en componentes
 
Metodología de desarrollo de software basada en componentes
Metodología de desarrollo de software basada en componentesMetodología de desarrollo de software basada en componentes
Metodología de desarrollo de software basada en componentes
 
Modelo componentes
Modelo componentesModelo componentes
Modelo componentes
 
Desarrollo SW Basado en Componentes
Desarrollo SW Basado en ComponentesDesarrollo SW Basado en Componentes
Desarrollo SW Basado en Componentes
 
Metodología basada en componentes
Metodología basada en componentes Metodología basada en componentes
Metodología basada en componentes
 
Ingenieria de dominio
Ingenieria de dominioIngenieria de dominio
Ingenieria de dominio
 
Desarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productosDesarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productos
 
herramientas ofimaticas
 herramientas ofimaticas herramientas ofimaticas
herramientas ofimaticas
 
Desarrollo web blog
Desarrollo web blogDesarrollo web blog
Desarrollo web blog
 
Taller Web Blog
Taller Web BlogTaller Web Blog
Taller Web Blog
 
Software basado en Componentes
Software basado en ComponentesSoftware basado en Componentes
Software basado en Componentes
 
Diagramas de clases y aplicaciones JAVA en NetBeans 6.9.1
Diagramas de clases y aplicaciones  JAVA en NetBeans 6.9.1Diagramas de clases y aplicaciones  JAVA en NetBeans 6.9.1
Diagramas de clases y aplicaciones JAVA en NetBeans 6.9.1
 
Gevisys
GevisysGevisys
Gevisys
 
Herramientas ofimaticas
Herramientas ofimaticasHerramientas ofimaticas
Herramientas ofimaticas
 
Vivi 6 delitos informaticos
Vivi 6 delitos informaticosVivi 6 delitos informaticos
Vivi 6 delitos informaticos
 
SUITE OFIMÁTICA
SUITE OFIMÁTICASUITE OFIMÁTICA
SUITE OFIMÁTICA
 
Delitos informaticos
Delitos informaticosDelitos informaticos
Delitos informaticos
 
Curso Sobre Delitos InformáTicos
Curso Sobre Delitos InformáTicosCurso Sobre Delitos InformáTicos
Curso Sobre Delitos InformáTicos
 
Unidad 1 introduccion a las herramientas ofimaticas
Unidad 1   introduccion a las herramientas ofimaticasUnidad 1   introduccion a las herramientas ofimaticas
Unidad 1 introduccion a las herramientas ofimaticas
 

Ähnlich wie Desarrollo de Software Basado en Componentes

C3 m2
C3 m2C3 m2
C3 m2AERCE
 
Cadena de suministros en los negocios internacionales
Cadena de suministros en los negocios internacionalesCadena de suministros en los negocios internacionales
Cadena de suministros en los negocios internacionalesAlexBunces
 
Miguel inciarte
Miguel inciarteMiguel inciarte
Miguel inciarteLaura Nava
 
Actividad #3. investigar en internet, vía telefónica o vía correo electrónico...
Actividad #3. investigar en internet, vía telefónica o vía correo electrónico...Actividad #3. investigar en internet, vía telefónica o vía correo electrónico...
Actividad #3. investigar en internet, vía telefónica o vía correo electrónico...Fco Dee JeSuss Contreras
 
Supercomputación y su impacto en nuestra vida diaria retos y tendencias
Supercomputación y su impacto en nuestra vida diaria   retos y tendenciasSupercomputación y su impacto en nuestra vida diaria   retos y tendencias
Supercomputación y su impacto en nuestra vida diaria retos y tendenciasCein
 
Preferencia entre el software libre y propietario
Preferencia entre el software libre y propietarioPreferencia entre el software libre y propietario
Preferencia entre el software libre y propietariowillliamA96
 
Preferencia entre el software libre y propietario
Preferencia entre el software libre y propietarioPreferencia entre el software libre y propietario
Preferencia entre el software libre y propietariowillliamA96
 
proceso de fabricación de un automovil en una empresa
proceso de fabricación de un automovil en una empresaproceso de fabricación de un automovil en una empresa
proceso de fabricación de un automovil en una empresaPabloAngelesBaldeon2
 
En Tiempos De Crisis
En Tiempos De CrisisEn Tiempos De Crisis
En Tiempos De Crisismastersoftsas
 
Preferencias entre software
Preferencias entre softwarePreferencias entre software
Preferencias entre softwarewillliamA96
 
Qué relación existe entre spl y mdse
Qué relación existe entre spl y mdseQué relación existe entre spl y mdse
Qué relación existe entre spl y mdseOscar Eraso Moncayo
 
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)Jordi Cabot
 
Experiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdfExperiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdfNicanor Sachahuaman
 
El Efecto De Los LíQuidos En La Animación
El Efecto De Los LíQuidos En La AnimaciónEl Efecto De Los LíQuidos En La Animación
El Efecto De Los LíQuidos En La AnimaciónSegaAlex
 

Ähnlich wie Desarrollo de Software Basado en Componentes (20)

C3 m2
C3 m2C3 m2
C3 m2
 
Cadena de suministros en los negocios internacionales
Cadena de suministros en los negocios internacionalesCadena de suministros en los negocios internacionales
Cadena de suministros en los negocios internacionales
 
Act 3 inv costos
Act 3 inv costosAct 3 inv costos
Act 3 inv costos
 
Miguel inciarte
Miguel inciarteMiguel inciarte
Miguel inciarte
 
Actividad 3 unidad 5.docx
Actividad 3 unidad 5.docx Actividad 3 unidad 5.docx
Actividad 3 unidad 5.docx
 
Actividad #3. investigar en internet, vía telefónica o vía correo electrónico...
Actividad #3. investigar en internet, vía telefónica o vía correo electrónico...Actividad #3. investigar en internet, vía telefónica o vía correo electrónico...
Actividad #3. investigar en internet, vía telefónica o vía correo electrónico...
 
Caso de uso
Caso de usoCaso de uso
Caso de uso
 
La influenza en la informatica
La influenza en la informaticaLa influenza en la informatica
La influenza en la informatica
 
Supercomputación y su impacto en nuestra vida diaria retos y tendencias
Supercomputación y su impacto en nuestra vida diaria   retos y tendenciasSupercomputación y su impacto en nuestra vida diaria   retos y tendencias
Supercomputación y su impacto en nuestra vida diaria retos y tendencias
 
Preferencia entre el software libre y propietario
Preferencia entre el software libre y propietarioPreferencia entre el software libre y propietario
Preferencia entre el software libre y propietario
 
Preferencia entre el software libre y propietario
Preferencia entre el software libre y propietarioPreferencia entre el software libre y propietario
Preferencia entre el software libre y propietario
 
Reingenieria de Procesos: caso de exito y fracaso
Reingenieria de Procesos: caso de exito y fracasoReingenieria de Procesos: caso de exito y fracaso
Reingenieria de Procesos: caso de exito y fracaso
 
proceso de fabricación de un automovil en una empresa
proceso de fabricación de un automovil en una empresaproceso de fabricación de un automovil en una empresa
proceso de fabricación de un automovil en una empresa
 
En Tiempos De Crisis
En Tiempos De CrisisEn Tiempos De Crisis
En Tiempos De Crisis
 
Preferencias entre software
Preferencias entre softwarePreferencias entre software
Preferencias entre software
 
Las tic ayudan al medioambiente
Las tic ayudan al medioambienteLas tic ayudan al medioambiente
Las tic ayudan al medioambiente
 
Qué relación existe entre spl y mdse
Qué relación existe entre spl y mdseQué relación existe entre spl y mdse
Qué relación existe entre spl y mdse
 
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
 
Experiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdfExperiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdf
 
El Efecto De Los LíQuidos En La Animación
El Efecto De Los LíQuidos En La AnimaciónEl Efecto De Los LíQuidos En La Animación
El Efecto De Los LíQuidos En La Animación
 

Mehr von Diego Cardozo

El proximo billon de usuarios
El proximo billon de usuariosEl proximo billon de usuarios
El proximo billon de usuariosDiego Cardozo
 
The next billion users
The next billion usersThe next billion users
The next billion usersDiego Cardozo
 
Troubleshooting Ecommerce Performance
 Troubleshooting Ecommerce Performance Troubleshooting Ecommerce Performance
Troubleshooting Ecommerce PerformanceDiego Cardozo
 
Cranking It Up - SuiteWorld 2017
Cranking It Up  - SuiteWorld 2017Cranking It Up  - SuiteWorld 2017
Cranking It Up - SuiteWorld 2017Diego Cardozo
 
Speed Thrills - Suiteworld 2016
Speed Thrills - Suiteworld 2016Speed Thrills - Suiteworld 2016
Speed Thrills - Suiteworld 2016Diego Cardozo
 
Performance in the cloud
Performance in the cloudPerformance in the cloud
Performance in the cloudDiego Cardozo
 
Cómo testear performance sin morir en el intento
Cómo testear performance sin morir en el intentoCómo testear performance sin morir en el intento
Cómo testear performance sin morir en el intentoDiego Cardozo
 
Optimize performance and not die trying
Optimize performance and not die tryingOptimize performance and not die trying
Optimize performance and not die tryingDiego Cardozo
 
Optimizar performance sin morir en el intento
Optimizar performance sin morir en el intentoOptimizar performance sin morir en el intento
Optimizar performance sin morir en el intentoDiego Cardozo
 
How to test performance and not die trying
How to test performance and not die tryingHow to test performance and not die trying
How to test performance and not die tryingDiego Cardozo
 
Testeando performance sin morir en el intento
Testeando performance sin morir en el intentoTesteando performance sin morir en el intento
Testeando performance sin morir en el intentoDiego Cardozo
 
Organización de aplicaciones web con Backbone.js
Organización de aplicaciones web con Backbone.jsOrganización de aplicaciones web con Backbone.js
Organización de aplicaciones web con Backbone.jsDiego Cardozo
 
Structuring web applications with Backbone.js
Structuring web applications with Backbone.jsStructuring web applications with Backbone.js
Structuring web applications with Backbone.jsDiego Cardozo
 
Component Based Software Development
Component Based Software DevelopmentComponent Based Software Development
Component Based Software DevelopmentDiego Cardozo
 
Single page applications
Single page applicationsSingle page applications
Single page applicationsDiego Cardozo
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page ApplicationsDiego Cardozo
 

Mehr von Diego Cardozo (16)

El proximo billon de usuarios
El proximo billon de usuariosEl proximo billon de usuarios
El proximo billon de usuarios
 
The next billion users
The next billion usersThe next billion users
The next billion users
 
Troubleshooting Ecommerce Performance
 Troubleshooting Ecommerce Performance Troubleshooting Ecommerce Performance
Troubleshooting Ecommerce Performance
 
Cranking It Up - SuiteWorld 2017
Cranking It Up  - SuiteWorld 2017Cranking It Up  - SuiteWorld 2017
Cranking It Up - SuiteWorld 2017
 
Speed Thrills - Suiteworld 2016
Speed Thrills - Suiteworld 2016Speed Thrills - Suiteworld 2016
Speed Thrills - Suiteworld 2016
 
Performance in the cloud
Performance in the cloudPerformance in the cloud
Performance in the cloud
 
Cómo testear performance sin morir en el intento
Cómo testear performance sin morir en el intentoCómo testear performance sin morir en el intento
Cómo testear performance sin morir en el intento
 
Optimize performance and not die trying
Optimize performance and not die tryingOptimize performance and not die trying
Optimize performance and not die trying
 
Optimizar performance sin morir en el intento
Optimizar performance sin morir en el intentoOptimizar performance sin morir en el intento
Optimizar performance sin morir en el intento
 
How to test performance and not die trying
How to test performance and not die tryingHow to test performance and not die trying
How to test performance and not die trying
 
Testeando performance sin morir en el intento
Testeando performance sin morir en el intentoTesteando performance sin morir en el intento
Testeando performance sin morir en el intento
 
Organización de aplicaciones web con Backbone.js
Organización de aplicaciones web con Backbone.jsOrganización de aplicaciones web con Backbone.js
Organización de aplicaciones web con Backbone.js
 
Structuring web applications with Backbone.js
Structuring web applications with Backbone.jsStructuring web applications with Backbone.js
Structuring web applications with Backbone.js
 
Component Based Software Development
Component Based Software DevelopmentComponent Based Software Development
Component Based Software Development
 
Single page applications
Single page applicationsSingle page applications
Single page applications
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 

Desarrollo de Software Basado en Componentes