domingo, 2 de abril de 2017



Mega Publicación:
Temas de la Unidad 3 y 4




Hasta ahora solo habíamos cubierto los aspectos meramente requisitales del proceso de desarrollo de un software, mismos que ya he expuesto en entradas anteriores de este blog. Sin embargo, estimado lector, que mi pobre redacción no le induzca a pensar que considero o que deba considerarse a estos procesos iniciales como algo que deba tomarse a la ligera.

Estas etapas iniciales son de hecho más importantes que lo que a continuación expondré, pues lo que sigue no es más que la concreción de lo que ya fue establecido gracias a esas etapas primeras. Sin ellas, no existirían esas valiosas pautas que son las que regirán el proyecto de ahora en más.
Una vez definidos los requerimientos precisos es tiempo de abordar el tema siguiente.
El siguiente paso implica construir el software.
Sin embargo este es un proceso complejo en sí mismo, ¿Cómo proceder?

Actualmente tenemos acceso al conocimiento de distintas formas como un equipo puede abordar el desarrollo de software. A continuación haré una breve descripción de lo que son los modelos de desarrollo de software así como de los principales que hay y como se efectúan. Después pasaré a hacer exposición de otras herramientas que es necesario tomar en consideración para esta etapa.




Modelos De Desarrollo De Software




¿Qué son?

Los modelos para el desarrollo de software son una representación abstracta de un proceso. Cada modelo representa un proceso desde una perspectiva particular y así proporcione información parcial sobre el proceso. Éstos modelos generales no son descripciones definitivas de los procesos del software más bien son abstracciones de los procesos que se pueden utilizar para el desarrollo del software.
Es decir, dadas las condiciones como se plantea un software, el modelo ofrece lineamientos generales sobre cómo proceder en cuanto a su desarrollo. Esto no implica que el equipo, una vez elegido el modelo que más les conviene, deba seguirlo a rajatabla, puede adaptarlo y hacerle las adiciones que el proyecto exija. Sin embargo debe considerarse que apresurar los pasos afectará la calidad del producto final.





Modelos


Cascada




El más básico y conocido.
Se basa en el ciclo convencional de una ingeniería y su visión es muy simple: el desarrollo de software se debe realizar siguiendo una secuencia de fases. Cada etapa tiene un conjunto de metas bien definidas y las actividades dentro de cada una contribuyen a la satisfacción de metas de esa fase o quizás a una subsecuencia de metas de la misma.

Etapas

La nomenclatura de las mismas varía en función de los autores:

Ingeniería y Análisis de sistema
Análisis de requerimientos
Diseño
Codificación
Prueba
Mantenimiento



XP




También conocido como “eXtreme Programming”.
Catalogado como un “modelo rápido”, define un conjunto de prácticas óptimas para el desarrollo de aplicaciones en excelentes condiciones al colocar al cliente en el centro del proceso de desarrollo, manteniendo una cercana relación con dicho cliente.

Características
Se desarrolla bajo los lineamientos siguientes:


  •         Los equipos trabajan directamente con el cliente durante ciclos cortos de una o dos semanas como máximo.
  •          La entrega de las versiones del software ocurre muy temprano y en intervalos muy cortos para maximizar la interacción con el usuario.
  •          Se pone un excepcional énfasis en la colaboración entre el equipo de desarrollo mientras trabaja en el código.
  •          El código se prueba y depura a lo largo del proceso de desarrollo.
  •        Debe haber indicadores que miden el progreso del proyecto para poder actualizar el plan de desarrollo.

DRA




Es el proceso de desarrollo de software diseñado para facilitar y acelerar la creación de aplicaciones, que permite construir sistemas utilizables en poco tiempo, normalmente en un plazo de entre 60 a 90 días.
Es una adaptación a "Alta velocidad" en el que se logra el desarrollo rápido utilizando un enfoque de construcción basado en componentes.

Características

  • ·             Debido a que el software o aplicación se requiere lo más pronto posible no existe una especificación del sistema detallada.
  • ·         El software no se desarrolla y utiliza en su totalidad, sino en una serie de etapas, donde en cada una se incluyen nuevas funcionalidades al sistema.
  • ·         Se desarrollan las interfaces de usuario del sistema utilizando un sistema de desarrollo interactivo que permite que el diseño de la interfaz se cree rápidamente dibujando y colando iconos en la interfaz.
  • ·         Para su desarrollo se utilizan herramientas de desarrollo visual para agilizar el proceso.(UCI)
  • ·        Se necesitan equipos compuestos por alrededor de seis personas, incluyendo desarrolladores y usuarios de tiempo completo, así como aquellas personas involucradas en los requisitos.

Espiral




