Está en la página 1de 14

GUIA DE SUPERVIVENCIA PARA EL DESARROLLO DE SOFTWARE

Cinco pasos para ir del Caos al Control

Por Paul Conte Picante Software

Traducido por Eduardo Pulido Rodrguez con aprobacin de SOFTLANDING SYSTEMS

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

Contenido

INTRODUCCIN................................................................................................................................................................. 3 QUE TAN BIEN VAN LAS COSAS PARA UD? ............................................................................................................ 3 METAS DE LA ADMINISTRACIN DE SOFTWARE ................................................................................................. 5 REDUCCIN DE RIESGOS ............................................................................................................................................... 6 PROCESO DE MEJORA CONTINUA.............................................................................................................................. 6 LISTA DE VERIFICACIN DE LA ADMINISTRACIN DE SOFTWARE ............................................................. 7 CINCO PASOS DEL CAOS AL CONTROL .................................................................................................................... 8 PASO 1: JUSTIFICAR ACCIONES A LA GERENCIA Y EQUIPO............................................................................... 8 PASO 2: ADOPTAR UN PROCESO DE ADMINISTRACIN DE CAMBIOS Y HERRAMIENTAS........................ 9 PASO 3: ADOPTAR UN PROCESO DE CONTROL DE CALIDAD Y HERRAMIENTAS ..................................... 10 PASO 4: ADOPTE UN PROCESO PROGRESIVO E ITERATIVO DE DESARROLLO ........................................... 10 PASO 5: EVALUACIONES CONTINUAS Y REFINAMIENTO DE PROCESOS ..................................................... 11 SUMARIO ............................................................................................................................................................................ 12 DONDE APRENDER MS................................................................................................................................................ 13

Page 2 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

INTRODUCCIN

A pesar de los avances alcanzados en la tecnologa informtica o quizs debido a ello- el desarrollo de
software contina siendo un gran desafo, as como tambin un proceso frecuentemente impredecible. An los equipos de ingenieros ms talentosos, frecuentemente se embarcan en el mantenimientos o en la creacin de nuevos proyectos de desarrollo, al parecer nicos en su gnero, con resultados que son difciles de predecir. Como resultado de esto, los proyectos de mantenimiento o desarrollo de software usualmente toman ms tiempo, cuestan mucho ms, o no proveen lo que el usuario desea o necesita. Teniendo como resultado final, sistemas que son costosos de sustentar y mantener. Por supuesto, diferentes grupos visualizan el desarrollo de software de diferentes formas, y el resultado de sus proyectos vara de acuerdo a ello. Para algunos grupos de desarrolladores, el caos caracteriza la mayora de sus proyectos, mientras que otros mantienen un control efectivo durante todo el proceso de desarrollo. Este documento provee una gua concisa para evaluar como lo est hacienda Ud. Y adems expone cinco pasos bsicos para alcanzar un mejor control sobre sus proyectos de desarrollo de software.

QU TAN BIEN VAN LAS COSAS PARA UD?

El proceso de desarrollo de software ha sido estudiado extensamente por dcadas. Esta investigacin ha
producido un modelo ampliamente aceptado que usted puede utilizar para evaluar cmo su propia organizacin lo est haciendo. La figura No. 1 sumariza el Modelo de Capacidad de Madurez (CMM por sus siglas en ingls Capability Maturity Model) desarrollado por el Software Engineering Institue (www.sei.cmu.edu), una organizacin financiada por el gobierno de Los Estados Unidos. Las organizaciones operando al Nivel 1 de este modelo, enfrentan muchos de los problemas causados por un proceso pobre en su definicin. En este nivel, la vida es catica para los desarrolladores, los gerentes de Tecnologa Informatica (TI), y el resto de la organizacin que depende del rea de TI. Conforme una organizacin mejora su proceso de desarrollo y se mueve hacia un nivel ms alto de madurez, los proyectos se tornan ms predecibles y exitosos. Como regla general, los pasos para alcanzar el Nivel 3 (Definido), son significativamente ms fciles de implementar que aquellos requeridos para alcanzar el Nivel

