Share
Embed
Transcript
30 slides
-
De software libre y otras hierbas 8 de octubre del
2008 Santiago Lizardo <[email protected]> -
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. Presentación -
• 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 -
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 -
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 -
Conseguir ser diferencial ➢ Tomar el camino dificil ➢ Tener
iniciativa > emprender Para obtener ➢ Satisfacción personal ➢ Reconocimiento frente a empleadores Profesión, vocació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! Comunicación -
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 .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 -
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 Programadores y
desarrolladores Quality assurance (beta testers) Analistas Arquitectos -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
Software propietario Orientado a productos Ingresos por: ✔ Licencia Software
libre Orientado a servicios Ingresos por: ✔ Soporte tecnico ✔ Extensiones ✔ Funcionalidades adhoc Software libre / modelo de negocio -
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