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

jueves, 19 de noviembre de 2015

El lado oscuro del universo

Salvador Ramírez

La teoría del Big Bang es el modelo cosmológico predominante hoy en día el cual habla que el Universo sigue expandiéndose de forma acelerada, pero ¿Qué está causando esa aceleración?

En 1998 los equipos de Brian Schmidt y Saul Perlmutter descubrieron que el Universo se encuentra en una expansión acelerada, pero surgía la incógnita; ¿Que lo acelera?

Para cualquier aceleración es necesaria cierta energía, el problema es que no se ha logrado ver esta energía capaz de expandir al universo, por lo que los cosmólogos la han bautizado como “energía oscura” la cual es necesaria para que el modelo inflacionario sea coherente.

Esta energía oscura es una forma de energía que estaría presente en todo el espacio ejerciendo una presión que tiende a acelerar la expansión del universo pero, ¿Qué es esta energía oscura?; hay dos posibilidades principales propuestas que son:

Constante cosmológica: Esta constante es simplemente como una “propiedad del mismo espacio” la cual no cambia con la expansión del universo y no interactúa con la materia.

Quintaesencia: Se propone que este sea una especie de campo parecido al eléctrico o magnético pero en lugar de producir una atracción gravitacional, esta produce una repulsión gravitacional, esta si podría interactuar con la materia y cambiar su valor.

Tomando en cuenta la energía oscura, nuestro universo tiene unos 13.700 millones de años de antigüedad y dependiendo de la naturaleza de esta energía en algunos modelos se estima que el fin del Universo seria dentro de 20 000 millones de años, para ese entonces la tierra ya no existiría.

Reflexión
Elegí este tema ya que siempre me ha parecido interesante el saber que hay más allá de nuestra vista hacia el espacio, como es que se formó el universo, su funcionamiento y su destino.

Para escribir este texto partí del documento seleccionado y otros de la Wikipedia (Cosmología y energía oscura)

Referencias:
De Régules, S. (2003). El lado oscuro del universo. ¿Cómo ves?, N°. 58, (Pp. 10-15). México: UNAM. Recuperado el 13/04/15, de: http://www.comoves.unam.mx/numeros/articulo/58/el-lado-oscuro-del-universo
Cosmología. Consultado 17/11/2015, de: https://es.wikipedia.org/wiki/Cosmolog%C3%ADa
Energía oscura. Consultado 17/11/2015, de: https://es.wikipedia.org/wiki/Energ%C3%ADa_oscura

lunes, 9 de noviembre de 2015

Mi agenda de actividades


Mis distractores:

Trabajo:
Suelo estudiar y realizar mis actividades cuando tengo poco trabajo, pero en caso de no tener el tiempo, lo puedo compensar tomando  un poco del horario de los periodos de descanso y convivencia con mi familia (áreas verdes), también de ser necesario, tomar un poco de tiempo del horario para dormir.

Videojuegos:
          En el caso de los videojuegos, no les daría prioridad por encima de mis 
          responsabilidades académicas, postergándolos de ser necesario.

jueves, 5 de noviembre de 2015

Mapa Conceptual

Mapa conceptual elaborado en base a la lectura Aprendizaje autónomo: eje articulador de la educación virtual, de Sierra Pérez, J. H. (2005) para la Actividad 1 del eje 3 del Curso propedéutico para el Aprendizaje Autogestivo en un Ambiente Virtual.


Fuente: Aprendizaje autónomo: eje articulador de la educación virtual, de Sierra Pérez, J. H. (2005)

martes, 20 de octubre de 2015

¿Qué es ser un estudiante en línea?

El uso de las Tecnologías de la Información y la Comunicación han venido a transformar la manera en como aprendemos. Sin embargo, esta modalidad presenta nuevos retos y desafíos para aquel que aspire a convertirse en un estudiante en línea.

En un entorno virtual no hay lugar para un aprendizaje pasivo y dirigido, sino que, a partir de aquí tendrás que convertirte en un agente activo de tu aprendizaje. La Enseñanza colaborativa basada en Internet, propicia un cambio sustancial, los estudiantes mantienen pautas de funcionamiento fundamentadas en la autonomía y la madurez, mientras que el alumno tradicional es dependiente de la acción e instrucciones docentes.

Las características que debes poseer como estudiante son; una actitud proactiva, compromiso con el propio aprendizaje, conciencia de las actitudes, destrezas, habilidades y estrategias propias, actitud para trabajar en entornos colaborativos, metas propias, aprendizaje autónomo y autogestión. En cuanto a retos; dejar atrás el aprendizaje dirigido, evita memorizar y repetir el conocimiento, dejar atrás los entornos competitivos, gestión y administración del tiempo y destrezas comunicativas.

El desafío más grande será convertirte en todo un alfabeta digital. Hay quienes creen que estudiar en línea es difícil. Sin embargo, conforme vayas avanzando, te iras dando cuenta que esto es totalmente falso, basta con aplicar estrategias que te permitan autogestionar tu aprendizaje, resulta fundamental crear un compromiso contigo y con tu aprendizaje.


Resumen realizado por Salvador Ramirez
Fuente: ¿Qué es ser un estudiante en línea? de Millán Martínez, S. (2014)

lunes, 19 de octubre de 2015

Objetivo de este Blog

Este Blog fue creado para publicar todas las actividades requeridas que realizare en la UnADM (Universidad Abierta y a Distancia de México) durante el Curso propedéutico para el Aprendizaje Autogestivo en un Ambiente Virtual y probablemente durante mis estudios en la Carrera de Ingeniería en Desarrollo de Software (siempre y cuando quede seleccionado).