Page 3 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

4 y 5. El Nivel 3, es un objetivo apropiado para la mayora de los grupos de desarrolladores internos y es a quienes se dirige este documento. La Figura 1 lista algunas de las prcticas claves para los niveles 2 y 3. Si su proceso de desarrollo no incorpora la mayora de los puntos indicados, usted probablemente tiene una gran oportunidad de mejorar el proceso y ganar ms control sobre sus proyectos. Los niveles 4 y 5 pueden ser llamados los niveles Empricos y de Perfeccionamiento porque estos incluyen resultados de cuantificacin e incorporan cambios progresivos en el proceso general para reducir la variabilidad y mejorar el rendimiento organizacional en forma continua. Estos niveles requieren disciplina efectiva, automatizacin de procesos, y recursos. No se abrume pensando que usted tiene que alcanzar cualquiera de estos niveles para obtener un beneficio substancial. (Por otro lado, con el paso del tiempo quizs usted decida incorporar algunas de las prcticas de los Niveles 4 y 5 dentro de su propio proceso de desarrollo). La pgina web del SEI explica el Modelo de Capacidad de Madurez (CMM) en ms detalle y es un buen lugar para continuar su travesa hacia un mejor control de desarrollo.

Figura 1 NIVELES DE MADUREZ EN EL PROCESO DE DESARROLLO DE SOFTWARE Del Instituto de Ingeniera de Software Modelo de Capacidad de Madurez (CMM).

1. Inicial. El proceso de software se caracteriza como ad-hoc (como salga), y ocasionalmente catico. Pocos procesos son definidos, y el xito depende de esfuerzos individuales y heroicos. 2. Repetitivos. Establecimiento de procesos administrativos bsicos para el seguimiento de costos, planes de trabajo y funcionalidad. La disciplina necesaria para los procesos se encuentra implementada y permite repetir xitos anteriores en proyectos con aplicaciones similares. Algunos de los procesos claves son: Administracin de requerimientos Planeamiento y seguimiento de proyectos Uso de Software de Administracin de Cambios (SCM) Implementacin de Software de Control de Calidad (SQA)

Page 4 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

3. Definido . El proceso de software, tanto para la administracin como para la ingeniera son actividades documentadas, estandarizadas, e integradas dentro de un proceso estandar de software para la organizacin. Todos los proyectos cuentan con una versin aprobada y hecha a la medida de los estandares del proceso de software de la organizacin, los cuales regulan el desarrollo y mantenimiento de software en general. Algunos de estos procesos claves son: Definir y seguir un proceso de desarrollo Conducir capacitaciones regulares Implementar software de administracin integral Revisin del trabajo desarrollado por colegas no para criticar sino mejorar

4. Administrado. Medidas, en detalle, del proceso de desarrollo y la calidad del producto elaborado son recolectadas. Ambos, el proceso de desarrollo y el producto son cuantitativamente entendidos y controlados. 5. Optimo. Mejoramiento contnuo del proceso es facilitado por la retro-alimentacin cuantitativa obtenida del proceso mismo, y por la implementacin de ideas innovadoras y las nuevas tecnologas disponibles. METAS DE LA ADMINISTRACIN DE SOFTWARE

