martes, 12 de abril de 2016

¿LA COMPUTACIÓN SOLUCIONA TODO?


  La computadora ha sido uno de los factores de cambio más importantes de nuestra sociedad; dicha sociedad admira la facilidad que tienen estas máquinas para resolver diferentes cuestiones que realiza el hombre en su vida diaria.
  Muchas personas creen que la maquina soluciona todo y no están en lo correcto; esto se debe al desconocimiento generalizado que tienen acerca de la misma; no saben que una computadora debe programarse adecuadamente para que realice las cosas que tanto nos maravillan. No conocen los procesos que se deben seguir para lograr que un problema se solucione; no saben que es el ser humano el encargado de programarlo; señalando una serie de ordenes o instrucciones que indican como debe reaccionar la computadora ante las variantes que se le presentan; las maquinas solo reaccionan de acuerdo a las variantes que se le indiquen; si dichas variantes están fuera de sus parámetros no lo comprende y no responden.
  Por lo tanto las computadoras solo solucionan aquellos problemas para los que fueron programados.

    Presentamos algunos de los problemas que aún no han sido solucionados mediante la computación:

  • En primer lugar, se ubica el lento ritmo de adopción del IPv6(Protocolo de Internet versión 6), el código de 128-bit que controla las direcciones de Internet y que está por reemplazar al actual IPv4(Protocolo de Internet versión 4) de 32-bit. Sin ese cambio, el mundo se quedará sin direcciones de internet dentro de los próximos tres años. 
  • El almacenamiento o cómo manejar la seguridad cuando todo el recurso de información de una compañía puede bajarse a un dispositivo que perfectamente entra en el bolsillo de un empleado.   Seguirá habiendo pérdida o robo de información confidencial almacenada en un pendrive o laptop. Un tema igualmente importante es que las compañías deberían decidir qué información descartar para no ahogarse en datos. 
  • Los software de código abierto. Los sistemas operativos como Linux y Mac OSX no son gratuitos a menos que uno cuente con conocimientos técnicos para manejar el código crudo, pero parecen más seguros que, digamos, Windows, el blanco que mayormente eligen quienes escriben códigos maliciosos. 
  • Las patentes del software siguen siendo un gran inconveniente para el sector, ya que son comunes las dificultades para asegurarlas y protegerlas. Para resolver eso, tendría que haber un juicio de prueba en los tribunales. 
  • P versus NP. Es un problema matemático que consiste en decidir si la inclusión entre las clases de complejidad P y NP es estricta, en donde podemos decir que a la hora de realizar algunos cálculos ni los ordenadores más potentes pueden llevarlos a cabo.

miércoles, 6 de abril de 2016

Prototipos


PROTOTIPOS:
 Son una representación limitada de un producto, permite probarlo en situaciones reales o explorar su uso. Un prototipo puede ser cualquier cosa, desde un trozo de papel con sencillos dibujos a un complejo software, esto nos ayuda a comunicar, discutir y definir ideas entre los diseñadores y las partes responsables.


Nos encontramos con:

* Prototipos de baja fidelidad: utilizan materiales distintos al del producto final, son baratos, simples y fáciles de producir.


* Prototipo de alta fidelidad: son aquellos que se parecen al producto final y utiliza sus mismos materiales.

Ejemplo: 



CARACTERÍSTICAS DE LOS PROTOTIPOS

  • Evolucionan a través de un proceso iterativo(repetitivo)
  • Se crean con rapidez
  • Tienen un costo bajo de desarrollo
  • Es una aplicación que funciona
  • Tiene funcionalidad limitada
  • Proporciona mayor conocimiento al usuario ayudando a que aprenda a utilizar el sistema


ALGUNAS HERRAMIENTAS DE PROTOTIPADO

* IPLOTZ: Esta herramienta permite hacer maquetas navegables de sitios web y de aplicaciones. Lo puedes descargar en tu ordenador (Windows/ Mac) o bien puedes usar el servicio vía web.

* JUSTINMIND: Herramienta profesional para prototipado de sitios web, aplicaciones de software y aplicaciones móviles.

* VISIO: Sólo está disponible para equipos que trabajen con Windows. Puedes crear varios tipos de proyectos visuales como diagramas de flujo, diagramas de Venn, mapas y maquetas de sitios web (estándar y móvil), así como prototipos de aplicaciones de software.

* BALSAMIG: Con ella puedes hacer prototipos interactivos de webs. Puedes usar esta herramienta como un servicio web o bien descargarla en tu equipo (funciona con Windows, Mac y Linux).


MODELO DE CONSTRUCCIÓN DE PROTOTIPOS





