viernes, 29 de mayo de 2015

UML

INTRODUCCION
El seudónimo UML proviene del lenguaje de modelado unificado o por sus siglas en inglés (Unified Modeling Language), es un estándar para crear diseños de software.
Dicho de otra manera es la herramienta que usan los desarrolladores para que las personas a quien se le presenta dicho diseño pueda entender lo que se va a desarrollar, es como el plano que un arquitecto crea antes de comenzar con el proyecto, y de esta manera el cliente entiende y opina de lo que se va a realizar al respecto. Como detalla anteriormente es un lenguaje creado para que desarrolladores y usuarios se comuniquen en un mismo idioma, por decirlo de cierta manera.
UML es un lenguaje para describir modelos. Básicamente, un modelo es una simplificación de la realidad que construimos para comprender mejor el sistema que queremos desarrollar. Un modelo proporciona los “planos” de un sistema, incluyendo tanto los que ofrecen una visión global del sistema como los más detallados de alguna de sus partes.
MARCO TEÓRICO
Como se mencionó anteriormente UML utiliza diversos diagramas para el uso de modelado del software que se detallaran en una breve descripción, a continuación:
DIAGRAMAS DE CLASE
Para modelar clases, incluidos sus atributos, operaciones, relaciones y asociaciones con otras clases, el UML proporciona un diagrama de clase, que aporta una visión estática o de estructura de un sistema, sin mostrar la naturaleza dinámica de las comunicaciones entre los objetos de las clases.
Esto permite de manera gráfica las funciones que desempeña cada uno delos componente, además que el usuario vea el flujo de información y el medio de transmisión de la misma, para entender de mejor manera al software.
DIAGRAMAS DE IMPLEMENTACIÓN
Es aquel que se enfoca en la estructura de un sistema de software y al mismo tiempo muestra de manera sencilla, la forma de desempeño del hardware a través del software a desarrollarse.
Suponga, por ejemplo, que desarrolla un paquete de renderizado de gráficos basado en web. Los usuarios de su paquete usarán su navegador web para ir a su sitio web e ingresar la información que se va a renderizar. Su sitio web renderizaría una imagen gráfica de acuerdo con la especificación del usuario y la enviaría de vuelta al usuario. Puesto que las gráficas renderizadas pueden ser computacionalmente costosas, usted decide mover el renderizado afuera del servidor web y hacia una plataforma separada. Por tanto, habrá tres dispositivos de hardware involucrados en su sistema: el cliente web (la computadora que corre un navegador del usuario), la computadora que alberga el servidor web y la computadora que alberga el motor de renderizado.
CONCLUSIÓN.
El lenguaje UML aporta de manera significativa, al modelado de un proyecto de software, debido a sus múltiples atributos, este no solo ayuda al desarrollador a crear de mejor manera, sino que también mejora la comunicación entre ambas partes de la negociación, generando que disminuya de manera importante la probabilidad de un software que no satisfaga las necesidades del cliente.
El cliente conlleva un roll muy importante a la hora de evaluar si lo que el desarrollador a planificado hacer, se encuentra de manera adecuada como se mencionó anteriormente, además se puede reducir el riesgo de que el desarrollador se demore más de lo estimado por causas de un programa o software no satisfactorio.
BIBLIOGRAFÍA.
Pressman, R. Ingeniería de software: Un enfoque práctico. 7 ed. México. Mc Graw Hill. p 805.
Gutiérrez, D. 2011. Métodos de Desarrollo de Software. (En línea). VE. Consultado, 19 de abril de 2015. Formato PDF. Disponible en: http://www.codecompiling.net/files/slides/IS_clase_13_metodos_y_procesos.pdf

lunes, 25 de mayo de 2015

DESARROLLO AGIL

INTRODUCCION
Los ingenieros de software desde mucho tiempo antes se han preocupado por el producto final, pero para ello se debe tener en cuenta mucho la metodología que se emplea en el desarrollo del mismo, cosa que muy pocos toman en cuenta a la hora de trabajar en este tema se puntualiza, ciertos métodos de desarrollo de un proyecto que en según los criterios que se deben tomar en cuenta, que son características de cada uno de ellos, para lo cual se debe hacer énfasis en cada una de las fases que detallan en cada uno de ellos.
Basado en lo que indica (Pressman, R). Es frecuente que en la economía moderna sea difícil o imposible predecir la forma en la que evolucionará un sistema basado en computadora (por ejemplo, una aplicación con base en web). Las condiciones del mercado cambian con rapidez, las necesidades de los usuarios finales se transforman y emergen nuevas amenazas competitivas sin previo aviso. En muchas situaciones no será posible definir los requerimientos por completo antes de que el proyecto comience.
Se debe ser suficientemente ágil para responder a lo fluido que se presenta el ambiente de negocios.  
MARCO TEÓRICO
La fluidez implica cambio, y el cambio es caro, en particular si es descontrolado o si se administra mal. Una de las características más atractivas del enfoque ágil es su capacidad de reducir los costos del cambio durante el proceso del software.
PROGRAMACIÓN EXTREMA (XP).
A fin de ilustrar un proceso ágil con más detalle, daremos un panorama de la programación extrema (XP), el enfoque más utilizado del desarrollo de software ágil. Aunque las primeras actividades con las ideas y los métodos asociados a XP ocurrieron al final de la década de 1980, el trabajo fundamental sobre la materia había sido escrito por Kent Beck [Bec04a]. Una variante de XP llamada XP industrial [IXP] se propuso en una época más reciente [Ker05]. IXP mejora la XP y tiene como objetivo el proceso ágil para ser usado específicamente en organizaciones grandes.

