lunes, 16 de junio de 2014

Los de debes de ISO 42010



  Conformidades

Los requerimientos en este estándar internacional son contenidos en las clausulas 5,6 y 7. Existen 4 situaciones en las que es posible se realice una verificación de conformidad con esta norma:

-        -   Cuando se realice una verificación de conformidad de una descripción de arquitectura, se deberá demostrar que dicha restricción cumple con los requisitos estipulados en la sección  5.

-          - Cuando se realice una verificación  de un punto de vista de arquitectura, se deberá demostrar que los puntos de vista cumplen con los requisitos listados en la sección 7.

-       -     Cuando se realice una verificación de un marco de trabajo de arquitectura, se deberá demostrar que el marco de trabajo de arquitectura cumple los requisitos listados en 6.1.

-          Cuando se realice es una verificación de un lenguaje de descripción de arquitectura, se deberá demostrar que el lenguaje cumple con los requisitos estipulados en la sección  6.3.

Los Requerimientos de este estándar internacional son marcados por el uso del verbo  “deberá”. Las recomendaciones son marcadas por el uso del verbo “debería”. Los   permisos son marcados por el uso del verbo “puede”. En el evento de un conflicto entre los textos y figuras normativas, el texto tiene prelación.

  • Debes en descripciones de arquitectura  (Sección 5)


Identificación y resumen de descripción de arquitectura

Una arquitectura deberá identificar el sistema de interés e incluir información complementaria determinada por el proyecto u organización.

El contenido detallado de la identificación y elementos de información complementaria deberán ser especificadas por la organización y/o proyecto.

Los resultados de cualquier evaluación de la arquitectura o de la descripción de la arquitectura se deberán incluir.

 Identificación de interesados e intereses

Una arquitectura deberá identificar los interesados del sistema que tienen intereses considerados como fundamentales para la arquitectura de sistema de interés.

Los siguientes interesados deberán ser considerados  y cuando sea aplicable identificados en la descripción de la arquitectura:

-      Usuarios del sistema
-          Operadores del sistema
-          Compradores del sistema
-          Propietarios del sistema
-          Proveedores del sistema
-          Desarrolladores del sistema
-          Constructores del sistema
-          Mantenedores del sistema

Una descripción de arquitectura deberá identificar los intereses considerados fundamentales para la arquitectura del sistema de interés.

Los siguientes intereses deberán ser considerados y cuando sea aplicable, identificados en la descripción de la arquitectura:

-         -              El propósito del sistema
-          La idoneidad de la arquitectura para lograr los propósitos del sistema
-          La factibilidad de construcción y desarrollo del sistema.
-          Los riesgos potenciales e impactos del sistema para sus interesados a lo largo de su ciclo de vida.
-          Mantenimiento y evolución del sistema.

Una descripción de arquitectura deberá asociar cada interés identificado con el interesado identificado con dicho interés.

Nota: Generalmente la relación intereses – interesados es una relación muchos a muchos.

  Vistas de arquitectura:

Una descripción de arquitectura  deberá incluir exactamente una vista de arquitectura por cada punto de vista de arquitectura usado.

Cada vista de arquitectura deberá adherir las convenciones de los puntos de vista que gobiernan la arquitectura.

Cada vista de arquitectura deberá incluir:
a)      Información principal y complementaria según lo especificado por la organización del proyecto.
b)      Identificación del punto de vista que gobierna la vista.
c)       Modelos de arquitectura que se ocupan de todos los problemas enmarcados por el punto de vista que lo gobierna y que cubra todo el sistema desde ese punto de vista.
d)      El registro de los aspectos conocidos en la vista con respecto al punto de vista que lo gobierna.

Modelos de arquitectura

Una vista de arquitectura deberá  estar compuesto de uno o más modelos de arquitectura.

Cada modelo de arquitectura deberá incluir la versión especificada por la organización y/o proyecto.

Cada modelo de arquitectura deberá identificar el tipo de modelo que lo gobierna y adherirse a las convenciones de ese tipo de modelo.

Relaciones de la arquitectura

Consistencia con la descripción de la arquitectura

Una descripción de arquitectura  deberá registrar cualquier inconsistencia conocida a través de sus modelos arquitectónicos y sus vistas.

Correspondencias

Cada correspondencia en una descripción de arquitectura deberá ser identificada e identificar sus elementos arquitectónicos participantes.

Cada correspondencia en una descripción de arquitectura  deberá identificar cualquiera de las reglas de correspondencia que lo gobiernan (que son aplicables).

Reglas de correspondencia

Una descripción de arquitectura deberá incluir cada una de las reglas de correspondencia que son aplicadas.
Para cada regla de correspondencia identificada, una descripción de arquitectura deberá registrar  si la regla se mantiene o de otra manera registrar todas las violaciones conocidas (a dicha regla).

Justificación de arquitectura

Una descripción de arquitectura deberá incluir una justificación por cada punto de vista de arquitectura incluida para su uso en la descripción de arquitectura en términos los interesados, intereses, tipos de modelo notaciones y métodos.

Una descripción de arquitectura deberá incluir una justificación (sustento lógico) por cada decisión considerada para ser una decisión clave  en la elaboración de la arquitectura.

·         Debes  de puntos de vista de arquitectura  (Sección 7)

Un punto de vista de arquitectura deberá especificar:
a)      Uno o más intereses enmarcados por estos puntos de vista
b)      Los interesados típicos para los intereses enmarcados en estos punto de vista
c)       Uno  o más tipos de modelos usados en este punto de vista
d)      Para cada tipo de modelo identificado, los lenguajes , notaciones, convenciones , técnicas de modelado, métodos de análisis y/u otras operaciones a ser usados sobre los modelos de ese tipo.
e)      Referencias a sus fuentes.


·         Debes de marcos de arquitectura (Sección 6.3)

Un marco de arquitectura deberá incluir:
a)      Información de identificación del marco de arquitectura.
b)      La identificación de uno o más intereses
c)       La identificación de uno o más interesados que tienen esos intereses
d)      Uno o más puntos de vista arquitectónicos que enmarcan estos intereses
e)      Las reglas de correspondencia


Un marco de arquitectura deberá establecer su consistencia con las características del modelo conceptual de la descripción de arquitectura (descripción del contexto de arquitectura, arquitecturas y descripciones de arquitecturas, interesados e intereses, Vistas y puntos de vista de arquitecturas, modelos de arquitectura, correspondencia de elementos arquitectónicos, decisiones y justificación de arquitectura).

·         Debes de  lenguajes de descripción de arquitectura  (Sección 6.4)

Un lenguaje de descripción de arquitectura de deberá especificar:

a)      La identificación de uno o más intereses a ser expresados por un lenguaje de descripción de arquitectura.
b)      La identificación de uno o más interesados que tienen esos intereses.
c)       Los tipos de modelo implementados por el lenguaje de descripción de arquitectura que enmarcan cada uno de estos intereses.
d)      Cualquiera de los puntos de vista de arquitectura.
e)      Las reglas de correspondencia de los elementos arquitecturales relacionados a sus tipos de modelo.


Extraído de:

Estándar internacional  ISO/IEC/IEEE 42010 Primera edición 2011-12-01, Sistemas e ingeniería de software, descripción de arquitectura.


sábado, 31 de mayo de 2014

Redes neuronales artificiales

El modelo predictivo de categorización de riesgo en vías podria desarrollarse a partir de redes neuronales artificiales por lo cual a continuación se dara una descripción general del tema.

Redes Neuronales Artificiales


Una red neuronal artificial (RNA) es un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso.

Es posible entender a las RNA como un marco estadístico muy general para modelar probabilidades posteriores dado un conjunto de muestras (los datos de entrada). [1]
Las RNA tambien pueden verse como una metodología de procesamiento computacional que permite establecer patrones y/o comportamientos de un conjunto de datos que pueden ser considerados como complejos, debido a su volumen y distribución, con el fin de dar una solución no algorítmica al problema que los datos pueden plantear[2].

En este punto es necesario platearse que problemas pueden ser o no apropiados para ser descritos por una red neuronal. 

Aquellos problemas que se pueden describir fácilmente como diagramas de flujo, son ejemplos de problemas para los cuales las redes neuronales no son apropiadas. Si el programa consta de pasos bien definidos, las técnicas normales de programación serian suficientes. También se debe tener en cuenta si la lógica del problema cambia en el tiempo, una de las características principales de las redes neuronales es su capacidad para aprender. Si el algoritmo usado para resolver su problema es una regla de negocio que no cambia, no hay razón para utilizar una red neuronal, de hecho, podría ser perjudicial para su aplicación si la red neuronal intenta encontrar una solución mejor, y comienza a separarse del proceso deterministico puede producir resultados poco precisos. Otro escenario en el cual no es recomendable usar RNA es cuando se sabe exactamente cómo se obtuvo la solución, una red neuronal puede ser muy útil para resolver el problema para el cual fue entrenado, pero la red neuronal no puede explicar su razonamiento, la red neuronal sabe algo porque fue entrenado para saberlo y no puede explicar la serie de pasos para obtener la respuesta.

