Desarrollo web
Web Development
|
Nuestros enfoques son:
Soluciones acordes a sus necesidades
Desarrollo ágil
Optimización
Introducción
Desarrollo web es un título algo arbitrario
para el conjunto de tecnologías de software del lado del servidor y
del cliente que involucran una combinación de procesos de base de
datos con el uso de un navegador en Internet a fin de realizar
determinadas tareas o mostrar información. Wikipedia, por ejemplo,
ha sido realizada por desarrolladores web.
Tradicionalmente un software departamental o incluso un ambicioso
proyecto corporativo de gran envergadura es desarrollado en forma
standalone, es decir, usando lenguajes ya sea compilados(C, C++,
Delphi), semicompilados(.NET, Mono, Java), o interpretados (Python)
para crear tanto la funcionalidad como toda la interfaz de los
usuarios, pero cabe perfectamente un desarrollo orientado a web
para dichos propósitos, siendo más homogéneo y multiplataforma, y
dependiendo de las tecnologías utilizadas, más rápido y robusto
tanto para diseñar, implementar y probar, como para su uso una vez
terminado.
Funcionalmente, el desarrollador web, que es quien realiza esta
labor, normalmente sólo se preocupa por el funcionamiento del
software, es tarea del diseñador web preocuparse del aspecto
final(layout) de la página y del webmaster el integrar ambas
partes. En ocasiones el webmaster también se encarga de actualizar
los contenidos de la página.
Los lenguajes de programación más usados en desarrollo web son
principalmente: ASP.NET, PHP y JSP, aunque aún hay quienes usan
ASP, Macromedia ColdFusion y Perl. Algunos desarrolladores web
hablan muy bien de Ruby on Rails pero no está muy difundido
todavía. También hay un proyecto para usar Pascal en web a través
del lenguaje Pascal Server Pages - PSP pero aún no se han
concretado desarrollos, hasta donde se conoce.
La base de datos más popular en desarrollo web es MySQL, seguida
por Oracle, SQL Server y PostgreSQL, también puede usarse
perfectamente Firebird o HSQL.
Idealmente un desarrollador web debería conocer, además de al
menos un lenguaje de programación y el manejo de al menos una base
de datos, HTML, CSS y JavaScript, tres tecnologías que bien
trabajadas logran DHTML. También, si el diseñador desea usar Adobe
Flex (Flash) debe ser capaz de integrarlo a su solución, o puede
dejar los efectos en el mismo DHTML.
Desarrollo ágil de software
Una introducción a las metodologías ágiles de desarrollo de
software
El desarrollo de programas es una disciplina
que todos relacionamos en forma directa con el progreso, las
mejoras en la productividad, y mucha gente inteligente trabajando
duro y generando importantes beneficios para las empresas y toda la
sociedad. Pero al mismo tiempo observamos que muchas veces los
proyectos de desarrollo de software sufren retrasos y no se
obtienen los resultados esperados pese al talento y esfuerzo
puestos en acción por parte de analistas, programadores y usuarios
para que "el nuevo sistema" funcione correctamente en tiempo y
forma.
¿Por qué tantos proyectos de desarrollo de software no se
terminan a tiempo, cuestan más que lo presupuestado originalmente,
tienen problemas de calidad serios y generan menor valor que el
esperado?
Este interrogante fue uno de los que se formularon Ken Schwaber,
Jeff Sutherland y otros profesionales expertos en el desarrollo de
software cuando se reunieron en febrero de 2001 para analizar el
problema y decidieron redactar un "Manifiesto Ágil". Se trató de un
compromiso público en buscar nuevas y mejores formas de desarrollar
software poniendo énfasis en las personas y sus interacciones, la
colaboración y la respuesta continua al cambio, explorando nuevas
formas de hacer las cosas, y compartiendo experiencias -- dando
origen a una nueva comunidad de profesionales que explora
sistemáticamente nuevas alternativas frente al modo tradicional de
desarrollar software.
Desarrollo "tradicional" de software
La forma tradicional de desarrollar
software se basa en procesos predefinidos con documentación muy
precisa, y una detallada planificación inicial que debe seguirse
estrictamente.
Esta forma de trabajar surgió naturalmente hace unos cincuenta
años como una adaptación del manejo de proyectos de ingeniería, que
era lo más parecido a desarrollar programas que se conocía en ese
momento, y funcionó razonablemente bien en un comienzo. También es
necesario tener en cuenta que los ordenadores era enormemente
caros, la mayor parte de la inversión informática se la llevaban
los equipos y por esta razón los programas se hacían a medida para
unas máquinas que se adquirian, no lo olvidemos, para realizar unas
tareas muy concretas.
Pero los proyectos de desarrollo de software en la actualidad
incluyen desafíos muy diferentes a los que se presentan al
construir puentes y casas, por lo que no sorprende que los métodos
tradicionales de desarrollo de software estén en crisis.
Tradicionalmente los proyectos se dividen en etapas bien
diferenciadas: Análisis de Factibilidad, Análisis de
Requerimientos, Diseño, Programación, y Testeo.
Generalmente se trata de que haya retroalimentación (feedback en
inglés) entre las etapas contiguas, de tal forma de que, por
ejemplo, haya un momento en que se mejoren los Requerimientos en
base a comentarios, sugerencias y necesidades de los responsables
del Diseño. Sin embargo, esta forma de desarrollar software genera
muy serios problemas, debido a que al comienzo del proyecto, que es
cuando menos se conocen las características del problema que
resolver, se toman las decisiones de mayor relevancia e impacto en
el resto del proyecto.
Como las chances de tomar decisiones erróneas al comienzo
del proyecto son generalmente mayores que cuando ya se ha trabajado
un tiempo en el proyecto, muchas veces proyectos no cumplen sus
objetivos, no se terminan a tiempo, o resultan mucho más caros que
lo presupuestado. En particular, esto ocurre
frecuentemente en los casos en que el grupo de desarrollo necesita
crear algo totalmente nuevo o de características específicas que
nadie ha creado aún . . . lo cual es cierto en la mayoría de los
proyectos de software, porque en caso contrario, la organización
compraría directamente un producto o sistema ya desarrollado por
otra empresa.
Como propuesta de solución a estos problemas han surgido
una serie de "métodos ágiles" de desarrollo de software y manejo de
proyectos en general, y cuyas principales características
mencionaremos a continuación.
Características del Desarrollo Ágil
En los proyectos con Desarrollo Ágil se busca
que todos los recursos se empleen en la creación del mejor software
que satisfaga las necesidades del cliente. Esto significa que todos
los que forman parte del equipo de trabajo se concentran únicamente
en tareas y procesos que agregan valor al cliente del producto que
se está creando, mejorando o implementando. Adicionalmente, los
usuarios o clientes reciben periódicamente prototipos o versiones
en funcionamiento del producto a medida que se va construyendo, lo
cual les permite evaluar el trabajo realizado, advertir sobre
problemas que se detecten, y sugerir mejoras o funcionalidad
valiosa que no se había considerado originalmente (ya sea por
olvido, o porque la nueva funcionalidad se inspira en la
experiencia de evaluar el producto mientras se está
construyendo).
La distinción entre las tareas relevantes y los que no
agregan valor se consigue a través de la creación de contextos con
alto nivel de empowerment y feedback.
El empowerment consiste en otorgar autonomía para
tomar decisiones al equipo de desarrollo, y genera un clima de
sinergia grupal que permite al grupo avanzar a pesar de las
complicaciones y dificultades que ocurren habitualmente en los
proyectos -de allí que uno de los métodos de trabajo más populares
se haya bautizado con el nombre "scrum", ya que la imagen de los
jugadores de rugby empleando su energía en avanzar todos juntos es
muy aplicable a los equipos de trabajo que utilizan esta
metodología.
El feedback constante y presente en varios niveles
permite el desarrollo incremental y el crecimiento adaptativo de la
programación, así también como una mejora constante en la forma de
trabajo de los equipos, lo que permite detectar problemas y
resolverlos antes de que desaten crisis que afecten la calidad o el
tiempo y costo del desarrollo. Los principales tipos de feedback
ocurren a nivel producto, procesos y código.
Periódicamente el cliente evalúa el estado real del
software que se está creando, lo que asegura que lo entregado al
final del proyecto coincidirá con lo esperado. Esto se consigue a
través de un desarrollo incremental: el producto puede probarse
desde las primeras semanas y meses del proyecto al menos en cuanto
a su funcionalidad más básica, que luego va creciendo y
mejorando -es por esto que se dice que desde el comienzo
el producto ya tiene dentro su ADN, del mismo modo que ocurre con
la gestación de los seres vivos en la Naturaleza.
A nivel procesos se realizan frecuentes reuniones retrospectivas
donde los integrantes de los equipos comentan y discuten en
profundidad tanto sus aciertos (para poder repetirlos y convertilos
en hábitos), así también como el trabajo que no se realizó
correctamente o no llevó al equipo a obtener los resultados
esperados.
Adicionalmente los programadores suelen trabajar mucho en equipo y
también por parejas, revisando juntos el código y resolviendo
problemas en lugar de tratar de cubrirlos, lo que repercute en un
producto de mejor calidad, mejor documentado, y simple de
mantener.
|