EL PROCESO XP.
Al igual que en los procesos del software el XP utiliza sus procesos, como la mayoría de las metodologías agiles que son los siguientes:
1.      Planeación: Es en donde se contacta con el cliente, para atender los requerimientos que el mismo desea suplir, de manera que el equipo XP puedan entender las necesidades del cliente y las funcionalidades que debe tener el programa, en la que se evaluará cada costo de las características así como el tiempo estimado en realizarse.
2.      Diseño: El XP usa una ideología que se debe de mantener un diseño sencillo, además de usar las tarjetas CRC (Clase-Responsabilidad-Colaborador), con el fin de definir, en que secciones se va a desempeñar cada uno de los integrantes del grupo, todo esto para que cada uno cumpla con lo que saben mejor, de esta manera el proyecto se lleva a cabo de mejor manera y el producto final es de mejor calidad y eficacia.
3.      Codificación: En esta fase se evalúa lo que se va a realizar, para posteriormente llevar al desarrollo, lo cual este método recomienda que sea en pareja, para mejorar la calidad del producto, y cada funcionabilidad implementada se le va realizando sus respectivas pruebas, antes de implementarla al módulo final.
4.    Pruebas: Ya se dijo que la creación de pruebas unitarias antes de que comience la codificación es un elemento clave del enfoque de XP.
Al final de cada producto se debe evaluar el funcionamiento global del producto, con el fin de garantizar que nuestro proyecto es sostenible y a la vez eficaz.

SCRUM
Scrum (nombre que proviene de cierta jugada que tiene lugar durante un partido de rugby). Es un método de desarrollo ágil de software concebido por Jeff Sutherland y su equipo de desarrollo a principios de la década de 1990. En años recientes, Schwaber y Beedle [Sch01a] han desarrollado más los métodos Scrum.
Es una de las metodologías utilizadas para guiar las actividades de desarrollo, de manera que se mejore la experiencia en el desarrollo de un software, para lo cual incorpora las actividades: requerimientos, análisis, diseño, evolución y entrega.
En cada una de estas actividades se realizan de forma detallada lo que el grupo de desarrollo debe tomar en cuenta, ya sea desde el levantamiento de la información hasta terminar con las pruebas correspondientes del software.

En la imagen se detalla las características más relevantes de Scrum acotando además que los sprints son las unidades de trabajo que se necesitan para suplir o cumplir con un requerimiento, en el cual tiene la característica de ser máximo de 30 días, y no se introducen cambios, es decir no se puede agregar cierta característica de un día para otro mientras se esté realizando el sprint, las reuniones son dirigidas por un Scrum master, que es el director del proyecto por decir de cierta forma.
CONCLUSION.
Las metodologías de desarrollo ágil, se enfocan en ser un conjunto de pasos, para que los desarrolladores se guíen de buena manera para conseguir finalizar un buen software, las herramientas tanto de XP como las de Scrum suelen ser factibles dependiendo del proyecto que se esté llevando a cabo, siempre y cuando se realice cada acción de manera cautelosa, se puede llegar a cumplir de buena manera todos los objetivos propuestos, y usando bien todas estas características se llega a lo óptimo, con respecto a un trabajo de un software.   
BIBLIOGRAFÍA.
Pressman, R. Ingeniería de software: Un enfoque práctico. 7 ed. México. Mc Graw Hill. p 805.

Gutiérrez, D. 2011. Métodos de Desarrollo de Software. (En línea). VE. Consultado, 19 de abril de 2015. Formato PDF. Disponible en: http://www.codecompiling.net/files/slides/IS_clase_13_metodos_y_procesos.pdf

MODELOS DEL PROCESO