Por otro lado las redes neuronales son especialmente útiles para resolver problemas que no se puede expresar como una serie de pasos, tales como reconocimiento de patrones, clasificación, predicción de la serie, y minería de datos. como ya se menciono el reconocimiento de patrones es quizás el uso más común de las redes neuronales, para este tipo de problema la red neuronal se le presenta un patrón. Esto podría ser una imagen, un sonido, o cualquier otro dato. La red neuronal a continuación, intenta determinar si los datos de entrada coincide con un patrón que ha sido entrenado para reconocer. Se debe decir tambien las redes neuronales pueden resolver problemas de clasificación ya que este es un proceso que está estrechamente relacionado con el reconocimiento de patrones. Una red neuronal entrenada para la clasificación está diseñada para tomar muestras de la entrada y clasificarlos en grupos, estos grupos pueden ser difusos sin limites claramente definidos o por el contrario grupos con límites muy rígidos.

Para el problema plateado en este trabajo de grado las RNA pueden ser útiles a la hora de clasificar entidades afines de un conjunto de datos a otro a partir de las similitudes medidas en a las características de cada conjunto. Es un típico problema de clasificación y reconocimiento de patrones para el cual las RNAs pueden ser útiles






[1] Hristev, R.M. The ANN Book, GNU General public license, 1998
[2] ESCOLA UNIVERSITARIA POLITECNICA. De VILANOVA I La Geltrú. Departament
D’ESAII. “Introducción A Las Redes Neuronales”. 1999.

viernes, 30 de mayo de 2014

Modelo de vistas de arquitectura 4+1 Kruchten

En el proyecto se propuso hacer la arquitectura siguiendo el modelo de arquitectura 4+1 propuesto por  Kruchten, a continuación se describirá de manera general , cada una de las vistas:

 

Vista  Lógica

La vista lógica apoya principalmente los requisitos funcionales –lo que el sistema debe brindar en términos de servicios a sus usuarios. El sistema se descompone en una serie de abstracciones clave, tomadas (principalmente) del dominio del problema en la forma de objetos o clases de objetos. Aquí se aplican los principios de abstracción, encapsulamiento y herencia. Esta descomposición no sólo se hace para potenciar el análisis funcional, sino también sirve para identificar mecanismos y elementos de diseño comunes a diversas partes del sistema.

Se usa  el enfoque de Booch/Rational para representar la arquitectura lógica, mediante diagramas de clases y plantillas de clases. Un diagrama de clases muestra un conjunto de clases y sus relaciones lógicas: asociaciones, uso, composición, herencia y similares. Grupos de clases relacionadas pueden agruparse en categorías de clases. Las plantillas de clases se centran en cada clase individual; enfatizan las operaciones principales de la clase, e identifican las principales características del objeto. Si es necesario definir el comportamiento interno de un objeto, esto ser realiza con un diagrama de transición de estados o diagrama de estados. Los mecanismos y servicios comunes se definen como utilities de la clase.

Vista de Procesos

La vista de procesos toma en cuenta algunos requisitos no funcionales tales como el rendimiento y la disponibilidad. Se enfoca en asuntos de concurrencia y distribución, integridad del sistema, de tolerancia a fallas. La vista de procesos también específica en cuál hilo de control se ejecuta efectivamente una operación de una clase identificada en la vista lógica. La arquitectura de procesos se describe en varios niveles de abstracción, donde cada nivel se refiere a distintos intereses. El nivel más alto la arquitectura de procesos puede verse como un conjunto de redes lógicas de programas comunicantes (llamados “procesos”) ejecutándose en forma independiente, y distribuidos a lo largo de un conjunto de recursos de hardware conectados mediante un bus, una LAN o WAN. Múltiples redes lógicas pueden usarse para apoyar la separación de la operación del sistema en línea del sistema fuera de línea, así como también para apoyar la coexistencia de versiones de software de simulación o de prueba.

Un proceso es una agrupación de tareas que forman una unidad ejecutable. Los procesos representan el nivel al que la arquitectura de procesos puede ser controlada tácticamente (i.e., comenzar, recuperar, reconfigurar, y detener). Además, los procesos pueden replicarse para aumentar la distribución de la carga de procesamiento, o para mejorar la disponibilidad.

Partición.

El software se parte en un conjunto de tareas independientes: hilo de control separado que
puede planificarse para su ejecución independiente en un nodo de procesamiento.
Podemos entonces distinguir:

•Tareas mayores son elementos arquitectónicos que pueden ser manejados en forma univoca. Se comunican a través de un conjunto bien definido de mecanismos de comunicación inter-tarea: servicios de comunicación sincrónicos y asincrónicos basados en mensajes, llamados a procedimientos remotos, difusión de eventos, etc. Las tareas mayores no debieran hacer suposiciones acerca de su localización con otras tareas dentro de un mismo proceso o un mismo nodo de procesamiento.

• Tareas menores son tareas adicionales introducidas localmente por motivos de implementación tales como actividades cíclicas, almacenamiento en un buffer, time-out, etc.). Pueden implementarse en Ada por ejemplo, o como hilos de control liviano (threads). Pueden comunicarse mediante rendezvous o memoria compartida. El flujo de mensajes y la carga de procesos pueden estimarse en base al diagrama de procesos. También es posible implementar una vista de procesos “vacía”, con cargas dummy para los procesos y medir entonces su performance en el sistema objetivo.


Vista de Desarrollo

La vista de desarrollo se centra en la organización real de los módulos de software en el ambiente de desarrollo del software. El software se empaqueta en partes pequeñas –bibliotecas de programas o subsistemas– que pueden ser desarrollados por uno o un grupo pequeño de desarrolladores. Los subsistemas se organizan en una jerarquía de capas, cada una de las cuales brinda una interfaz estrecha y bien definida hacia las capas superiores.

La vista de desarrolla tiene en cuenta los requisitos internos relativos a la facilidad de desarrollo, administración del software, reutilización y elementos comunes, y restricciones impuestas por las herramientas o el lenguaje de programación que se use. La vista de desarrollo apoya la asignación de requisitos y trabajo al equipo de desarrollo, y apoya la evaluación de costos, la planificación, el monitoreo de progreso del proyecto, y también como base para analizar reusó, portabilidad y seguridad. Es la base para establecer una línea de productos.

La vista de desarrollo de un sistema se representa en diagramas de módulos o subsistemas que muestran las relaciones extend e include. La arquitectura de desarrollo sólo puede describirse completamente cuando todos los elementos del software han sido identificados. Sin embargo, es posible listar las reglas que rigen la arquitectura de desarrollo – partición, agrupamiento, visibilidad– antes de conocer todos los elementos.


Vista Física

La vista física toma en cuenta primeramente los requisitos no funcionales del sistema tales como la disponibilidad, confiabilidad (tolerancia a fallas), rendimiento (throughput), y escalabilidad. El software ejecuta sobre una red de computadores o nodos de procesamiento (o tan solo nodos). Los variados elementos identificados –redes, procesos, tareas y objetos– requieren ser mapeados sobre los nodos. Esperamos que diferentes configuraciones puedan usarse: algunas para desarrollo y pruebas, otras para mostrar el sistema en varios sitios para distintos usuarios. Por lo tanto, la relación del software en los nodos debe ser altamente flexible y tener un impacto mínimo sobre el código fuente.


Escenarios

Los elementos de las cuatro vistas trabajan conjuntamente en forma natural mediante el uso de un conjunto pequeño de escenarios relevantes –instancias de casos de uso más generales– para los cuales describimos sus scripts correspondientes (secuencias de interacciones entre objetos y entre procesos) tal como lo describen Rubin y Goldberg. Los escenarios son de alguna manera una abstracción de los requisitos más importantes.

Su diseño se expresa mediante el uso de diagramas de escenarios y diagramas de interacción de objetos. Esta vista es redundante con las otras (y por lo tanto “+1”), pero sirve a dos propósitos principales:

• Como una guía para descubrir elementos arquitectónicos durante el diseño de arquitectura tal como lo describiremos más adelante

• Como un rol de validación e ilustración después de completar el diseño de arquitectura, en el papel y como punto de partido de las pruebas de un prototipo de la arquitectura.


Extraido de: 

http://cic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:modelo4_1.pdf

jueves, 29 de mayo de 2014

Marco Teorico

A continuación actualizo el la Historia del arte del proyecto