Antes de tratar los pasos que puede dar para alcanzar mayor control sobre los proyectos de desarrollo,
veamos las metas de la administracin de software: Entregar productos con la funcionalidad y calidad preveida Entrega en los plazos acordados Entrega a los costos preveidos Alcanzar niveles de servicio preveidos, durante el uso del software Note como enfatizo estas metas en trminos de una caracterstica preveida en lugar de utilizar el mejor producto, el menor tiempo o el menor costo. La administracin efectiva del software es el acto de establecer y obtener expectativas claramente definidas, lo cual require de un proceso de desarrollo de software que es predecible y que obtiene resultados consistentes. Con un proceso predescible, el staff de TI, sabe razonablemente bien Qu es lo que necesitan hacer y cuales sern los entregables?, sea que estn manejando una simple correccin de programacin, un conjunto de cambios, o la creacion de una aplicacin completamente nueva. Algo que es importante recalcar, es que los usuarios tambin ven resultados consistentes por parte de los proyectos de TI cuando estos se adhieren a estas reglas de juego. Un proceso predecible de desarrollo de software inevitablemente requiere que tiempo (y dinero) sea invertido en software para la administracin de cambios (CM) y control de calidad (QA), antes de implementar otras prcticas y herramientas importantes. A pesar de toda la evidencia en contra, algunos desarrolladores repetidamente aseguran que reduciendo las prcticas de desarrollo de software, ellos pueden entregar una aplicacin ms rapidamente y a menor costo. En mi experiencia, tal juego rara vez da resultado, y los proyectos sin CM y QA casi nunca alcanzan las expectativas de tiempo, dinero o capacidad. En contraste, las prcticas slidas de administracin de software evitan interrupciones en los proyectos que desvan al staff del trabajo productivo.

Page 5 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

REDUCCIN DE RIESGOS

Algunas veces los resultados de un proyecto fuera de control pueden ser desastrosos, terminando por la entrega de un producto inutilizable. Mayormente, una organizacin de TI que no cuenta con un adecuado control sobre sus proyectos, siempre se encuentra con retrazos en su plan de trabajo y por encima del presupuesto asignado, en general, con resultados que son costosos an cuando no son un completo desastre.
El incumplimiento en la entrega de nueva funcionalidad o nuevos sistemas de computo en el tiempo deseado, pueden significar oportunidades de negocio perdidas o reducida competitividad en el mercado. Un proyecto inconsistente en sus costos o fechas de entrega puede poner en riesgo el negocio completo de una compaa y sus planes financieros. Proyectos que incluyen la entrega de nuevos tipos de funcionalidad, o que utilizan nuevas tecnologas, son los que suelen entrar en problemas serios. El mundo de la Tecnologa Informatica se encuentra actualmente en un perodo de cambios rpidos y constantes. Muchos programas nuevos utilizan tecnologas emergentes tales como WebSphere y otros servidores de aplicacin Web, Java o lenguajes como C#, dispositivos inalmbricos, servicios Web, bases de datos distribudas y otros. El predominio de proyectos que incluyen tecnologia de punta eleva la importancia de reducir los riesgos. Varias prcticas especficas a la administracin de software pueden ayudar a reducir los riesgos en forma significativa, y las voy a tratar en ms detalle en un momento. El punto de nfasis, aqu, es que una administracin predecible para el desarrollo de software es escencial en la reduccin de riesgo. Si la manera en que usted emprende el desarrolo de software no le brinda un control adequado, que le permita fijar y lograr sus objetivos, luego entonces su organizacin corre el riesgo de terminar con proyectos que son tardios en su cumplimiento, quiz por meses, sobrepasan su presupuesto, y de que estos proyectos se vengan a bajo antes de su culminacin. PROCESO DE MEJORA CONTINUA

Administrar los riesgos por medio de un proceso de desarrollo de software predecible provee un fundamento
sobre el cual usted podr desarrollar en forma consistente mejor software, ms rpidamente y a un menor costo. Empezando con esta base, usted podr adoptar tcnicas y herramientas en adicin para lograr que sus desarrolladores sean ms productivos, para elevar la calidad del software, y para automatizar muchos de los procesos de administracin del software, liberando de esta manera ms tiempo para el desarrollo de las aplicaciones mismas. Quiero enfatizar la ineficiencia de tratar de hacer un mejor trabajo de desarrollo de software, a largo plazo, sin contar con un proceso bien definido. Sin tal proceso, las buenas ideas no podrn ser integradas efectivamente dentro de las prcticas en ejecucin al interior de la organizacin de desarrolladores. Es ms, el tratar de apagar incendios (resolver multiples problemas) desperdicia demasiado tiempo y atencion que deberan estar enfocados a la mejora en el desarrollo mismo del software. Pero obviamente, establecer un proceso predecible de desarrollo, no es el objetivo final. Conforme gane experiencia y se familiarice con tecnologas cambiantes, usted deber adaptar su proceso de desarrollo para alcanzar metas ms elevadas, no slamente de forma predecible y la disminucin del riesgo, sino tambin: mejorar el software producido, mejorar el soporte otorgado, y reducir los costos de operacin y mantenimiento. La mejora continua del proceso de desarrollo le permiten a usted, afrontar nuevos desafos, establecer y lograr expectativas ms altas de capacidad, calidad, cronogramas, y costos.

