lunes, 14 de abril de 2014

Github

Introducción:
Cuando hablamos de controlar versiones, existen diversas maneras de lograr este objetivo, una de ellas es el uso de programas que nos faciliten este trabajo.
Los controladores de versiones  son un grupo de aplicaciones originalmente ideadas para gestionar ágilmente los cambios en el código fuente de los programas y poder revertirlos, cuyo ámbito ha sido ampliado pasando del concepto Control de versiones al de Software Configuration Management, en el que se engloban todas las actividades que pueden realizarse por un equipo sobre un gran proyecto software u otra actividad que genere ficheros digitales.

Desarrollo :
github es una forja para alojar proyectos utilizando el sistema de control de versiones Git. Utiliza el framework Ruby on Rails porGitHub, Inc.  anteriormente conocida como Logical Awesome.
El código se almacena de forma pública, aunque también se puede hacer de forma privada, creando una cuenta de pago
Las características que podemos mencionar  sobre github son:

  • Wiki para cada proyecto:
  • Página web para cada proyecto:
  • Gráfico para ver cómo los desarrolladores trabajan en sus repositorios y bifurcaciones del proyecto:
  • Funcionalidades como si se tratase de una red social:
Github es totalmente gratuito para alojar código open source, siendo estos repositorios de visibilidad pública forzosamente. Sin embargo, su plan de precios para los repositorios privados y con colaboradores externos es más que razonable, abarcando desde 5 repositorios privados y hasta un colaborador por 7 dólares al mes, hasta 125 repositorios privados y equipos de personas ilimitados por 200 dólares al mes.

Conclusión:
los controladores de versiones son una buena opción para mantener el control de las versiones de una forma más fácil que si lo hiciese una sola persona,
github es una buena opción por que además de ofrecer un servicio gratuito muy completo, tiene más opciones de pago, para quienes requieran más opciones.

Bibliografía:
Github. (s.f.). Obtenido de https://github.com/features
Paramio, C. (29 de marzo de 2011). Genbeta: dev . Obtenido de Control de versiones. Desarrollo en equipo (I): http://www.genbetadev.com/sistemas-de-control-de-versiones/kit-basico-de-herramientas-para-desarrollar-en-equipo-i-control-de-versiones
Wanstrath, C. (s.f.). CrunchBase Picture. Obtenido de http://www.crunchbase.com/company/github

domingo, 2 de marzo de 2014

Reingeniería De Software

Reingeniería De Software


La reingeniería de software e refiere a la implementación de los sistemas heredados para hacerlo más mantenerles (Pressman, 2005).
Antes de adentraron en lo que es la reingeniería de software como tal  tenemos que haber que son los sistema heredados,
Un sistema heredado es aquel que ha quedado anticuado pero continúa siendo utilizado por el usuario y no se quiere o no se puede reemplazar o actualizar de forma sencilla.

Reingeniería no quiere decir hacer un nuevo software, si no que la funcionalidad sigue siendo la misma así como la arquitectura, antes habíamos dicho que la producción de un software tiene un coste significativo, pero el mantenimiento era el que realmente costaba más, sin embargo pensemos que  un banco no puede cambiar constantemente su sistema, porque es bastante arriesgado, y podrían perderse datos muy importantes, por ello,  existe la reingeniería de software.

El hecho de que no se vaya a hacer un nuevo software no quiere decir que no tenga un modelo a seguir, o que se haga de manera desordenada, de hecho  se utiliza el desarrollo convencional denominado, ingeniería hacia adelante, en donde el primer paso sería especificación del sistema, pero dado que lo que vamos a realizar no es  un software nuevo, empezamos con Sistema de Software existente, dentro de los pasos a seguir para llegar al fin de este proceso se encuentran:

· Traducción de Código Fuente: esto es, pasar  de un lenguaje de programación, a otro, esto solo es necesario cuando el lenguaje en el que se ha programado, está obsoleto, es decir, ya no hay programadores, dándole mantenimiento a este lenguaje, sin embargo, no siempre es necesario.

·  Ingeniería Inversa: A veces los programas han perdido parte de su documentación, a lo que se le denomina ingeniería inversa es analizar el programa, y en base a lo analizado, crear la documentación correspondiente.

·  Mejora de la Estructura de los programas: la manera de programar de cada persona, puede variar mucho, pero cuando la diferencia es mucha, es necesario  hacer que nuestro código sea más entendible, a esto se le llama mejora,  se trata de hacer más entendible el código para su futuro mantenimiento.

· Popularización de los programas: En base a nuestro análisis se dividen en módulos y se eliminan lo que sean repetidos.