En el desarrollo de modelos de predicción de  accidentalidad de tránsito se han usado distintos enfoques que pasan por el uso de modelos basados en redes bayesianas, modelos de regresión, redes neuronales artificiales, modelos neuro-difusos,  series de tiempo y algoritmos de optimización bio-inspirada. A continuación se realizará un breve resumen de los trabajos previos caracterizando de manera general los objetivos generales y el modelo usado.

Dell Acqua y Russo en su trabajo (Dell’Acqua & Francesca, 2010) realizan un modelo de predicción de accidentes basado en un modelo de regresión multivariado con variables como el flujo de tráfico, ancho del carril, inclinación vertical, velocidad de cambio de la curvatura, su estudio fue aplicado en la provincia de Salermo al sur de Italia.

En (Deubleinm, Schubertb, Adeya, Köhler, & Faberd, Marzo 2013) se presenta una nueva metodología para la predicción de la ocurrencia de accidentes de tránsito.  Usando una combinación de tres métodos estadísticos: Actualización –gama para el manejo de las tasas de ocurrencia de accidentes con personas heridas, Un análisis de regresión de Poisson - logarítmica normal multivariada jerárquica para las correlaciones entre las variables independientes del modelo ( que representan las causas del accidentes ) y los valores de salida (representado por el número de accidentes), y por ultimo un algoritmo de inferencia usando Redes probabilísticas Bayesianas implementado por medio de técnicas de minería de datos, con el fin de representar la no linealidad entre las variables de entrada de la variables de salida del modelo y las incertidumbres presentes en desarrollo del modelo. Al final la metodología se usa para la identificación geo-referenciada de los tramos viales con mayor ocurrencia de accidentes y es aplicado a dos ciudades austriacas.

En el artículo (Rosas Jaimes, Campero Carmona, & Sánchez Flores, 2011)  se muestra otra implementación basada en reglas bayes. Para ello se usan tres distribuciones, la primera es un modelo de Poisson Mixto, que representa un promedio ponderado de tasas de ocurrencia de accidentes, el segundo es un modelo  Poisson – gamma de una variable, que introduce un efecto aleatorio a los errores de las variables. Finalmente, el tercer modelo es un modelo  Poisson – gamma de dos variables que especifica la relación entre la frecuencia de accidentes y el flujo vehicular. Su análisis es realizado en intersecciones viales, pues a partir de un análisis previo detectan que es donde ocurre el mayor número de accidentes. La aplicación del modelo predictivo la realizan en las vías rurales de Toluca, en el estado de México en México.

Los métodos estadísticos basados en regresiones han sido probados de manera continua en (Caliendoa, Guida, & Parisi, 2007). Construyen un modelo de predicción de choques enfocado a vías rurales multi –carril. Se usaron los modelos de regresión binomial, poisson y multi-nomial negativo para modelar la frecuencia de ocurrencia de accidentes, mientras que los parámetros del modelo se estimaron por el método de máxima verosimilitud y se realizó una prueban de verosimilitud generalizada para detectar las variables significativas que se deben incluir en la ecuación del modelo. Como variables candidatas explicativas se tomaron: longitud tramo, curvatura, tráfico promedio diario anual, distancia de visibilidad, coeficiente de fricción lateral, pendiente longitudinal, presencia de intersección, además se toma en cuenta el efecto de la precipitación y suposiciones sobre el tiempo de secado sobre un determinado material. Al final de la creación de los modelos los autores mencionan su efectividad en la detección de factores críticos, las predicciones  de los accidentes luego de cambiar los diseños de las vías.

En el trabajo (Deublein, Schubert, & Adey, 2013) se comparan dos métodos bayesianos para el desarrollo de modelos de predicción de accidentes: uno basado en el método de Bayes empírico  y otro que usa redes probabilísticas bayesianas. Ambos métodos son utilizados en el desarrollo de modelos de predicción  multivariada en eventos de accidentes útiles en los sistemas de gestión de seguridad.  El modelo es probado en la red vial rural de Austria, demostrando la efectividad de las predicciones de ambos modelos sin embargo se encuentra que el método que usa redes probabilísticas bayesianas tienen un mayor coeficiente de correlación que el encontrado por el método de bayes empírico.

(Li, Jiang, Yan, & Zhang, 2004) proponen un método de predicción  accidentes de tránsito basado en una red neural de retro-propagación (RP), teniendo en cuenta las deficiencias en la predicción de métodos lineales. Los valores de métodos tradicionales de predicción  de accidentes de tránsito se toman como entradas de una función no lineal, expresada en términos de una red neuronal RP, para que este proceso se efectué se propone una función (de mapeo) de alto nivel que relaciona las predicciones de los modelos con la función no lineal de la red. Al final del documento se muestra un ejemplo de una predicción global usando este método y se prueba la eficiencia del mismo a través de un ejemplo.


En el documento (A Ali & Bakheit, 20011) se analizan y predicen los accidentes de vías terrestres (RTA – Road traffic accidents) en Sudan  usando Redes Neuronales Artificiales (RNA), a partir del análisis de sucesos históricos prediciendo futuras tendencias, las variables de entrada en el modelo RNA fueron cuidadosamente seleccionados examinado la correlación entre el número de accidentes anual y algunos factores sociales y económicos como el crecimiento de la población anual, el producto interno bruto, el número de licencias entregadas anualmente , entre otras. Para una validación del modelo se usó la técnica de regresión por componentes principales (RCP). Ambos enfoques se usaron para modelar accidentes históricos de los años 1991 a 2009, con variables de entrada como población, número de vehículos en las vía, etc. Para evaluar los modelos se realizaron predicciones para los años 2005 a 2012, aunque ambos métodos presentaron valores muy similares en la predicción, pero el método de RNA proporciono un mejor coeficiente de determinación R2 que el método RCP. El estudio ratifico que las RNA son más adecuadas para interpolación (resultados del 2005 al 2009) que para extrapolación de datos (resultados del 2010 al 2012), pero pueden convertirse en una herramienta útil en el análisis y predicción de accidentes de tránsito y sus causas.

En el artículo de (Jadaan, Al-Fayyad, & Gammoh, 2014) se crea una modelo predictivo usando Redes Neuronales Artificiales, con el objetivo de detectar los  posibles accidentes de tránsito basados en información histórica su aplicación la realizan en la información de accidentalidad de Jordania.

Otro enfoque que hace uso de redes neuronales artificiales es mostrado en (Abou Amouna, Radwan, Al-kuwari, Hammuda, & Al-Khalifa, 2014), en este trabajo crean un modelo de predicción que pretende identificar los factores críticos de mayor efecto en las causas de accidentes de tránsito en Qatar y predecir el número total de accidentes para el año 2022. Para su implementación  usan los métodos de Regresión Lineal Múltiple y Redes Neuronales Artificiales. Los resultados obtenidos por ambas técnicas discutiendo su alcance y efectividad.

En (Hosseinpour, Shukri Yahaya, Mohammadreza Ghadiri, & Prasetijo, 2013) desarrollan  un sistema de inferencia Neuro-difuso para modelar accidentes de tránsito, usando como variables de entrada las características de las vías como: el ancho, el uso del suelo, los puntos de acceso, la densidad horizontal de curvatura, el grado de longitud.  Este modelo usa índices estadísticos de rendimiento usando los modelos de distribución Poisson, Binomial Negativa y modelos de regresión exponencial no lineal.

Otro enfoque se da usando  algoritmos de optimización bio-inspirados, en el artículo (Gharehchopogh, Asheghi Dizaji, & Aghighi, 2013) se presenta un método para determinar relaciones complejas entre los factores involucrados en un accidente y de esta forma modela un patrón de comportamiento, este patrón es detectado usando algoritmo de Optimización de partículas (PSO - Particle SwarmOptimization, por sus siglas en ingles).

En la Universidad Ohio (Sauser , 2007) se desarrolló un software que identifica la probabilidad de accidentes de tráfico en determinados momentos y lugares de las carreteras estatales. El modelo diseñado se basa en datos históricos de choques, en algoritmos estadísticos para el cálculo de niveles de riesgo sobre los segmentos de vías y cartografía para su visualización. Permitiendo establecer predicciones de los riesgos en un lugar específico de la red vial.  

La tesis doctoral de Thomas Jonsson (Jonsson, 2005) se desarrolla un modelo de accidentalidad para vías urbanas incluyendo intersecciones menores, en su estudio su principal objetivo es analizar el rendimiento de los modelos predictivos teniendo en cuenta varios factores como: las medidas de vulnerabilidad de usuarios viales, medidas de velocidad en tiempo real, y  la división de los accidentes vehiculares en dos grupos;  accidentes con un solo vehículo y accidentes entre vehículos. El estudio se realizó en 8 ciudades suecas, con información propia y a partir de reportes de accidentalidad oficiales. El modelo de accidentes fue desarrollado usando un modelamiento lineal generalizado con distribución Cuasi-Poisson, el modelo es desarrollado con un conjunto de datos es validado con otro conjunto para medir la efectividad del mismo. Las variables tomadas en cuenta en este estudio son: Vehículos por día, Número de peatones por día cruzando o caminando a través de una via, número de bicicletas por día sobre la vía, variación del uso del suelo en la vía (categorizando entre residencial, institucional, industrial o ninguno), tipo  de la vía (categorizado entre autopista, perimetral o central), visibilidad (calificando la visibilidad entre bueno, medio o  malo). Existencia de cruces dedicados para usuarios sobre la vía, límites de velocidad recomendados en cada tramo vial y la existencia de cualquier sitio de entrada y salida de automóviles de manera frecuente sobre la vía (como centros comerciales, grandes parqueaderos etc.).

