Desarrollamos proyectos a la medida de sus necesidades, en forma colaborativa con nuestros clientes, conformando equipos conjuntos y aportando profesionales con conocimientos en metodologías, tecnologías y plataformas específicas, a lo largo de todo el proceso de desarrollo e implementación de la solución.
Desarrollamos aplicaciones de software sobre diversas plataformas, aplicando las técnicas y metodologías de diseño y desarrollo apropiadas para cada proyecto.
La aplicación de patrones de diseño adecuados y exigentes controles de calidad aseguran la entrega de productos de software de óptima solidez y escalabilidad. Construimos soluciones de software utilizando tecnologías estándar que garantizan la flexibilidad, portabilidad, alta disponibilidad y rendimiento.
La metodología de desarrollo y diseño son seleccionadas en función de las características de cada proyecto. Entre las metodologías utilizadas podemos mencionar una variante de las metodologías Ágiles, especialmente Programación Extrema (XP ó eXtreme Programming).
Algunos de los principios básicos de estas metodologías se centran en liberar frecuente y constantemente unidades de software funcionales, manteniendo una alta tolerancia a los cambios de requerimientos, y minimizando la necesidad de un diseño intensivo y complejo a priori que en la mayoría de los casos sufre enorme cantidad de cambios durante el ciclo de vida del proyecto.
Entre las prácticas fundamentales se encuentra el establecimiento de iteraciones cortas, al fin de las cuales se realizan pruebas de integración permanentemente. En nuestro caso, las iteraciones regulares son de dos semanas, orientándose a la entrega final de un release en forma mensual o bimestral, de acuerdo a la planificación consensuada con Consultoría. Otra práctica regular es el desarrollo basado en pruebas (Test-Driven Development), que consiste en escribir las pruebas unitarias (Unit Tests) previamente al código, de manera que se diseña primero la interfaz pública y el uso de los componentes, y luego su implementación. Esta práctica nos ha llevado a que las pruebas unitarias tengan una cobertura del código cercana al 100%, y nos provee de una batería de pruebas automatizadas en constante incremento, que sirven como reaseguro tanto ante cambios o rediseños como ante futuras extensiones.
Finalmente, las pruebas unitarias se convierten también en una valiosa documentación técnica del código que no puede diferir de la realidad (ya que todo cambio en el código implica un cambio o ampliación previos de las pruebas mismas).
Estas y otras prácticas adicionales tienden a incrementar la calidad y mantenibilidad del código producido, a la vez que involucran a la mayor parte de los actores a lo largo de todo el ciclo de vida del proyecto (analistas, diseñadores, testers, desarrolladores, documentadores).
Una de las consecuencias de esta forma de trabajo es que los entregables usuales en las tareas de desarrollo (diseños, diagramas, código fuente documentado, programas ejecutables, etc) son generados profusa y regularmente.