· Reingeniería de Datos: hacer un a análisis de los datos  y actualizarlos

Conclusión:

A veces, es necesario saber  identificó cuando se tiene que  hacer un nuevo software, y cuando se puede “reparar“ aun, ya que si decimos que  la mayor parte del negocio es el dinero,  el hecho de tomar una mala decisión, puede causar grandes gastos significativos para una empresa.


Bibliografía

Pressman, R. (2005). Ingeniería del Software, un enfoque práctico. McGraw-Hill.
Sicilia, M.-A. (s.f.). connexions. Obtenido de ¿Qué es Reingeniería del Software?: http://cnx.org/content/m17438/latest/
Software, A. (s.f.). Arbutus Software. Obtenido de SISTEMAS HEREDADOS: http://www.arbutuslatino.com/legacy-systems.htm
Sommerville, I. (s.f.). Ingeniería del software. Pearson.

domingo, 16 de febrero de 2014

Leyes de Lehman y mantenimiento (Ejemplos)

Ejemplos de Leyes de Lehman

  • Cambio Continuo

  • Complejidad Creciente:



  • Evolución Prolongada del sistema:
Justificación:
Este es un claro ejemplo de evolución prolongada del sistema, ya que si messerger despareció, es por que ya no era competitivo, y además, ya no habían  salido nuevas versiones después de la versión 2010, ya que microsoft ya se había dado por vencido ante la competencia existente con facebook.
  • Conservación de la Familiaridad:

Justificación:
Esta noticia corresponde a la ley de la  conservación de la familiaridad ya que en la noticia Windows XP desaparece y esto significa que el tiempo de vida de un sistema termina y que este ya tiene un cambio desde hace como un año que en su caso es Windows 8. Además de invitar a los usuarios a  actualizarse con el último sistema operativo de Windows como lo es Windows 8. (Kathia, 2014)


Fuentes Bibliográficas:

Barranquer, J. A. (14 de 02 de 2014). Semana. Obtenido de Semana: http://www.semana.com/tecnologia/novedades/articulo/windows-xp-desaparece-es-hora-de-actualizar-su-equipo/377110-3
Etnan, L. T. (16 de 02 de 2014).
Eva, F. L. (16 de 02 de 2014).
http://www.jornada.unam.mx/ultimas/2014/02/16/el-pan-saldra-fortalecido-de-sus-elecciones-internas-madero-5601.html. (2014). Obtenido de http://www.jornada.unam.mx/ultimas/2014/02/16/el-pan-saldra-fortalecido-de-sus-elecciones-internas-madero-5601.html.
Kathia, R. G. (14 de 02 de 2014).
NotiMex. (16 de 02 de 2014). El universal. Obtenido de El universal: http://www.eluniversal.com.mx/finanzas-cartera/2014/tlcan-hacienda-988116.html
Pilar, G. M. (16 de 02 de 2014).
PROTALINSKI, E. (09 de 01 de 2013). Microsoft. Obtenido de Microsoft: http://thenextweb.com/microsoft/2013/01/09/microsoft-emails-messenger-users-to-let-them-know-the-service-is-retiring-on-march-15-and-to-upgrade-to-skype/#!v4Xug
wikipedia. (s.f.). Obtenido de wikipedia: http://es.wikipedia.org/wiki/Leyes_de_Lehman_de_la_evoluci%C3%B3n_del_software


_____________________________________________________________________________

Mantenimiento

Preventivo:
Un ejemplo de este mantenimiento son las vacunas, se utilizan para prevenir enfermedades.

Correctivo:
Cuando alguna red social nueva, se publica, primero, se publica para unos pocos, e incluso si es de paga, por algunos días no cobra, hasta que ya se a fijado bien.

Adaptativo
Los lectores de memoria, para que la computadora pueda leer diferentes tarjetas.

Perfectivo
Los programas que ocupan mucho espacio, pero que son buenos, como netbeans.

domingo, 9 de febrero de 2014

Software

Soporte de software

Para empezar a hablar sobre nuestro tema, primero debemos tener la referencia sobre lo que  es un soporte en este contexto, un soporte es un rango de servicios para ayudar a resolver los problemas que pueda tener el usuario al usar dicho software.
Tipos de soporte
Podemos clasificar en dos principales rangos y varios subrangos:
Soporte Técnico Presencial: Se proporciona al software en el lugar donde se encuentre el equipo de cómputo, el técnico o encargado, da solución directamente.
Soporte Técnico A Distancia: se proporciona a largas distancias un ejemplo son las videollamadas, la asistencia telefónica o alguna página o correo electrónico.
Niveles de soporte:
Cuando el soporte está debidamente organizado se pueden dar varios niveles donde el nivel 1 hace referencia al contacto directo con el usuario y las situaciones comunes o sencillas a partir del nivel 2 empieza la comunicación

