viernes, 9 de junio de 2017

Ensayo: Diseño, codificación, pruebas y mantenimiento


    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.

    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ó.

En lo personal, a lo largo de la asignatura a medida que avanzaba con las distintas actividades, al mismo tiempo pensaba el cómo podría implementar estos nuevos conocimientos a mi entorno, en especial en mi trabajo, por más simples que parezcan los procesos, es importante documentar debidamente su funcionamiento no solo para uso propio sino para la posteridad.


Ensayo realizado por Salvador Ramírez

No hay comentarios.:

Publicar un comentario