lunes, 10 de noviembre de 2014

Modelos de Ciclos de Vida del Software

Las principales diferencias entre distintos modelos de ciclo de vida están divididas en tres grandes visiones:
 El alcance del ciclo de vida, que depende de hasta dónde deseamos llegar con el proyecto: sólo saber si es viable el desarrollo de un producto, el desarrollo completo o el desarrollo completo más las actualizaciones y el mantenimiento.
 La cualidad y cantidad de las etapas en que dividiremos el ciclo de vida: según el ciclo de vida que adoptemos, y el proyecto para el cual lo adoptemos.
• La estructura y la sucesión de las etapas, si hay realimentación entre ellas, y si tenemos libertad de repetirlas (iterar). En los distintos modelos de ciclo de vida mencionaremos el riesgo que suponemos aceptar al elegirlo. Cuando hablamos de riesgo, nos referimos a la probabilidad que tendremos de volver a retomar una de las etapas anteriores, perdiendo tiempo, dinero y esfuerzo.

Ciclo de vida lineal
Es el más sencillo de todos los modelos. Consiste en descomponer la actividad global del proyecto en etapas separadas que son realizadas de manera lineal, es decir, cada etapa se realiza una sola vez, a continuación de la etapa anterior y antes de la etapa siguiente. Con un ciclo de vida lineal es muy fácil dividir las tareas, y prever los tiempos (sumando linealmente los de cada etapa).
Las actividades de cada una de las etapas mencionadas deben ser independientes entre sí, es decir, que es condición primordial que no haya retroalimentación entre ellas, aunque sí pueden admitirse ciertos supuestos de realimentación correctiva. Desde el punto de vista de la gestión, requiere también que se conozca desde el primer momento, con excesiva rigidez, lo que va a ocurrir en cada una de las distintas etapas antes de comenzarla.
Esto ultimo minimiza, también, las posiblidades de errores durante la codificacion y reduce al mínimo la necesidad de requerir informacion del cliente o del usuario.
Se destaca como ventaja la sencillez de su gestión y administración tanto económica como temporal, ya que se acomoda perfectamente a proyectos internos de una empresa para programas muy pequeños de ABM (sistemas que realizan Altas, Bajas y Modificaciones sobre un conjunto de datos). Tiene como desventaja que no es apto para Desarrollos que superen mínimamente requerimientos de retroalimentación entre etapas, es decir, es muy costoso retomar una etapa anterior al detectar alguna falla.

Modelo de ciclo de vida en cascada puro
Este modelo de ciclo de vida fue propuesto por Winston Royce en el año 1970. Es un ciclo de vida que admite iteraciones, contrariamente a la creencia de que es un ciclo de vida secuencial como el lineal. Después de cada etapa se realiza una o varias revisiones para comprobar si se puede pasar a la siguiente. Es un modelo rígido, poco flexible, y con muchas restricciones. Aunque fue uno de los primeros, y sirvió de base para el resto de los modelos de ciclo de vida.
La necesidad de conocer los requerimientos al principio del proyecto es primordial al elegir este modelo de ciclo de vida a pesar de permitir iteraciones.
Una de sus ventajas, además de su planificación sencilla, es la de proveer un producto con un elevado grado de calidad sin necesidad de un personal altamente calificado.
Se pueden considerar como inconvenientes: la necesidad de contar con todos los requerimientos (o la mayoría) al comienzo del proyecto, y, si se han cometido errores y no se detectan en la etapa inmediata siguiente, es costoso y difícil volver atrás para realizar la corrección posterior.
Es un ciclo adecuado para los proyectos en los que se dispone de todos los requerimientos al comienzo, para el desarrollo de un producto con funcionalidades conocidas o para proyectos, que aun siendo muy complejos, se entienden perfectamente desde el principio.

Modelos de ciclo de vida en V
Este ciclo fue diseñado por Alan Davis, y contiene las mismas etapas que el ciclo de vida en cascada puro. A diferencia de aquél, a éste se le agregaron dos subetapas de retroalimentación entre las etapas de análisis y mantenimiento, y entre las de diseño y debugging.