INTRODUCCION
Los modelos del proceso ayudan a llevar a cabo un adecuado transcurso, según lo que el desarrollador desea realizar, para cada software existe un modelo adecuado que genera que se realice de manera eficaz lo que se desea, debido a que existen diversos tipos de programas, así, por lo tanto el proceso que debe llevar tiende a ser similar, pero el modelado del proceso debe ser de acuerdo a lo que se está trabajando, porque la planificación en la realización de un proyecto es muy importante para que al final del mismo, se obtengan resultados satisfactorios, pero para saber qué modelo se debe elegir se debe estudiar cada uno de los parámetros que estos muestran en consecuencia se puede hacer un análisis de manera oportuna para determinar uno a seguir, más adelante se detallan unos de los más importantes modelos de procesos, con el fin de dar a conocer en qué tipos de programas o software se debe aplicar.
Según (Pressman, R). Debido a que el software, como todo capital, es conocimiento incorporado y a que el conocimiento originalmente se halla disperso, tácito, latente e incompleto en gran medida, el desarrollo de software es un proceso de aprendizaje social. El proceso es un diálogo en el que el conocimiento que debe convertirse en software se reúne e incorpora en éste. El proceso genera interacción entre usuarios y diseñadores, entre usuarios y herramientas cambiantes, y entre diseñadores y herramientas en evolución tecnológica. Es un proceso que se repite y en el que la herramienta que evoluciona sirve por sí misma como medio para la comunicación: con cada nueva ronda del diálogo se genera más conocimiento útil a partir de las personas involucradas.      
MARCO TEÓRICO
Anteriormente se definió a un proceso como la colección de actividades de trabajo, acciones y tareas que se realizan cuando va a crearse algún producto terminado. Cada una de las actividades, acciones y tareas se encuentra dentro de una estructura o modelo que define su relación tanto con el proceso como entre sí.
Cada uno de estos modelados implican las acciones anteriormente nombradas tales como: comunicación, planeación, modelado, construcción y despliegue. De alguna u otra manera los modelos de los procesos realizan cada una de estas actividades para la correcta realización de un software, ya sea lineal, evolutivo, iterativo, etc.

MODELOS DE LOS PROCESOS PRESCRIPTIVOS.
Son estos modelos los llamados a poner orden al momento de desarrollar software. Debido a que anteriormente y en ciertos casos de la actualidad se desarrolla un software sin usar un modelo de desarrollo. Este tipo de modelo ha dado una estructura general para el desarrollo según lo indican los hechos históricos, sin embargo aún se sigue en caos.
A continuación definiremos los modelos de los procesos prescriptivos que se precisan como más comunes:
·        MODELO DE LA CASCADA: En términos menores es aquel que se enfoca en llevar a cabo cada proceso de forma sistemática, es decir ejecuta una acción y una vez finalizada esta, continua con la otra, para mejorar lo antes mencionado observar la siguiente figura:
Este es un modelo que puede ser usado en proyectos pequeños, que no requieran de interactuar varias veces con el cliente, o también en aquellos programas finalizados, para realizarles una mejora.

·         MODELOS DE PROCESO EVOLUTIVO: Son aquellos en que uno o más de los 5 pasos del proceso del desarrollo se lo ejecuta en más de una vez, con el fin de optimizar la función del producto final, y a la vez satisfacer de mejor manera con los requerimientos del cliente para con el software. Debido al avance tecnológico, los requerimientos de la sociedad y de las empresas también es mayor, por lo tanto realizar un buen sistema actualmente se necesita de un adecuado proceso y a veces repetir el mismo para suplir con todas las necesidades. Este tipo de modelos se usa en proyectos de tipo medio y grande, que sería lo ideal para ellos.
Los modelos evolutivos son iterativos es decir, se caracterizan por la manera en la que permiten desarrollar versiones cada vez más completas del software. A continuación se presentan dos modelos comunes de proceso evolutivo:
1.    Hacer prototipos: En la mayoría de proyectos es raro que el primer sistema elaborado sea utilizable. Tal vez sea muy lento, muy grande, difícil de usar o todo a la vez. No hay más alternativa que comenzar de nuevo, con más inteligencia, y construir una versión rediseñada en la que se resuelvan los problemas.
      
2.    El modelo espiral: Es aquel que mientras se vaya avanzando en el proyecto, su medida de riesgo va disminuyendo debido a la implementación detallada de cada una de las peticiones que el cliente detalla en la comunicación y posterior a ella, si se da el caso. Con el empleo del modelo espiral, el software se desarrolla en una serie de entregas evolutivas. Durante las primeras iteraciones, lo que se entrega puede ser un modelo o prototipo. En las iteraciones posteriores se producen versiones cada vez más completas del sistema cuya ingeniería se está haciendo.
     

CONCLUSION.
El uso adecuado de los modelos del proceso del software es la clave para el óptimo provecho de un desarrollador, debido a que es responsabilidad de el mismo cumplir con su deber en el tiempo acordado entre ambas partes, y si no lleva un adecuado modelo, como consecuencia podría obtener un programa no tan satisfactorio para el usuario, ocasionando que el mismo le reclame por incumplimiento al responsable, en este caso deberá realizar correcciones, perdiendo mucho más tiempo de lo planificado, lo que acarrea menos beneficios para el desarrollador.
Tomando en cuenta el tipo de proyecto que se va a llevar cabo, se debe elegir el correcto modelo de los procesos, como se menciona anteriormente cada una de las cualidades de los mismos podremos saber cuál es el ideal para lo que se desea hacer. 
BIBLIOGRAFÍA.
Pressman, R. Ingeniería de software: Un enfoque práctico. 7 ed. México. Mc Graw Hill. p 805.
Gutiérrez, D. 2011. Métodos de Desarrollo de Software. (En línea). VE. Consultado, 19 de abril de 2015. Formato PDF. Disponible en: http://www.codecompiling.net/files/slides/IS_clase_13_metodos_y_procesos.pdf