viernes, 11 de abril de 2014

GitHub

INTRODUCCIÓN
GitHub es una plataforma que permite alojar proyectos de desarrollo de software y administrarlos a través del controlador de versiones, o versionador, Git. Hace uso de diversos frameworks para lograr hacer la experiencia de desarrollo más productiva.
Aunque el uso de la plataforma tiene un costo, a decir verdad bastante elevado, se encuentra la opción de utilizar una cuenta gratuita, que aunque  bloquea ciertas características, como por ejemplo la confidencialidad de los códigos almacenados, la publicación de versiones con equipos de trabajo etc.

DESARROLLO
GitHub se ha convertido una opción muy popular, y en los últimos años, muchas empresas pequeñas y medianas basan sus versiones en GitHub. A su vez, GitHub ofrece una serie de herramientas que permite que cada proyecto tenga su propia experiencia de desarrollo particular, como por ejemplo la creación de página web individual por cada proyecto de GitHub y una Wiki (Una página de referencias y consulta sobre un tema específico, en este caso el proyecto) y la opción de compartir gráficos que demuestren el desarrollo del proyecto y seguidores del proyecto en sí.
Git es un software de control de versiones, basado en la eficiencia que con la que se debe de contar en casos de proyectos con un gran número de archivos de código fuente. Git se pensó como un motor de búsqueda de bajo nivel, pero ahora se ha convertido en un muy completo software d control de versiones. Muchos  proyectos importantes usan Git, el sistema operativo Linux, por ejemplo...
Entre las características que hacen de Git y GitHub opciones muy populares se encuentran:
  • ·         Apoyo al desarrollo no lineal o colaborativo, con un uso de historial e cambio.
  • ·         Distribución e la gestión.
  • ·         Múltiples protocolos de comunicación.
  • ·         Almacenamiento en ficheros.

Una de las características principales que GitHub ofrece y una de las razones por las que se ha convertido en una opción que tiene  un uso amplio en las comunidades de desarrollo de software modernas, es el versionamiento por equipo de trabajo, que consiste en un “código maestro” almacenado en el sistema y otras copias sobre las que el equipo de trabajo puede hacer modificaciones de forma segura y colaborativa, ya que uno de los miembros del equipo de trabajo puede “versionar” sus códigos y los demás pueden revisar y comentar los cambios.

CONCLUSION
Las plataformas de software que ayudan a gestionar y administrar un proyecto de forma más eficiente han proliferado y se vuelven cada vez más populares, por lo que es importante tomar en consideración hacer uso de uno de estos, ya que muchas veces, el éxito mismo del desarrollo de un proyecto puede deberse a la correcta secuencia de versiones que se tiene de el mismo.
GitHub y el sistema Git son buenas opciones de versionamiento, con el único inconveniente que son de paga, ya que las características y opciones que ofrecen son muy atractivas y pueden llegar a hacer un proyecto todo un acontecimiento.

FUENTES DE CONSULTA

miércoles, 5 de marzo de 2014

Reingenieria de Software



Introducción
Pensando en cualquier producto tecnológico, nosotros estamos a acostumbrados a verlo diario, se nos es habitual utilizarlo, pero día a día este va dejando de ser una tecnología de ultima generación, envejece y se deteriora. Pensando en elementos de software, es probable que cuando llegue un punto donde sean inutilizables, se tiren y se compren nuevos, en el caso de productos de software, no existe la opción de deséchalos, menos en casos de software hecho a medida o bases de datos funcionando, en todo caso necesita reconstruir el software. A nivel de software, la reingeniería es ejecutada por ingenieros del software.

Desarrollo
La reingeniería de procesos de negocio, tiene formalmente dos definiciones a parir de una abstracta que se publico en 1993:

 Es un modo planificado de establecer secuencias nuevas en los procesos con la pretensión de elevar la eficiencia, la eficacia, la productividad y la efectividad para alcanzar un balance global positivo. (Pressman, 2005)
 Es el rediseño radical y la re concepción fundamental de los procesos de negocios para lograr mejoras dramáticas en medidas de desempeño tales como en costes, calidad, servicio y rapidez. (Pressman, 2005)

La reingeniería requiere tiempo, conlleva un costo enorme y absorbe recursos que de otro modo podrían emplearse en preocupaciones más inmediatas, esta es la razón por la cual toda organización necesita una estrategia.
El modelo para reconstrucción mediante el proceso de reingeniería es el siguiente:

 
Cada etapa del proceso se especifica a continuación:
·         Análisis de inventario: Es la verificación de los elementos existentes.
·         Reestructuración de documentos: Muchas veces esta etapa se suprime ya que hay una documentación inicial pobre y es muy costoso y tardado rehacerla, siendo que el sistema funciona muy bien sin ella.
·         Ingeniera inversa: Es el proceso de restructuración del diseño y adaptación a nuevas funcionalidades.
·         Reestructuración de código: Es la etapa de recodificación para adaptar el sistema y sus componentes lógicos a los nuevos procesos.
·    Reestructuración de datos: Referido a los gestores de base de datos, el rediseño de estas mismas y actualizaciones en versiones etc.
·    Ingeniería directa: Recupera diseño y funcionalidad existentes y pretende utilizarlas para aumentar la funcionalidad o  estabilidad del sistema reconstruido.

Llegado a este punto podemos hablar de la reestructuración, que modifica el código fuente y los datos con intención de adecuar al software a futuros cambios. Esta solo se produce cuando las bases de la aplicación son lo suficientemente solidas, aun cuando los cambios necesarios sean mínimos, y cumple con la condición de que aun existen partes del software que funcionan realmente.
Cabe destacar que todos los procesos de reingeniería ocupan más del 60% de inversión inicial, con el fin de rescatar sistemas que se han ido desfavoreciendo con el tiempo.

Conclusión
La reingeniería de software y los procesos de reconstrucción, pueden ser vistos como una analogía al reconstruir una casa: Primero observamos en qué condiciones actuales se encuentra la casa, posteriormente enlistamos los cambios que haremos, buscamos las herramientas y materiales que vayamos a usar y posteriormente inicia el proceso de remodelación, que puede ser al cambio de una pared, de espacios etc., normalmente eso lo hace un equipo de ingenieros (al igual quela remodelación de software) y también el costo es proporcional , muchas veces es más del 50% del costo total.




Bibliografía

Fouruzan, B. A. (2007). Desarrollo de software y UML. McGraw-Hill.
Pressman, R. (2005). Ingeniería de Software. Pearson.
Sommerville, I. (2005). Ingenieria de Software (Séptima ed.). Ciudad de México: Pearson.
Weitzenfield, A. (2004). Ingenieria de Software orientada a objetos con UML, Java e internet. Thomson.