Las ventajas y desventajas de este modelo son las mismas del ciclo anterior, con el agregado de los controles cruzados entre etapas para lograr una mayor corrección.
Podemos utilizar este modelo de ciclo de vida en aplicaciones, que si bien son simples(pequeñas transacciones sobre bases de datos por ejemplo), necesitan una confiabilidad muy alta. Un ejemplo claro en el que no nos podemos permitir el lujo de cometer errores es una aplicación de facturación, en la que si bien los procedimientos vistos individualmente son de codificación e interpretación sencilla, la aplicación en su conjunto puede tener matices complicados.


Modelo de ciclo de vida en cascada con subproyectos
Sigue el modelo de ciclo de vida en cascada. Cada una de las cascadas se dividen en subetapas independientes que se pueden desarrollar en paralelo.

MODELO DE TRES CAPAS
Es un modelo de programación para aplicaciones de acceso a datos en que se busca separar la arquitectura del programa en tres capas. En la capa de datos solo nos preocupamos del almacenamiento de éstos, en la capa de negocios situamos todas las transacciones y validaciones y en la capa de presentación sólo encontraremos las rutinas de visualización e interacción con el usuario.

Modelo de ciclo de vida iterativo
También derivado del ciclo de vida en cascada puro, este modelo busca reducir el riesgo que surge entre las necesidades del usuario y el producto final por malos entendidos durante la etapa de solicitud de requerimientos.
Es la iteración de varios ciclos de vida en cascada. Al final de cada iteración se le entrega al cliente una versión mejorada o con mayores funcionalidades del producto. El cliente es quien luego de cada iteración, evalúa el producto y lo corrige o propone mejoras.

Estas iteraciones se repetirán hasta obtener un producto que satisfaga al cliente.
Se suele utilizar en proyectos en los que los requerimientos no están claros de parte del usuario, por lo que se hace necesaria la creación de distintos prototipos para presentarlos y conseguir la conformidad del cliente.

Modelo de ciclo de vida por prototipos
El uso de programas prototipo no es exclusivo del ciclo de vida iterativo. En la práctica los prototipos se utilizan para validar los requerimientos de los usuarios en cualquier ciclo de vida.
Si no se conoce exactamente cómo desarrollar un determinado producto o cuáles son las especificaciones de forma precisa, suele recurrirse a definir especificaciones iniciales para hacer un prototipo, o sea, un producto parcial y provisional. En este modelo, el objetivo es lograr un producto intermedio, antes de realizar el producto final, para conocer mediante el prototipo cómo responderán las funcionalidades previstas para el producto final.
Antes de adoptar este modelo de ciclo debemos evaluar si el esfuerzo por crear un prototipo vale realmente la pena adoptarlo.


La ventaja de este ciclo se basa en que es el único apto para desarrollos en los que no se conoce a prioridad sus especificaciones o la tecnología a utilizar. Como contrapartida, por este desconocimiento, tiene la desventaja de ser altamente costoso y difícil para la administración temporal.
Si deseamos migrar aplicaciones de tecnología para adoptar sus nuevas funcionalidades o simplemente para estar en la cresta de la ola, este modelo es ideal. Un claro ejemplo son las llegadas de Java y la tecnología .NET que si bien contaban con respaldo y material de ayuda, implantaron nuevas tendencias.

Modelo de ciclo de vida evolutivo
Este modelo acepta que los requerimientos del usuario pueden cambiar en cualquier momento.
La práctica nos demuestra que obtener todos los requerimientos al comienzo del proyecto es extremadamente difícil, no sólo por la dificultad del usuario de transmitir su idea, sino porque estos requerimientos evolucionan durante el desarrollo y de esta manera, surgen nuevos requerimientos a cumplir. El modelo de ciclo de vida evolutivo afronta este problema mediante una iteración de ciclos requerimientos–desarrollo–evaluación.
Resulta ser un modelo muy útil cuando desconocemos la mayoría de los requerimientos iniciales, o estos requerimientos no están completos.

Modelo de ciclo de vida incremental
Este modelo de ciclo de vida se basa en la filosofía de construir incrementando las funcionalidades del programa.
Se realiza construyendo por módulos que cumplen las diferentes funciones del sistema.
Esto permite ir aumentando gradualmente las capacidades del software.
Este ciclo de vida facilita la tarea del desarrollo permitiendo a cada miembro del equipo desarrollar un modulo particular en el caso de que el proyecto sea realizado por un equipo de programadores.
Es una repetición del ciclo de vida en cascada, aplicándose este ciclo en cada funcionalidad del programa a construir. Al final de cada ciclo le entregamos una versión al cliente que contiene una nueva funcionalidad. Este ciclo de vida nos permite realizar una entrega al cliente antes de terminar el proyecto.