En este modelo, el sistema se desarrolla en una serie de versiones incrementales. Durante las primeras iteraciones, la versión incremental podría ser un modelo en papel o un prototipo. Durante las últimas iteraciones se producen versiones cada vez más completas de ingeniería del sistema.

Este modelo en espiral se divide en un número de actividades de marco de trabajo, también llamadas regiones de tareas:

Comunicación con el cliente
Planificación
Análisis de riesgos
Ingeniería
Construcción y acción
Evaluación del cliente

Características

  • Útil como enfoque realista del desarrollo de sistemas y de software a gran escala.
  • Como el software evoluciona, a medida que progresa el proceso el desarrollador y el cliente comprenden y reaccionan mejor ante riesgos en cada uno de los niveles evolutivos.
  • Utiliza la construcción de prototipos como mecanismo de reducción de riesgos.
  • Permite a quien lo desarrolla aplicar el enfoque de construcción de prototipos en cualquier etapa de evolución del producto.
  • Mantiene el enfoque sistemático de los pasos sugeridos por el ciclo de vida clásico, pero lo incorpora al marco de trabajo iterativo que refleja de forma más realista el mundo real.
  • Demanda una consideración directa de los riesgos técnicos en todas las etapas del proyecto, y, si se aplica adecuadamente, debe reducir los riesgos antes de que se conviertan en problemáticos. 

SCRUM




Este modelo está pensado para proyectos de menor escala o equipos de trabajo pequeños.
Es una metodología ágil y flexible para gestionar el desarrollo de software, cuyo principal objetivo es maximizar el retorno de la inversión para su empresa (ROI). Se basa en construir primero la funcionalidad de mayor valor para el cliente y en los principios de inspección continua, adaptación, auto-gestión e innovación.

Características
       Enfatiza valores y prácticas de gestión, sin pronunciarse sobre requerimientos, prácticas de desarrollo, implementación y demás cuestiones técnicas.
       Hace uso de Equipos auto-dirigidos y auto-organizados.
     Puede ser aplicado teóricamente a cualquier contexto en donde un grupo de gente necesita trabajar junta para lograr una meta común.
      Desarrollo de software iterativos incrementales basados en prácticas ágiles.



Proceso Unificado De Desarrollo




Es una metodología de desarrollo de software que está basado en componentes e interfaces bien definidas, y junto con el Lenguaje Unificado de Modelado (UML), constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos.

Es un proceso que puede especializarse para una gran variedad de sistemas de software, en diferentes áreas de aplicación, diferentes tipos de organizaciones, diferentes niveles de aptitud y diferentes tamaños de proyecto.

Características Principales

  • ·         Unifica los mejores elementos de metodologías anteriores.
  • ·         Preparado para desarrollar grandes y complejos proyectos
  • ·         Orientado a Objetos. 
  • ·         Utiliza el UML como lenguaje de representación visual.
  • ·         Principales ventajas
  • ·         Coste del riesgo a un solo incremento.
  • ·         Reduce el riesgo de no sacar el producto en el calendario previsto.
  • ·         Acelera el ritmo de desarrollo.
  • ·         Se adapta mejor a las necesidades del cliente.


Fases

Cada fase representa un ciclo de desarrollo en la vida de un producto de software:

Fase de concepción o inicio

Tiene por finalidad definir la visión, los objetivos y el alcance del proyecto, tanto desde el punto de vista funcional como del técnico, obteniéndose como uno de los principales resultados una lista de los casos de uso y una lista de los factores de riesgo del proyecto.

Fase de elaboración

Tiene como principal finalidad completar el análisis de los casos de uso y definir la arquitectura del sistema, además se obtiene una aplicación ejecutable que responde a los casos de uso que la comprometen.

Fase de construcción

Está compuesta por un ciclo de varias iteraciones, en las cuales se van incorporando sucesivamente los casos de uso, de acuerdo a los factores de riesgo del proyecto. Este enfoque permite por ejemplo contar en forma temprana con versiones el sistema que satisfacen los principales casos de uso. Los cambios en los requerimientos no se incorporan hasta el inicio de la próxima iteración.

Fase de transición

Inicia con una versión “beta” del sistema y culmina con el sistema en fase de producción.



Fundamentos De La Programación Orientada A Objetos




La programación orientada a objetos es una forma de organizar el código de un programa agrupándolo en objetos.  A su vez los objetos son elementos individuales que contienen información (valores de datos) y funcionalidad.

La utilización de un enfoque orientado a objetos para organizar un programa permite agrupar partes específicas de la información junto con funcionalidad o acciones comunes asociadas con dicha información.