El artículo (Zong, Xu, & Zhang, 2013) presenta una comparación entre dos técnicas de modelado: red bayesiana y  regresión, ambos son aplicados en el análisis de gravedad de accidentes, para lo cual se estudian de manera detallada los indicadores: número de víctimas mortales, número de lesiones y daños a la propiedad. Se aplican los dos métodos en los datos publicados por el ministerio de seguridad pública de China entre 2009 a 2011 sobre tramos de la red vial de este país y se identifican los principales factores de contribución y sus efectos. En los resultados se muestra que la bondad del ajuste de red bayesiana es más alta que la de los modelos de regresión en el modelado de la gravedad del accidente,  mejorando la precisión en los resultados predichos. En el artículo se hace énfasis en ver la predicción de accidentes como uno de los pasos esenciales en el  proceso de  gestión de accidentes y de esta forma tomar medidas efectivas en la reducción de impactos de accidente y mejorar la seguridad vial.

En el trabajo (Monfared, Soori, Mehrabi, Hatami, & Delpisheh, 2013) se muestra un estudio dirigido a predecir las muertes por accidentes de tránsito en Irán, para ello se usa un modelo cualitativo basado en Box- Jenkins (conocido como ARIMA1) el cual tiene en cuenta el análisis de tendencias y los cambios estacionales y aleatorios. Para mejorar la predicción se usan tendencias mensuales en lugar de tendencias anuales, una regresión múltiple fue utilizada para extraer la relación determinista entre la variable dependiente y las series de las variables independientes, para procesar los resultados de la series de tiempo, se elimina el componente no estacionario, se identifica el modelo especifico de ARIMA estimando sus parámetros, se realiza un análisis residual y por último se evalúa el modelo predictivo. Para probar la eficiencia del modelo se compararon los resultados del modelo predictivo con datos previamente reportados oficialmente, encontrando que un índice de exactitud de predicción del 93%.

En (Wang, Wang, & Zhang, 2012) se propone un modelo que determina la causalidad de los accidentes en vías, analizando factores dinámicos   como el flujo de tráfico o el clima. Además se propone un sistema de manejo de tráfico basado en DAI (Detección automática de incidentes) que pueda predecir la probabilidad de un accidente en un determinado estado basado en los factores dinámicos  con el objetivo de apoyar la toma de decisiones en la prevención accidentes. Esta predicción se asume como proceso dinámico con un componente aleatorio y otro con una correlación entre factores, es decir que existe un componente con estados dinámicos y otro componente con factores  estrechamente relacionados a patrones de causas identificados en datos históricos.

En el documento  (Ramani & Shanthi, 2012) se muestra un trabajo de investigación exploratoria en el uso de técnicas de minería de datos para predicción  patrones de accidentes de tránsito con peatones involucrados. Por una parte se tipifica la información de las causas de accidentes, identificando un patrón de comportamiento de sus características inherentes. En este estudio, se usan 4 algoritmos de árboles de decisión: árbol aleatorio, C4.5, J48 y Decisión “Stump”,  los cuales son conectados a una base de datos de accidentes mortales ocurridos durante el año 2010 en Gran Bretaña. Por último se utiliza un método de validación cruzada con k iteraciones,  para realizar una comparación de rendimiento de los 4 modelos propuestos a partir de la medición de la estimación no sesgada de cada uno.

(Accident Analysis and Prediction of Model on National Highways, 2012) se muestra un análisis de las variaciones anuales y mensuales de la tasa de accidentes en determinados tramos de vía,  así como los cambios en dicha tasa a partir del aumento del volumen de tráfico. En los  datos de accidentalidad del 2000 al 2010 en la India  se las se analiza varios factores que influyen en la variación de la tasa de accidentalidad como el tipo de vehículo participante en el accidente  (vehículos de dos ruedas, automóviles, autobuses y vehículos pesados) o la fecha del suceso. Al final del estudio se desarrolla un modelo heurístico de predicción de accidentes basado en el tráfico promedio diario anual y las condiciones de la vía.


Bibliografía

A Ali, G., & Bakheit, C. S. (20011). Comparative analysis and prediction of traffic accidents in Sudan using artificial neural networks and statistical methods. Proceedings of the 30th Southern African Transport Conference (SATC), (págs. 202-214). Pretoria, South Africa.
Abou Amouna, M., Radwan, A., Al-kuwari, L., Hammuda, A., & Al-Khalifa, K. (2014). Prediction of Road Accidents in Qatar by 2022. International Journal of Mechanical, Industrial Science and Engineering, 8(2), 472-477.
Accident Analysis and Prediction of Model on National Highways. (2012). International Journal of Advanced Technology in Civil Engineering, 1(2), 25-30.
Caliendoa, C., Guida, M., & Parisi, A. (2007). A crash-prediction model for multilane roads. Accident Analysis and Prevention, 39, 657-670.
Dell’Acqua , G., & Francesca, R. (2010). Accident prediction models for road networks. 4th International Symposium on Highway Geometric Design, (pág. 11). Valencia, España.
Deublein, M., Schubert, M., & Adey, B. (2013). Prediction of road accidents: Comparison of two Bayesian methods. Structure and Infrastructure Engineering: Maintenance, Management, Life-Cycle Design and Performance.
Deubleinm, M., Schubertb, M., Adeya, B. T., Köhler, J., & Faberd, M. (Marzo 2013). Prediction of road accidents: A Bayesian hierarchical approach. Accident Analysis & Prevention, 51.
Gharehchopogh, F., Asheghi Dizaji, Z., & Aghighi, Z. (Agosto de 2013). Evaluation of particle swarm optimization algorithm in prediction of the car accidents on the roads: a case study. International Journal on Computational Sciences & Applications (IJCSA), 1-12.
Hosseinpour, M., Shukri Yahaya, A., Mohammadreza Ghadiri, S., & Prasetijo, J. (2013). Application of Adaptive Neuro-fuzzy Inference System for road accident prediction. KSCE Journal of Civil Engineering, 17(7), 1761-1772.
Jadaan, K., Al-Fayyad, M., & Gammoh, H. (Junio de 2014). Prediction of Road Traffic Accidents in Jordan using Artificial Neural Network (ANN). Journal of Traffic and Logistics Engineering, 2(2), 92-94.
Jonsson, T. (2005). Predictive models for accidents on urban links. Lund University, Lund Institute of Technology, Techovology and Society, Traffic of Technology. Lund , Suecia: Lund University.
Li, X., Jiang, G., Yan, Y., & Zhang, N. (2004). Research on comprehensive prediction method of road accidents based on bp neural network. Applications of Advanced Technologies in Transportation Engineering, (págs. 636-640). Beijing, China.
Monfared, A., Soori, H., Mehrabi, Y., Hatami, H., & Delpisheh, A. (2013). Prediction of fatal road traffic crashes in iran using the box-jenkins time series model. Journal of Asian Scientific Research, 3(4), 425-430.
Ramani, R., & Shanthi, S. (2012). Classifier prediction evaluation in modeling road traffic accident data. Computational Intelligence & Computing Research (ICCIC), IEEE, (págs. 1-4).
Rosas Jaimes, O. A., Campero Carmona, A. C., & Sánchez Flores, O. L. (2011). Prediction under bayesian approach of car accidents in urban intersections. Submitted to the 3rd International Conference on Road Safety and Simulation, (pág. 19). Indianapolis, USA.
Sauser , B. (2 de 04 de 2007). MIT Technology Review. Recuperado el 28 de 05 de 2014, de http://www.technologyreview.com/news/407619/predicting-highway-crashes/
Wang, Y., Wang, Z., & Zhang, C. (Noviembre de 2012). Research of method of propensity prediction for road traffic safety based on trans-department information. International Journal of Computer and Communication Engineering, 379-382.
Zong, F., Xu, H., & Zhang, H. (2013). Prediction for traffic accident severity: comparing the bayesian network and regression models. Mathematical Problems in Engineering, 1-9.




martes, 27 de mayo de 2014

Hisoria del Arte

Algunos otros articulos revisados del escogido