Page 6 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

LISTA DE VERIFICACIN DE LA ADMINISTRACIN DE SOFTWARE

Si usted desea mejorar los resultados de sus proyectos de software, usted tiene que mejorar el proceso. No
hay balas de plata o una solucin inmediata al problema. La administracin de software involucra una variedad de tareas que cubren el ciclo de vida completo del desarrollo. La Figura 2 lista ocho de las reas principales que requieren prcticas bien definidas. A manera de auto-evaluacin, un gerente de IT puede hacerse las siguientes preguntas para cada uno de estos puntos: Si asigno a un desarrollador para trabajar en una tarea en esta rea, tiene nuestra organizacin claramente definida una descripcin de lo que l o ella deber hacer?. Directivas verbales dadas informalmente pueden funcionar en forma adecuada para tareas pequeas que pueden ser completadas por una sola persona en algunos das. Cualquier otra tarea ms significativa o necesarias por ms de una vez necesita una mejor definicin. Este consejo no significa que todas las organizacines necesitan volmenes tras volmenes de descripciones de procesos personalizados. Muchas organizaciones exitosas tienen documentos breves que definen pasos claves en cada rea y hacen referencia a libros o manuales de productos que proveen ms detalles. Si usted an no cuenta con nada definido para las ocho reas claves en la Figura 2, aqu tiene una manera sencilla de empezar: Cree un documento (ej. En Word) con una seccin para cada uno de los ocho items indicados Inicie cada seccin escribiendo un prrafo titulado: Lo que hacemos hoy en dia Aada otro prrafo titulado: Lo que necesitamos hacer Inicie una lista titulada Recursos y adicione los nombres de libros, productos, Webs y URLs, y otros recursos de competencia. Inicie una serie de listas de verificacin sencilla de las cosas que un desarrollador debera hacer cuando se le asigne una tarea en particular. Su primera experiencia en este punto no tiene que ser comprensiva. Pero tome su tiempo de manera que usted y su equipo puedan captar las prcticas ms importantes a seguir durante un proyecto de desarrollo de software. El dar este paso no quiere decir que su organizacin ser elevada al nivel 3 en la escala de madurez del proceso. Pero usted contar con una gua inicial para lideres de proyectos y su equipo de trabajo, y obtendr un lugar tangible para expandir y mejorar la descripcin de sus procesos. Su lista de prcticas de desarrollo tambin proveer la base para decidir que tareas podran verse beneficiadas por la automatizacin. Debido a que los principios bsicos de administracin de software se extienden a industrias diversas, o tipos de aplicacin y/o ambientes computacionales, usted puede apoyarse en la experiencia de expertos y colegas foraneos a su propia organizacin para iniciar el proceso. Conforme vaya creando su lista de verificacin, usted podr determinar si est creando una gua til para el desarrollador, siempre y cuando pueda contestar estas cuatro preguntas: Qu hago en esta tarea? (Esto establece el propsito y actividades de la tarea) Cuando estar listo para ir a la siguiente tarea? (Esto puede indicar los entregables que se produzcan) Cul es la siguiente tarea? (Esto describe el orden de las tareas dentro de cada fase del proyecto) Cmo avanzo de la tarea actual a la siguiente tarea? (Esto cubre cmo los resultados de una tarea sern utilizados en las actividades de la tarea siguiente)

Page 7 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

Figura 2 AREAS CENTRALES DE ADMINISTRACIN DE SOFTWARE

