Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Proyecto de Tesis
Dedicatoria
Mayra Villanueva
Manuel Medina
Agradecimiento
Mayra Villanueva
Manuel Medina
Índice:
Dedicatoria........................................................................................................................ 2
Agradecimiento ................................................................................................................ 3
Resumen ........................................................................................................................... 9
Abstract ........................................................................................................................... 10
CAPÍTULO I: PLAN DE INVESTIGACIÓN ............................................................... 11
1.1. Realidad Problemática ..................................................................................... 11
1.2. Formulación del Problema ............................................................................... 12
1.3. Hipótesis .......................................................................................................... 12
1.4. Objetivo General .............................................................................................. 12
1.5. Objetivos Específicos ...................................................................................... 12
1.6. Población y Muestra ........................................................................................ 12
1.6.1 Población: ..................................................................................................... 12
1.6.2 Muestra ......................................................................................................... 13
1.7. Técnica y procedimiento de recolección de datos ........................................... 13
1.8. Marco Conceptual ............................................................................................ 14
1.8.1 Sistemas Basados En Conocimiento ............................................................ 14
1.8.2 Redes Neuronales Artificiales ...................................................................... 14
1.8.3 Software ....................................................................................................... 14
1.8.4 Metodología de Desarrollo de Software....................................................... 15
1.9. Métodos y Procedimientos............................................................................... 15
1.9.1. Método ...................................................................................................... 15
CAPÍTULO II: MARCO TEÓRICO .............................................................................. 16
2.1. Sistemas Basados en Conocimiento ................................................................ 16
2.1.1. Definición ................................................................................................. 16
2.1.2. Ventajas .................................................................................................... 17
2.1.3. Clasificación ............................................................................................. 17
2.1.4. Estructura .................................................................................................. 17
2.1.5. Desarrollo de un Sistema Basado en Conocimiento ................................. 18
2.1.6. Campos de Aplicación .............................................................................. 20
2.1.7. Limitaciones ............................................................................................. 21
2.2. Redes Neuronales Artificiales.......................................................................... 22
2.2.1. Definición: ................................................................................................ 22
2.2.2. Modelo Biológico: .................................................................................... 22
2.2.3. Modelo Artificial ...................................................................................... 23
2.2.4. Características ........................................................................................... 26
2.2.5. Arquitectura .............................................................................................. 26
Índice de Ilustraciones:
Figura 9: Esquema de una estructura directa. Fuente: (Serrano, Soria, & Martín,
2010) ................................................................................................................... 29
Figura 10: Esquema de una estructura inversa. Fuente: (Serrano, Soria, &
Martín, 2010) ...................................................................................................... 29
Figura 11: Esquema de una estructura con retardo. Fuente: (Serrano, Soria, &
Martín, 2010) ...................................................................................................... 30
Figura 12: Esquema de un cancelador activo de ruido. Fuente: (Serrano, Soria, &
Martín, 2010) ...................................................................................................... 30
Figura 13: Categorías de aprendizaje. Fuente: (Serrano, Soria, & Martín, 2010)
............................................................................................................................ 31
Figura 14: Arquitectura centrada en Datos. Fuente: (Pressman, 2010). ............. 43
Figura 15: Arquitectura de flujo de datos. Fuente: (Pressman, 2010). ............... 43
Figura 16: Arquitectura de programa principal/subprograma. Fuente: (Pressman,
2010). .................................................................................................................. 44
Figura 17: Arquitectura en capas. Fuente: (Pressman, 2010). ............................ 45
Figura 18: Arquitectura propuesta del Sistema Basado en Conocimiento. Fuente:
Elaboración propia.............................................................................................. 58
Figura 19: Modelo de red neuronal artificial. Fuente: Elaboración propia. ....... 65
Figura 20: Interfaz de Inicio. Fuente: Elaboración propia.................................. 80
Figura 21: Interfaz EquipoProyecto. Fuente: Elaboración propia. ..................... 81
Figura 22: Interfaz ReqDocCon. Fuente: Elaboración propia. ........................... 81
Figura 23: Interfaz Proyecto1. Fuente: Elaboración propia. .............................. 82
Figura 24: Interfaz Proyecto2. Fuente: Elaboración propia. .............................. 82
Figura 25: Interfaz RecursosYCliente. Fuente: Elaboración propia................... 83
Figura 26: Interfaz Resultados. Fuente: Elaboración propia. ............................. 83
Índice de Tablas:
Resumen
Abstract
1.3. Hipótesis
1.6.1 Población:
1.6.2 Muestra
𝑍 2 × 𝑃 × (1 − 𝑃)
𝑛=
𝐸2
Donde:
n=Tamaño de muestra representativa que deseamos obtener.
Z=valor correspondiente a la distribución de Gauss.
P=proporción en que la variable estudiada se da en la población.
E=Error de estimación.
De acuerdo a las variables dadas a continuación:
Z=1.96, para el 95% de confianza.
P=0.92 (caso más desfavorable, desconocido)
E= 8%
Obtenemos:
n= (1.962 * 0.92 * (1-0.92))/0.082
n=44.1784 dando así un aproximado de una muestra de 44 proyectos
software en la ciudad de Trujillo.
TÉCNICA INSTRUMENTOS
Observación Cronómetro, grabadora de voz
Entrevista Hoja de entrevista, grabadora de
voz
Encuesta Cuestionario
Investigación Hoja de Lectura
bibliográfica
Definición:
Definición:
1.8.3 Software
Definición:
Definición:
1.9.Métodos y Procedimientos
1.9.1. Método
2.1.1. Definición
Sistemas
Inteligente
s
Sistemas
Basados en
Conocimiento
Sistemas
Expertos
2.1.2. Ventajas
En (Sajja & Akerkar, 2010) y (Palma Méndez & Marín Morales, 2008) se
muestran algunas ventajas de los sistemas basados en conocimiento, estas son:
Algunos problemas no tienen soluciones algorítmicas tratables en tiempo
real, por ellos los sistemas basados en conocimiento tratan de usar
conocimientos y heurísticas para resolver estos problemas.
Son útiles cuando no se tiene un experto disponible en el momento.
Extraer el conocimiento de expertos es costoso pero, una vez
representado, se vuelve perdurable y reutilizable en varios sistemas.
Permiten utilizar personal no especializado para resolver problemas.
Puede servir de ayuda a personal en formación, y en algunas ocasiones
prescindir de expertos con el consiguiente ahorro para las empresas.
Las decisiones se realizan de una manera más eficiente, las soluciones no
solo son más rápidas si no también más objetivas.
Son útiles cuando el conocimiento de más de un experto tiene que ser
agrupado en una sola plataforma.
2.1.3. Clasificación
2.1.4. Estructura
Las bases de conocimiento contendrán los conocimientos sobre los dominios que
va a necesitar el sistema basado en conocimiento; mientras que el motor de
inferencia, explotará estas bases de conocimiento para obtener una salida.
Además de estos dos elementos, los sistemas basados en conocimiento suelen
poseer interfaces de entrada y salida para comunicarse con los usuarios, con
dispositivos físicos o con otros sistemas basados en conocimiento (Palma
Méndez & Marín Morales, 2008).
En la Figura 2 se muestra la estructura general de un sistema basado en
conocimiento.
Motor de
Inferencia
Interfaz de Sistema
Basado En
Usuario
Conocimiento
Base de
Conocimientos
Expertos
componentes
Validaciones y Usuarios
Ingeniero del verificaciones
Conocimiento del
conocimiento
Representación
del
conocimiento
Metodologías de Desarrollo:
Cuando recién se comenzaban a desarrollar los primeros sistemas expertos, los
desarrolladores utilizaban el método de desarrollo de prueba y error, el cual
consistía en que el ingeniero preguntaba al experto como resolver un problema,
lo codificaba en forma de reglas y luego se probaba el prototipo haciendo
diversas versiones. Este método causaba muchos problemas como enormes
retrasos y costos, perdida de fiabilidad y la incapacidad de crear sistemas muy
grandes. Por ello luego se usó el modelo en cascada para el desarrollo de estos
sistemas, pero el problema con este modelo era que para pasar a la siguiente
fase, la fase anterior debe estar cerrada, y esto no suele darse en los sistemas
basados en conocimiento. Por ello luego se comenzó a usar el modelo en espiral,
el cual construye el sistema en ciclos, siendo este el más adecuado. (Palma
Méndez & Marín Morales, 2008). A partir de este modelo se han desarrollado
diversas metodologías de desarrollo de Sistemas basados en conocimiento, una
de ellas propuesta por Jhon Durkin la cual consta de 6 fases las cuales son:
Evaluación.
Adquisición del conocimiento.
Diseño.
Pruebas.
Documentación.
Mantenimiento.
En (Peña Ayala, 2006) se listan algunos campos en los cuales se aplican los
sistemas basados en conocimiento estos son:
Lenguaje natural.
Realidad virtual.
Redes neuronales.
Juegos.
Sistemas expertos.
Robótica.
Sistemas de planeación.
Reconocimiento de imágenes.
Traductores.
Solución de problemas.
Sistemas evolutivos.
Aprendizaje.
Sistemas Tutores.
2.1.7. Limitaciones
2.2.1. Definición:
El cerebro está compuesto por células vivas llamadas neuronas, las neuronas se
diferencian del resto de células biológicas ya que tienen la capacidad de
comunicarse entre ellas. En la Figura 4 se muestra la estructura de una neurona
biológica.
Wij: Pesos
X1
W1j
X2
Función de
Función de
de
W2j
propagación
activación
Salida Yi:
salida
Regla
Wnj
Xn
+1, 𝑠𝑖 𝑥 ≥ 0 [-1,1]
𝑦={
−1, 𝑠𝑖 𝑥 < 0
Lineal a tramos 𝑥, 𝑠𝑖 − 1 ≤ 𝑥 ≤ 1 [-1,1]
𝑦={ +1, 𝑠𝑖 𝑥 > 1
−1, 𝑠𝑖 𝑥 < −1
Sigmoidea 1 [0,1]
𝑦=
1 + 𝑒 −𝑥
𝑦 = tanh 𝑥 [-1,1]
Sinusoidal 𝑦 = sin 𝜔. 𝑥 + 𝜑 [-1,1]
Tabla 2: Funciones de activación más usadas.
2.2.4. Características
Las características de las redes neuronales artificiales, son muy semejantes a las
de las redes neuronales biológicas, en (Vega Huerta, Cortez Vásquez, Huayna,
Alarcón Loayza, & Romero Naupari, 2009) se presentan las siguientes
características principales:
Aprenden a través de ejemplos.
Inferencia estadística.
Adaptabilidad.
Dilema plasticidades y estabilidad.
Capacidad de generalización.
Tolerante a fallas.
Rápida implantación.
2.2.5. Arquitectura
2.2.6. Estructura
Figura 10: Esquema de una estructura inversa. Fuente: (Serrano, Soria, &
Martín, 2010)
2.2.7. Fases
Aprendizaje
Aprendizaje
Aprendizaje
no
Supervisado
Supervidado
Por
Competitivo y
corrección de Por refuerzo Estocástico Hebbiano
cooperativo
error
2.2.7.2. Operación
Reconocimiento de voz.
Sonar y radas.
Eliminación activa de ruido.
Economía Concesión de créditos.
Detección de posibles fraudes en tarjetas de crédito.
Determinación de la posibilidad de quiebra de un
banco.
Predicción del gasto eléctrico de empresas y centrales.
Cambio de moneda.
Tendencias a corto y mediano plazo en la bolsa de
valores.
Predicción de stocks.
Medio Predicción de irradiación solar y aparición de manchas
ambiente solares.
Predicción de niveles tóxicos de ozono en zonas
urbanas y rurales.
Predicción de variaciones globales de temperatura.
Tabla 4: Aplicaciones de las redes neuronales artificiales.
2.2.9. Ventajas
Las redes neuronales tienes ciertas ventajas que las hacen atractivas para ser
usadas en una gran cantidad de problemas prácticos, en (Serrano, Soria, &
Martín, 2010) se presentan algunas ventajas de las redes neuronales artificiales.
En la Tabla 5 se presentan estas ventajas, con una breve descripción.
Ventaja Descripción
Son sistemas Una neurona es un elemento no lineal por lo que su
distribuidos no interconexión entre ellas (red neuronal) también será un
lineales. dispositivo no lineal, permitiendo simular sistemas no
lineales y caóticos, lo cual no se puede realizar con los
sistemas clásicos lineales.
Son sistemas Al ser un sistema distribuido, permite el fallo de algunos
tolerantes a elementos individuales (neuronas) sin alterar
fallos. significativamente la respuesta total del sistema.
Adaptabilidad. Tienen la capacidad de modificar los parámetros de los que
depende su funcionamiento, de acuerdo con los cambios
que se produzcan en su entorno de trabajo, hay que tener
en cuenta que estos cambios no pueden ser excesivamente
grandes ya que generaría un sistema inestable, este es el
problema conocido como dilema plasticidad-estabilidad.
Establecen Las redes neuronales son capaces de relacionar dos
relaciones no conjuntos de datos, comparados con los métodos
lineales entre estadísticos que realizan la misma tarea, tienen la ventaja
datos. que los datos no tiene por qué cumplir las condiciones de
linealidad, gausianidad y estacionariedad.
Posibilidad de Esta posibilidad permite que estos sistemas puedan ser
implementación aplicados en sistemas de tiempo real, simulando sistemas
en VLSI (very biológicos mediante elementos de silicio.
large scale
integration)
Tabla 5: Ventajas de las redes neuronales artificiales.
2.2.10. Limitaciones
2.3. Software
2.3.1. Definición
2.3.2. Características
El software no se “desgasta”
El software es inmune a los males ambientales que desgastan el hardware.
2.3.4. Tipos
2.3.7. Componentes
Programas
Los programas son conjuntos de instrucciones que proporcionan la
funcionalidad deseada cuando son ejecutadas por el ordenador. Están
escritos usando lenguajes específicos que los ordenadores pueden leer y
ejecutar, tales como lenguaje ensamblador, Basic, FORTRAN, COBOL,
C. Los programas también pueden ser generados usando generadores de
programas.
Datos
Los programas proporcionan la funcionalidad requerida manipulando
datos. Usan datos para ejercer el control apropiado en lo que hacen. El
mantenimiento y las pruebas de los programas también necesitan datos. El
diseño del programa asume la disponibilidad de las estructuras de datos
tales como bases de datos y archivos que contienen datos.
Documentos
Además de los programas y los datos, los usuarios necesitan también una
explicación de cómo usar el programa. Documentos como manuales de
usuario y de operación son necesarios para permitir a los usuarios operar
con el sistema. Los documentos también son requeridos por las personas
encargadas de mantener el software para entender el interior del software
y modificarlo, en el caso en que sea necesario.
2.3.8. Arquitecturas
(Pressman, 2010) Identifica tres razones clave por las que es importante la
arquitectura del software:
Las representaciones de la arquitectura del software permiten la
comunicación entre todas las partes (participantes) interesadas en el
desarrollo de un sistema basado en computadora.
La arquitectura resalta las primeras decisiones que tendrán un efecto
profundo en todo el trabajo de ingeniería de software siguiente y,
también importante, en el éxito último del sistema como entidad
operacional.
La arquitectura “constituye un modelo relativamente pequeño y
asequible por la vía intelectual sobre cómo está estructurado el sistema y
la forma en la que sus componentes trabajan juntos”.
Aunque en los últimos 60 años se han creado millones de sistemas basados en
computadoras, la gran mayoría se clasifica en un número relativamente pequeño
de estilos de arquitectura:
Los procesos principales son aquellos que resultan útiles e inician o realizan el
desarrollo, la explotación o el mantenimiento del software durante su ciclo de
vida; los procesos de soporte son los que sirven de apoyo al resto y se aplican en
cualquier punto del ciclo de vida, y los procesos de la organización son los que
se emplean para llevar a cabo funciones tales como la gestión, la formación del
personal o la mejora del proceso. En la Tabla 8, se describen de manera general
los procesos principales:
2.4.1. Definición
2.4.2. Ventajas
Son muchas las ventajas que puede aportar el uso de una metodología. En la
Tabla 9 se presentan algunas de ellas desde distintos puntos de vista.
(Laboratorio Nacional de Calidad del Software, 2009)
Ventajas
Desde el punto de vista de Desde el punto de Desde el punto de vista
gestión: vista de los ingenieros del cliente o usuario:
de software:
Facilitar la tarea de Ayudar a la Garantía de un
planificación. comprensión del determinado nivel de
Facilitar la tarea de problema. calidad en el
control y seguimiento de Optimizar el producto final.
un proyecto. conjunto y cada una Confianza en los
Mejorar la relación de las fases del plazos de tiempo
coste/beneficio proceso de fijados en la
Optimizar el uso de desarrollo. definición del
recursos disponibles. Facilitar el proyecto.
Facilitar la evaluación de mantenimiento del Definir el ciclo de
resultados y cumplimiento producto final. vida que más se
de los objetivos. Permitir la adecue a las
Facilitar la comunicación reutilización de condiciones y
efectiva entre usuarios y partes del producto. características del
desarrolladores. desarrollo.
Tabla 9: Ventajas del uso de Metodología de Desarrollo de Software.
2.4.3. Clasificación
Criterio Alternativas
Requerimientos Están bien definidos
No están bien definidos
Son fijos
Son cambiantes
Documentación Es necesaria una amplia documentación.
Es necesaria pero no debe ser muy
amplia.
No es necesaria.
Fechas límite de Son flexibles, pueden cambiar
entregas Son estrictas, no pueden cambiar
Cliente Esta activamente involucrado
Solo participa en reuniones
Trabajo dentro del equipo de desarrollo
Poseen conocimiento sobre el proyecto
No son conocedores
Riesgos Es una prioridad minimizar los riesgos
No es prioridad el análisis de riesgos
2.4.6. Componentes
Una metodología define una estrategia global para enfrentarse con el proyecto.
Entre los elementos que forman parte de una metodología podemos mencionar
los siguientes:
Fases: tareas a realizar en cada fase.
Productos: entradas y salidas de cada fase, documentos.
Procedimientos y herramientas: apoyo para la realización de cada tarea.
Criterios de evaluación: del proceso y del producto. Saber si se han
logrado los objetivos. (Laboratorio Nacional de Calidad del Software,
2009).
2.4.7. Limitaciones
3.1. Arquitectura
Para un primer prototipo se consideran como salida cuatro metodologías, las cuales
son el modelo en Cascada, Rational Unified Process, SCRUM y Xtreme
Programming.
Metodología Patrón de Salida
Cascada 1000
RUP 0100
SCRUM 0010
XP 0001
Tabla 16: Patrones de Salida.
Pseudocódigo:
-Entrada: Patrones de entrada, patrones de salida.
-Salida: Pesos de la red neuronal artificial [0,1].
-Inicializar los pesos de la red con valores aleatorios pequeños [0,1]
Hacer
Para cada (patrón de entrada)
salida_deseada = salidas (RNA, patrón_entrada); // calcular la
//salida deseada de la red neuronal para un patrón de entrada determinado
salida_calculada = carcular_salida (RNA, patrón_entrada);
//calcular la salida de la red neuronal para un patrón de entrada determinado, con los
//pesos actuales de la RNA
Error = (salida_deseada – salida_calculada) //calcular el error
calcular_pesos_oculta_salida (RNA) //Calcular la variación de
todos los pesos, desde la capa oculta, hacia la capa de salida
calcular_pesos_entrada_oculta (RNA) //Calcular la variación de
todos los pesos, desde la capa de entrada, hacia la capa oculta
actualizar_pesos (RNA) //Actualizar los pesos de la red
Hasta: Todos los patrones de entrada hayan sido clasificados correctamente.
Retornar: Los pesos de la red neuronal artificial
-SCRUM:
Entrega de productos en ciclos cortos.
Se adapta rápidamente a los cambios.
Requiere un equipo con experiencia.
No existe una amplia documentación.
-XP:
Adecuado para construir software de alta calidad.
Se enfoca en satisfacer las expectativas del cliente.
La calidad se mejora a lo largo de todo el proceso de desarrollo ya que
resuelve defectos en etapas tempranas y proveyendo una constante
retroalimentación del producto.
El cliente forma parte del equipo de desarrollo y provee los detalles
requeridos.
Requiere que el equipo se conforme de desarrolladores calificados.
XP es adecuado para trabajar con sistemas que ya existen.
Puede ser usado en distintos dominios de aplicación.
Es adecuado para proyectos con baja criticidad.
Adecuado para proyectos que no requieren documentación.
No provee herramientas de apoyo, depende del usuario escoger las
herramientas apropiadas.
Se enfoca en la simplicidad y en el desarrollo rápido.
XP reduce los plazos de entrega lo cual lleva a una inversión menor y
reduce los gastos operativos.
XP se adecua mejor para equipos de pequeños y medianos. Un equipo
ideal de XP debe tener entre 3 a 20 miembros.
Es adecuado para proyectos donde ocurren cambios.
XP es adecuado para proyectos en donde se requieren hacer pruebas
constantes al código.
Es adecuado para proyectos pequeños, medianos o grandes.
Se adecua mejor en equipos de trabajo que se encuentran en una misma
locación.
A continuación se definen las reglas en lenguaje natural que serán usadas para la
selección de cada metodología.
Regla LN 1: Si el equipo de trabajo tiene poca experiencia(3) y es
inestable(5), los requerimientos ya están definidos(11), y son estables(13),
la documentación es necesaria(15), las revisiones y el control son
estrictos(17), es necesario minimizar el uso de recursos(19), se hará
mantenimiento al sistema en el futuro(21) , el proyecto es grande (largo,
costoso y complicado)(25) y su criticidad es mediana(27), no existe presión
para una rápida implementación(30), y la solución y objetivos son claros y
definidos(31), la metodología será Cascada.
calidad del software debe ser alta(39), el cliente forma parte del equipo(41),
la metodología será SCRUM.
Para esto usaremos una librería en java de Redes Neuronales, la cual contiene el
algoritmo backpropagation el cual nos permitirá entrenar nuestra red neuronal,
para obtener los pesos necesarios para realizar la tarea de selección de una
metodología, para ello definimos en un archivo .pat el número de reglas, el
número de neuronas en la capa de entrada, el número de neuronas en la capa de
salida, y los patrones de entrada y salida, necesarios para el entrenamiento.
Número de reglas: 28
Número de neuronas en la capa de entrada: 42
Número de neuronas en la capa de salida: 4
TRABAJOS FUTUROS
CONCLUSIONES
RECOMENDACIONES
Vega Huerta, H., Cortez Vásquez, A., Huayna, A. M., Alarcón Loayza, L., &
Romero Naupari, P. (2009). Reconocimiento de Patrones mediante Redes
Neuronales Artificiales. Revista de Ingeniería de Sistemas e Informática, 17-26.
Yague, A., Rodríguez, P., & Garbajosa, J. (2008). La implantación de métodos
ágiles: Ventajas y Problemas. Madrid.
ANEXOS
Inicio:
Nombre de la persona entrevistada: Hiroshi Hiromoto
Experto en el tema de: Agile – SCRUM master
Fecha de la entrevista: 27/Nov/2015
Preguntas:
1.- Metodologías de desarrollo de software:
-¿Por qué se debe utilizar una metodología para el desarrollo de un proyecto
software?
Nos brinda un marco de trabajo que permite settear expectativas entre los diversos
stakeholders (incluyendo el equipo de desarrollo). Además de ser una guía sobre la
forma de trabajo.
-¿Cuáles considera que son las metodologías más usadas en la actualidad para el
desarrollo de un proyecto de software?
Scrum, Kanban, Moprosoft.
-¿Cuáles son los criterios más importantes que se deben tomar en cuenta al
momento de elegir una metodología?
Tamaño del proyecto, riesgos, dominio del negocio y equipo de desarrollo.
-¿Si se tiene poco tiempo para desarrollar el proyecto software o se requiere que el
desarrollo sea lo más rápido posible, es conveniente utilizar la metodología Scrum?
Si
-¿Si las revisiones al proyecto son constantes y/o formales, es conveniente usar la
metodología Scrum?
Si.
-¿Siendo la criticidad de un proyecto baja, media o alta, para cuál o cuáles de ellas
es más conveniente usar la metodología Scrum?
Para todas.
-¿La metodología Scrum es más apropiada para ser usada con equipos de trabajo
estables (no cambia su composición) o inestables?
Más adecuada para equipos estables.
-¿La metodología Scrum es más apropiada para ser usada con equipos de trabajo
que se encuentran en una misma locación o distribuidos geográficamente?
Más adecuada para equipos que se encuentran en un misma locación.
-¿Si se requiere llevar un control estricto del desarrollo del proyecto, es conveniente
usar la metodología Scrum?
No.