Dell Acqua y Russo en su trabajo  “Accident prediction models for road networks” realizan un modelo de predicción de accidentes basado en un modelo de regresión multivariado con variables como el flujo de tráfico, ancho del carril, inclinación vertical, velocidad de cambio de la curvatura, su estudio fue aplicado en la provincia de Salermo al sur de Italia.

En el trabajo “Prediction of road accidents: A Bayesian hierarchical approach” se presenta una nueva metodología para la predicción de la ocurrencia de accidentes de tránsito.  Usando una combinación de tres métodos estadísticos: Actualización –gama para el manejo de las tasas de ocurrencia de accidentes con personas heridas, Un análisis de regresión de Poisson - logarítmica normal multivariada jerárquica para las correlaciones entre las variables independientes del modelo ( que representan las causas del accidentes ) y los valores de salida (representado por el número de accidentes), y por ultimo un algoritmo de inferencia usando Redes probabilísticas Bayesianas implementado por medio de técnicas de minería de datos, con el fin de representar la no linealidad entre las variables de entrada de la variables de salida del modelo y las incertidumbres presentes en desarrollo del modelo. Al final la metodología se usa para la identificación geo-referenciada de los tramos viales con mayor ocurrencia de accidentes y es aplicado a dos ciudades austriacas.

En el artículo “Prediction under bayesian ap proach of car accidents in urban intersections”  se muestra otro implementación basada en reglas bayes. Para ello se usan tres distribuciones, la primera es un modelo de Poisson Mixto, que representa un promedio ponderado de tasas de ocurrencia de accidentes, el segundo es un modelo  Poisson – gamma de una variable, que introduce un efecto aleatorio a los errores de las variables. Finalmente, el tercer modelo es un modelo  Poisson – gamma de dos variables que especifica la relación entre la frecuencia de accidentes y el flujo vehicular. Su análisis es realizado en intersecciones viales, pues a partir de un análisis previo detectan que es donde ocurre el mayor número de accidentes. La aplicación del modelo predictivo la realizan en las vías rurales de Toluca, en el estado de México en México.
Los métodos estadísticos basados en regresiones han sido probados de manera continua en “A crash-prediction model for multilane roads”. Construyen un modelo de predicción de choques enfocado a vías rurales multi –carril. Se usaron los modelos de regresión binomial, poisson y multi-nomial negativo para modelar la frecuencia de ocurrencia de accidentes, mientras que los parámetros del modelo se estimaron por el método de máxima verosimilitud y se realizó una prueban de verosimilitud generalizada para detectar las variables significativas que se deben incluir en la ecuación del modelo. Como variables candidatas explicativas se tomaron: longitud tramo, curvatura, tráfico promedio diario anual, distancia de visibilidad, coeficiente de fricción lateral, pendiente longitudinal, presencia de intersección, además se toma en cuenta el efecto de la precipitación y suposiciones sobre el tiempo de secado sobre un determinado material. Al final de la creación de los modelos los autores mencionan su efectividad en la detección de factores críticos, las predicciones  de los accidentes luego de cambiar los diseños de las vías.

En el artículo de “Prediction of Road Traffic Accidents in Jordan using Artificial Neural Network” se crea una modelo predictivo usando Redes Neuronales Artificiales, con el objetivo de detectar los  posibles accidentes de tránsito basados en información histórica su aplicación la realizan en la información de accidentalidad de Jordania.

Otro enfoque que hace uso de redes neuronales artificiales es mostrado en “Prediction of Road Accidents in Qatar by 2022”, en este trabajo crean un modelo de predicción que pretende identificar los factores críticos de mayor efecto en las causas de accidentes de tránsito en Qatar y predecir el número total de accidentes para el año 2022. Para su implementación  usan los métodos de Regresión Lineal Múltiple y Redes Neuronales Artificiales. Los resultados obtenidos por ambas técnicas discutiendo su alcance y efectividad.
En “Application of Adaptive Neuro-fuzzy Inference System for road accident prediction” desarrollan  un sistema de inferencia Neuro-difuso para modelar accidentes de tránsito, usando como variables de entrada las características de las vías como: el ancho, el uso del suelo, los puntos de acceso, la densidad horizontal de curvatura, el grado de longitud.  Este modelo usa índices estadísticos de rendimiento usando los modelos de distribución Poisson, Binomial Negativa y modelos de regresión exponencial no lineal.

Otro enfoque se da usando  algoritmos de optimización bio-inspirados, en el artículo: “Evaluation of particle swarm optimization algorithm in prediction of the car accidents on the roads: a case study” se presenta un método para determinar relaciones complejas entre los factores involucrados en un accidente y de esta forma modela un patrón de comportamiento, este patrón es detectado usando algoritmo de Optimización de partículas (PSO - Particle Swarm 
Optimization, por sus siglas en ingles).

En la Universidad Ohio se desarrolló un software que identifica la probabilidad de accidentes de tráfico en determinados momentos y lugares de las carreteras estatales. El modelo diseñado se basa en datos históricos de choques, en algoritmos estadísticos para el cálculo de niveles de riesgo sobre los segmentos de vías y cartografía para su visualización. Permitiendo establecer predicciones de los riesgos en un lugar específico de la red vial.  

La tesis doctoral de Thomas Jonsson se desarrolla un modelo de accidentalidad para vías urbanas incluyendo intersecciones menores, en su estudio su principal objetivo es analizar el rendimiento de los modelos predictivos teniendo en cuenta varios factores como: las medidas de vulnerabilidad de usuarios viales, medidas de velocidad en tiempo real, y  la división de los accidentes vehiculares en dos grupos;  accidentes con un solo vehículo y accidentes entre vehículos. El estudio se realizó en 8 ciudades suecas, con información propia y a partir de reportes de accidentalidad oficiales. El modelo de accidentes fue desarrollado usando un modelamiento lineal generalizado con distribución Cuasi-Poisson, el modelo es desarrollado con un conjunto de datos es validado con otro conjunto para medir la efectividad del mismo. Las variables tomadas en cuenta en este estudio son: Vehículos por día, Número de peatones por día cruzando o caminando a través de una via, número de bicicletas por día sobre la vía, variación del uso del suelo en la vía (categorizando entre residencial, institucional, industrial o ninguno), tipo  de la vía (categorizado entre autopista, perimetral o central), visibilidad (calificando la visibilidad entre bueno, medio o  malo). Existencia de cruces dedicados para usuarios sobre la vía, límites de velocidad recomendados en cada tramo vial y la existencia de cualquier sitio de entrada y salida de automóviles de manera frecuente sobre la vía (como centros comerciales, grandes parqueaderos etc.).

En el trabajo “Prediction of road accidents: comparison of two Bayesian methods” se comparan dos métodos bayesianos para el desarrollo de modelos de predicción de accidentes: uno basado en el método de Bayes empírico  y otro que usa redes probabilísticas bayesianas. Ambos métodos son utilizados en el desarrollo de modelos de predicción  multivariada en eventos de accidentes útiles en los sistemas de gestión de seguridad.  El modelo es probado en la red vial rural de Austria, demostrando la efectividad de las predicciones de ambos modelos sin embargo se encuentra que el método que usa redes probabilísticas bayesianas tienen un mayor coeficiente de correlación que el encontrado por el método de bayes empírico.

jueves, 22 de mayo de 2014

El tema

Luego de un largo debate y de las tortuosos diálogos , con nuestro grupo decidimos realizar un proyecto relacionado con accidentalidad  vial, la idea en términos generales es realizar un sistema que en tiempo real con ciertas variables ambientales , de características estructurales de la vía y de flujo de automóviles defina un riesgo de accidentalidad en un tramo vial. La idea es implementar dicho algoritmo en una aplicación movil para que sea consultado por los usuarios.

El Planteamiento del problema inicial está definido de la siguiente forma:

Actualmente en el ámbito local no se conocen sistemas que permitan alertar a peatones y conductores de los niveles de riesgo de accidentalidad en una determinada vía, que tome en cuenta información histórica y variables que puedan influir en la ocurrencia de un evento en un momento determinado.

La identificación de sectores con mayor probabilidad de ocurrencia de accidentalidad generalmente se realiza de manera estática, tomando exclusivamente el número de accidentes previos en el lugar, sin tener en cuenta las variables que caracterizan la ocurrencia de dichos accidentes (tipo de vehículo, hora, clima, etc.) y su dinámica, haciendo imposible caracterizar un nivel de riesgo a partir de un estado particular.

Con el crecimiento continuo del flujo de automóviles y de la infraestructura vial se espera que el número de accidentes crezca de manera proporcional, si no se toman medidas de control que permitan a peatones y conductores mantenerse alerta a factores de riesgo presentes en el medio no podrán tomar de manera anticipada decisiones que puedan evitar algún incidente.