El modelo de ciclo de vida incremental nos genera algunos beneficios tales como los que se describen a continuacion:
• Construir un sistema pequeño siempre es menos riesgoso que construir un sistema grande.
• Como desarrollamos independientemente las funcionalidades, es más fácil relevar los requerimientos del usuario.
• Si se detecta un error grave, sólo desechamos la última iteración.
No es necesario disponer de los requerimientos de todas las funcionalidades en el comienzo del proyecto y además facilita la labor del desarrollo con la conocida filosofía de divide & vencerás.

Modelo de ciclo de vida en espiral
Este ciclo puede considerarse una variación del modelo con prototipado, fue diseñado por Boehm en el año 1988. El modelo se basa en una serie de ciclos repetitivos para ir ganando madurez en el producto final. Toma los beneficios de los ciclos de vida incremental y por prototipos, pero se tiene más en cuenta el concepto de riesgo que aparece debido a las incertidumbres e ignorancias de los requerimientos proporcionados al principio del proyecto o que surgirán durante el desarrollo. A medida que el ciclo se cumple (el avance del espiral), se van obteniendo prototipos sucesivos que van ganando la satisfacción del cliente o usuario.
A menudo, la fuente de incertidumbres es el propio cliente o usuario, que en la mayoría de las oportunidades no sabe con perfección todas las funcionalidades que debe tener el producto.

En este modelo hay cuatro actividades que envuelven a las etapas.
http://blog.iedge.eu/wp-content/uploads/2011/09/IEDGE-ciclo-de-vida-desarrollo-software-4.jpg

Planificación: Relevamiento de requerimientos iniciales o luego de una iteración.
 Análisis de riesgo: De acuerdo con el relevamiento de requerimientos decidimos
si continuamos con el desarrollo.
 Implementación: desarrollamos un prototipo basado en los requerimientos.
 Evaluación: El cliente evalúa el prototipo, si da su conformidad, termina el proyecto. En caso contrario, incluimos los nuevos requerimientos solicitados por el cliente en la siguiente iteración.

La ventaja más notoria de este modelo de desarrollo de software es que puede comenzarse el proyecto con un alto grado de incertidumbre, se entiende también como ventaja el bajo riesgo de retraso en caso de detección de errores, ya que se puede solucionar en la próxima rama del espiral.
Algunas de las las desventajas son: el costo temporal que suma cada vuelta del espiral, la dificultad para evaluar los riesgos y la necesidad de la presencia o la comunicación continua con el cliente o usuario.
Se observa que es un modelo adecuado para grandes proyectos internos de una empresa, en donde no es posible contar con todos los requerimientos desde el comienzo y el usuario está en nuestro mismo ambiente laboral.

Modelo de ciclo de vida orientado a objetos
Esta técnica fue presentada en la década del 90, tal vez como una de las mejores metodologías a seguir para la creación de productos software.
Puede considerarse como un modelo pleno a seguir, como así también una alternativa dentro de los modelos anteriores.
Al igual que la filosofía del paradigma de la programación orientada a objetos, en esta metodología cada funcionalidad, o requerimiento solicitado por el usuario, es considerado un objeto. Los objetos están representados por un conjunto de propiedades, a los cuales denominamos atributos, por otra parte, al comportamiento que

tendrán estos objetos los denominamos métodos.

lunes, 20 de octubre de 2014

Modelos de desarrollo de software

Clasificación de las metodologías
Existen dos metodologías que tienen analogía en la práctica con los paradigmas de programación. Metodología estructurada y metodología orientada a objetos.
• Metodología estructurada: la orientación de esta metodología se dirige hacia los procesos que intervienen en el sistema a desarrollar, es decir, cada función a realizar por el sistema se descompone en pequeños módulos individuales. Es más fácil resolver problemas pequeños, y luego unir cada una de las soluciones, que abordar un problema grande.
• Metodología orientada a objetos: a diferencia de la metodología mencionada anteriormente, ésta no comprende los procesos como funciones sino que arma módulos basados en componentes, es decir, cada componente es independiente del otro. Esto nos permite que el código sea reutilizable. Es más fácil de mantener porque los cambios están localizados en cada uno de estos componentes.

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPQkruHzyouPnYG-i5R5da9j5O4hEnd2wmMS112H2N_mpfTyweWE0K3solbEd5_sbm6WlW0LqAmFZikyvHuw0IdI7atHzuiMVoFLlpSRFx93r9ESbSw5YGAr0ZaXXnLabbY5rGaunT7Zo/s1600/Mapa+conceptual.png