CINCO PASOS DEL CAOS AL CONTROL

Una vez que tenga claro donde se encuentra y donde quiere estar, los siguientes cinco pasos le
permitirn avanzar en forma significativa en direccin al Nivel 3 de madurez y a un mejor control de sus proyectos. PASO 1: JUSTIFICAR ACCIONES A LA GERENCIA Y EQUIPO Por varias razones, la buena administracin de software no parece ser una prctica intuitiva para nadie, incluyendo desarrolladores y gerentes poco tcnicos. Los desarrolladores se caracterizan por ser muy optimistas respecto de los resultados de los proyectos y poco entusiastas sobre actividades que no sean las de diseo y la codificacin inmediata. A los gerentes poco tcnicos tpicamente no les gusta escuchar sobre estimaciones realistas, especialmente aquellas como Nosotros no hemos hecho este tipo de proyecto anteriormente, de modo que necesitaremos invertir tiempo y dinero para evaluar lo que tomar llevarlo a cabo. En la mayora de organizaciones, tendr que justificar la adopcin de metodologas slidas para el desarrollo de software. Para los desarrolladores, he encontrado que el argumento fundamental es que la buena administracin del software reduce dramticamente el esfuerzo. Aqu estn algunos de los beneficios directos para los desarrolladores: Gran satisfaccin y estima de los usuarios finales Menos aburrimiento y frustracin en la recodificacin para arreglar defectos y deficiencias

Page 8 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

Menor nivel de interrupciones en el trabajo (o en el tiempo personal) para solucionar fallas crticas en el software.

Los desarrolladores que trabajan en organizaciones con una efectiva administracin del desarrollo de software son los mejores evangelizadores porque ellos pueden dar cuenta a sus compaeros que la vida es mucho mejor bajo control que en caos. Como un beneficio adicional, un buen proceso de desarrollo de software provee ms tiempo para las partes verdaderamente creativas del desarrollo de software. Para la gerencia, hay un argumento altamento exitoso que puede usar: La buena administracion del desarrollo de software reduce substancialmente los riesgos. Una de las cosas que los gerentes universalmente temen es un proyecto de envergadura que se viene abajo ante sus propios ojos. Me he dado cuenta de que en general, los gerentes que no pertenecen al campo de Tecnologa Informtica son usualmente los ms inclinados a dar respaldo a los requerimientos para lograr un mejor control de los proyectos de software, an cuando esto requiera inversiones de antemano para capacitacin y herramientas, y an cuando el proceso rebaje las expectativas (poco realistas, por lo general). As como sucede con los desarrolladores, la mejor referencia entre gerentes son sus colegas especialmente gerentes que han visto a una organizacin de Tecnologa Informtica mejorar sus practicas y productividad gracias a una buena administracin del desarrollo de software. PASO 2: ADOPTAR UN PROCESO DE ADMINISTRACIN DE CAMBIOS Y HERRAMIENTAS La administracin de cambios (algunas veces llamado gerencia de configuracin de software, SCM por sus siglas en ingls), es absolutamente escencial para un proceso efectivo de desarrollo de software. Algunas prcticas bsicas del control de cambios incluyen: Herramientas para el seguimientos de cambios de una aplicacin, tales como el fuente y sus archivos ejecutables Identificar versiones internas/comunes y de prueba/produccin de todos los componentes Control de acceso a componentes (fuentes, reserva para cambios y liberacin) Control del movimiento de versiones (ej. Promocin de pruebas a produccin) Identificacin y creacin de versiones (relacin de versiones) Registro historico de cambios (ej. Correccin de defectos, adicin de funcionalidades, etc.) Proveer comparacines relativas de diferentes versiones de un componente. Grupos pequeos de desarrolladores(ej. Uno o dos personas), con aplicaciones simples para desarrollar pueden usar documentacin y procesos manuales, sin automatizacion. Sin embargo, la mayora de organizaciones tendrn mejores resultados con sistemas de Administracin de Cambios (CM por sus siglas en ingls) que proveen herramientas automticas para promocin, archivamiento, administracin de versiones, comparaciones, distribucin de aplicaciones, entre otras funciones. La automatizacin reduce substancialmente el tiempo requerido para realizar tareas de CM tales como check-in/check-out (estos trminos denotan exclusividad para la modificacin o creacin de cdigo fuente as como la liberacin del mismo respectivamente), ubicar objetos relacionados para archivarlos cuando una nueva versin es creada, mover todos los objetos relacionados con la aplicacin cuando la aplicacin es promovida, etc. El primer beneficio tangible de un sistema de automatizacin CM, se puede ver en la reduccin de errores y la perdida de tiempo originada por equivocacin humana en la construccin de la versin de produccin. CM tambin evita que multiples desarrolladores trabajen sobre el mismo componente y sobreescriban cambios originando resultados conflictivos en el accionar de los mdulos. Pero el mayor beneficio del CM es que provee la infraestructura de trabajo para planear y realizar seguimientos tangibles de los componentes durante todo el proceso de desarrollo de la aplicacin.