La medidas de control de accidentalidad regularmente van enfocadas al planteamiento de campañas de prevención en determinados causas de riesgo sin embargo existen factores que se escapan a un control humano (ej. el clima), en cuyo caso el establecimiento de alertas puede ser de gran ayuda para su prevención.

Los Objetivos se definieron como : 

General

Proponer un sistema de alerta de riesgo de accidentalidad, mediante la formulación de un modelo de cálculo de niveles de riesgo en tramos viales, para la generación de avisos oportunos a usuarios del sistema vial urbano de la ciudad Bogotá D.C.

Específicos

• Definir las variables de mayor impacto en la ocurrencia de accidentes de tránsito, analizando la información histórica existente y estudios previos similares, para involucrarlas en el modelo de cálculo de niveles de riesgo.

• Formular un modelo de cálculo de niveles de riesgo, estudiando las relaciones entre las variables definidas aplicando modelos matemáticos y/o probabilísticos, que permita categorizar el riesgo de accidentalidad en un tramo vial.

• Desarrollar una aplicación móvil, aplicando el modelo formulado, para visualizar las alertas de niveles de riesgo en tramos viales.


A continuación se presentaran algunos de los trabajos previos (Historia del arte) , relacionados al proyecto propuesto: 


En el desarrollo de modelos de predicción de  accidentalidad de tránsito se han usado distintos enfoques que pasan por el uso de modelos basados en redes bayesianas, modelos de regresión, redes neuronales artificiales, modelos neuro-difusos,  series de tiempo y algoritmos de optimización bio-inspirada. A continuación se realizará un breve resumen de los trabajos previos caracterizando de manera general los objetivos generales y el modelo usado. 


Dell Acqua y Russo en su trabajo  “Accident prediction models for road networks” realizan un modelo de predicción de accidentes basado en un modelo de regresión multivariado con variables como el flujo de tráfico, ancho del carril, inclinación vertical, velocidad de cambio de la curvatura, su estudio fue aplicado en la provincia de Salermo al sur de Italia. 


En el trabajo “Prediction of road accidents: A Bayesian hierarchical approach” se presenta una nueva metodología para la predicción de la ocurrencia de accidentes de tránsito.  Usando una combinación de tres métodos estadísticos: Actualización –gama para el manejo de las tasas de ocurrencia de accidentes con personas heridas, Un análisis de regresión de Poisson - logarítmica normal multivariada jerárquica para las correlaciones entre las variables independientes del modelo ( que representan las causas del accidentes ) y los valores de salida (representado por el número de accidentes), y por ultimo un algoritmo de inferencia usando Redes probabilísticas Bayesianas implementado por medio de técnicas de minería de datos, con el fin de representar la no linealidad entre las variables de entrada de la variables de salida del modelo y las incertidumbres presentes en desarrollo del modelo. Al final la metodología se usa para la identificación geo-referenciada de los tramos viales con mayor ocurrencia de accidentes y es aplicado a dos ciudades austriacas.

En el artículo “Prediction under bayesian ap proach of car accidents in urban intersections”  se muestra otro implementación basada en reglas bayes. Para ello se usan tres distribuciones, la primera es un modelo de Poisson Mixto, que representa un promedio ponderado de tasas de ocurrencia de accidentes, el segundo es un modelo  Poisson – gamma de una variable, que introduce un efecto aleatorio a los errores de las variables. Finalmente, el tercer modelo es un modelo  Poisson – gamma de dos variables que especifica la relación entre la frecuencia de accidentes y el flujo vehicular. Su análisis es realizado en intersecciones viales, pues a partir de un análisis previo detectan que es donde ocurre el mayor número de accidentes. La aplicación del modelo predictivo la realizan en las vías rurales de Toluca, en el estado de México en México.

http://onlinepubs.trb.org/onlinepubs/conferences/2011/RSS/3/Rosas-Jaimes.pdf

Los métodos estadísticos basados en regresiones han sido probados de manera continua en “A crash-prediction model for multilane roads”. Construyen un modelo de predicción de choques enfocado a vías rurales multi –carril. Se usaron los modelos de regresión binomial, poisson y multi-nomial negativo para modelar la frecuencia de ocurrencia de accidentes, mientras que los parámetros del modelo se estimaron por el método de máxima verosimilitud y se realizó una prueban de verosimilitud generalizada para detectar las variables significativas que se deben incluir en la ecuación del modelo. Como variables candidatas explicativas se tomaron: longitud tramo, curvatura, trafico promedio diario anual, distancia de visibilidad, coeficiente de fricción lateral, pendiente longitudinal, presencia de intersección, además se toma en cuenta el efecto de la precipitación y suposiciones sobre el tiempo de secado sobre un determinado material. Al final de la creación de los modelos los autores mencionan su efectividad en la detección de factores críticos, las predicciones  de los accidentes luego de cambiar los diseños de las vías.incluyendo además del  flujo de tráfico, geometría de la infraestructura y factores medioambientales, otras variables relacionadas a la seguridad como la distancia visual de detención y características de la superficie del pavimento En el artículo de “Prediction of Road Traffic Accidents in Jordan using Artificial Neural Network” se crea una modelo predictivo usando Redes Neuronales Artificiales, con el objetivo de detectar los  posibles accidentes de tránsito basados en información histórica su aplicación la realizan en la información de accidentalidad de Jordania.

Otro enfoque que hace uso de redes neuronales artificiales es mostrado en “Prediction of Road Accidents in Qatar by 2022”, en este trabajo crean un modelo de predicción que pretende identificar los factores críticos de mayor efecto en las causas de accidentes de tránsito en Qatar y predecir el número total de accidentes para el año 2022. Para su implementación  usan los métodos de Regresión Lineal Múltiple y Redes Neuronales Artificiales. Los resultados obtenidos por ambas técnicas discutiendo su alcance y efectividad.

http://waset.org/publications/9997805/prediction-of-road-accidents-in-qatar-by-2022

En “Application of Adaptive Neuro-fuzzy Inference System for road accident prediction” desarrollan  un sistema de inferencia Neuro-difuso para modelar accidentes de tránsito, usando como variables de entrada las características de las vías como: el ancho, el uso del suelo, los puntos de acceso, la densidad horizontal de curvatura, el grado de longitud.  Este modelo usa índices estadísticos de rendimiento usando los modelos de distribución Poisson, Binomial Negativa y modelos de regresión exponencial no lineal.

http://download.springer.com/static/pdf/398/art%253A10.1007%252Fs12205-013-0036-3.pdf?auth66=1401564045_36045824f9c8d8ce764644923c47fbeb&ext=.pdf


Otro enfoque se da usando  algoritmos de optimización bio-inspirados, en el artículo: “Evaluation of particle swarm optimization algorithm in prediction of the car accidents on the roads: a case study” se presenta un método para determinar relaciones complejas entre los factores involucrados en un accidente y de esta forma modela un patrón de comportamiento, este patrón es detectado usando algoritmo de Optimización de partículas (PSO - Particle Swarm Optimization, por sus siglas en ingles).


Una aplicación similar que pretende  predecir la accidentalidad fue propuesta en la Universidad Ohio en donde se propone una aplicación que conciertos características medio-ambientales muestre lo tramos viales con mayor riesgo de accidentes. Esa aplicación fue diseñada para facilitar el control de las vías en el estado de Ohio en estados unidos. 














jueves, 15 de mayo de 2014

Marco de desarrollo de software SCRUM

En el desarrollo del proyecto pensamos usar SCRUM como marco de desarrollo , a continuación mostrare algunas características del mismo.

En la siguiente fugurase muestra  el flujo del marco de trabajo , identificando los roles, reuniones, artefactos y las reglas de trabajo:


A continuación se daran algunas definciones del marco de desarrollo Scrum extraidos de la guia Scrum (desarrollado por scrum.org).

Teoría de Scrum 

Scrum se basa en la teoría de control de procesos empírico o empirismo. El empirismo asegura
que el conocimiento procede de la experiencia y de tomar decisiones basándose en lo que se
conoce. Scrum emplea un enfoque iterativo e incremental para optimizar la predictibilidad y el
control del riesgo.

Tres pilares soportan toda la implementación del control de procesos empírico: transparencia,
inspección y adaptación


  • Roles - El Equipo Scrum (Scrum Team) 
El Equipo Scrum consiste en un Dueño de Producto (Product Owner), el Equipo de Desarrollo (Development Team) y un Scrum Master. Los Equipos Scrum son auto-organizados y multifuncionales. Los equipos autoorganizados eligen la mejor forma de llevar a cabo su trabajo y no son dirigidos por personas externas al equipo. Los equipos multifuncionales tienen todas las competencias necesarias para llevar a cabo el trabajo sin depender de otras personas que no son parte del equipo. El modelo de equipo en Scrum está diseñado para optimizar la flexibilidad, la creatividad y la productividad.

