miércoles, 13 de julio de 2011

Arquitectura y Diseño de un entorno de Desarrollo

A continuación mis apuntes del video de las jornadas Symfony 2010. Hecho para PHP, pero recomendable para todas las plataformas... a propósito se viene la capacitación en Metodologías de Desarrollo?..


Acá el link de las jornadas 2010... (Creo que ya están las del 2011 también...)

Metodología de Desarrollo Ágil: XP eXtreme Programming
-         Centrado en las personas, fomentar la comunicación, programar de a dos
-         Ciclos de desarrollo más dinámicos
-         Pruebas durante el desarrollo
-         Los equipos se organizan en: Programador, Jefe de Proyecto y Cliente
-         Cliente completamente integrado
-         User-Stories; trozos de funcionalidad que agregan valor, completos y probados.
-         Releases, planificación de entregas, priorizar, 2 o 3 semanas cada una.
-         Metodología TDD: Empezar a hacer los test antes que nada.
-          
Metodología de Desarrollo Ágil: SCRUM
-         BackLog, conjuntos de descripciones de funciones, ordenadas y priorizadas, puntuación
-         Sprint, conjunto de backlogs a implementar en un entregable
-         Reuniones diarias del equipo para ver tareas.
-         Chiste del cerdo y la gallina: roles cerdo (marcan la pauta, deciden) y roles gallina.
-         Herramientas de gestión de tareas: Gira (Jira), orientado a SCRUM

No todo es blanco y negro, usemos lo que nos sirva más.

Herramientas de Documentación
-         Wiki: MediaWiki, Confluence, DocuWiki
-         DocBook (XML), XML Mind

Sistemas de Control de Versiones
-         Versionado, accesible, comparaciones, ramas de versiones del trunc
-         Repositorios Centralizados (CVS o Subversion)
-         Repositorios Distribuidos (GIT o Mercurial) Las ramas se crean en local, deja desconectarse de la copia central. Compartir ramas concretas a algunos usuarios.
-         Tortoise HG para Windows (mercurial), clientes para estas herramientas hay miles.

Herramientasde Construcción
-         Empaquetar y poner en producción
-         Evitar que el pase a producción se haga manualmente (para base de datos y programas)
-         Para backups, documentación, etc
-         Servidor de Construcción Continua: Builds automatizados, test unitarios, detección de problemas de integración
-         Para PHP: Apache Ant o Phing; usan xml para describir las tareas que queremos hacer. Es flexible, pero obliga a que el resto de desarrolladores se lo aprenda.
-         Apache Maven o php-maven: Todos los proyectos tienen la misma estructura de construcción, ciclo de vida.
-         La herramienta inclusive tiene funcionalidades de phing.
-         Leer a Martin Fowler sobre la Integración Continua, todos haciendo commit.
-         Hudson, como un servidor de cron. Dispara tareas cuando detecte un commit.
-         PhpUnderControl: Testing, documentación, análisis del código con PHP_CodSniffer
-         CruiseControl
-         Atlassian bamdoo (Jira)

Gestión de Proyectos e Incidencias
-         Para planificar mi programación Agil de Scrum.
-         Jira, tiene una API., Interfaz sencilla. Hay plugins para ambientes de desarrollo. Cada tarea puede tener un contexto, para tareas que terminaré mañana, se abren los archivos registrados. Los commit están orientados a las tareas, hace commit a todos los ficheros del contexto.
-         Realmente aportan valor añadido.

Pruebas unitarias
-         Pruebas de trozos de código
-         Porciones de código que ayudan a probar que las funcionalidades cumplan con los requerimientos de usuario
-         Deben cumplir requisitos, deben ser rápidas, las lentas deben estar en el servidor de integración continua.
-         Hay tipos: unitarias de desarrollo, de integración (con base de datos, web services, etc.), de rendimiento (o estrés), de funcionalidades.
-         Symfony ya tenía testing, pero va a usar PHPUnit
-         Mocks y Stubs
-         PHPUnit: Acerción: el resultado de la prueba se compara con un valor esperado. También pruebas por resultado. Se pueden usar en los servidores de integración contínua
-         Para test funcionales del usuario: Selenium (plugin para firefox), para aserciones. Además ayuda a guardar secuencias de uso en el navegador.
-         TDD: Desarrollo dirigido por test. “No añadir más código que el que realmente necesito”
-         Cobertura de los test en porcentaje
-         Mock “impostor”; clases que suplen a otros de forma controlada, para simular fallos sin necesidad de interactuar con otros elementos reales.
-         Análisis estàtico del còdigo: intenta prevenirme de posibles errores. Complementan las pruebas. PHP_Depend, para evitar procedimientos con muchos parámetros, o muy largos, o muy complejos con varios if… Avisan que nos pasamos de complejidad.
-         PHPCDP: Detecta código duplicado tipo CopyPaste.
-         Sonar: un entorno web donde se unen las herramientas de código estático. Navegar en los errores en la línea del código, es personalizable.

IDE para el desarrollo de Aplicaciones
- Integran Subversion o GIT, Phing, Jira,  PHPUnit, Análisis Estático.

No hay comentarios:

Publicar un comentario