Page 9 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

Algunos sistemas automatizados de CM tambin facilitan la recoleccin de mediciones de productividad y calidad que usted puede utilizar para evaluar y administrar el proceso de desarrollo. Idealmente, una sola herramienta automatizada de CM debera englobar todos los tipos de mdulos relacionados al proyecto de TI, incluyendo fuentes y objetos de varios lenguajes (ej. ILE RPG, Java, CL); tablas para bases de datos, vistas, e indices; elementos de pginas Web (ej. HTML, scripts, y archivos de imgenes); documentacin; archivos de configuracin XML; propietarios de archivos, etc. El utilizar multiples sistemas de CM para diferentes tipos de componentes es inconveniente y no permite la incorporacion de modulos interrelacionados con dependencias mutuas y estrechas. Un buen sistema de CM tambin se debe integrar con otras herramientas de desarrollo y administracin tales como Ambientes Integrados de Desarrollo (IDEs por sus siglas en ingls), herramientas de pruebas, y utilitarios para el seguimientos de problemas. El valor de un sistema de CM va ms all de simplemente check-in/check-out del cdigo fuente, sino tambien provee la base para el desarrollo de aplicaciones completas de TI, la puesta en produccin y el soporte para el flujo de trabajo. Estandarizacin y automatizacin de estos flujos de procesos puede reducir el tiempo que toma realizar una correccin o desarrollar un proyecto nuevo, tambin puede reducir significativamente problemas de puesta en produccin. PASO 3: ADOPTAR UN PROCESO DE CONTROL DE CALIDAD Y HERRAMIENTAS Control de Calidad es un conjunto de prcticas que permiten medir y mejorar la calidad de un producto. Esto incluye la reduccin de defectos y la entrega de software que alcanza los niveles especificados de funcionalidad y rendimiento. La prctica mas importante de QA que puede seguir es registrar todos los defectos y otros tipos de problemas. Usted no puede reducir problemas sin hacerles seguimiento. CM y QA dependen el uno del otro. Un efectivo sistema de QA requiere CM para asociar los defectos y sus correcciones con versiones y componentes especficos (Esto puede ser manejado eficientemente con sistemas automatizados de QA y CM que estn bien integrados). De manera inversa, incorporando QA para reducir defectos y el doble trabajo que estos causan es esencial para que un sistema de CM no sea usado tan frecuentemente en forma innecesaria, en cilos de che-out/recodificacin/check-in/pruebas/promocin. QA tambin incluye pruebas de unidad, integracin, y componentes a nivel de sistemas, incluyendo pruebas de regresin para estar seguro que la nueva versin no fallar con el cdigo actualmente en funcionamiento que pueda o no haber sido modificado. As como CM, productos disponibles de software de QA son usualmente recomendados para cualquier proyecto de gran embergadura que sobrepasen la capacidad de grupos pequeos de desarrolladores y proyectos sencillos. Dependiendo de los equipos de desarrolladores en el proyecto y el tipo de proyecto a emprenderse, sus prcticas de QA pueden beneficiarse al hacer uso del diseo inicial, la revisin de cdigo, programacin en pares, y otras tcnicas especficas. La clave principal de QA es identificar las medidas de calidad (por ejemplo, nmero de defectos) para luego validar el progreso y ver cuales prcticas proveen beneficios reales. PASO 4: ADOPTE UN PROCESO PROGRESIVO E ITERATIVO DE DESARROLLO En teora, usted puede aplicar la practica del Big Bang para emprender proyectos: haga el anlisis, el diseo, la implementacin y las pruebas, finalmente, entregue el software a produccin. En la vida real, esta teora funciona solamente con proyectos simples. Un proceso progresivo y e iterativo resulta en menos riesgo y mejores resultados para la mayora de proyectos. Una estrategia progresiva identifica entregables concretos que son ms pequeos que el producto completo de cualquier fase en desarrollo. Por ejemplo, usted puede identificar una serie de versiones de una aplicacin con funciones adicionales agregadas a cada versin en forma

