Introducción
En todo desarrollo de software por más
pequeño que sea, es de mucha ayuda (por no decir necesario) que pase por las
fases de análisis y modelado de requerimientos, para posteriormente pasar a las
fases de al Diseño y codificación, para finalmente someterlo a pruebas y
mantenimiento.
En este trabajo se abordarán estas últimas 4 fases de desarrollo, tratando temas importantes del diseño del software, entre los cuales están los lineamientos para el diseño del sistema, la interfaz y el código. También tocare los principales tipos de pruebas y en qué consiste la etapa de mantenimiento del ciclo de desarrollo de software.
En este trabajo se abordarán estas últimas 4 fases de desarrollo, tratando temas importantes del diseño del software, entre los cuales están los lineamientos para el diseño del sistema, la interfaz y el código. También tocare los principales tipos de pruebas y en qué consiste la etapa de mantenimiento del ciclo de desarrollo de software.
Desarrollo
En el diseño se utilizan
técnicas y principios para esbozar la estructura de los componentes con
suficiente detalle, permitir su interpretación y construcción del software a
desarrollar, basados en las fases anteriores de análisis y requerimientos del software.
Hay diferentes vistas de
cómo se diseña un sistema de software que son:
Diseño de contexto: En donde vamos a representar con diagramas, las
interacciones que se llevan a cabo entre los actores, mediante casos.
Diseño arquitectónico: una vez conociendo el contexto, es necesario
determinar la arquitectura del sistema que cumpla con sus necesidades.
Identificación de la clase
objeto: Identificar
los diferentes objetos para determinar su interacción entre sí.
El diseño de un sistema,
es un proceso iterativo que consiste en una serie de pasos a seguir que
dependen del ciclo de vida que utilicemos y que aplican una serie de técnicas y
principios para su desarrollo las cuales nos permiten definir los aspectos más
importantes que el sistema contendrá, tales como la interfaz, el cómo se
establecerán las conexiones entre los objetos, dividir los procesos en tareas
más simples para facilitar el trabajo de implementación, en fin, una serie de
características que de aplicarse correctamente, puede facilitar en gran medida
el proceso de codificación.
Como se mencionó
anteriormente, se necesita determinar una arquitectura ya que esta sirve de guía en la construcción
del sistema.
Un ejemplo son los
sistemas distribuidos, lo cual viene siendo una red, controlada precisamente
por un sistema de red y están aquellos a los que accedemos por internet
llamados cliente-servidor.
En esta arquitectura, una
aplicación se modela como un conjunto de servicios que proporciona el servidor
que ofrecen al usuario una presentación y se encargan de la gestión de datos,
procesamiento y base de datos. Por ejemplo, un servicio de correo electrónico
tales como Outlook o Gmail, son casos de aplicaciones Cliente-servidor.
Otro aspecto importante en
el diseño, es la interacción hombre-máquina y el diseño de la interfaz, pues es
importante considerar el como el usuario va a interactuar con el sistema; entre
los más comunes tenemos al monitor, ratón y teclado, pero el sistema también
debe de ofrecer una interfaz visual, ya sea gráfica o de línea de comandos, que
permita controlar a la maquina mediante los periféricos mencionados, Pues todo
sistema, para que haga algo, es necesario que previamente un usuario le dé
indicaciones.
Pues bien, una vez
desarrollada la fase de diseño, se procede a la codificación del mismo. Esta
etapa implica desarrollar los programas que integrarán el software para
resolver los requerimientos que el cliente nos solicitó, es decir, después de
haber realizado los algoritmos que satisfacen los requerimientos del sistema,
se procede a convertirlos a instrucciones o código que puedan ser leídas y
ejecutadas por la máquina.
Para poder desarrollar
código es necesario un lenguaje de programación el cual nos va a permitir escribir
instrucciones para indicar a una computadora lo que tiene que hacer.
Hay una gran variedad de
lenguajes disponibles para esta tarea entre los que podemos encontrar Java, C++,
Python, Ruby, html, javascript, siendo estos los más conocidos y demandados.
Es importante considerar
buenas prácticas a la hora de escribir el código, una correcta tabulación, que
sea auto descriptivo, lo cual se logra por medio de un adecuado uso de nombres
para variables, objetos, clases, arreglos y todo elemento que necesite ser
nombrado.
Pues bien, solo nos queda
una última fase antes de que el software sea entregado que es la de pruebas.
Estas tienen el objetivo de demostrar
que un programa hace lo que se espera que haga y descubrir los defectos que el
programa tenga antes de usarlo, las cuales buscan demostrar al desarrollador y
al cliente que el software cumple con los requerimientos, y encontrar
situaciones vulnerables del software para evitar caídas del sistema, cálculos
incorrectos o corrupción de datos.
Es importante considerar
que algunas pruebas se pueden realizar
durante el proceso de diseño y codificación, pues es común cometer algunos
errores correspondientes a sus etapas y es recomendable corregirlos antes de
pasar a la siguiente.
Hay dos conceptos
importantes que es muy común confundir que son la verificación y validación,
pues la primera se busca que software cumpla con la funcionalidad esperada y el
segundo busca que cumpla con las expectativas del cliente, por lo tanto son
pruebas que se realizan por separado.
Anteriormente mencione que
la fase de pruebas vendría siendo la última, y podría decirse que sí, pues
sería la última antes de que el software sea implementado. Posterior a esto de
iniciaría con la fase de mantenimiento, que dependiendo de la aplicación desarrollada
y su nivel de complejidad, esta fase puede, desde no ser necesaria hasta durar
todo el tiempo en el que se la aplicación sea utilizada, pues esta contempla la
reparación de fallas y adición de funcionalidades.
Conclusiones
El diseño y la codificación nos brindan
una amplia gama de herramientas que por separado podrían no significar mucho,
pero con su debida secuenciación nos permitiría comprender el funcionamiento de
cualquier software, desde los procesos más básicos hasta los más complejos,
dándonos los instrumentos necesarios para optimizarlos o replicarlos.
De igual manera, las pruebas y
mantenimiento, son prácticamente obligatorias en cualquier software
desarrollado, pues sin estas, se corre el riesgo de entregar un mal producto,
repercutiendo no solo en el lugar donde se utilizará sino también en la
reputación de quien lo desarrolló.
Ensayo realizado por Salvador Ramírez