Ciclos de vida del software

La ingeniería de software, por supuesto, se presenta a sí misma como otra causa valiosa, pero es un colirio: si lee cuidadosamente su literatura y analiza lo que realmente hacen quienes se avocan a ella, descubrirá que la ingeniería de software ha adoptado como su estatuto "Cómo programar si usted no puede". Edsger Dijkstra.

Ciclo de vida del software
El proceso que se sigue para construir, entregar y hacer evolucionar el software, desde la concepción de una idea hasta la entrega y el retiro del sistema.
Confiable, predecible y eficiente.
El objetivo es determinar el orden de las etapas involucradas en el desarrollo del software, establecer el criterio de transición para progresar de una etapa a la siguiente: 
  • Criterio para determinar la finalización
  • Criterio para comenzar y elegir la siguiente.

Así un modelo de proceso apunta a:
¿Qué debemos hacer a continuación?
¿Por cuánto tiempo debemos hacerlo?



Definición de Metodología
La metodología para el desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto para llevarlo a cabo con altas posibilidades de éxito. Esta sistematización nos indica cómo dividiremos un gran proyecto en módulos más pequeños llamados etapas, y las acciones que corresponden en cada una de ellas, nos ayuda a definir entradas y salidas para cada una de las etapas y, sobre todo, normaliza el modo en que administraremos el proyecto. Entonces, una metodología para el desarrollo de software son los procesos a seguir sistemáticamente para idear, implementar y mantener un producto software desde que surge la necesidad del producto hasta que cumplimos el objetivo por el cual fue creado.
Desde un punto de vista general puede considerarse que el ciclo de vida de un software tiene tres etapas claramente diferenciadas, las cuales se detallan a continuacion:
 Planificación: idearemos un planeamiento detallado que guíe la gestión del proyecto,temporal y económicamente.
 Implementación: acordaremos el conjunto de actividades que componen la realización del producto.
 Puesta en producción: nuestro proyecto entra en la etapa de definición, allí donde se lo presentamos al cliente o usuario final, sabiendo que funciona correctamente y responde a los requerimientos solicitados en su momento
Objetivos de cada etapa
En cada una de las etapas de un modelo de ciclo de vida, se pueden establecer una serie de objetivos, tareas y actividades que lo caracterizan.
Haremos un repaso y una pequeña descripción de cada una de las etapas del ciclo de vida del software; una vez conocidas las etapas, tendremos que analizar cómo abordarlas en su conjunto. Existen distintos modelos de ciclo de vida, y la elección de un modelo para un determinado tipo de proyecto es realmente importante; el orden de las etapas es uno de estos puntos importantes, Si elegimos el modelo de cascada puro en el cual la validación se realiza al final del proyecto, y luego debemos retomar etapas previas, puede resultarnos no sólo incómodo, sino costoso.
Expresión de necesidades: esta etapa tiene como objetivo el armado de un documento en el cual se reflejan los requerimientos y funcionalidades que ofrecerá al usuario el sistema a implementar (qué, y no cómo, se va a implementar).
Especificaciones: formalizamos los requerimientos; el documento obtenido en la etapa anterior se tomará como punto de partida para esta etapa.
 Análisis: determinamos los elementos que intervienen en el sistema a desarrollar, su estructura, relaciones, evolución temporal, funcionalidades, tendremos una descripción clara de qué producto vamos a construir, qué funcionalidades aportará y qué comportamiento tendrá.
