Rg Software Libre Y Otras Hierbas - Presentation Transcript
De software libre y otras hierbas
8 de octubre del 2008
Santiago Lizardo
<santiago.lizardo@gmail.com>
Presentación
Santiago Lizardo Oscares
Analista de sistemas
➢
➢Sun Certified Enterprise Architect (SCEA)
➢Sun Certified Java Programmer (SCJP)
➢Zend Certified Engineer (ZCE, PHP)
Blog
http://santiago.lizardo.info
Presentación
Tiempo completo: abiquo
Explorando tecnologias como grid computing
(computación intensiva), cloud, distributed file
systems, sensor networks.
Tiempo parcial: emprendedor
Realización de prototipos y proyectos de software
libre.
Agenda
Profesión, vocación
●
La importancia de sentirse un artesano
●Comunicación
Profesionales con mas valor
●Escena actual
Lo que se usa y porque
●Tecnologias emergentes
Lo próximo
●Trabajo en equipo
Comparación de metodologias
●Consideraciones tecnicas
Pensar primero, desarrollar despues
●Proceso de desarrollo de software
Desde la concepción de la idea hasta la publicación
●Software libre
Un nuevo modelo de negocios y oportunidades
Profesión, vocación
Notable crecimiento en la demanda de profesionales en
todo el mundo.
●Desplazarse a otras ciudades
●Trabajar de forma remota con internet
Infinidad de recursos a nuestro alcanze de forma gratuita.
Unicos requisitos para llevar adelante una idea:
➔Tiempo
➔Conocimientos
➔Hardware
Profesión, vocación
¿Que podemos hacer con nuestro conocimiento?
✔Desarrollar aplicaciones comerciales/libres
✔ Web (portales, mashups, comunidades)
✔ Escritorio (videojuegos, SGBD)
✔ Celulares
✔Escribir un blog
✔Documentar
✔Reportar/corregir bugs
Artesanos del siglo XXI
●Creatividad
●Puntillismo
Profesión, vocación
Nuestros conocimientos son utiles mas alla de las fronteras
laborales.
Saber usarlos para tareas cotidianas convierte nuestra profesión
en una vocación, de la que sacaremos mas provecho.
Ejemplos
Desarrollar una aplicación para gestionar nuestro presupuesto
●
Desarrollar un videojuego para compartir con amigos
●
Programar algoritmos como si fueran crucigramas
●
Profesión, vocación
Conseguir ser diferencial
Tomar el camino dificil
➢
Tener iniciativa > emprender
➢
Para obtener
Satisfacción personal
➢
Reconocimiento frente a empleadores
➢
Comunicación
Un profesional integral tiene
cualidades tecnicas y humanas.
La importancia de la comunicación:
Transmitir bien un mensaje (digitalmente, en persona)
●
Humildad
●
Utilización de redes de contacto profesionales:
LinkedIn, http://www.linkedin.com
➢
Xing, http://www.xing.com
➢
Para encontrar:
Nuevos empleos
●
Colaboradores para un proyecto
●
Expertos en areas especificas de conocimiento
●
Comunicación
Medios
Internet
● Blog (escribe el tuyo o comenta en otros)
● Foros
Presenciales
● Eventos
● Conferencias/charlas
● Grupos de usuario (Linux, Blender, ...)
● ¿No existe un grupo con tus intereses? ¡Crealo!
Escena actual
Web 2.0
Contenidos creados y mantenidos por el usuario
Ofrecen API y servicios Web que permiten integrar sus
servicios por parte de terceros
Ejemplos:
Wikipedia (enciclopedia)
YouTube (videos)
Flickr (fotos)
Escena actual
Mashups
Aplicaciones Web que ofrecen valor añadido integrando datos de
otras fuentes. (a través de su API o mediante screen scrapping)
Panoramio: Geolocalización de fotos
http://www.panoramio.com/
Escena actual
Cuadro tecnologico segun tipo de aplicación
Tipo de aplicación Tecnologia libre Tecnologia propietaria
Aplicación de escritorio Java Standard Edition .NET
Aplicación Web empresarial Java Enterprise Edition .NET (ASP)
Aplicación Web PHP ASP
Videojuego C/C++
Aplicación móvil Java Mobile Edition .NET Mobile
Tecnologias emergentes
Cloud computing
Amazon Elastic Cloud Computing (Amazon EC2)
●
Google App Engine (GAE)
●
1 server
1 n servers
1 ∞ servers
Tecnologias emergentes
La Web semantica (Web 3.0)
Es una descripción de metadata que da información sobre un
contenido y elementos relacionados, sin preocuparse por la
presentación de esos datos (!HTML)
Permitira buscar contenidos y obtener resultados que tenga
relacion directa o indirecta con la frase escrita.
Ejemplo de Web semantica:
● RSS: Catalogación de contenidos de noticias y eventos
Trabajo en equipo / roles
Jefes de proyecto
Analistas Arquitectos
Programadores y Quality assurance
desarrolladores (beta testers)
Consideraciones tecnicas
Desarrollar teniendo en cuenta
I18N (internacionalización abreviado)
●
●Flexibilidad (extensibilidad, modularidad)
●Portabilidad (Linux, Windows, Mac, ...)
●Interoperabilidad (API, Web services, ...)
●Mantenibilidad (documentación, testing, ...)
Consideraciones tecnicas / patrones de diseño
Son soluciones a problemas de diseño, que han demostrado
reusabilidad en diferentes aplicaciones y tecnologias.
Entre los mas populares se encuentra el MVC
(Model/View/Controller) que propone la separación de las capas
logicas de una aplicación.
Vista
Modelo
Swing
Controlador
BBDD
Logica de negocios
HTML/JSP
XML
WAP
Consideraciones tecnicas / herramientas
Control de versiones
Equipos de desarrollo numerosos (+3)
Copia de seguridad, e historico
Edición de un mismo fichero de forma simultanea
Soluciones libres
CVS (concurrent versioning system)
➔
Subversion (SVN)
➔
Soluciones propietarias
SourceSafe
➔
Consideraciones tecnicas / buenas practicas
Pruebas unitarias
Se refiere a la practica de crear pruebas para cada unidad de
codigo que exista en una aplicación. (por ejemplo, una clase de
test para cada clase del proyecto)
Esto permite:
Identificar rapidamente errores consecuencia de un cambio.
●
Mantener el codigo libre de errores
●
Herramientas
*unit: cppunit, junit, Nunit, etc...
Consideraciones tecnicas / herramientas
Entornos de desarrollo
Los entornos de desarrollo integrado (IDE) son herramientas que
permiten la creación (devel), depuración (debug) e incluso la
optimización (profiling) de aplicaciones desde un mismo
programa.
Eclipse es una de esas fantasticas herramientas que te permitira
trabajar y cambiar de tecnologias facilmente:
Eclipse CDT (C/C++)
➢
Eclipse PDT (PHP)
➢
Eclipse JEE (Java Enterprise Edition, Web applications)
➢
Procesos de desarrollo / metodos pesados
Rational unified process (RUP)
Procesos de desarrollo / metodos agiles
Extreme programming (XP)
●Programación de a pares
●Desarrollo iterativo
●Pruebas unitarias
●Simplicidad
Scrum
Autoorganización del equipo
●
Gestión del tiempo y tareas de forma autonoma
●
Software libre / modelo de negocio
Software propietario
Orientado a productos
Ingresos por:
✔Licencia
Software libre
Orientado a servicios
Ingresos por:
✔Soporte tecnico
✔Extensiones
✔Funcionalidades adhoc
Software libre / proceso
Concepción de la idea
Desarrollo del prototipo
Publicación del desarrollo
Recepción de feedback
por parte de la comunidad
Software libre / licencias
Publicar el código de nuestro proyecto no significa perder nuestro
control sobre el.
Las licencias existen para proteger nuestro valor intelectual, y
poner algunas reglas en su redistribución.
Licencias mas conocidas:
GPL: Publicar código. No permite derivados comerciales
●
LGPL: Similar a GPL. Puede ser usado en software
●
propietario.
CPAL: Exige mostrar un logo del software original.
●
Otras...
●
Software libre / plataformas
Plataformas para hospedar nuestro software libre:
SourceForge, http://www.sourceforge.net
●
Google Code, http://code.google.com/hosting/
●
Servicios ofrecidos:
Control de versiones (SVN, CVS)
●
Hosting Web
●
Mailing list
●
Wiki
●
¿Preguntas?
¡Muchas gracias!
Feedback sobre esta presentación a santiago.lizardo@gmail.com
0 comments
Post a comment