If you can't read please download the document
Upload
ricardo-borillo-domenech
View
3.675
Download
0
Embed Size (px)
DESCRIPTION
Descripción de los principales elementos, tanto humanos como tecnológicos, que necesitaremos a la hora de poner en marcha un equipo de desarrollo ágil.
Citation preview
Jornadas Symfonyhttp://decharlas.uji.es/symfonyorganizan patrocinan
5 y 6 de julio 2010 Universitat Jaume I, Castelln
colaboran
Arquitectura y diseo de un entorno de desarrolloRicardo Borillo, Universitat Jaume [email protected]
Jornadas Symfonyhttp://decharlas.uji.es/symfony
5 y 6 de julio 2010 Universitat Jaume I, Castelln
sesin patrocinada por
http://www.lsi.uji.es/
Jornadas Symfony
http://decharlas.uji.es/symfony
ndice
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Metodologas de desarrollo: Clsicas vs giles Herramientas de documentacin y gestin del conocimiento Sistemas de control de versiones Herramientas de construccin Integracin contnua Gestin de proyectos e incidencias Pruebas unitarias del software Repositorio de componentes Aseguramiento de la calidad: Anlisis esttico del codigo IDE para el desarrollo de aplicaciones. Conexin entre todos los elementos
Jornadas Symfony
http://decharlas.uji.es/symfony
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales
Los tres aspectos ms importantes en un equipo de desarrollo:
Personas, personas y personas
Jornadas Symfony
http://decharlas.uji.es/symfony
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Objetivos para el equipo humano:
Formacin:
Todos conocen el entorno y herramientas Todos conocen la tecnologa Transferencia de conocimiento de los ms expertos a los menos expertos Todos pueden asumir tareas de innovacin A cualquiera se le puede asignar cualquier tareahttp://decharlas.uji.es/symfony
Motivacin:
Jornadas Symfony
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales
Caractersticas del entorno:
Equipos de trabajo de tamao limitado Visin integrada de producto:
Pautas comunes Reutilizacin de cdigo Mdulos especficos para cada necesidad
Estndares de desarrollo bien definidos (directrices a seguir)
Jornadas Symfony
http://decharlas.uji.es/symfony
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales
Objetivos:
Producir software de calidad (sin bugs) Producir software mantenible y documentado Entorno de trabajo adecuado:
Integrado Predecible Alto de nivel de interaccin entre desarrolladores
Propiedad colectiva del cdigohttp://decharlas.uji.es/symfony
Jornadas Symfony
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales
En definitiva ...
QAJornadas Symfony http://decharlas.uji.es/symfony
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales
Arquitectura deseable:
Separacin entre desarrollo y produccin Despliegue controlado de aplicaciones Comparticin de cdigo Registro global de bugs, tareas y mejoras Testeo automtico de aplicaciones Documentacin de funcionalidades y procesos
Jornadas Symfony
http://decharlas.uji.es/symfony
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales
Cmo consigo todo esto???
Jornadas Symfony
http://decharlas.uji.es/symfony
ndice
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Metodologas de desarrollo: Clsicas vs giles Herramientas de documentacin y gestin del conocimiento Sistemas de control de versiones Herramientas de construccin Integracin continua Gestin de proyectos e incidencias Pruebas unitarias del software Repositorio de componentes Aseguramiento de la calidad: Anlisis esttico del cdigo IDE para el desarrollo de aplicaciones. Conexin entre todos los elementos
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs gilesMetodologas clsicas:
Anlisis, diseo, implementacin y pruebas Anlisis apoyado en notaciones grficas: DFD, E/R, UML Estricto, rgido y poco reactivo a cambios (toma de requisitos inicial) Desarrollo iterativo El cdigo es la base gil, dinmico y muy flexible
Metodologas giles:
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs giles
XP: eXtreme Programming
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs giles
El Manifiesto gil valora:
A los individuos y su interaccin, por encima de los procesos y las herramientas El software que funciona, por encima de la documentacin exhaustiva La colaboracin con el cliente, por encima de la negociacin contractual La respuesta al cambio, por encima del seguimiento de un planhttp://decharlas.uji.es/symfony
Jornadas Symfony
Metodologas de desarrollo: Clsicas vs giles
XP es una metodologa gil:
Diseada para entornos dinmicos Pensada para equipos pequeos (hasta 10 programadores) Orientada fuertemente hacia la codificacin nfasis en la comunicacin informal, verbal
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs gilesProgramador:
Responsable de decisiones tcnicas y de construir el sistema Sin distincin entre analistas, diseadores o codificadores En XP, los programadores disean, programan y realizan las pruebas
Jefe de Proyecto:
Organiza y gua las reuniones Asegura condiciones adecuadas para el proyecto
Cliente:
Es parte del equipo Determina qu construir y cundo Establece las pruebas funcionales
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs giles
Captura de requisitos: Historias del Usuario (User-Stories)
Establecen los requisitos del cliente Trozos de funcionalidad que aportan valor Se les asignan tareas de programacin con un n de horas de desarrollo Las establece el cliente Son la base para las pruebas funcionales
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs giles
Planificacin:
Planificacin por entregas (releases) Se priorizan aquellas user-stories que el cliente selecciona porque son ms importantes para el negocio Entregas:
Son lo ms pequeas posibles Se dividen en iteraciones (iteracin = 2 o 3 semanas) Estn compuestas por historias
A cada programador se le asigna una tarea de la userstoryhttp://decharlas.uji.es/symfony
Jornadas Symfony
Metodologas de desarrollo: Clsicas vs giles
Programacin:
La programacin de tareas se realiza por parejas La pareja disea, prueba, implementa e integra el cdigo de la tarea Cdigo dirigido por las pruebas (TDD) Cdigo modular, intentando refactorizar siempre que se pueda
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs giles
Practicas:
El juego de la planificacin Entregas pequeas Diseo simple Pruebas Refactoring Programacin en parejas (compartir experiencia / detectar fallos) Propiedad colectiva Integracin contnua Cliente in situ Estndares de programacin
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs giles
SCRUM
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs giles
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs giles
Roles principales: Scrum Master, Product Owner y Team. El resto son gallinas
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs giles
Jornadas Symfony
http://decharlas.uji.es/symfony
Metodologas de desarrollo: Clsicas vs giles
Conclusin:
No todo es blanco ni negro Mtodo = Conjunto ordenado de buenas prcticas
Jornadas Symfony
http://decharlas.uji.es/symfony
ndice
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Metodologas de desarrollo: Clsicas vs giles Herramientas de documentacin y gestin del conocimiento Sistemas de control de versiones Herramientas de construccin Integracin continua Gestin de proyectos e incidencias Pruebas unitarias del software Repositorio de componentes Aseguramiento de la calidad: Anlisis esttico del cdigo IDE para el desarrollo de aplicaciones. Conexin entre todos los elementos
Jornadas Symfony
http://decharlas.uji.es/symfony
Herramientas de documentacin y gestin del conocimiento
Requisitos:
Formato estndar de representacin Documentacin accesible online Fcil modificacin y mantenimiento Conversin a otros formatos como PDF Bsqueda y buena gestin del conocimiento
Jornadas Symfony
http://decharlas.uji.es/symfony
Herramientas de documentacin y gestin del conocimiento
Posibles alternativas y puntos fuertes:
Wiki:
Sintaxis sencilla Herramienta online Multitud de herramientas (MediaWiki, Confluence, DokuWiki) XML Fcilmente convertible a otros formatoshttp://decharlas.uji.es/symfony
DocBook:
Jornadas Symfony
Herramientas de documentacin y gestin del conocimiento
Wiki:
Jornadas Symfony
http://decharlas.uji.es/symfony
Herramientas de documentacin y gestin del conocimiento
DocBook:
Jornadas Symfony
http://decharlas.uji.es/symfony
ndice
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Metodologas de desarrollo: Clsicas vs giles Herramientas de documentacin y gestin del conocimiento Sistemas de control de versiones Herramientas de construccin Integracin continua Gestin de proyectos e incidencias Pruebas unitarias del software Repositorio de componentes Aseguramiento de la calidad: Anlisis esttico del cdigo IDE para el desarrollo de aplicaciones. Conexin entre todos los elementos
Jornadas Symfony
http://decharlas.uji.es/symfony
Sistemas de control de versiones
Requisitos:
Repositorio unificado para el cdigo Soporte para el versionado Soporte para realizar comparaciones entre versiones Comparticin de cdigo entre desarrolladores Integrado con las herramientas de desarrollo
Jornadas Symfony
http://decharlas.uji.es/symfony
Sistemas de control de versiones
Tipos de repositorios:
Centralizados (CVS o Subversion):
Existe un repositorio centralizado con todo el cdigo Para trabajar sobre un recurso, hay que descargar una copia local Los ficheros modificados hay que subirlos de nuevo para que estn accesibles para todos Los desarrolladores slo tienen en su copia local aquellos fuentes que han solicitado del servidorhttp://decharlas.uji.es/symfony
Jornadas Symfony
Sistemas de control de versiones
Jornadas Symfony
http://decharlas.uji.es/symfony
Sistemas de control de versiones
Tipos de repositorios:
Distribuidos (GIT o Mercurial):
No hay un repositorio central Todos los desarrolladores tienen su propia copia del repositorio, con todas las versiones y toda la historia. Permiten que dos desarrolladores puedan compartir cambios (sincronizarse). Suele haber un repositorio de fuentes que se considera oficial o central (obtener la primera copia, versiones probadas, backup)
Jornadas Symfony
http://decharlas.uji.es/symfony
Sistemas de control de versiones
Jornadas Symfony
http://decharlas.uji.es/symfony
Sistemas de control de versiones
Jornadas Symfony
http://decharlas.uji.es/symfony
ndice
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Metodologas de desarrollo: Clsicas vs giles Herramientas de documentacin y gestin del conocimiento Sistemas de control de versiones Herramientas de construccin Integracin continua Gestin de proyectos e incidencias Pruebas unitarias del software Repositorio de componentes Aseguramiento de la calidad: Anlisis esttico del cdigo IDE para el desarrollo de aplicaciones. Conexin entre todos los elementos
Jornadas Symfony
http://decharlas.uji.es/symfony
Herramientas de construccin
Requisitos:
Evitar compilacin, construccin y despliegue manual del cdigo Independencia del IDE Flexibilidad y soporte para casi cualquier tipo de herramienta necesaria Integracin de las pruebas unitarias, generacin de documentacin, despliegue en pre-produccin, mtricas de cdigo Todo en uno y desde un nico sitio!!http://decharlas.uji.es/symfony
Jornadas Symfony
Herramientas de construccin
Objetivos:
Evitar errores Aplicacin desplegable por cualquiera sin conocimientos concretos de la misma Control automtico de las dependencias Integracin completa con el entorno Necesario ejecutar siempre los controles de calidadhttp://decharlas.uji.es/symfony
Jornadas Symfony
Herramientas de construccin
Apache Ant o Phing:
Similar a los makefiles, pero con sintaxis XML Originalmente para Java, aunque se usa para cualquier lenguaje. Phing ofrece funcionalidades especficas PHP Proceso de construccin = Secuencia de targets Cada target realiza un paso del proceso y ejecuta tasks Muchas tasks ya predefinidas: Compilacin, SCP, empaquetado, ejecucin de tests unitarios, etc Muy buena integracin con Eclipse/Netbeans si usamos Anthttp://decharlas.uji.es/symfony
Jornadas Symfony
Herramientas de construccin Jornadas Symfony http://decharlas.uji.es/symfony
Herramientas de construccin
Apache Maven o php-maven:
Desarrollo Java + extensin PHP Todos los proyectos tienen la misma estructura y siguen el mismo proceso de construccin: Life-cycle Gestin automtica de dependencias Multitud de plugins existentes para distintas necesidades Puede utilizar Ant
Jornadas Symfony
http://decharlas.uji.es/symfony
Herramientas de construccin 4.0.0 com.mycompany.app my-app php 1.0-SNAPSHOT org.phpunit phpunit5 3.2.9-SNAPSHOT
Jornadas Symfony
http://decharlas.uji.es/symfony
Herramientas de construccin
Creacin de nuevos proyectos:mvn archetype:generate \ -DarchetypeGroupId=org.phpmaven \ -DarchetypeArtifactId=php5-lib-archetype \ -DarchetypeVersion=1.0 \ -DgroupId=org.sample \ -DartifactId=my-app \
Jornadas Symfony
http://decharlas.uji.es/symfony
Herramientas de construccin
Layout resultante:my-app |-- pom.xml `-- src |-- main `-- php `-- org.sample `-- app.php `-- webapp `-- index.php |`-- test `-- php `-- org.sample `-- apptest.php
Jornadas Symfony
http://decharlas.uji.es/symfony
ndice
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Metodologas de desarrollo: Clsicas vs giles Herramientas de documentacin y gestin del conocimiento Sistemas de control de versiones Herramientas de construccin Integracin continua Gestin de proyectos e incidencias Pruebas unitarias del software Repositorio de componentes Aseguramiento de la calidad: Anlisis esttico del cdigo IDE para el desarrollo de aplicaciones. Conexin entre todos los elementos
Jornadas Symfony
http://decharlas.uji.es/symfony
Integracin contnua
Martin Fowler:Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.Jornadas Symfony http://decharlas.uji.es/symfony
Integracin contnua
Hudson:
Independiente del lenguaje Construccin de software y monitorizacin de procesos tipo CRON Centenares de plugins Responsable de generar todos los artefactos necesarios para una aplicacin: Documentacin, binarios, tests, informes, anlisis del cdigo, etc.http://decharlas.uji.es/symfony
Jornadas Symfony
Integracin contnua
Jornadas Symfony
http://decharlas.uji.es/symfony
Integracin contnua
Ejemplo disponible online:
http://hudson.highsource.org/
Configuracin para PHP:
http://bit.ly/3PuA3p http://bit.ly/9EgmN http://bit.ly/151csf
Jornadas Symfony
http://decharlas.uji.es/symfony
Integracin contnua
PhpUnderControl:http://phpundercontrol.org/about.html
Testing con phpUnit Documentacin con PhpDocumentator Anlisis del cdigo con PHP_CodeSniffer y CheckStyle
Jornadas Symfony
http://decharlas.uji.es/symfony
Integracin contnua
CruiseControl:http://cruisecontrol.sourceforge.net/
Atlassian Bamboo:http://www.atlassian.com/software/bamboo/
Jornadas Symfony
http://decharlas.uji.es/symfony
ndice
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Metodologas de desarrollo: Clsicas vs giles Herramientas de documentacin y gestin del conocimiento Sistemas de control de versiones Herramientas de construccin Integracin continua Gestin de proyectos e incidencias Pruebas unitarias del software Repositorio de componentes Aseguramiento de la calidad: Anlisis esttico del cdigo IDE para el desarrollo de aplicaciones. Conexin entre todos los elementos
Jornadas Symfony
http://decharlas.uji.es/symfony
Gestin de proyectos e incidencias
Requisitos:
Registrar todas las posibles modificaciones que se hagan sobre el software: Bugs, tareas, mejoras, etc. Reparto de la carga entre los desarrolladores Planificacin de versiones en nuestro software Histrico de acciones: Changelog. Cada tarea aade todos los comentarios hasta que se cierrahttp://decharlas.uji.es/symfony
Jornadas Symfony
Gestin de proyectos e incidencias
JIRA: Integracin con Netbeans y Eclipse (Mylyn) Interfaz altamente usable Muchas mtricas de evolucin del proyecto API XML-RPC disponibleJornadas Symfony http://decharlas.uji.es/symfony
Gestin de proyectos e incidencias
Jornadas Symfony
http://decharlas.uji.es/symfony
Gestin de proyectos e incidencias
Jornadas Symfony
http://decharlas.uji.es/symfony
Gestin de proyectos e incidencias
Jornadas Symfony
http://decharlas.uji.es/symfony
Gestin de proyectos e incidencias
Jornadas Symfony
http://decharlas.uji.es/symfony
Gestin de proyectos e incidencias
Ejemplo disponible online:
http://jira.codehaus.org/
Jornadas Symfony
http://decharlas.uji.es/symfony
ndice
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Metodologas de desarrollo: Clsicas vs giles Herramientas de documentacin y gestin del conocimiento Sistemas de control de versiones Herramientas de construccin Integracin continua Gestin de proyectos e incidencias Pruebas unitarias del software Repositorio de componentes Aseguramiento de la calidad: Anlisis esttico del cdigo IDE para el desarrollo de aplicaciones. Conexin con los distintos elementos de la arquitectura
Jornadas Symfony
http://decharlas.uji.es/symfony
Pruebas unitarias del software Unit testing Wikipedia:
In computer programming, unit testing is a software verification and validation method in which a programmer tests if individual units of source code are fit for use. A unit is the smallest testable part of an applicationJornadas Symfony http://decharlas.uji.es/symfony
Pruebas unitarias del software
Beneficios: Facilitar el cambio y el refactoring Integracin ms sencilla Documentacin del cdigo Diseo siempre y modular del cdigo (sino no se puede hacer unit testing)
Jornadas Symfony
http://decharlas.uji.es/symfony
Pruebas unitarias del software
Tipos de pruebas: Unitarias o de desarrollo Integracin Rendimiento o estrs Funcionales
Jornadas Symfony
http://decharlas.uji.es/symfony
Pruebas unitarias del software
Unit testing en symfony:
symfony 1.x: Lime:
Simplicidad, pero difcil uso en herramientas de integracin continua Soporte para Mocks y Stubshttp://martinfowler.com/articles/mocksArentStubs.html
symfony 2.0. Paso a PhpUnit.
Jornadas Symfony
http://decharlas.uji.es/symfony
Pruebas unitarias del softwareclass MoneyTest extends PHPUnit_Framework_TestCase { protected $f12EUR; protected $f14EUR; protected function setUp() { $this->f12EUR = new Money(12, 'EUR'); $this->fMB1 = MoneyBag::create($this->f12EUR, $this->f21USD); } public function testBagMultiply() { $expected = MoneyBag::create(new Money(24, 'EUR'), new Money(14, 'USD')); $this->assertTrue($expected->equals($this->fMB1->multiply(2))); }
Jornadas Symfony
http://decharlas.uji.es/symfony
Pruebas unitarias del softwarephpunit: [exec] PHPUnit 3.4.14 by Sebastian Bergmann. [exec] ....................F. [exec] Time: 1 second, Memory: 6.25Mb [exec] There was 1 failure: [exec] 1) MoneyTest::testSimpleNegate [exec] Failed asserting that is true. [exec] /tmp/Money/MoneyTest.php:238 [exec] FAILURES! [exec] Tests: 22, Assertions: 35, Failures: 1. [exec] Writing code coverage data to XML file, this may take a moment.
BUILD FAILED /tmp/Money/build.xml:36: exec returned: 1
Jornadas Symfony
http://decharlas.uji.es/symfony
Pruebas unitarias del software
Herramientas: Pruebas de cdigo: jUnit, Nunit, PHPUnit, PyUnit y otras muchas Pruebas de interfaz: Selenium Pruebas de estrs: Apache jMeter con independencia del lenguaje en el que est desarrollado el servicioJornadas Symfony http://decharlas.uji.es/symfony
Pruebas unitarias del software
Jornadas Symfony
http://decharlas.uji.es/symfony
Pruebas unitarias del software TDD Wikipedia:El desarrollo guiado por pruebas, o Test-driven development (TDD) involucra otras dos prcticas: Escribir las pruebas primero (Test First Development) y Refactorizacin (Refactoring). Para escribir las pruebas generalmente se utilizan las pruebas unitarias (unit testing). En Primer Lugar se escribe una prueba y se verifica que las pruebas fallen, luego se implementa el cdigo que haga que la prueba pase satisfactoriamente y seguidamente se refactoriza el cdigo escrito. El propsito del desarrollo guiado por pruebas es lograr un cdigo limpio que funcione (clean code that works). La idea es que los requerimientos sean traducidos a pruebas, de este modo, cuando las pruebas pasen se garantizar que los requerimientos se hayanJornadas Symfony http://decharlas.uji.es/symfony
Pruebas unitarias del software
Jornadas Symfony
http://decharlas.uji.es/symfony
Pruebas unitarias del software
Otros conceptos relacionados: Cobertura: porcentaje de nuestro cdigo cubierto o probado por nuestros tests unitarios Mock o impostor: Objetos que imitan el comportamiento de objetos reales de una forma controlada. Como un dummy en una prueba de colisinJornadas Symfony http://decharlas.uji.es/symfony
ndice
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Metodologas de desarrollo: Clsicas vs giles Herramientas de documentacin y gestin del conocimiento Sistemas de control de versiones Herramientas de construccin Integracin continua Gestin de proyectos e incidencias Pruebas unitarias del software Repositorio de componentes Aseguramiento de la calidad: Anlisis esttico del cdigo IDE para el desarrollo de aplicaciones. Conexin con los distintos elementos de la arquitectura
Jornadas Symfony
http://decharlas.uji.es/symfony
Repositorio de componentes
Objetivos:
Repositorio Maven de artefactos Proxy-cache que recoge cualquier librera utilizada Si necesitamos una librera externa, nos la consigue Control total sobre los productos y versiones utilizadas Lugar nico de publicacin de nuestros artefactos Gestin integrada de libreras, control de acceso, backup, gestin web, etc
Jornadas Symfony
http://decharlas.uji.es/symfony
Repositorio de componentes
Jornadas Symfony
http://decharlas.uji.es/symfony
Repositorio de componentes
Ejemplo disponible online:
http://repo.jfrog.org/artifactory/webapp/home.html
Jornadas Symfony
http://decharlas.uji.es/symfony
ndice
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Metodologas de desarrollo: Clsicas vs giles Herramientas de documentacin y gestin del conocimiento Sistemas de control de versiones Herramientas de construccin Integracin continua Gestin de proyectos e incidencias Pruebas unitarias del software Repositorio de componentes Aseguramiento de la calidad: Anlisis esttico del cdigo IDE para el desarrollo de aplicaciones. Conexin con los distintos elementos de la arquitectura
Jornadas Symfony
http://decharlas.uji.es/symfony
Aseguramiento de la calidad: Anlisis esttico del cdigo
Anlisis esttico del cdigo:
El anlisis esttico del cdigo es el proceso de evaluar el software sin ejecutarlo Tcnica que se aplica directamente sobre el cdigo fuente, sin transformaciones previas ni cambios de ningn tipo Objetivo: Obtener informacin que nos permita mejorar la base de cdigo
Jornadas Symfony
http://decharlas.uji.es/symfony
Aseguramiento de la calidad: Anlisis esttico del cdigo
Objetivo. Encontrar partes del cdigo que puedan:
Reducir el rendimiento Provocar errores en el software Complicar el flujo de datos Tener una excesiva complejidad (complejidad ciclomtica) Suponer un problema en la seguridadhttp://decharlas.uji.es/symfony
Jornadas Symfony
Aseguramiento de la calidad: Anlisis esttico del cdigo
Algunas herramientas para PHP:
PHP_Depend: Escaneo del cdigo fuente en forma de rboles de sintaxis abstractos (AST) para el clculo de ciertas mtricas de calidad como la complejidad ciclomtica de los mtodos. PHP_CodeSniffer: Deteccin de patrones de error o zonas de cdigo potencialmente peligrosas PhpCPD: Detector de cdigo duplicado (Copy&Paste detector).
Jornadas Symfony
http://decharlas.uji.es/symfony
Aseguramiento de la calidad: Anlisis esttico del cdigo
Algunas herramientas para PHP:
PhpMD. Como Php_Depend pero con algunas funcionalidades de PHP_CodeSniffer (PHP Mess Detector). Sonar:
Servidor que ejecuta todos los anteriores en forma de plugins + muchos otros (cobertura con clover, PhpUnit, etc) Integrable desde Ant/Phing/Maven
Jornadas Symfony
http://decharlas.uji.es/symfony
Aseguramiento de la calidad: Anlisis esttico del cdigo Varios proyectos de libres analizados con Sonar:
http://nemo.sonarsource.org/
Intergracin con proyectos PHP:
http://www.blacksun.fr/2009/12/sonar-for-php-is-on-its-way/
Jornadas Symfony
http://decharlas.uji.es/symfony
Aseguramiento de la calidad: Anlisis esttico del cdigo
Jornadas Symfony
http://decharlas.uji.es/symfony
Aseguramiento de la calidad: Anlisis esttico del cdigo
Jornadas Symfony
http://decharlas.uji.es/symfony
Aseguramiento de la calidad: Anlisis esttico del cdigo
Jornadas Symfony
http://decharlas.uji.es/symfony
Aseguramiento de la calidad: Anlisis esttico del cdigo
Jornadas Symfony
http://decharlas.uji.es/symfony
Aseguramiento de la calidad: Anlisis esttico del cdigo
Jornadas Symfony
http://decharlas.uji.es/symfony
Aseguramiento de la calidad: Anlisis esttico del cdigo
Jornadas Symfony
http://decharlas.uji.es/symfony
ndice
Caractersticas, requisitos y arquitectura de los entornos de desarrollo actuales Metodologas de desarrollo: Clsicas vs giles Herramientas de documentacin y gestin del conocimiento Sistemas de control de versiones Herramientas de construccin Integracin contnua Gestin de proyectos e incidencias Pruebas unitarias del software Repositorio de componentes Aseguramiento de la calidad: Anlisis esttico del codigo IDE para el desarrollo de aplicaciones. Conexin entre todos los elementos
Jornadas Symfony
http://decharlas.uji.es/symfony
IDE para el desarrollo de aplicaciones Eclipse/Netbeans como elemento integrador:
Plugin Subversion Plugin Ant/Phing/Maven Plugin Mylyn integracin con JIRA Plugin jUnit/phpUnit Plugin anlisis esttico del cdigo an desde Ant/Phinghttp://decharlas.uji.es/symfony
Jornadas Symfony
Fin
Preguntas?
Jornadas Symfony
http://decharlas.uji.es/symfony