Nivel 1:
Los técnicos de soporte de este nivel suelen ser técnicos generales quienes tienen amplios (pero no necesariamente profundos), conocimientos de los tipos de problemas que se les pueden presentar a los usuarios finales

Nivel 2:
proporciona soporte en áreas especializadas tales como redes, sistemas operativos o aplicaciones específicas de software.



Nivel 3
Los técnicos asignados a ese nivel son expertos son también responsables de ayudar al personal de nivel 1 y 2, también para hacer investigaciones y desarrollar soluciones a nuevos problemas

Nivel 4
Cuenta con los conocimientos del nivel 1, 2 y 3 y tiene una amplia experiencia en la resolución de problemas por lo regular es responsable del área de sistemas de una corporación y tiene por lo menos 2 certificantes en el área. 

Mantenimiento de software

El estándar IEEE 1219 define el Mantenimiento del Software como “la modificación de un producto software después de haber sido entregado a los usuarios o clientes con el fin de corregir defectos, mejorar el rendimiento u otros atributos, o adaptarlo a un cambio en el entorno” (Párraga)
Con este concepto en mente, entendemos por mantenimiento de software a los cambios que se dan después de que el software fue “concluido”.
Ahora también se han clasificado 4 tipos de mantenimiento:

Mantenimiento Adaptativo
Se refiere a los cambios que sufre el software después de que se ha puesto en producción, su objetivo es modificarlo debido a cambios en el entorno o en el hadware o en el software; debido a la "competitividad tecnológica", es bastante común este mantenimiento.

Mantenimiento Correctivo
el mantenimiento correctivo, tiene como finalidad, localizar y eliminar  fallos en el software descubiertos después de su puesta en producción, (los fallos, surgen cuando el comportamiento del software no es el esperado).        
  
Mantenimiento Perfectivo
El mantenimiento perfectivo se refiere a la modificación de un producto de software, también después de su puesta en producción, se modifica por ejemplo para mejorar el rendimiento.

Mantenimiento Preventivo
En este tipo de mantenimiento se lleva a cabo la modificación de los comentarios en el código, en realidad no se modifican las especificaciones del producto, esto con el fin de  facilitar futuras tareas de mantenimiento

Ubicación en el ciclo de vida

El mantenimiento de un software se encuentra ubicado al final del ciclo de vida, mientras que el soporte se encuentra “fuera” del ciclo de vida, esto es debido a que muchas veces se toma como una parte adicional a lo que fue la creación del software.

Preguntas

¿Cuáles son los Factores de que elevan el costo del mantenimiento?

Estabilidad del equipo
Se decida demasiado esfuerzo durante el proceso de mantenimiento en comprender el sistema ates de implementar cambios sobre el si no es el mismo que lo desarrolló.

Responsabilidad Contractual
El contrato para mantener un sistema está separado del contrato para desarrollar el sistema.

Habilidades del personal
A menudo el personal de mantenimiento no tiene experiencia y no conoce el sistema, además de que se tiene la idea de que este trabajo requiere menos habilidades que las  de desarrollo.

Edad y estructura del programa
Los programas tienden al paso el tiempo a que su estructura se degrade.

¿Qué se debe considerar en el entorno para realizar cambios en el sistema?

Se deben considerar aspectos como que tpo de cambios son los que se van a realizar y en que parte del proyecto se ubica en ese momento, así como si habrá alggún cambio en los requerimientos, tanto así como los costos y el tiempo que ese cambio producirá.

Conclusión

El mantenimiento de software y la corrección de fallos es importante, para que el software no se vuelva obsoleto, hay que tomar en cuenta los costos de esta producción, ganancias y perdidas



Referencias

chile, e. (s.f.). PLANIFICACIÓN DEL HELP DESK DE SU ESCUELA. Obtenido de rpi: http://rpi.educarchile.cl/Soporte%20Tcnico/HelpDesk_CH01-esp.pdf
Párraga, J. A. (s.f.). PLANIFICACIÓN Y GESTIÓN DE SISTEMAS DE . Obtenido de ESTÁNDAR IEEE 1219 DE MANTENIMIENTO DEL : http://alarcos.esi.uclm.es/per/fruiz/curs/mso/comple/IEEE1219.pdf