viernes, 17 de noviembre de 2017

CUADRO COMPARATIVO ENTRE METODOLOGIAS

SCRUM, XP & RUP


En el presente blog se mostrara información sobre las 3 metodologías mas importantes para la elaboración de software: SCRUM, XP y RUP.


martes, 31 de octubre de 2017

CICLOS DE VIDA (SISTEMAS DE INFORMACION)

1.- ¿En qué consiste un ciclo de vida de un sistema?

El ciclo de vida de un sistema de información consiste en la organización y la realización de un conjunto de tareas y actividades diversas que abarcan desde el nacimiento del reconocimiento de su necesidad hasta que estos sistemas se convierten en obsoletos y son sustituidos por otros.
El enfoque más aceptado es el ciclo de vida en cascada, compuesto por etapas y cada una tiene un determinado resultado (documentos técnicos, programas de computadoras y otras informaciones) que alimentan a la etapa siguiente y sin el cual no es posible que se comience.

2.- ¿Cuáles son los enfoques de desarrollo de software?


  • Modelo en Cascada: Es un proceso secuencial, fácil de desarrollo en el que los pasos de desarrollo son vistos hacia abajo (como en una cascada de agua) a través de las fases de análisis de las necesidades, el diseño, implantación, pruebas (validación), la integración, y mantenimiento. 
  • Prototipado: El prototipado permite desarrollar modelos de aplicaciones de software que permiten ver la funcionalidad básica de la misma, sin necesariamente incluir toda la lógica o características del modelo terminado. El prototipado permite al cliente evaluar en forma temprana el producto, e interactuar con los diseñadores y desarrolladores para saber si se está cumpliendo con las expectativas y las funcionalidades acordadas. 



  • Incremental: Provee una estrategia para controlar la complejidad y los riesgos, desarrollando una parte del producto software reservando el resto de aspectos para el futuro.



  • Espiral: Las actividades de este modelo se conforman en una espiral, en la que cada bucle o iteración representa un conjunto de actividades. Las actividades no están fijadas a ninguna prioridad, sino que las siguientes se eligen en función del análisis de riesgo, comenzando por el bucle interior.




  • RAD: El desarrollo rápido de aplicaciones o RAD (acrónimo en inglés de rapid application development) es un proceso de desarrollo de software, desarrollado inicialmente por James Martin en 1980. El método comprende el desarrollo interactivo, la construcción de prototipos y el uso de utilidades CASE (ingeniería asistida por computadora). Tradicionalmente, el desarrollo rápido de aplicaciones tiende a englobar también la usabilidad, utilidad y la rapidez de ejecución.


martes, 3 de octubre de 2017

METODOLOGÍA AGIL

METODOLOGÍAS ÁGILES
1.- ¿Qué es una metodología ágil?
Envuelve un enfoque para la forma de decisiones en los proyectos de software, que se refiere a métodos de ingeniería del software basados en el desarrollo iterativo e incremental, donde los requisitos y soluciones evolución con el tiempo según la necesidad del proyecto.
Cada iteración del ciclo de vida incluye:
  1. ·         Planificación.
  2. ·         Análisis de requisitos.
  3. ·         Diseño.
  4. ·         Codificación.
  5. ·         Pruebas.
  6. ·         Documentación.
Los métodos ágiles enfatizan las comunicaciones cara a cara en vez de la documentación. La mayoría de los equipos ágiles se encuentran en una simple oficina abierta, a veces llamadas “plataformas de lanzamiento”, generalmente los métodos ágiles son criticados y tratados como “indisciplinados” por la falta de documentación técnica.

2.- Línea del tiempo sobre las metodologías ágiles:
3.- ¿Cuáles son los tipos de metodologías que existen?
3.1 Scrum
·                                          Características:
1.  Aporta una estrategia de desarrollo incremental, en lugar de la planificación y ejecución completa del producto
2.  Tiene calidad del resultado, se basa principalmente en el conocimiento innato de las personas en equipos auto organizados, antes que en la calidad de procesos empleados.
3.      El pilar más importante de Scrum son son las revisiones. Su importancia reside en que las reuniones son la base para lograr transparencia y comunicación.
·                                         Utilidad:
                Prioriza el trabajo en función del valor que tenga para el negocio, maximizando la utilidad de lo                      que se construye y el retorno de la inversión.


3.2 Programación Extrema (XP)
·         Características:
1.   Se valora al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas. La gente es el principal factor de éxito de un proyecto software.
2.      Desarrollar software que funciona más que conseguir una buena documentación.
3.      Metodología creada a base de prueba y error.
4.      Énfasis en el desarrollo del software.
5.      No introduce funcionalides antes de que sean necesarias.
6.      El cliente o el usuario se convierte en miembro del mismo equipo.
7.      Empieza en pequeño, añade funcionalidad con retroalimentación continua.
·         Utilidad:
Su utilidad es medida con cuatro valores:
1.  Simplicidad: La simplicidad consiste en desarrollar solo el sistema que realmente se necesita. Implica resolver en cada momento solo las necesidades actuales.
2. Comunicación: XP pones en comunicación directa y continua a clientes y desarrolladores. De esta forma ve el avance día a día, y es posible ajustar la agencia y las funcionalides de forma consecuente.
3. Feedback: Una metodología basada en el desarrollo incremental iterativo de pequeñas partes, con entregas y pruebas frecuentes y continuas.
4. Coraje Valentía: Implica saber tomar decisiones difíciles, reparar un error cuando se detecta.
3.3 Kanban
·                               Características:
1.    Calidad Garantizada: Las cosas tienen que salir bien a la primera. Se tarda más en arreglar algo que sale mal, además de consumir más recursos, que cuando sale bien a la primera. Por ello, lo más importante no es que se haga rápido, sino que se haga bien.
2.  Reducción del desperdicio: No se necesita hacer nada extra o superficial, solamente lo necesario para que salga bien. De este modo se optimizan recursos.
3.    Mejora Continua: Aprovechando la realización de tareas, se busca mejorar los procesos, a través de un sistema de mejora continua.
4.    Flexibilidad: Se dispone de capacidad de respuesta ante tareas no previstas, de forma que existía una “cola de espera” de tareas en las que ir priorizando su realización en función de las necesidades de cada momento y de la urgencia de cada una de ellas
   Utilidad:
  La utilidad de kanban se manifiesta controlando de modo armónico la fabricación de los productos               necesarios en la cantidad y tiempo necesarios en cada uno de los procesos que tienen lugar tanto en el           interior de la fábrica como entre distintas empresas.