Estos elementos se combinan en un solo elemento, denominado objeto.
Poder agrupar estos valores y funciones proporciona varias ventajas, como la capacidad de hacer un seguimiento de una sola variable en lugar de tener que controlar varias variables, agrupar funcionalidad relacionada y poder estructurar programas de maneras que reflejen mejor el mundo real.

A su vez esta se compone por:

Análisis Orientado a Objetos

Su objetivo es desarrollar un modelo que describa el software de computadora necesario para satisfacer los requisitos definidos por el cliente. El modelo de análisis contiene el funcionamiento y el comportamiento de los elementos del modelo de objetos.
Su propósito es definir todas las clases, atributos, operaciones y relaciones de comportamiento asociado entre ellos que sean relevantes al problema que se va a resolver.

Para realizar este análisis se deben realizar las siguientes tareas:

  • Identificar los escenarios o casos de uso
  • Identificar las clases
  • Definir sus atributos y métodos
  • Especificar la jerarquía entre las clases
  • Representar las relaciones entre los diferentes objetos del sistema
  • Modelar el comportamiento de cada objeto
  • Repetir iterativamente las tareas anteriores hasta completar el modelo

Diseño Orientado  a Objetos

Consistente en representar un modelo de datos que se pueda implementar con algún lenguaje de programación orientado a objetos (Java, PHP, Python, C++)
Los objetos son componentes potencialmente reutilizables, lo que hace que el software sea más fácil de mantener.

El proceso general para el diseño orientado a objetos tiene varias etapas:

  • ·            Comprender y definir el contexto y los modos de utilización del sistema.
  • ·         Diseñar la arquitectura del sistema.
  • ·         Identificar los objetos principales en el sistema
  • ·         Desarrollar los modelos de diseño.
  • ·         Especificar las interfaces de los objetos.


Diagrama De Casos De Uso



Si bien, el tema de los casos de uso ya había sido abordado con anterioridad, me tomaré la molestia de recordarnos que son:

“Un caso de uso es la imagen de una funcionalidad del sistema, desencadenada en respuesta al estímulo de un actor o rol externo”

Es decir, se refiere a las distintas interacciones celebradas entre el software y aquellos que interactúan con este, sean usuarios u otros sistemas.

Acorde a lo anterior un diagrama de casos de uso representa la forma en como un Cliente (Actor) opera con el sistema en desarrollo, además de la forma, tipo y orden en como los elementos interactúan (operaciones o casos de uso).

Elementos
Un diagrama de casos de uso contiene:
  • Actor

Es el rol que un usuario juega con respecto al sistema. Al hablar de  rol es necesario especificar que un Actor no necesariamente representa a una persona en particular, sino más bien la labor que realiza frente al sistema.
  • Caso de uso

Otra vez, pero dicho con palabras distintas que espero sean más fáciles de recordar, es una operación o tarea específica que se realiza tras una orden de algún agente externo, sea desde una petición de un actor o bien desde la invocación desde otro caso de uso.
  • Relaciones

Pueden ser:
·         Asociación
Es el tipo de relación más básica que indica la invocación desde un actor o caso de uso a otra operación (caso de uso). Dicha relación se denota con una flecha simple.
·         Dependencia o Instanciación
Es una forma particular de relación entre clases, en la cual una clase depende de otra, es decir, se instancia. Dicha relación se denota con una flecha punteada.
·         Generalización

Este tipo de relación es uno de los más utilizados, cumple una doble función dependiendo de su estereotipo, que puede ser de Uso (<<uses>>) o de Herencia (<<extends>>). Este tipo de relación está orientada exclusivamente para casos de uso (y no para actores). 


Diagrama De Clases

Los diagramas de clases se utilizan para modelar la visión estática de un sistema. Normalmente contienen: clases, interfaces y relaciones entre ellas: de asociación, de dependencia y/o de generalización. 

 Los diagramas de clases también pueden contener a paquetes o subsistemas, que se usan para agrupar elementos del modelo en partes más grandes (por ejemplo, paquetes que a su vez contienen a varios diagramas de clases). 

 Al igual que otros diagramas, en los diagramas de clases pueden aparecer notas explicativas y restricciones.




Tuve que resumir bastante los temas, querido lector y traté de darle forma a estos muros de texto para no cansarte, pero si como yo prefieres aprender con dibujitos, letras enormes y colores en todos lados, a continuación te dejo unos links que te podrían ser de utilidad.



Y como hoy me siento generoso déjame ahorrarte unos clicks y presentarte el siguiente video que habla sobre la POO, donde te cuentan todo eso que yo en mi torpeza  ignoré... Pero te prevengo que dura una hora, asi que mejor ve sacando las palomitas y el refresco.







Bibliografía





No hay comentarios:

Publicar un comentario