Page 10 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

progresiva. Sin embargo, los incrementos pueden ser ms pequeos que una versin final y pueden estar asociados con objetivos tales como criterios de performance, facilidad de uso, etc., Con una estrategia iterativa, usted planea repetir y re-tocar una o ms fases del desarrollo (ej. anlisis, diseo, implementacin, etc.) varias veces. El desarrollo incremental e iterativo, van de la mano; sin embargo, describen difererentes aspectos del flujo en un proyecto. Producir piezas claramente identificada (ej. especificaciones o cdigo) da al proyecto una estructura de progreso incremental. Ciclos de trabajo que son repetitivos en diferentes fases del proyecto es lo que hace a un proceso iterativo. Una iteracin puede producir un nuevo incremento (resultado) o puede darse simplemente para modificar un logro producido. El desarrollo incremental e iterativo provee, en forma temprana y continua, la necesaria retroalimentacin de informacin que permite aprender lo que la aplicacin realmente requiere y lo que tomar finalizarla para su entrega. Juntas, estas prcticas lo protejern contra el riesgo ms grande en cualquier proyecto: Lo que no se sabe, no importa. Con el desarrollo incremental e iterativo, usted podr ajustar los entregables planeados y sus agendas (y otros aspectos de su plan de proyecto tambin) conforme aprenda de su experiencia. Al entregar partes de la aplicacin a tiempo y regularmente, el equipo de desarrollo tambin gana y establece credibilidad en su entorno, y crea auto-estima. A la vez, una estrategia incremental se enfoca ms en las necesidades de los usuarios, instndolos a identificar sus prioridades en cada etapa del proyecto.

PASO 5: EVALUACIONES CONTINUAS Y REFINAMIENTO DE PROCESOS Teniendo un sistema de CM y QA establecidos, y siguiendo un curso incremental e iterativo de desarrollo, su organizacin de desarrolladores tiene la base necesaria para evaluar que tan buenos procesos especficos del proyecto estn trabajando o no, y si se necesita revisar otros a medida que avanza el proyecto. Los procesos iterativos proveen una manera natural de llevar a cabo correcciones simples a lo largo de todo el proyecto. Pero lo ms importante de esta metodologa, es que usted puede incorporar puntos de control explcitos al final de cada ciclo de iteracin. Si existen problemas, usted puede revisar y corregir partes del proceso para la siguiente iteracin. Otro beneficio de la evaluacin del proceso en forma continua es que usted puede descontinuar prcticas no efectivas al final de cualquier iteracin. Con el tiempo, el proceso continuo de mejoras es la transicin mas fcil y efectiva para salir del caos y establecer un verdadero control de desarrollo. En lugar de realizar cambios radicales en la manera como desarrolla e implementa software, usted puede adaptarse gradualmente a las necesidades de su organizacin, al estilo de su equipo de trabajo, y a cambios en la tecnologa. Usted tambin puede controlar el ritmo en que incorpora desarrollos adicionales y herramientas de administracin. Si su organizacin se compromete al continuo mejoramiento de procesos de desarrollo, usted prodra finalmente alcanzar los Niveles de Madurez 4 y 5.