• Diseño: ya sabemos qué hacer, ahora tenemos que determinar cómo debemos hacerlo (¿cómo debe ser construido el sistema en cuestion?; definimos en detalle entidades y relaciones de las bases de datos, seleccionamos el lenguaje que vamos a utilizar, el Sistema Gestor de Bases de Datos, etc.).
• Implementación: empezamos a codificar algoritmos y estructuras de datos, definidos
en las etapas anteriores, en el correspondiente lenguaje de programación
para un determinado sistema gestor de bases de datos. En muchos proyectos
se pasa directamente a esta etapa; son proyectos muy arriesgados que adoptan un modelo de ciclo de vida de code & fix (codificar y corregir) donde se eliminan las etapas de especificaciones, análisis y diseño con la consiguiente pérdida de control sobre la gestión del proyecto.

sábado, 18 de octubre de 2014

Introducción

Un sistema informático utiliza ordenadores para almacenar datos (la información), procesarlos y ponerlos a disposición de quien se considere oportuno. Un sistema puede ser tan sencillo como: una persona con un microordenador al que le proporciona datos tan elementales como las ventas diarias de una pequeña empresa, se produce una entrada por cada venta y en ella se declara el elemento vendido, por ejemplo un yogur, la cantidad de elementos vendidos, por ejemplo cuatro y el precio de venta unitario, por ejemplo 0.16 euros. Cada entrada se almacena como un registro de un fichero en el disco. Al finalizar el día se puede generar un informe de las ventas y las tendencias. El usuario puede utilizar esta información para la gestión de almacén o planificar campañas publicitarias. Habitualmente una empresa tiene más de un ordenador, por ejemplo uno para la gestión de ventas y otro para la contabilidad y procesos asociados, sin embargo la mayor parte de los sistemas son más complejos.

Ingeniería del software

La Ingeniería del Software es la rama de la ingeniería que crea y mantiene las aplicaciones de software usando tecnologías y prácticas de las ciencias de la computación, manejo de proyectos, ingeniería, el ámbito de la aplicación, y otros campos. Hay quienes opinan que este proceso deberia de llamarse "Desarollo del Software" frente a Ingenieria del Software, Pete McBreen (autor de los libros: Software Craftsmanship and Questioning Extreme Programming) afirma que el termino ingenieria implica nivel de rigor y de pruebas mucho mayores que lo habitual en los desarollos actuales.

Según la definición del IEEE, "software es la suma total de los programas de ordenador, procedimientos, reglas, la documentación asociada y los datos que pertenecen a un sistema de cómputo" y "un producto de software es un producto diseñado para un usuario". En este contexto, la Ingeniería de Software (SE del inglés "Software Engineering") es un enfoque sistemático del desarrollo, operación, mantenimiento y retiro del software.

Ingeniería del Software, es el término que utilizó Fritz Bauer en la primera conferencia sobre desarrollo de software patrocinada por el Comité de Ciencia de la OTAN celebrada en Garmisch (Alemania), en octubre de 1968, previamente había sido utilizado por el holandés Edsger Dijkstra en su obra The Humble Programmer. Puede definirse según Alan Davis como "la aplicación inteligente de principios probados, técnicas, lenguajes y herramientas para la creación y mantenimiento, dentro de un coste razonable, de software que satisfaga las necesidades de los usuarios".

Su origen se debió a que el entorno de desarrollo de sistemas software adolecía de:
  • Retrasos considerables en la planificación
  • Poca productividad
  • Elevadas cargas de mantenimiento
  • Demandas cada vez más desfasadas frente a las ofertas
  • Baja calidad y fiabilidad del producto
  • Dependencia de los realizadores
Objetivos de la ingeniería de software
En la construcción y desarrollo de proyectos se aplican métodos y técnicas para resolver los problemas, la informática aporta herramientas y procedimientos sobre los que se apoya la ingeniería de software.

  • mejorar la calidad de los productos de software
  • aumentar la productividad y trabajo de los ingenieros del software.
  • Facilitar el control del proceso de desarrollo de software.
  • Suministrar a los desarrolladores las bases para construir software de alta calidad en una forma eficiente.
  • Definir una disciplina que garantice la producción y el mantenimiento de los productos software desarrollados en el plazo fijado y dentro del costo estimado.
http://catedras.facet.unt.edu.ar/ingsoftware/wp-content/uploads/sites/3/2014/02/ingenieria2012.jpg

Carátula (Presentaciòn)

ESCUELA SUPERIOR POLITÉCNICA DE MANABÍ "MANUEL FÉLIX LÓPEZ" - ESPAM MFL

