Upgrade to Pro — share decks privately, control downloads, hide ads and more …

De software libre y otras hierbas

Santiago Lizardo
October 08, 2008
54

De software libre y otras hierbas

Río Grande

Santiago Lizardo

October 08, 2008
Tweet

Transcript

  1. 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
  2. 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. Presentación
  3. • 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 Agenda
  4. 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
  5. ¿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
  6. 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
  7. Conseguir ser diferencial ➢ Tomar el camino dificil ➢ Tener

    iniciativa > emprender Para obtener ➢ Satisfacción personal ➢ Reconocimiento frente a empleadores Profesión, vocación
  8. 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
  9. 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! Comunicación
  10. 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)
  11. 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/
  12. Escena actual .NET .NET (ASP) PHP ASP C/C++ Tipo de

    aplicación Tecnologia libre Tecnologia propietaria Aplicación de escritorio Java Standard Edition Aplicación Web empresarial Java Enterprise Edition Aplicación Web Videojuego Aplicación móvil Java Mobile Edition .NET Mobile Cuadro tecnologico segun tipo de aplicación
  13. Tecnologias emergentes Cloud computing • Amazon Elastic Cloud Computing (Amazon

    EC2) • Google App Engine (GAE) 1 server 1 ­ n servers 1 ­ ∞ servers
  14. 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
  15. Trabajo en equipo / roles Jefes de proyecto Programadores y

    desarrolladores Quality assurance (beta testers) Analistas Arquitectos
  16. 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
  17. 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. Consideraciones tecnicas / patrones de diseño Swing Logica de negocios BBDD HTML/JSP WAP Vista Controlador Modelo XML
  18. 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 / herramientas
  19. 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 / buenas practicas
  20. 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) Consideraciones tecnicas / herramientas
  21. Caracteristicas comunes: • Entregas rapida del software • Retroalimentación Metodologias

    agiles • eXtreme programming (XP) • Scrum • FDD (Feature driven development) • TDD (Test driven development) Procesos de desarrollo / metodos agiles
  22. 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 Procesos de desarrollo / metodos agiles
  23. Software propietario Orientado a productos Ingresos por: ✔ Licencia Software

    libre Orientado a servicios Ingresos por: ✔ Soporte tecnico ✔ Extensiones ✔ Funcionalidades ad­hoc Software libre / modelo de negocio
  24. Software libre / proceso Concepción de la idea Desarrollo del

    prototipo Publicación del desarrollo Recepción de feedback por parte de la comunidad
  25. 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...
  26. 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