SPIKES: Sirve para incluir en un sprint tareas que no implican desarrollar una historia de usuario y por tanto no aporta directamente un incremento al producto que se esta desarrollando.

martes, 5 de abril de 2016

Metodologia Tradicional vs Metodologia Agil

 METODOLOGIA TRADICIONAL:
  Esta metodología del desarrollo del software se caracteriza por:
  • basarse en un ciclo de vida de desarrollo del software en cascada ya que organiza los proyectos en etapas que se ejecutan secuencialmente.
    1. Especificación de Requisitos
    2. Análisis
    3. Diseño
    4. Desarrollo
    5. Pruebas
    6. Implantación
    7. Mantenimiento
     
  • ejecutar las etapas una sola vez, lo que se define en cada etapa es inamovible y hasta que no finaliza con éxito una etapa no se pasa a la siguiente. Ejemplo: hasta que no se aprueba el diseño del software no se inicia el desarrollo y construcción del mismo.
  • definir etapas claramente diferenciadas en las que participan distintos profesionales especializados. 


Entre las principales metodologías tradicionales tenemos los ya tan conocidos RUP y MSF entre otros, que centran su atención en llevar una documentación exhaustiva de todo el proyecto y centran su atención en cumplir con un plan de proyecto, definido todo esto, en la fase inicial del desarrollo del proyecto.
 
 Desventajas:

*  Si durante una etapa del ciclo del software nos damos cuenta de que algo está mal, la vuelta a una etapa anterior no está bien definida en la metodología.

*  El usuario no ve el producto hasta el final, no puede ir validando hitos intermedios e ir verificando que lo que se ha construido es lo que necesita.

*  Si mi negocio es muy cambiante, pueden variar las necesidades desde el día que se toman los requisitos hasta el día de inicio la construcción.



METODOLOGIA AGIL:

  Esta metodología se caracteriza por:
  • se basa en un ciclo de vida de desarrollo del software iterativo e incremental. Se repiten las etapas de cada ciclo, se va añadiendo funcionalidad al producto y se comprime al máximo el tiempo de las iteraciones, son iteraciones cortas de semanas. Se hacen entregas parciales del producto para ir validando con el usuario que el producto cumple los requisitos.
  • se solapan las etapas. No siempre dentro de cada iteración tiene que haber etapas en cascada, por ejemplo, la etapa de test se fusiona con la etapa de desarrollo o la del diseño con la etapa de construcción.
  • se cambia la documentación por la interacción cara a cara con el usuario, hay equipos multidisciplinares sin separación de roles (todos pueden diseñar y programar) y se tiende a una gestión de proyecto como equipo auto organizado y colaborativo.
 Entre las principales metodologia agil encontramos:

SCRUM:es un proceso en el que se aplican de manera regular un conjunto de buenas practicas para trabajar colaborativamente, en equipo, y obtener el mejor resultado posible de un proyecto.

Como tambien realizan entregas parciales y regulares del producto final, está especialmente indicado para proyectos en entornos complejos, donde se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos, donde la innovación, la competitividad, la flexibilidad y la productividad son fundamentales.

Programacion Extrema (XP) :esta centrada en potenciar las relaciones interpersonales, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo. XP se basa en realimentación continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los participantes, simplicidad en las soluciones implementadas y coraje para enfrentar los cambios, se define como especialmente adecuada para proyectos con requisitos imprecisos y muy cambiantes, y donde existe un alto riesgo técnico. 

 Desventajas:
  • Existe el riesgo de entrar en un ciclo de entrega de prototipos y nunca cerrar el proyecto.
  • La gestión es más rigurosa y con menos holgura para cometer errores.



 Conclusion:
  Ambas metodologías son buenas, sólo hay que identificar cuál es la que mejor se ajusta a cada proyecto, para utilizar metodología ágil se debe poseer experiencia trabajando con metodologías tradicionales, ya que la experiencia es la que predomina en los momentos cruciales del proyecto, además debe tener la capacidad de ser equipos auto-gestionados, altamente motivados y con gran innovación, se deberían aplicar en proyectos donde exista mucha incertidumbre donde el entorno es volátil, donde los requisitos no se conocen con exactitud, mientras que las metodologías tradicionales es esencial al inicio en un equipo de desarrollo de software, obligan al cliente a tomar las decisiones al inicio del proyecto.
 Ejemplo: 

 * Si el proyecto es de innovación, de investigación o desarrollo de un nuevo producto aún sin definir por completo y se prevén muchos cambios-Opta por Metodología ágil.

*En cambio si tienes muy claro lo que quieres y necesitas- Metodología tradicional.