ASIGNATURA: NGENIERÍA DEL SOFTWARE

TEMA: PROYECTO DE AULA - PORTAFOLIOVIRTUAL

AUTOR: DILMER JOSÉ ZAMBRANO CÓRDOVA

CATEDRÁTICA: ING. HIRAIDA SANTANA CEDEÑO

PERIÓDO SEMESTRAL: Octubre 2014 /Marzo 2015

CALCETA - MANABÍ - ECUADOR




 

viernes, 10 de octubre de 2014

Metodologías Ágiles

El desarrollo ágil de software refiere a métodos de ingeniería del software basados en el desarrollo iterativo e incremental, donde los requisitos y soluciones evolucionan mediante la colaboración de grupos auto organizados y multidisciplinarios. Existen muchos métodos de desarrollo ágil; la mayoría minimiza riesgos desarrollando software en lapsos cortos. El software desarrollado en una unidad de tiempo es llamado una iteración, la cual debe durar de una a cuatro semanas. Cada iteración del ciclo de vida incluye: planificación, análisis de requisitos, diseño, codificación, revisión y documentación. Una iteración no debe agregar demasiada funcionalidad para justificar el lanzamiento del producto al mercado, sino que la meta es tener una «demo» (sin errores) al final de cada iteración. Al final de cada  iteración el equipo vuelve a evaluar las prioridades del proyecto.

Los métodos ágiles enfatizan las comunicaciones cara a cara en vez de la documentación. La mayoría de los equipos ágiles están localizados en una simple oficina abierta, a veces llamadas "plataformas de  lanzamiento" (bullpen en inglés).
 


Métodos ágiles

Algunos métodos ágiles de desarrollo de software:
  • Adaptive Software Development (ASD)
  • Agile Unified Process (AUP)
  • Crystal Clear
  • Feature Driven Development (FDD)
  • Lean Software Development (LSD)
  • Kanban
  • Open Unified Process (OpenUP)
  • Programación Extrema (XP)
  • Método de desarrollo de sistemas dinámicos (DSDM)
  • Scrum 

Uso de métodos agiles

Desde el surgimiento de estas revolucionarias metodologías que no solo nacen para el desarrollo de sistemas software sino para el management o desarrollo de productos los incrementos en adeptos se presentan gradualmente con el tiempo y las tecnologías.
Y los que las usan, ¿Por qué razón o razones lo hacen?:
·         Para reducir el tiempo de desarrollo: 45%
·         Para mejorar la calidad: 43%
·         Para reducir costes: 23%
·         Para alinear el desarrollo con los objetivos de negocio: 39%
·         Otras razones: 12%.
Métodos rápidos

Reduce el tiempo del ciclo de vida del software al desarrollo en primera instancia una versión prototipo y después integrar la funcionalidad de manera iterativa para satisfacer los requisitos del cliente y controlar todo el ciclo de desarrollo.

RAD (Desarrollo rápido de aplicaciones)
Consiste en un ciclo de desarrollo corto basado en 3 fases (diseño-requisitos-construcción) con un plazo de entrega ideal de 90 a 120 días como máximo.

http://upload.wikimedia.org/wikipedia/commons/5/5f/RADModel.JPG 
El desarrollo adaptativo de software (DAS) fue propuesto por Jim Highsmith como una técnica para elaborar software y sistemas complejos. Los fundamentos filosóficos del DAS se centran en la colaboración humana y en la organización propia del equipo. Highsmith argumenta que un enfoque de desarrollo adaptativo basado en la colaboración es “tanto una fuente de orden en nuestras complejas interacciones, como de disciplina e ingeniería”.
Él define un “ciclo de vida” del DAS que incorpora tres fases: especulación, colaboración y aprendizaje.
  
DSDM (Método de desarrollo de sistema dinámico)
Se desarrollo para complementar lo que le faltaba al método RAD al proporcionar una estructura que tiene en cuenta el ciclo de desarrollo completo.

UP (Proceso unificado)
Es un proceso de desarrollo iterativo y creciente, significa que el proyecto se divide en fases más cortas y que se envía una nueva versión gradual al final de cada fase.

RUP (Proceso unificado racional)
Método de desarrollo interactivo promovido por la compañía Rational software de IBM, especifica principalmente la constitución del equipo y las escalas de tiempo.