Page 11 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

SUMARIO

El desarrollo de software nunca ser un proceso mecnico en su totalidad. Sin


embargo, hoy en da estamos ms all de la era cuando el proceso de desarrollo era considerado como magia negra. Muchas organizaciones exitosas, hoy en da, utilizan una combinacin de metodologas formales e informales de desarrollo, y una mezcla de herramientas compradas y/o desarrolladas en casa, para conducir proyectos de manera predecible, que aceleren el desarrollo y reduzcan el riesgo innatos en estos. La adopcin de sistemas de CM y QA son la base integral para la administracin del desarrollo de software. El desarrollo incremental, iterativo, y la evaluacin/mejora continua del proceso son piezas claves para lograr el control completo de un proyecto.

Paul Conte es presidente de Picante Software, una firma consultora en Eugene, Oregon, y es editor senior para e-Pro Magazine e iSeries NEWS Paul ha publicado numerosos artculos sobre prcticas de desarrollo de software y es una autoridad ampliamente reconocida en tecnologa de base de datos. El es autor o co-autor de cinco libros, incluyendo SQL/400 Gua del Desarrollador y SQL Server 2000 Gua del desarrollador. Paul tiene un Bachillerato en Sicologa de la Universidad del Estado de Georgia y una maestra en Ingeniera de Sistemas de la Universidad de Oregon.

Page 12 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

DONDE APRENDER MS

14 Ways to Succeed at Project Management Paul Conte IT Financial Management http://www.businesstechnology.com/BT/Content/Index.cfm/fuseaction/viewArti cle/ContentID/9 En este artculo, elabore una variedad de prcticas especficas que lo ayudarn a ser exitoso con proyectos de desarrollo de software

Cockburn, Alistair Surviving Object-Oriented Projects Reading, MA: Addison-Wesley Publishing Company, 1997 Este libro es bastante corto pero provee una excelente explicacin de los riesgos administrativos y las tcnicas incrementales e iterativas del desarrollo

McConnell, Steve. Software Project Survival Guide. Redmond, WA: Microsoft Press, 1997 Una buena introduccin a muchos principios del desarrollo de software. Por ejemplo McConnell nos ilustra con el siguiente pensamiento: Proyectos efectivos, controlan los cambios; mientras que proyectos inefectivos se dejan controlar por ellos

Software Engineering Institue Web site: http://www.sei.cmu.edu Aqu usted podr aprender ms sobre el Modelo de Capacidad de Madurez referenciado en la Figura 1. Para una descripcin detallada de los niveles de capacidad vea el captulo 4 en el Capability Maturity Model Integration, Version 1.1 documento en PDF disponible en: http://www.sei.cmu.edu/cmmi/products/v1.1se-sw-cont.pdf El site SEI tiene una variedad amplia de documentos en lnea, sin embargo; los documentos tienden a estar escritos en un estlo acadmico.

NASA Software Engineering Laboratory Web site: http://sel.gsfc.nasa.gov Otra fuente de investigacin documentada y gua sobre la administracin de software

Softlanding System Web Site: http://www.softlanding.com/swmanagement/index.htm Una fuente especfica sobre informacin de administracin de software en una plataforma iSeries y links a otros articulos y Web sites de mucha utilidad.

Page 13 of 14

DESARROLLO DE SOFTWARE GUA DE SUPERVIVENCIA Cinco Pasos para ir del Caos al Control Por Paul Conte Picante Software Traducido por Eduardo Pulido

SoftLanding Systems, Inc. 84 Elm Street, Peterborough, NH 03458. 800-545-9485, 603-924-8818. Email: Webmaster Copyright 2003, SoftLanding Systems, Inc.

SISRED S.A.C. , Canaval y Moreyra 350 Of. F San Isidro Lima Per Tel. 511-421-0925 Email: webmaster@sisred.com

Page 14 of 14