4.- Recomendación de que metodología ágil usar:
Mi opinión es que hay que saber elegir la metodología adecuada según tu modelo de desarrollo y las necesidades que este tenga, no hay una mejor que otra, simplemente hay una más apropiada que otra, para eso tienes que realizar una autoevaluación del proyecto que quieras realizar, realizar cuestionarios o tests que te ayuden a elegir una apropiada metodología ágil.
La decisión de optar por una u otra metodología dependerá de las características del proyecto, las cuales pueden variar en función de varios factores: el número de integrantes en el proyecto, la administración de los roles, los tipos de liderazgo, las expectativas del cliente, entre otros.

martes, 26 de septiembre de 2017

GENERACIONES


GENERACIONES DE METODOLOGÍA DE DESARROLLO DE SOFTWARE

1.- Desarrollo Convencional (sin metodología):
1.1.- Características:
ØEn los años 50 no existía metodologías de desarrollo. El desarrollo estaba a cargo de programadores.
ØSe vio la importancia del análisis y diseño en el desarrollo de sistemas (aparecen los analistas programadores y analistas de sistemas).
ØNo hay forma de controlar lo que está sucediendo en el proyecto.
Ø Los cambios organizativos afectan negativamente al proceso de desarrollo.
Ø Los resultados finales son impredecibles.
1.2.- Modelo Jackson: Sus características son:
Ø Se basa en el principio de que la base inicial del diseño del programa son los datos del problema y no los requisitos funcionales exigidos.
Ø  Permite una mayor objetividad.
Ø Partir de una buena especificación del problema que queremos resolver: datos de entrada, datos de salida y algoritmo aplicables.

2.- Desarrollo de programación estructurada: El desarrollo estructurado se basa en la estructuración y descomposición funcional de problemas en unidades más pequeñas interrelacionadas entre sí. Representan los procesos, flujos y estructuras de datos, de una manera jerárquica y ven el sistema como entradas – proceso- salidas.
2.1 Características:
Ø  Se maneja como proyecto.
Ø  Gran volumen de datos y transacciones.
Ø  Abarca varias áreas organizativas de la empresa
Ø  Tiempo de desarrollo largo.
Ø  Requiere que se cumplan todas las etapas, para poder cumplir las siguientes (progresión lineal y secuencial de una fase a la otra).



3.- Programación orientada a objetos: La programación orientada a objetos (POO, u OOP según sus siglas en inglés) es un paradigma de programación que viene a innovar la forma de obtener resultados. Los objetos manipulan los datos de entrada para la obtención de datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.
3.1 Características:
Ø  Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar "cómo" se implementan estas características.
Ø  Encapsulamiento: Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión (diseño estructurado) de los componentes del sistema.
Ø  Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando.
Ø  Herencia: Las clases no se encuentran aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento, permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes.
Ø  Modularidad: Se denomina "modularidad" a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes.
Ø  Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una "interfaz" a otros objetos que específica cómo pueden interactuar con los objetos de la clase. 

Ø  Recolección de basura: La recolección de basura (garbage collection) es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. 


domingo, 17 de septiembre de 2017

CRITICA SOBRE LA EVOLUCIÓN DE LA METODOLOGÍA DEL DESARROLLO DE SOFTWARE

CRITICA


Según el estudio de la evolución desde su primera etapa hasta la quinta etapa (etapa final) se puede determinar que no existe una metodología universal para hacer frente con éxito a cualquier proyecto de desarrollo de software. Cualquier metodología debe ser adaptada al contexto del proyecto como: recursos técnicos y humano, tiempo de desarrollo, tipo de sistema, etc. Esto quiere decir que cualquier tipo de metodología que se use siempre tendrá desventajas puesto que el tema de las metodologías es complejo y el propósito es que dependiendo de lo que se requiera en el desarrollo de software se utilizara una metodología.

¿Por qué no desarrollar una metodología universal? Sabemos que es difícil por los requerimientos de las industrias de software. La industria de software requiere, la adopción de una metodología de desarrollo en sus inicios, ya que a medida que crece la experiencia se va adoptando mejoras en el entorno de las metodologías de desarrollo de software, a medida que va pasando el tiempo van surgiendo nuevas metodología de software. Debería simplemente existir un tipo de metodología que se vaya actualizando para realizar el desarrollo de software, a medida que pasa el tiempo perfeccionarlo en todos los sentidos llegando a no tener desventajas de dicha metodología y pueda ser de gran ayuda para cualquier tipo de proyecto. En conclusión una metodología que el usuario pueda usar y modificar a su antojo dependiendo de lo que necesite, en este caso la metodología debería adaptarse.

Lo que si estaría de acuerdo es que no desaparezcan los modelos que usa la Metodología de desarrollo de software como por ejemplo: Modelo Cascada, Modelo espiral, Modelo incremental, etc. Esto forma parte del desarrollo ya que no todos los usuarios tenemos la misma mentalidad de realizar un software.