El Dueño de Producto (Product Owner) 

El Dueño de Producto es el responsable de maximizar el valor del producto y del trabajo del Equipo de Desarrollo. El cómo se lleva a cabo esto podría variar ampliamente entre distintas organizaciones, Equipos Scrum e individuos. 

El Dueño de Producto es la única persona responsable de gestionar la Lista del Producto (Product Backlog). La gestión de la Lista del Producto incluye:

-  Expresar claramente los elementos de la Lista del Producto;
-  Ordenar los elementos en la Lista del Producto para alcanzar los objetivos y misiones de la mejor manera posible;
-  Optimizar el valor del trabajo desempeñado por el Equipo de Desarrollo;
- Asegurar que la Lista del Producto es visible, transparente y clara para todos, y que muestra aquello en lo que el equipo trabajará a continuación; y,
- Asegurar que el Equipo de Desarrollo entiende los elementos de la Lista del Producto al nivel necesario

El Equipo de Desarrollo (Development Team) 

El Equipo de Desarrollo consiste en los profesionales que desempeñan el trabajo de entregar un Incremento de producto “Terminado”, que potencialmente se pueda poner en producción, al final de cada Sprint. Solo los miembros del Equipo de Desarrollo participan en la creación del Incremento.

Los Equipos de Desarrollo son estructurados y empoderados por la organización para organizar y gestionar su propio trabajo. La sinergia resultante optimiza la eficiencia y efectividad del Equipo de Desarrollo.

Los Equipos de Desarrollo tienen las siguientes características:

-  Son autoorganizados. Nadie (ni siquiera el Scrum Master) indica al Equipo de Desarrollo cómo convertir elementos de la Lista del Producto en Incrementos de funcionalidad potencialmente desplegables;

-  Los Equipos de Desarrollo son multifuncionales, contando como equipo con todas las habilidades necesarias para crear un Incremento de producto;

- Scrum no reconoce títulos para los miembros de un Equipo de Desarrollo, todos son desarrolladores, independientemente del trabajo que realice cada persona; no hay excepciones a esta regla;

- Scrum no reconoce sub-equipos en los equipos de desarrollo, no importan los dominios particulares que requieran ser tenidos en cuenta, como pruebas o análisis de negocio; no hay excepciones a esta regla; y,

- Los Miembros individuales del Equipo de Desarrollo pueden tener habilidades especializadas y áreas en las que estén más enfocados, pero la responsabilidad recae en el Equipo de desarrollo como un todo.

Tamaño del Equipo de Desarrollo 

El tamaño óptimo del Equipo de Desarrollo es lo suficientemente pequeño como para permanecer ágil y lo suficientemente grande como para completar una cantidad de trabajo significativa. Tener menos de tres miembros en el Equipo de Desarrollo reduce la interacción y resulta en ganancias de productividad más pequeñas. Los Equipos de Desarrollo más pequeños podrían encontrar limitaciones en cuanto a las habilidades necesarias durante un Sprint, haciendo que el Equipo de Desarrollo no pudiese entregar un Incremento que potencialmente se pueda poner en producción. Tener más de nueve miembros en el equipo requiere demasiada coordinación. Los Equipos de Desarrollo grandes generan demasiada complejidad como para que pueda gestionarse mediante un proceso empírico.

El Scrum Master 

El Scrum Master es el responsable de asegurar que Scrum es entendido y adoptado. Los Scrum Masters hacen esto asegurándose de que el Equipo Scrum trabaja ajustándose a la teoría, prácticas y reglas de Scrum.

 El Scrum Master es un líder que está al servicio del Equipo Scrum. El Scrum Master ayuda a las personas externas al Equipo Scrum a entender qué interacciones con el Equipo Scrum pueden ser de ayuda y cuáles no. El Scrum Master ayuda a todos a modificar estas interacciones para maximizar el valor creado por el Equipo Scrum.

  • Eventos de Scrum 
En Scrum existen eventos predefinidos con el fin de crear regularidad y minimizar la necesidad de reuniones no definidas en Scrum. Todos los eventos son bloques de tiempo (time-boxes), de tal modo que todos tienen una duración máxima. Una vez que comienza un Sprint, su duración es fija y no puede acortarse o alargarse. Los demás eventos pueden terminar siempre que se alcance el objetivo del evento, asegurando que se emplee una cantidad apropiada de tiempo sin permitir desperdicio en el proceso. 

El Sprint 

El corazón de Scrum es el Sprint, es un bloque de tiempo (time-box) de un mes o menos durante el cual se crea un incremento de producto “Terminado”, utilizable y potencialmente desplegable. Es más conveniente si la duración de los Sprints es consistente a lo largo del esfuerzo de desarrollo. Cada nuevo Sprint comienza inmediatamente después de la finalización del Sprint previo. 

Los Sprints contienen y consisten de la Reunión de Planificación del Sprint (Sprint Planning Meeting), los Scrums Diarios (Daily Scrums), el trabajo de desarrollo, la Revisión del Sprint (Sprint Review), y la Retrospectiva del Sprint (Sprint Retrospective). 

Durante el Sprint: 
- No se realizan cambios que puedan afectar al Objetivo del Sprint (Sprint Goal); 
-  Los objetivos de calidad no disminuyen; y, 
- El alcance puede ser clarificado y renegociado entre el Dueño de Producto y el Equipo de desarrollo a medida que se va aprendiendo más. 

Cada Sprint puede considerarse un proyecto con un horizonte no mayor de un mes. Al igual que los proyectos, los Sprints se usan para lograr algo. Cada Sprint tiene una definición de qué se va a construir, un diseño y un plan flexible que guiará la construcción y el trabajo y el producto resultante. 

Los Sprints están limitados a un mes calendario. Cuando el horizonte de un Sprint es demasiado grande la definición de lo que se está construyendo podría cambiar, la complejidad podría elevarse y el riesgo podría aumentar. Los Sprints habilitan la predictibilidad al asegurar la inspección y adaptación del progreso al menos en cada mes calendario. Los Sprints también limitan el riesgo al costo de un mes calendario. 

Cancelación de un Sprint 

Un Sprint puede ser cancelado antes de que el bloque de tiempo llegue a su fin. Solo el Dueño 
de Producto tiene la autoridad para cancelar el Sprint, aunque puede hacerlo bajo la influencia 
de los interesados, del Equipo de Desarrollo o del Scrum Master.


Reunión de Planificación de Sprint (Sprint Planning Meeting) 

El trabajo a realizar durante el Sprint se planifica en la Reunión de Planificación de Sprint. Este plan se crea mediante el trabajo colaborativo del Equipo Scrum completo. 

La Reunión de Planificación de Sprint tiene un máximo de duración de ocho horas para un Sprint  de un mes. Para Sprints más cortos, el evento es usualmente más corto. El Scrum Master se asegura de que el evento se lleve a cabo y que los asistentes entiendan su propósito. El Scrum Master enseña al Equipo Scrum a mantenerse dentro del bloque de tiempo. 

La Reunión de Planificación de Sprint responde a las siguientes preguntas: 
- ¿Qué puede entregarse en el Incremento resultante del Sprint que comienza? 
- ¿Cómo se conseguirá hacer el trabajo necesario para entregar el Incremento? 


Objetivo del Sprint (Sprint Goal) 

El Objetivo del Sprint es una meta establecida para el Sprint que puede ser alcanzada mediante la implementación de la Lista de Producto. Proporciona una guía al Equipo de Desarrollo acerca de por qué está construyendo el incremento. Es creado durante la reunión de Planificación del Sprint. El objetivo del Sprint ofrece al equipo de desarrollo cierta flexibilidad con respecto a la funcionalidad implementada en el Sprint. Los elementos de la Lista del Producto seleccionados ofrecen una función coherente, que puede ser el objetivo del Sprint. El objetivo del Sprint puede  representar otro nexo de unión que haga que el Equipo de Desarrollo trabaje en conjunto y no en iniciativas separadas.

Scrum Diario (Daily Scrum) 

El Scrum Diario es una reunión con un bloque de tiempo de 15 minutos para que el Equipo de Desarrollo sincronice sus actividades y cree un plan para las siguientes 24 horas. Esto se lleva a  cabo inspeccionando el trabajo avanzado desde el último Scrum Diario y haciendo una  proyección acerca del trabajo que podría completarse antes del siguiente.

El Scrum Diario se realiza a la misma hora y en el mismo lugar todos los días para reducir la complejidad. Durante la reunión, cada miembro del Equipo de Desarrollo explica:

- ¿Qué hice ayer que ayudó al Equipo de Desarrollo a lograr el Objetivo del Sprint?
- ¿Qué haré hoy para ayudar al Equipo de Desarrollo a lograr el Objetivo del Sprint?
- ¿Veo algún impedimento que evite que el Equipo de Desarrollo o yo logremos el  Objetivo del Sprint?

