Desarrollo de software, ¿qué es eso?

En los negocios muchas veces existen tareas repetitivas que nos gustaría quitárnoslas de encima, como por ejemplo el llenado de facturas o el control de inventarios, y para ello sirve el desarrollo de software que no es más que «hablar» el lenguaje del computador para decirle que haga ciertas tareas automáticas.

Todo computador tiene dos partes: el software y el hardware. El software es la parte intangible del computador, la cual le da las instrucciones para que funcione el hardware, que es toda la parte física que se puede tocar. Haciendo una analogía a la anatomía humana, el hardware sería todo el cuerpo humano, incluido el cerebro, mientras que el software vendría a ser la mente, es decir todo el conjunto de características que forman nuestra personalidad y carácter, formadas tanto por nuestras características genéticas que vinieron de fábrica (equivale al BIOS de la computadora) y las experiencias vividas que nos «programaron» lo que somos actualmente.

Es frecuente usar de manera indistinta los términos software. aplicación y sistema, siendo usados muchas veces como sinónimos.

Dado que una máquina no puede vivir experiencias que le ayuden a mejorar (por lo menos aún no, aunque se están haciendo experimentos con la inteligencia artificial), las funcionalidades que tendrá se las instala como software, el cual es elaborado en un proceso llamado desarrollo de software que se lo detalla a continuación:

Proceso del desarrollo de software

El software es elaborado por personas llamadas programadores, en base a un diseño previo que es hecho por un arquitecto de software, siguiendo las especificaciones que son generadas a partir de las necesidades y deseos del cliente, los cuales son detectados por el analista de negocio.

Mientras el software no atienda todos los requerimientos y esté incompleto en funcionalidades, se encontraría en fase alfa. Una vez que se ha programado una primera versión completa del software (llamada fase beta), se realizan pruebas de aseguramiento de calidad (QA por sus siglas en inglés), lo cual es realizado por un tester.

Cuando se realizan todas las pruebas y los ajustes correspondientes y se tiene una versión más «estable», es decir sin tantos errores de programación, entonces el software ha entrado a la fase release candidate (o RC) en donde se realizan más pruebas pero esta vez con el futuro usuario frecuente del software. A este paso se lo llama control de calidad (QC por sus siglas en inglés) y se finaliza con la certificación del cliente de que el software cumple con sus expectativas.

Finalmente se pasa el software a producción, es decir que el software está en fase estable y va a ser usado en la vida real, y se termina el proceso con un periodo de estabilización donde se atiende cualquier novedad surgida durante el uso real del software.

Ambientes

Cada una de las fases del desarrollo de software son hechas en tres ambientes distintos:

Ambiente de Desarrollo

Aquí se realiza la programación del software y los ajustes del caso. Es el primer paso en el flujo de desarrollo, y es de naturaleza inestable ya que existen muchas funcionalidades no probadas y/o experimentales.

Se conforma de las mismas máquinas donde se programa, donde suelen convivir tres aspectos: el entorno de desarrollo integrado (IDE por sus siglas en inglés), el control de versionamiento y el gestor de requerimientos. Más adelante en este artículo se detallarán tales aspectos.

Un ambiente de desarrollo ideal se conforma de computadoras cómodas para escribir, de pantalla amplia (o incluso doble pantalla), con conexión a Internet para consultas y suficiente espacio en disco. La velocidad de la máquina debe ser excelente, con un procesador de rango medio-alto y con el máximo de memoria RAM que se pueda permitir.

Ambiente de Integración

En este ambiente se unen todos los desarrollos de los distintos programadores para validar que puedan funcionar conjuntamente. Se conforma de un pequeño servidor o computador dedicado, donde no se guarden datos críticos, y que pueda ser reiniciado, borrado y reinstalado sin problemas.

Este ambiente agilita el proceso de desarrollo, ya que ayuda a detectar problemas de incompatibilidades entre el trabajo de dos o más programadores en fases muy tempranas del desarrollo. Es recomendable que no se programe sobre este ambiente, para evitar la pérdida de información.

Ambiente de Pruebas

Este ambiente es crítico para la calidad del desarrollo de software, y sin embargo es muchas veces menospreciado. Sirve para tener un entorno adecuado donde poder realizar pruebas a profundidad del software, tanto a nivel de datos que se disponga para probar como de recursos del servidor. Se recomienda tener un ambiente de pruebas lo más parecido posible al ambiente de producción, a fin de poder identificar cualquier problema futuro cuando el software salga en vivo.

Cuando el desarrollo de software es desde cero y se cuenta con hardware recién adquirido o liberado de otros sistemas, en donde no funciona ningún sistema puesto que el desarrollo no se ha completado aún, entonces se suele utilizar ese hardware como ambiente de pruebas, lo cual trae el riesgo de que luego de la salida a producción no se contará con ningún ambiente de pruebas, para versiones futuras del sistema.

A nivel de datos para pruebas, de ser posible se traen datos que ya existan en producción, con su respectiva ofuscación que consiste simplemente en ocultar la información delicada, como datos personales o registros reservados del cliente. Cuando no existen datos en producción que puedan ser usados, se los ingresa a mano y en caso de ser necesario se crean programas especiales para la generación de datos suficientes para realizar las pruebas.

