hacia procesos de desarrollo que –además de...

of 41/41
1 Hacia Procesos de desarrollo que –además de software– construyan confianza Victor Manuel Toro C. [email protected] CincoSOFT Ltda. Tel.: (1)6226350, (1)6230180 Bogotá - Colombia

Post on 30-Sep-2018

213 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • 1

    Hacia Procesos de desarrollo que ademsde software construyan confianza

    Victor Manuel Toro [email protected]ncosoft.com

    CincoSOFT Ltda.

    Tel.: (1)6226350, (1)6230180

    Bogot - Colombia

  • XXVII Saln de Informtica - Septiembre'2007 2

    El contexto

    Proyectos de desarrollo de software en modalidadoffshore.

    Proyectos de desarrollo de software locales

    Compaas desarrolladoras pequeas

  • XXVII Saln de Informtica - Septiembre'2007 3

    El Offshore

    Offshore:

    Desarrollar en un pas de bajos salarios y bajos costos deinfraestructura, software requerido en pases de altossalarios y altos costos de infraestructura.

    Problemas:

    obtener contactos de negocios

    conocimiento tecnolgico efectivo

    gerencia de proyectos

    proteccin de propiedad intelectual

    Construir confianza !!!

  • XXVII Saln de Informtica - Septiembre'2007 4

    El Offshore:

    La competencia es en serio!

    Diferencia de precios:

    $(1 ingeniero gringo)

    = $(2.5 ingenieros colombianos)

    = $(4 ingenieros de India)

    = $(6 ingenieros de China) ...

    Diferencia de empresas:

    India: compaas de mas de 3.000 Ingenieros, con una larga

    trayectoria

    China: Costos muy bajos ... compaas con gran solidez

    financiera

  • XXVII Saln de Informtica - Septiembre'2007 5

    El Offshore:

    No todos estn de acuerdo !

  • XXVII Saln de Informtica - Septiembre'2007 6

    El Offshore:

    No todos estn de acuerdo !

  • XXVII Saln de Informtica - Septiembre'2007 7

    El Offshore:

    Inicialmente no hay confianza !

    xxxxxxxxx

  • XXVII Saln de Informtica - Septiembre'2007 8

    Devolvmonos un poco,para aclarar algunos conceptos

  • XXVII Saln de Informtica - Septiembre'2007 9

    Cinco conceptos relacionados pero distintos:

    Lenguaje

    Herramienta

    ProcesoMetodologa

    Teo

    ra

  • XXVII Saln de Informtica - Septiembre'2007 10

    Aclarando algunos conceptos:

    Lenguaje

    Forma de expresin: Sintaxis (elementos del lenguaje)

    + Gramtica (reglas para combinar dichos elementos)

    + Semntica (significado de las frases del lenguaje).

    Ejemplos de Lenguajes: Programacin: Java, C, VisualBasic, RPG, Cobol, C#, ...

    Anlisis/Diseo: Diagramas Entidad-Relacin, Diagramas de Flujo de Datos, ...

    Especificacin: Z, B, VDM, ...

    Ingeniera de Software: UML

    Lenguaje

    Herramienta

    ProcesoMetodologa

    Teo

    ra

  • XXVII Saln de Informtica - Septiembre'2007 11

    Aclarando algunos conceptos:

    Teora

    Abstraccin / idealizacin: Lenguaje (definiciones, smbolos)

    + Axiomas

    + Reglas de inferencia.

    Ejemplos de Teoras: Matemticas

    Teora de Conjuntos

    Autmatas finitos

    Lenguajes formales

    ...

    Lenguaje

    Herramienta

    ProcesoMetodologa

    Teo

    ra

  • XXVII Saln de Informtica - Septiembre'2007 12

    Aclarando algunos conceptos:

    Herramienta

    Medio de trabajo: Editor de un(os) lenguaje(s)

    + Librera de elementos reutilizables

    + Ayudas inteligentes

    + Compilador Traductor hacia/desde otro(s) lenguaje(s)

    Ejemplos de Herramientas: Eclipse, JEdit, JBuilder, JDevelopper, ...

    VisualStudio.NET

    Designer-2000, Erwin, PowerBuilder, OracleForms,...

    Lenguaje

    Herramienta

    ProcesoMetodologa

    Teo

    ra

  • XXVII Saln de Informtica - Septiembre'2007 13

    Aclarando algunos conceptos:

    Metodologa

    Forma ordenada de pensar: Lenguajes (para expresar el problema y la solucin)

    + forma de plantear problemas

    + forma de construir poco a poco una solucin

    + forma de verificar que una solucin es correcta

    + conjunto de patrones ( paradigmas deseables)

    Ejemplos de Metodologas: Programacin Estructurada {Pre y Post condiciones, invariantes, ...}

    Metodologa Entidad-Relacin para diseo de B. de D.

    Metodologa Orientada a Objetos

    Lenguaje

    Herramienta

    ProcesoMetodologa

    Teo

    ra

  • XXVII Saln de Informtica - Septiembre'2007 14

    Aclarando algunos conceptos:

    Proceso

    Organizacin de actividades y personas: La secuencia de actividades

    + el conjunto de Entregables(documentos, cdigo, pantallas, manuales, ...)

    donde cada Entregable: se produce siguiendo cierta metodologa

    se desarrolla usando ciertas herramientas, y

    se expresa en determinado lenguaje

    + una asignacin de responsabilidades

    + una dinmica de interaccin entre los miembros del grupo

    + un conjunto de herramientas adecuadamente sintonizadas

    que sigue un grupo para desarrollar software.

    Lenguaje

    Herramienta

    ProcesoMetodologa

    Teo

    ra

  • XXVII Saln de Informtica - Septiembre'2007 15

    Lenguaje

    Herramienta

    ProcesoMetodologa Ejemplos de

    Proceso de desarrollo de Software

    USDP Unified Software Development Process

    Tambin se le llama RUP Rational Unified Process

  • XXVII Saln de Informtica - Septiembre'2007 16

    Lenguaje

    Herramienta

    ProcesoMetodologa Ejemplos de

    Proceso de desarrollo de Software

    Extreme Programming

    Tambin se le llama XP XProgramming

  • XXVII Saln de Informtica - Septiembre'2007 17

    Lenguaje

    Herramienta

    ProcesoMetodologa Ejemplos de

    Proceso de desarrollo de Software

    TSP Team Software Process

    Respaldado por el SEI Software Engineering Institute

  • XXVII Saln de Informtica - Septiembre'2007 18

    Lenguaje

    Herramienta

    ProcesoMetodologa Ejemplos de

    Proceso de desarrollo de Software

    Su propio proceso

  • XXVII Saln de Informtica - Septiembre'2007 19

    Madurez de un Proceso de Desarrollo

    Un Proceso Desarrollo de Software es MADURO en

    la medida que:

    Est escrito

    Es usado por TODOS los miembros del grupo

    Cubre todas las etapas del desarrollo

    Es efectivo

    Es eficiente

    Es repetible, medible, optimizable, ...

    Ver Software Process Capability Maturity Model

    Integration CMMI [http://www.sei.cmu.edu/cmmi]

  • XXVII Saln de Informtica - Septiembre'2007 20

    CMM / CMMI

  • XXVII Saln de Informtica - Septiembre'2007 21

    Qu es una compaa de software certificada ?

    Hace explcito su proceso de desarrollo de software

    Documenta su proceso de desarrollo (por escrito)

    Estandariza sus entregables (i.e., crea plantillas)

    Sintoniza sus herramientas para apoyar el proceso

    ...

    Incorpora en su proceso de software las recomenda-ciones de algn Estndar de Calidad (CMMI, ISO)

    Contrata Inspectores autorizados para que revisen, yeventualmente certifiquen, que su proceso dedesarrollo cumple con el Estndar de Calidad.

  • XXVII Saln de Informtica - Septiembre'2007 22

    Qu es implantar un estndar de Calidad de Software?

    Nuestro Procesode Software

    Planeacin------------------Seguimiento de Proyectos-------------------Capacitacin------------------------Control de Versiones------------------Revisiones de cdigo por pares------------------Administracin de Requerimientos---------

    Estndar deCalidad de Software

  • XXVII Saln de Informtica - Septiembre'2007 23

    Proceso de Desarrollo de Software:

    Secuencia de actividades, con

    asignacin de responsabilidades

    Definicin y estandarizacin de entregables(documentos, cdigo, pantallas, manuales, ...)

    Dinmica del ciclo central del desarrollo:

    (ajustes al) diseo detallado

    creacin (modificacin) del cdigo fuente

    pruebas/registro de problemas (errores, cambios, malentendidos,

    mal uso)

  • XXVII Saln de Informtica - Septiembre'2007 24

    Proceso de desarrollo de software:

    Definicin y Estndarizacin de Entregables

    Documentos que se elaboran y entregan a lo largo delproyecto (especificacin de lgica del negocio, diseo de casos de uso,diseo de B.D., registros de prueba, manuales, )

    Cada entregable: tiene una Tabla de Contenido definida de antemano

    se produce siguiendo cierta metodologa

    se desarrolla usando ciertas herramientas

    se expresa en determinado lenguaje(s)

    Con excepcin de los Manuales de Usuario, lacantidad y nivel de detalle de los entregables debemantenerse en el mnimo necesario.

  • XXVII Saln de Informtica - Septiembre'2007 25

    Prcticas de Extreme Programming

  • XXVII Saln de Informtica - Septiembre'2007 26

    Dos prcticas bsicas

    Estandarizacin del cdigo: Indentacin

    Nomenclatura

    Organizacin en directorios

    Documentacin

    Propiedad colectiva del cdigo: El cdigo no es de quien lo escribi ...

    ... el cdigo es del grupo

    Cualquier miembro del grupo lo puede modificar ...

    ... si sigue las reglas

  • XXVII Saln de Informtica - Septiembre'2007 27

    Estndar de organizacin y documentacin del cdigo:

    Nuestra experiencia

    Estandar de organizacin:

    TODO el proyecto bajo una misma jerarqua(cdigo, descriptores, sql, librerias, manuales )

    Organizado por Mdulos

    Dentro de cada mdulo, organizado por casos de Usoy Web-services

    Correspondencia de nombres(directorio = caso de uso = clase java, )

    Administrado por un controlador de versiones(CVS, SubVersion, ).

  • XXVII Saln de Informtica - Septiembre'2007 28

    Integracin Permanente

    ?

  • XXVII Saln de Informtica - Septiembre'2007 29

    Desarrollo en Grupo

    Repositorio deVersiones

    Servidor deBase de Datos

    ServidorJ2EE

  • XXVII Saln de Informtica - Septiembre'2007 30

    Integracin permanente

    Cada desarrollador:

    tiene copia completa de todo el sistema

    modifica agrega algunos archivos fuentes

    recompila el sistema completo

    corrige problemas en los fuentes que est agregando modificando ... en otros

    corre las pruebas unitarias

    compara su versin con la versin del repositorio

    actualiza y/ mezcla su copia con la del repositorio

    registra su nueva versin

  • XXVII Saln de Informtica - Septiembre'2007 31

    Integracin permanente

    Se requiere:

    Computador potente para cada desarrollador

    Todas las herramientas en cada desarrollador

    Estandarizar el cdigo: XP ! organizacin

    documentacin

    indentacin

    nomenclatura

    Propiedad colectiva del cdigo XP !

  • XXVII Saln de Informtica - Septiembre'2007 32

    Sistema de software

    Pruebas a lo largo de todo elproceso de construccin

    Unitarias Integracin Funcional

  • XXVII Saln de Informtica - Septiembre'2007 33

    Pruebas permanentes:

    Pruebas Unitarias

    OBJETIVO: Ejercitar frecuentemente los mtodospblicos de las clases.

    CMO ?: Escribir/generar cdigo que invoque cadamtodo pblico con distintas combinaciones de susargumentos, y verificar que la respuesta ( el efectocausado) sean correctos.

    CUNDO ?: Se aplican automticamente cada vezque:

    Hay cambios en la implementacin de un mtodo

    Se hace un Refactoring

    Como pre-requisito para registrar una nueva versin

  • XXVII Saln de Informtica - Septiembre'2007 34

    Pruebas permanentes:

    Pruebas Unitarias

    El conjunto de pruebas:

    se va incrementando a lo largo del proyecto.

    hace parte del proyecto (en un rbol paralelo)

    est includo en el sistema de versiones.

    JUnit (Java) y NUnit (.NET) son herramientas libres

    que ayudan a:

    construir las pruebas

    aplicarlas automticamente

    obtener diversos reportes.

  • XXVII Saln de Informtica - Septiembre'2007 35

    Construir confianza con el cliente en el exterior

    NO a la estrategia usual en Colombia:

    30% al inicio

    30 % en la mitad

    40 % al final

    SI a muchos pagos pequeos contra entrega:

    Cronograma muy detallado de actividades y Entregables

    Estimacin sustentada de tiempo y esfuerzo

    Un pago pequeo asociado a cada entregable

  • XXVII Saln de Informtica - Septiembre'2007 36

    Proceso de Desarrollo de Software:

    Nuestra experiencia

    Inicio Elaboracin Transicin1 2 3

    Construccin

    ...Entr

    ega

    Ent

    rega

    Ent

    rega

    Ent

    rega

    RU

    P

    Ext

    rem

    eP

    rogr

    amm

    ing

    Tests de carga

    Tests funcionales

    Tests integracin

    Tests unitariosRefinar InterfazPantallas / Web-Servicey Navegacin

    Refinar Modelo de Datosdel Caso de Uso / Web-Service

    Aprobacindel usuario

    ProgramacinPara cadaCaso de Uso Web-Service:

    Con

    trat

    o 1

    Esp

    ecifi

    caci

    n

    Pro

    pues

    ta

    Con

    trat

    o 3

    Sop

    orte

    Con

    trat

    o 2

    Des

    arro

    llo

  • XXVII Saln de Informtica - Septiembre'2007 37

    Proceso de desarrollo de software ==> Estandarizacin de Entregables:

    Nuestra experiencia

    Ext

    rem

    eP

    rogr

    amm

    ing

    Inicio Elaboracin Transicin1 2 3

    Construccin

    Tests de carga

    Tests funcionales

    Tests integracin

    Tests unitarios

    Inventario Casos de Uso Descripcin global Casos de Uso Modelaje BPM

    Especificacin de la Lgica del Negocio

    Modelaje E-R (global)

    Programacin

    ...Entr

    ega

    Ent

    rega

    Ent

    rega

    En

    treg

    a

    RU

    P

    Diseo detallado deinterfaz del Caso deUso del Servicio

    Diseo de datosdel Caso de Uso del servicio

    Nueva versin del software(incremental y acumulativa)

    Manual de usuario del mdulo

    Manuales definitivos

    Aprobacindel usuario

    Refinar InterfazPantallas / Web-Servicey Navegacin

    Refinar Modelo de Datosdel Caso de Uso / Web-Service

    Para cadaCaso de Uso Web-Service:

  • XXVII Saln de Informtica - Septiembre'2007 38

    AmbienteDesarrollo

    Stakeholders

    Architecture & Designteam

    Business LogicTeam

    Quality Assuranceteam

    Development Team1

    Development Team2

    Directives,GuidelinesPriorities,Learned lessons

    Business Logic

    knowledge

    New releases

    Improvemen

    ts

    New

    code, fixesNew

    cod

    e, fi

    xes

    Detailed design, test scripts,

    errors detected, modifications

    Det

    aile

    d de

    sign

    , tes

    t scr

    ipts

    ,

    erro

    rs d

    etec

    ted,

    mod

    i fica

    tions

    Architecture:detailed

    specification

    Formalspecification

    of key aspects

    Standards:programming,

    screens,...

    Globaldesign

    Developmentenvironment,tools selection

    & configuration

    Central Repository:Configuration control

    Version controlTesting environment

    Bug database and trackingDemo environment

    De

    taile

    d d

    esi

    gns

    Co

    nfig

    ura

    tion

    &a

    dmin

    istr

    atio

    n

    Te

    st s

    crip

    ts

    Co

    de(c

    ritic

    al s

    ubsy

    ste

    ms)

    Error report

    New rele

    ases Changes

  • XXVII Saln de Informtica - Septiembre'2007 39

    Conclusiones

    Los proyectos de software con las tecnlogas actuales(Java EE Microsoft .NET) son de alto riesgo.

    Los procesos iterativos e incrementales mitiganrpidamente los riesgos.

  • XXVII Saln de Informtica - Septiembre'2007 40

    Referencias

    http://www.martinfowler.com

    http://www.extremeprogramming.org

    http://www.xprogramming.com

    http://www.junit.org

    http://groups.yahoo.com/group/extremeprogramming

    http://www.google.com + Extreme Programming

  • 41

    Preguntas ?

    Comentarios ?

    Otros puntos de vista ?