Está en la página 1de 5

Entornos en el desarrollo de software

En lo que a desarrollo de software se refiere, como en casi cualquier otra profesión, disponer de un
entorno de trabajo adecuado puede marcar la diferencia entre obtener un gran resultado o que nuestro
trabajo sea un completo desastre.

Al respecto de esto, uno de los aspectos al que más atención deberemos de prestar es al diseño de los
distintos entornos que participan en el ciclo de vida del software y a los procedimientos que definen el
flujo de trabajo entre ellos.

Y para que todos tengamos en mente el mismo concepto de la palabra entorno, lo definiremos cómo un
sistema formado por hardware y software, así como la configuración, circunstancias y estados relativos a
él. En el diseño de nuestro procedimiento podemos establecer varios entornos con distintos fines por los
que debe pasar el software durante su ciclo de vida antes de llegar al definitivo entorno de producción.

Un diseño para cada necesidad


El número de etapas, los procesos que las definen y los softwares que utilizamos pueden variar en
función de las características de cada proyecto y la idiosincrasia de cada compañía.

Algunos de los factores que pueden influir a la hora de decidir que entornos incluiremos en nuestro flujo
de trabajo y que procedimientos los definirán son el tamaño del proyecto, la complejidad del software, las
tecnologías utilizadas para el desarrollo, la cantidad de desarrolladores implicados en el proyecto, la
metodología de desarrollo elegida o la criticidad del software.

Los tipos de Los tipos de entorno


En esta entrada repasaremos un conjunto de entornos bastante común, muy completo y que funciona bien
en el desarrollo de aplicaciones web con equipos pequeños o medianos y metodologías de desarrollo
ágiles. Esta configuración es solo un ejemplo, es perfectamente adaptable a otras necesidades y
trasladable otros proyectos con similares (e incluso distintas) características.
Entorno de desarrollo

Es el lugar dónde programamos, lo más habitual es que esté localizado en la propia máquina de cada
desarrollador de forma que varias
personas pueden estar trabajando
en un mismo proyecto a la vez sin
molestarse.

Para minimizar incidencias en


etapas posteriores es
recomendable que este entorno
disponga de un software y una
configuración lo más parecida
posible a la que nos
encontraremos en el entorno de
producción. Situaciones como
desarrollar sobre php 7.2 y que el
entorno de producción se
encuentre corriendo php 5.6 o
hacerlo sobre windows con el
driver «x» de sql server y que el
servidor de producción sea una máquina linux con el driver «y» suelen acabar generando muchos
quebraderos de cabeza fácilmente evitables.

Solo cuando el desarrollador completa un código perfectamente funcional e integrable en el entorno de


pre-producción y tras realizar las pruebas necesarias para asegurar que el software desarrollado tiene
la estabilidad suficiente se podrá pasar al entorno de integración continúa.

Entorno de integración continúa

Este entorno cumple un triple objetivo:

1. Integrar el trabajo de los diferentes desarrolladores en un repositorio central, dando como resultado
una versión del código actualizada y consolidada.
2. Automatizar las pruebas de integración y su validación antes de ser movido al siguiente entorno.
3. Enviar el código al siguiente entorno si las pruebas han sido superadas satisfactoriamente.
La forma más habitual de implementar este entorno es mediante un software de control de versiones,
dónde Git es la opción más popular. Una vez consolidado el código utilizamos los hooks para ejecutar las
pruebas definidas, notificar los resultados y enviar a pre-producción si es preciso.

Entorno de pre-producción

Una vez superadas las pruebas de integración en el entorno de integración continua, el código será
movido al entorno de pre-producción. Aquí se realizarán las pruebas de validación al conjunto del
software, teniendo como objetivo localizar cualquier error antes de llegar al entorno de producción y
evitar así los problemas derivados de ellos.

Este entorno será completamente funcional a nivel de usuario, y si hemos recomendado que el entorno
de desarrollo fuese lo más similar posible al entorno de producción, aquí se convierte en algo crítico.
Tanto el software, dónde no solo hablamos de las aplicaciones sino también de sus versiones y
configuraciones, como el hardware y los sets de datos. Cuanto mayor sea la similitud con el entorno de
producción menor será el número de incidencias que nos encontremos cuando el software esté en
productivo.
Entorno de demo

Es un entorno muy similar al de pre-producción, y por lo tanto al de producción. Lo habilitamos para que
el cliente final pueda probar la nueva aplicación o las modificaciones o correcciones realizadas a la
aplicación existente. De aquí extraeremos las impresiones del cliente y localizaremos de una forma
temprana posibles carencias en los requisitos iniciales, en el diseño o en su implementación.

Si en nuestro proyecto la validación del cliente es necesaria, no disponer de este entorno puede suponer
que el cliente valide contra el entorno de pre-producción (o mucho peor aun contra el de desarrollo o de
producción), en cuyo caso pueden darse varias situaciones:

1. Que todo salga maravillosamente bien, improbable pero posible.


2. Que una nueva actualización en el entorno de pre-producción, esté o no relacionada con la
funcionalidad que estamos probando, provoque errores y demos la validación por fallida.
3. Que congelemos la actualización del entorno de pre-producción incurriendo en molestias y
dificultades extra para el equipo de desarrollo y retrasando las fechas del proyecto.
Estos problemas se verán aumentados si trabajamos en base a una metodología de desarrollo ágil con
entregas iterativas.

Entorno de producción

Es la culminación de nuestro esfuerzo, el entorno dónde se verán las virtudes y defectos de nuestro
trabajo, el objeto por el que seremos valorados. Los cuatro entornos anteriores están pensados para
llegar aquí de la forma más eficiente posible garantizando la fiabilidad, y la diferencia de calidad sobre el
resultado final puede ser realmente significativa de disponer de un circuito de entornos adecuado a no
disponer de él.

Las pruebas

Uno de los aspectos más significativos de este circuito es que cada entorno debe tener su propio tipo
validación y por lo tanto de pruebas. Lo más habitual es realizar test unitarios en el entorno de
desarrollo, test de integración en el entorno de integración continua y pruebas de validación sobre el
conjunto de la aplicación en el entorno de pre-producción.

Para los test unitarios existen varias herramientas entre las que destacar PHP Unit, aunque si usamos
frameworks como Laravel, el propio framework ya nos proporciona herramientas para realizar este tipo
de pruebas. A partir de ahí existe un amplio abanico de herramientas para ayudarnos a realizar todo tipo
de comprobaciones.

Conclusión

Concedamos la importancia que se merece al diseño y la implementación de los entornos implicados en


el desarrollo del software, de ellos dependerán en gran medida la calidad de los resultados y la velocidad
de desarrollo.

Algoritmo

Conjunto ordenado y finito de operaciones simples a través del cual podemos hallar la solución a un
problema.

Todo algoritmo debe cumplir con estas características básicas:


 Tienen inicio y fin: todo algoritmo comienza en un estado inicial con una serie de datos específicos,
y culmina con una solución o salida.
 Funcionan en secuencia: un algoritmo está compuesto por una serie de pasos ordenados.
 Las secuencias son concretas: cada paso es claro y no deja lugar a la ambigüedad.
 Los algoritmos son abstractos: son modelos o guías para ordenar procesos.
 La cantidad de pasos de un algoritmo es finita.

Otros ejemplos de algoritmos de la vida cotidiana

Como hemos visto los algoritmos pueden ser muy sencillos y se pueden formar de nuestra cotidianidad,
además te mostramos otros ejemplos que tu podrás resolver según lo aprendido.

 Encender la estufa
 Cerrar las ventanas
 Contestar una llamada
 Manejar un auto
 Cambiar un neumático
 Encender una fogata
 Lavarse el cabello
 Llenar un vaso de agua
 Insertar una tarjeta sim
 Podar una rosa
 Hornear un pan
 Hacer un jugo
 Cortar una tabla
 Ir a comprar leche
 Hacer las maletas
 Limpiar una herramienta
 Cortar las uñas a una mascota

Un diagrama de flujo, también llamado Flujograma de Procesos o Diagrama de Procesos, representa


la secuencia o los pasos lógicos (ordenados) para realizar una tarea mediante unos símbolos.

Dentro de los símbolos se escriben los pasos a seguir.

Los diagramas de flujo representan la secuencia lógica o los pasos que tenemos que dar para realizar
una tarea mediante unos símbolos y dentro de ellos se describen los pasos ha realizar.

Un diagrama de flujo debe proporcionar una información clara, ordenada y concisa de todos los pasos a
seguir.

Por lo dicho anteriormente, podríamos decir que: "Un diagrama de flujo es una representación gráfica o
simbólica de un proceso".

También podría gustarte