Ambiente de Capacitación

Aquí se llevan a cabo los talleres y capacitaciones a los usuarios futuros del sistema, donde se permite cualquier cambio que se haga a los datos ya que son parecidos a los de producción, pero no son reales. Generalmente se instala el software cuando ha alcanzado su fase estable y no se vislumbran más cambios en el futuro cercano. Se lo separa del ambiente de pruebas ya que se requiere que no existan cambios, fallas, caídas completas del sistema, borrado de datos y otros eventos usuales en el ambiente de pruebas y que son inconvenientes que sucedan durante las capacitaciones.

No es necesario que este ambiente sea igual al de producción ni pruebas, ya que las cargas son mucho menores, sin embargo es necesario que se cuenten con los recursos necesarios para que el sistema funcione al 100%.

Ambiente de Preproducción

Este ambiente sirve para realizar simulacros del paso de producción  y afinar detalles de los instaladores, en caso de haber. También se prueban los manuales de instalación y se ajustan las novedades que pudieran surgir en los mismos, ya que el «paso a producción» (es decir, la instalación del sistema en el ambiente de producción que es donde funcionará el sistema en vivo) debe ser desatendido de los programadores y ser realizado en su totalidad por el personal que administra la infraestructura informática, siguiendo los pasos detallados en el manual de instalación.

Este ambiente suele ser volátil, se decir de un corto tiempo de vida, y debe ser una copia fiel del ambiente de producción. Se lo utiliza inmediatamente antes del paso a producción.

Ambiente de Producción

El ambiente de producción es donde funcionará el sistema en la realidad, y su dimensionamiento (es decir, sus especificaciones técnicas) depende de los requerimientos y las proyecciones de uso y crecimiento que se tengan para los próximos años.

Como ya se mencionó, por lo general este ambiente queda restringido para todo programador, siendo solo accesible por los especialistas que administran toda la plataforma tecnológica del cliente.

Si se detectaran fallas del software bajo este ambiente, los ajustes deben ser realizados desde el ambiente de desarrollo, pasando luego al de pruebas y siendo replicado al de capacitación y preproducción, para finalmente pasar al ambiente de producción.

Herramientas para el desarrollo de software

Como se mencionó en el ambiente de desarrollo, existen varias herramientas que nos ayudan en la programación, siendo las principales las siguientes:

Entorno de Desarrollo Integrado (IDE)

cincel photoEl IDE como se lo llama es el software que nos ayudará para la programación en sí, el cual puede ser un entorno altamente automatizado e integrado (como por ejemplo Visual Studio) o por el contrario muy minimalista y tolerante a fallos (como lo es Vim, un editor de texto en modo consola). Esto se ajusta a las preferencias del programador, o en algunos casos a la metodología de desarrollo del equipo de programación.

Un buen IDE es aquel que permite programar de manera cómoda y acelera las tareas repetitivas en todo lo posible. Existen varios dependiendo del lenguaje de programación (por ejemplo PHP, Java, Python, .Net, entre muchos otros) y la plataforma sobre la cual se trabaje (Windows, Linux, Mac).

Gestor de requerimientos

listado photoEs un listado compartido de todas las funcionalidades que se deben realizar, en donde cada ítem tiene un estado y un responsable. En algunas ocasiones también se define un esfuerzo estimado y una fecha máxima de cumplimiento.

Este gestor sirve para organizar el trabajo del equipo de programación, ya que usualmente hay muchas tareas cuyo control es complejo. Ejemplos de este tipo de herramienta es Mantis Bug TrackerRedmine y Trello.

Control de versionamiento

evolution photoEsta herramienta nos ayuda a guardar de manera ordenada y recuperable todos los avances que realice el equipo de programación. Permite almacenar versiones del «código fuente» (instrucciones entendibles por los programadores, realizadas sobre un lenguaje de programación específico, que entiende el computador) a fin de no guardar solamente en la máquina local, con el riesgo de pérdida en caso de que se dañe el equipo. También posibilita regresar a versiones anteriores, y ayuda a fusionar versiones de varios programadores gestionando los conflictos que pudieran ocurrir, es decir, las mismas partes del código fuente en donde un programador lo implementó de una manera y otro programador lo implementó de otra.

En la actualidad se utilizan los sistemas de control de versionamiento que son distribuidos, de entre los cuales el más usado es Git. Independiente de cual es usado, se debe integrar al IDE y al gestor de requerimientos para facilitar su uso y agilitar el desarrollo de software.

Conclusiones

El desarrollo de software es una actividad compleja, que dependiendo de la extensión del alcance puede rivalizar en complejidad a la construcción de una obra civil. Es por ello que se requieren de varios tipos de profesionales, no solo programadores, para que el proceso de desarrollo se dé con éxito a través de los distintos ambientes y fases, con la ayuda de las herramientas que son el control de versiones, el IDE y el gestor de requerimientos.

Si necesita realizar un desarrollo de software y está buscando una empresa especializada, busque siempre que realicen un proceso ordenado de desarrollo, lo cual garantizará la calidad del resultado. Y por cierto, nosotros lo cumplimos, nos puede contactar para obtener resultados garantizados, de calidad y rápidos.

También te puede interesar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *