arquitectura y diseño de un entorno de desarrollo (primeras jornadas de symfony 2010 castellón)

Download Arquitectura y diseño de un entorno de desarrollo (Primeras jornadas de symfony 2010 Castellón)

If you can't read please download the document

Upload: ricardo-borillo-domenech

Post on 27-Jul-2015

3.675 views

Category:

Documents


0 download

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.

TRANSCRIPT

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