1.
Infraestructura Básica para el
Desarrollo de Software
Bueno, antes de empezar con temas referentes a Desarrollo de
Software como tal, hay que tener en cuenta lo siguiente:
Tecnologías con las cuales se trabajará.
Infraestructura de Trabajo.
“Políticas” de trabajo.
Describiremos cada uno de estos aspectos dando mayor énfasis en
la “Infraestructura de Trabajo”.
1.1.
Tecnologías con las cuales se trabajará.
Cuando empezamos un proyecto de desarrollo de software en una
empresa, puede suceder que la empresa ya tenga definidas las tecnologías (Lenguajes
de Programación, SGBD, ORM’s, etc.) con las cuales trabajan, pero también puede
suceder que la empresa recién este comenzando con el proceso de
automatizaciones mediante software.
Si nos encontramos en el primer caso el trabajo se simplifica
ya que solo debemos utilizar las tecnologías ya definidas.
Existe una complejidad “extra” si nos encontramos en el
segundo caso, ya que nosotros como pioneros debemos definir las tecnologías que
se utilizará; la decisión de que tecnologías se utilizara no hay que tomarla a
la deriva, ya que se debe persistir con estas tecnologías en el resto de los proyectos
futuros. Por ejemplo, es incorrecto (desde el punto de vista del autor) que en
un proyecto utilicemos como SGBD a Oracle, en otro a SQL Server, en otro a
MySql; ya que utilizar más de un SGBD puede acarrearnos los siguientes
problemas:
Sera necesario aumentar servidores,
ya que cada SGBD deberá estar en un servidor diferente.
Duplicidad de información, ya que por
ejemplo para cada SGBD tendremos que crear usuario, que seguramente se repetirán
en los diferentes SGBD
Dificultad de integrar información,
ya que si queremos cruzar información de una BD en Oracle con una BD de MySql
no podremos hacerlo directo (por ejemplo con una llave foránea) y tendremos que
optar por utilizar otros mecanismos (por ejemplo servicios web) para realizar
dicha integración, o en el peor de los casos simularla.
La lista de problemas podría extenderse mucho más y aparte existiría
otra lista para S.O., leguajes de programación, etc.
En el peor de los casos, podría suceder que el profesional de
desarrollo se incorpore a una empresa en la cual las tecnologías utilizadas no están
unificadas y podrá chocarse con una baraja de sistemas con diferentes tecnologías
(ejemplo: un sistema en FoxPro, otro en Visual Basic 6.0, otro en Java, otro en
PHP, otro en .Net, etc.), en tal caso usted podría aconsejar que poco a poco se
vaya unificando todo por los problemas ya expuestos.
Por lo expuesto brevemente, esperemos que este claro que es
muy importante definir las tecnologías utilizadas para los proyectos del presente y del futuro, y no ir utilizando tecnologías
diferentes para cada proyecto.
1.2.
Infraestructura de Trabajo.
Muchos de los lectores pensaran en ¿qué tiene que ver las
Infraestructura de trabajo con el desarrollo de software? Pues la respuesta es
simple, si desde un comienzo no se posee una infraestructura de trabajo
adecuada, entonces el desarrollo de software no se la realizara correctamente.
Entonces, una vez que se tenga definidas todas las tecnologías
con las cuales se trabajara, se debe poseer una infraestructura de trabajo, en
la Ilustración 1 podemos observar un ejemplo de infraestructura
de trabajo.
En el ejemplo claramente se muestran 3 entornos de trabajo y la Maquina Local (Máquina en la cual trabaja
el desarrollador de software), cada uno de los cuales los describiremos a
continuación:
Producción. El
entorno de Producción es el que sale
al exterior por medio de una IP pública, los servidores en este entorno no son
accesibles por otros entornos (por ejemplo Desarrollo), solamente son
accesibles desde internet.
Test. El
entorno de Test es utilizado para
realizar pruebas de base de datos, servicios web, páginas web y un el test de paso de entorno, este test de paso de
entorno es una prueba que se ejecuta para tener la seguridad que las actualización
que se vayan a realizar al Entorno de Producción no causen problemas, todo esto
lo explicaremos detalladamente más adelante.
Desarrollo. El
entorno de Desarrollo es utilizado
para realizar todas las tareas de desarrollo como tal, por ejemplo crear base
de datos, crear servicios web y todo lo que sea necesario en la etapa de
desarrollo.
Maquina Local. La
Máquina Local es el equipo asignado
a cada miembro del equipo de trabajo, es la PC en la cual el profesional de
desarrollo tiene instalado todo lo que necesite para realizar su trabajo, por
ejemplo IDE’s, SGBD, aplicaciones de ofimática, etc.
Ahora que ya tenemos una breve idea de cada entorno de
trabajo, procedamos a describir como el desarrollador debe proceder a trabajar
con cada uno de ellos, describiremos esto con pasos secuenciales para facilitar
el entendimiento del lector.
i. Como
en todo proyecto de software se procede con el análisis y diseño del sistema, entre
los productos emergentes de esta actividad, encontramos el modelo de la base de
datos que lo utilizaremos en el siguiente paso.
ii. Una
vez que tengamos el modelo de base de datos, procederemos a implementarlo en
nuestro Entorno de Desarrollo – Desa BD,
debemos tener en cuenta que las base de datos NO deben ser implementadas en el SGBD de la Máquina Local en la
cual trabaja el profesional en desarrollo de software, ya que con seguridad existirán
más miembros del equipo de trabajo los cuales no tendrán acceso a la Máquina en
la cual trabaja un miembro, la BD debe estar implementada en un SGBD que resida
en un Servidor de BD de desarrollo a la cual tengan acceso todos los miembros
del equipo.
iii. Una vez que tenemos nuestro servidor
de base de datos corriendo y que todos los miembros del equipo tienen acceso a
este servidor podemos proceder con el desarrollo de nuestras aplicaciones,
servicios web, sitios web, etc. Todo esto de desarrollo lo trabaja cada miembro
del equipo en su Maquina Local.
iv. Cuando, por ejemplo, el encargado de
desarrollo de servicios web termina un servicio, lo sube al Servidor de Servicios Web de Desarrollo, así los demás miembros
del equipo ya podrán hacer uso de dicho servicio web; lo mismo se aplica cuando
el encargado del sitio web culmina un web form, vista, etc., lo publica en el Servidor Web de Desarrollo. Es así como
se va trabajando con el entorno de desarrollo.
v. Una
vez que se termine un entregable y se desea que este pase a producción,
previamente se hace una simulación
de paso a producción, pero con el entorno de Test, si al pasar todo el sistema
al entorno de Test no ocurre ningún problema, esto quiero decir que el sistema
puede pasar al entorno de Producción.
vi. Como en el paso v. ya pasamos el sistema el entorno de Test, ya tenemos la aplicación
corriendo y podemos hacer todas las pruebas pertinentes que necesite el
sistema.
vii. Si hasta este paso todo corrió a la
perfección, significa que ahora SI el sistema puede ser pasado al entorno de
Producción.
Nota. Antes de pasar al entorno de
Producción los profesionales deben estar seguros de que la NO ocurrió ningún problema en el paso v. y en el paso vi.
1.3.
“Políticas” de Trabajo.
Las políticas de trabajo son bastante importantes y deben ser
respetadas por cada miembro del equipo, a continuación mencionaremos algunas políticas
de trabajo.
Ninguna sistema podrá pasar al
entorno de Test sin antes haber sido subido al entorno de Test y no haber reportado
problema alguno, tanto en la subida como en la funcionalidad del sistema
Una vez que se tenga definidas las tecnologías
que se utilizara para el desarrollo de software, ningún miembro del equipo podrá
utilizar otra tecnología.
Todos los días, al terminar la
jornada laboral, todos los miembros del equipo deberán subir sus avances de código
al Servidor de Versionamiento (por ejemplo TFS)
Todas las políticas definidas en un entorno de trabajo, sirve
bastante, ya que define un lineamiento que debe seguirse y así todos los
miembros del equipo hablen el mismo
idioma.
En la siguiente entrega procederemos a mostrar un entorno de
trabajo (una versión simplificación del entorno de trabajo mostrado en la Ilustración 1) corriendo, para posteriormente
poder hacer el uso de estos.