El Equipo de Desarrollo usa el Scrum Diario para evaluar el progreso hacia el Objetivo del Sprint y para evaluar qué tendencia sigue este progreso hacia la finalización del trabajo contenido en la Lista del Sprint. El Scrum Diario optimiza las posibilidades de que el Equipo de Desarrollo cumpla el Objetivo del Sprint. Cada día, el Equipo de Desarrollo debería entender cómo intenta trabajar en conjunto como un equipo autoorganizado para lograr el Objetivo del Sprint y crear el Incremento esperado hacia el final del Sprint. El Equipo de Desarrollo o los miembros del equipo a menudo se vuelven a reunir inmediatamente después del Scrum Diario, para tener discusiones detalladas, o para adaptar, o replanificar el resto del trabajo del Sprint.

Revisión de Sprint (Sprint Review) 

Al final del Sprint se lleva a cabo una Revisión de Sprint para inspeccionar el Incremento y adaptar la Lista de Producto si fuese necesario. Durante la Revisión de Sprint, el Equipo Scrum y los interesados colaboran acerca de lo que se hizo durante el Sprint. Basándose en esto, y en  cualquier cambio a la Lista de Producto durante el Sprint, los asistentes colaboran para determinar las siguientes cosas que podrían hacerse para optimizar el valor. Se trata de una reunión informal, no una reunión de seguimiento, y la presentación del Incremento tiene como objetivo facilitar la retroalimentación de información y fomentar la colaboración.

Se trata de una reunión restringida a un bloque de tiempo de cuatro horas para Sprints de un mes. Para Sprints más cortos, se reserva un tiempo proporcionalmente menor. El Scrum Master se asegura de que el evento se lleve a cabo y que los asistentes entiendan su propósito. El Scrum Master enseña a todos a mantener el evento dentro del bloque de tiempo fijado.

La Revisión de Sprint incluye los siguientes elementos: 

- Los asistentes son el Equipo Scrum y los interesados clave invitados por el Dueño de 
Producto; 
- El Dueño de Producto explica qué elementos de la Lista de Producto se han “Terminado” y cuales no se han “Terminado”; 
- El Equipo de Desarrollo habla acerca de qué fue bien durante el Sprint, qué problemas aparecieron y cómo fueron resueltos esos problemas; 
- El Equipo de Desarrollo demuestra el trabajo que ha “Terminado” y responde preguntas acerca del Incremento; 
- El Dueño de Producto habla acerca de la Lista de Producto en el estado actual. Proyecta fechas de finalización probables en el tiempo basándose en el progreso obtenido hasta la fecha (si es necesario); 
- El grupo completo colabora acerca de qué hacer a continuación, de modo que la Revisión del Sprint proporcione información de entrada valiosa para Reuniones de Planificación de Sprints subsiguientes. 
- Revisión de cómo el mercado o el uso potencial del producto podría haber cambiado lo que  es de más valor para hacer a continuación; y, 
- Revisión de la línea de tiempo, presupuesto, capacidades potenciales y mercado para la próxima entrega prevista del producto. 

Retrospectiva de Sprint (Sprint Retrospective) 

La Retrospectiva de Sprint es una oportunidad para el Equipo Scrum de inspeccionarse a sí mismo y crear un plan de mejoras que sean abordadas durante el siguiente Sprint. 

El propósito de la Retrospectiva de Sprint es: 

- Inspeccionar cómo fue el último Sprint en cuanto a personas, relaciones, procesos y 
herramientas; 
- Identificar y ordenar los elementos más importantes que salieron bien y las posibles 
mejoras; y, 
- Crear un plan para implementar las mejoras a la forma en la que el Equipo Scrum 
desempeña su trabajo. 

  • Artefactos de Scrum 
Los artefactos de Scrum representan trabajo o valor en diversas formas que son útiles para proporcionar transparencia y oportunidades para la inspección y adaptación. Los artefactos definidos por Scrum están diseñados específicamente para maximizar la transparencia de la información clave, que es necesaria para asegurar que todos tengan el mismo entendimiento del artefacto. 

Lista de Producto (Product Backlog) 

La Lista de Producto es una lista ordenada de todo lo que podría ser necesario en el producto, y es la única fuente de requisitos para cualquier cambio a realizarse en el producto. El Dueño de Producto (Product Owner) es el responsable de la Lista de Producto, incluyendo su contenido, disponibilidad y ordenación. 

Una Lista de Producto nunca está completa. El desarrollo más temprano de la misma solo refleja los requisitos conocidos y mejor entendidos al principio. La Lista de Producto evoluciona a medida de que el producto y el entorno en el que se usará también lo hacen. La Lista de Producto es dinámica; cambia constantemente para identificar lo que el producto necesita para ser adecuado, competitivo y útil. Mientras el producto exista, su Lista de Producto también existe. 

La Lista de Producto enumera todas las características, funcionalidades, requisitos, mejoras y  correcciones que constituyen cambios a ser hechos sobre el producto para entregas futuras. Los elementos de la Lista de Producto tienen como atributos la descripción, la ordenación, la estimación y el valor. 

El refinamiento (refinement) de la Lista de Producto es el acto de añadir detalle, estimaciones y orden a los elementos de la Lista de Producto. Se trata de un proceso continuo, en el cual el  Dueño de Producto y el Equipo de Desarrollo colaboran acerca de los detalles de los elementos  de la Lista de Producto. Durante el refinamiento de la Lista de Producto, se examinan y revisan  sus elementos. El Equipo Scrum decide cómo y cuándo se hace el refinamiento. Este usualmente  consume no más del 10% de la capacidad del Equipo de Desarrollo. Sin embargo, los elementos  de la Lista de Producto pueden actualizarse en cualquier momento por el Dueño de Producto o a criterio suyo. 

El Equipo de Desarrollo es el responsable de proporcionar todas las estimaciones. El Dueño de Producto podría influenciar al Equipo ayudándoles a entender y seleccionar soluciones de compromiso, pero las personas que harán el trabajo son las que hacen la estimación final.

Lista de Pendientes del Sprint (Sprint Backlog) 

La Lista de Pendientes del Sprint es el conjunto de elementos de la Lista de Producto seleccionados para el Sprint, más un plan para entregar el Incremento de producto y conseguir el Objetivo del Sprint. La Lista de Pendientes del Sprint es una predicción hecha por el Equipo de Desarrollo acerca de qué funcionalidad formará parte del próximo Incremento y del trabajo necesario para entregar esa funcionalidad en un Incremento “Terminado”.

La Lista de Pendientes del Sprint hace visible todo el trabajo que el Equipo de Desarrollo identifica como necesario para alcanzar el Objetivo del Sprint. La Lista de Pendientes del Sprint es un plan con un nivel de detalle suficiente como para que los cambios en el progreso se puedan entender en el Scrum Diario. El Equipo de Desarrollo modifica la Lista de Pendientes del Sprint durante el Sprint y esta Lista de Pendientes del Sprint emerge a lo largo del Sprint. Esto ocurre a medida que el Equipo de Desarrollo trabaja sobre el plan y aprende más acerca del trabajo necesario para conseguir el Objetivo del Sprint.


Seguimiento del Progreso del Sprint 

En cualquier momento durante un Sprint, es posible sumar el trabajo restante total en los elementos de la Lista de Pendientes del Sprint. El Equipo de Desarrollo hace seguimiento de este trabajo restante total al menos en cada Scrum Diario para proyectar la posibilidad de conseguir el Objetivo del Sprint. Haciendo seguimiento del trabajo restante a lo largo del Sprint, el Equipo de Desarrollo puede gestionar su progreso.

Incremento 

El Incremento es la suma de todos los elementos de la Lista de Producto completados durante un Sprint y el valor de los incrementos de todos los Sprints anteriores. Al final de un Sprint, el nuevo Incremento debe estar “Terminado”, lo cual significa que está en condiciones de ser utilizado y que cumple la Definición de “Terminado” del Equipo Scrum. El incremento debe estar en condiciones de utilizarse sin importar si el Dueño de Producto decide liberarlo o no.


Definición de “Terminado” (Definition of “Done”) 

Cuando un elemento de la Lista de Producto o un Incremento se describe como “Terminado”, todo el mundo debe entender lo que significa “Terminado”. Aunque esto varía significativamente para cada Equipo Scrum, los miembros del Equipo deben tener un  entendimiento compartido de lo que significa que el trabajo esté completado, para asegurar la transparencia. Esta es la definición de “Terminado” para el Equipo Scrum y se utiliza para evaluar cuándo se ha completado el trabajo sobre el Incremento de producto.


Extraido de:

Guia SCRUM - Scrum.org
https://www.scrum.org/Portals/0/Documents/Scrum%20Guides/2013/Scrum-Guide-ES.pdf#zoom=100