Sei sulla pagina 1di 90

Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de

una Metodología de Desarrollo de Software en la creación de un Proyecto Software

UNIVERSIDAD NACIONAL DE TRUJILLO

FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS

ESCUELA ACADEMICO PROFESIONAL DE INFORMÁTICA

“SISTEMA BASADO EN CONOCIMIENTO MEDIANTE REDES


NEURONALES ARTIFICIALES PARA LA SELECCIÓN DE UNA
METODOLOGÍA DE DESARROLLO DE SOFTWARE EN LA CREACIÓN DE
UN PROYECTO SOFTWARE”

Proyecto de Tesis

PROPUESTO POR: Mitchell Paulo Blancas Núñez infomitchell@gmail.com

ELABORADO POR: Mayra Isabel Villanueva Ruiz mayraisabel.ruiz@gmail.com


Medina Vega Manuel Alejandro manuel.mv1191@gmail.com

AREA DEL PROYECTO: Inteligencia Artificial

Trujillo, 9 de Diciembre del 2015

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 1


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Dedicatoria

Dedicado a las personas que


más amo, mis padres que
siempre han depositado la
confianza en mí y me han
motivado a seguir adelante.

Mayra Villanueva

Dedicado a todas las personas


que se dedican a desarrollar
software que beneficie la vida de
las personas.

Manuel Medina

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 2


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Agradecimiento

Agradezco a Dios por haberme


acompañado y guiado a lo largo de
mi carrera, a mis padres por los
valores que me han inculcado, a mi
asesor por su tiempo y
conocimientos que me
transmitieron, a Manuel por haber
sido un excelente compañero de
tesis y a Luis por su paciencia y
amor incondicional.

Mayra Villanueva

Gracias a mi familia por todo el


apoyo y motivación durante estos
5 años, en especial a mis padres,
y a mi asesor que siempre nos
orientó en la realización de este
proyecto de tesis.

Manuel Medina

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 3


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Í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

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 4


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

2.2.5.1. Según el número de capas: ....................................................................... 26


2.2.5.2. Según el tipo de conexiones: .................................................................... 27
2.2.5.3. Según el grado de conexión: ..................................................................... 28
2.2.6. Estructura .................................................................................................. 28
2.2.6.1. Estructura directa ...................................................................................... 29
2.2.6.2. Estructura inversa ..................................................................................... 29
2.2.6.3. Estructura con retardo ............................................................................... 30
2.2.6.4. Cancelador de ruido .................................................................................. 30
2.2.7. Fases ......................................................................................................... 31
2.2.7.1. Entrenamiento ........................................................................................... 31
2.2.7.2. Operación.................................................................................................. 33
2.2.8. Campos de aplicación ............................................................................... 33
2.2.9. Ventajas .................................................................................................... 34
2.2.10. Limitaciones ............................................................................................. 35
2.3. Software ........................................................................................................... 36
2.3.1. Definición ................................................................................................. 36
2.3.2. Características ........................................................................................... 36
2.3.3. Ventajas de la Ingeniería de Software ...................................................... 37
2.3.4. Tipos ......................................................................................................... 37
2.3.5. Procesos del Software ............................................................................... 39
2.3.6. Modelos de Proceso del Software ............................................................ 39
2.3.7. Componentes ............................................................................................ 40
2.3.8. Arquitecturas ............................................................................................ 41
2.3.9. Desarrollo de Software ............................................................................. 45
2.4. Metodologías de Desarrollo de Software ......................................................... 48
2.4.1. Definición ................................................................................................. 48
2.4.2. Ventajas .................................................................................................... 48
2.4.3. Clasificación ............................................................................................. 49
2.4.4. Principales Metodologías ......................................................................... 50
2.4.5. Criterios de Selección ............................................................................... 54
2.4.6. Componentes ............................................................................................ 56
2.4.7. Limitaciones ............................................................................................. 56
CAPÍTULO III: RESULTADOS ................................................................................... 57
3.1. Arquitectura ..................................................................................................... 57
3.2. Comparación entre modelos de redes neuronales artificiales .......................... 59
3.3. Comparación entre los algoritmos de entrenamiento sobre redes neuronales
artificiales .................................................................................................................... 61

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 5


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

3.4. Razones para considerar el algoritmo Back-propagation como método de la


investigación................................................................................................................ 63
3.5. Patrones de Entrada (Criterios de selección): .................................................. 64
3.6. Patrones de Salida: ........................................................................................... 65
3.7. Modelo de la Red Neuronal Artificial: ............................................................ 65
3.8. Algoritmo Back-propagation ........................................................................... 66
3.9. Desarrollo del Sistema Basado en Conocimiento ............................................ 67
3.9.1. Adquisición del Conocimiento ................................................................. 67
3.9.2. Análisis del Conocimiento ....................................................................... 70
3.9.3. Representación del Conocimiento ............................................................ 71
3.9.4. Implementación del Conocimiento........................................................... 78
3.10. Diseño de interfaces ......................................................................................... 80
CAPÍTULO IV: DISCUSIÓN ........................................................................................ 84
TRABAJOS FUTUROS ............................................................................................. 84
CONCLUSIONES ...................................................................................................... 84
RECOMENDACIONES ............................................................................................. 84
CAPÍTULO V: REFERENCIAS BIBLIOGRÁFICAS ................................................. 85
ANEXOS ........................................................................................................................ 87
1 Instrumentos de Recopilación de Información: ................................................... 87

Índice de Ilustraciones:

 Figura 1: Intersección entre Sistemas Inteligentes, Sistemas Basados en


Conocimiento y Sistemas Expertos. Fuente: Elaboración propia....................... 16
 Figura 2: Estructura general de un Sistema Basado en Conocimiento. Fuente:
Elaboración propia. ............................................................................................. 18
 Figura 3: Desarrollo de un Sistema Basado en Conocimiento. Fuente: (Sajja &
Akerkar, Knowledge-Based Systems for Development , 2010)......................... 19
 Figura 4: Estructura de una neurona biológica. Fuente: (Bertona, 2005)........... 22
 Figura 5: Componentes de una Neurona artificial. Fuente: (Bertona, 2005) ..... 24
 Figura 6: Esquema de una Red neuronal monocapa. Fuente: (Serrano, Soria, &
Martín, 2010) ...................................................................................................... 27
 Figura 7: Esquema de una red neuronal multicapa. Fuente: (Serrano, Soria, &
Martín, 2010) ...................................................................................................... 27
 Figura 8: Red neuronal recurrente. Fuente: (Serrano, Soria, & Martín, 2010) .. 28

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 6


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 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

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 7


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Índice de Tablas:

 Tabla 1: Técnicas e Instrumentos de Recolección de Datos .............................. 13


 Tabla 2: Funciones de activación más usadas. ................................................... 25
 Tabla 3: Algoritmos de aprendizaje más conocidos. .......................................... 32
 Tabla 4: Aplicaciones de las redes neuronales artificiales. ................................ 34
 Tabla 5: Ventajas de las redes neuronales artificiales. ....................................... 35
 Tabla 6: Categorías de Software de Computadora. Fuente: (Pressman, 2010). . 38
 Tabla 7: Modelos de Proceso de software. Fuente: (Sommerville, 2011) .......... 40
 Tabla 8: Procesos del ciclo de vida del software. Fuente: (Pinzon & Guevara
Bolaños, 2006) .................................................................................................... 47
 Tabla 9: Ventajas del uso de Metodología de Desarrollo de Software. ............. 49
 Tabla 10: Comparativa entre metodologías ágiles y tradicionales. Fuente:
(Laboratorio Nacional de Calidad del Software, 2009) ...................................... 50
 Tabla 11: Principales metodologías de desarrollo de software. (Liviu, 2014) ... 54
 Tabla 12: Criterios de selección de una metodología. ........................................ 55
 Tabla 13: Comparación entre modelos de redes neuronales artificiales. ........... 60
 Tabla 14: Comparación entre algoritmos de aprendizaje supervisado. .............. 62
 Tabla 15: Patrones de entrada. ............................................................................ 64
 Tabla 16: Patrones de Salida. ............................................................................. 65
 Tabla 17: Criterios de Selección y Metodologías ............................................... 71
 Tabla 18: Patrones de Entrada y Salida. ............................................................. 79

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 8


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Resumen

El presente trabajo comprende el estudio del proceso de selección de una metodología


de desarrollo de software, la cual es una etapa fundamental en la creación de todo
proyecto software. Además, se verifica que este proceso puede ser realizado de manera
confiable.

Por tanto, en este proyecto de investigación se desarrolla un sistema basado en


conocimiento mediante redes neuronales artificiales para la selección de una
metodología de desarrollo de software; herramienta que beneficia a las empresas
desarrolladoras de software, ya que con la selección de una adecuada metodología se
podrá dar buen inicio a un proyecto y al aplicar correctamente la metodología se
aumenta la probabilidad de obtener un producto software de calidad, en el tiempo
previsto y que cumpla con todos los requerimientos establecidos.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 9


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Abstract

The present investigation is about the process of selecting a software development


methodology, this process is a fundamental stage in the creation of every software
project.

Therefore, in the present investigation is developed a knowledge based system using


artificial neural networks for the selection of a software development methodology, this
system helps software development companies, because with the correct selection of a
methodology, we can have a good start of the project and if we apply in a properly way
the methodology, the probability of getting a quality software product, in the expected
time and meeting the requirements, will increase.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 10


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

CAPÍTULO I: PLAN DE INVESTIGACIÓN

1.1. Realidad Problemática

En la actualidad, la creación de software puede llegar a ser una tarea compleja,


dependiendo de las características del software a construir. Además, aún existen
proyectos de software que no son exitosos, lo que puede llevar a pérdidas
grandes de dinero, pérdida de mercado, deterioro de la reputación ganada y un
impacto negativo en las utilidades afectando en el corto y largo plazo a la
empresa por entregar productos defectuosos. Esta complejidad ha llevado a que
se desarrolle una ingeniería específica para tratar su estudio y realización,
denominada ingeniería del software.
Se puede decir que el éxito de un proyecto software depende de que tenga un
buen inicio, y uno de los factores clave para un buen inicio es la selección de una
metodología de desarrollo que se adecue a las características y circunstancias del
proyecto, esto debido a que la correcta selección y ejecución de una metodología
permite ahorrar tiempo y mejorar la calidad del producto. Sin embargo, la gran
variedad de metodologías existentes hacen que esta no sea una tarea sencilla.
Es por esto, que el objetivo principal de este proyecto de investigación es
desarrollar un sistema basado en conocimiento mediante redes neuronales
artificiales para la selección de una metodología de desarrollo de software en la
creación de un proyecto software, de acuerdo a las características del software,
las consideraciones técnicas, organizacionales, de proyecto y de equipo, para que
de esta forma se apoye al proceso de construir software de calidad, en el tiempo
previsto, y que cumpla con los objetivos propuestos.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 11


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

1.2. Formulación del Problema

¿Cómo mejorar el proceso de selección de una metodología de desarrollo de


software en la creación de un proyecto software?

1.3. Hipótesis

Por medio del desarrollo de un sistema basado en conocimiento mediante redes


neuronales artificiales se mejorará el proceso de selección de una metodología
de desarrollo de software en la creación de un proyecto software obteniendo
resultados confiables.

1.4. Objetivo General

Desarrollar un sistema basado en conocimiento mediante redes neuronales


artificiales para la selección de una metodología de desarrollo de software en la
creación de un proyecto software.

1.5. Objetivos Específicos

a. Analizar la información recopilada del experto, libros y artículos científicos


para la selección de una metodología.
b. Determinar el modelo de red neuronal a utilizar y su algoritmo de
aprendizaje.
c. Definir las entradas y las salidas del sistema basado en conocimiento.
d. Implementar el sistema basado en conocimiento.
e. Analizar la confiabilidad de los resultados.

1.6. Población y Muestra

1.6.1 Población:

La población está dada por el conjunto de proyectos de software existentes


en la ciudad de Trujillo.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 12


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

1.6.2 Muestra

Basándonos en la metodología del muestreo para hallar el cálculo del tamaño


muestral de una población infinita se presenta a continuación la formula
definida:

𝑍 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.

1.7. Técnica y procedimiento de recolección de datos

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

Tabla 1: Técnicas e Instrumentos de Recolección de Datos

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 13


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

1.8. Marco Conceptual

1.8.1 Sistemas Basados En Conocimiento

Definición:

Los sistemas basados en conocimiento son agentes inteligentes que se


encargan de resolver alguna tarea usando, como principal recurso, el
conocimiento. También se suele emplear el término “sistemas expertos” para
referirse a los sistemas basados en conocimiento que emulan el
comportamiento de los expertos humanos en un determinado campo, aunque
este término está en desuso se emplea para los sistemas que tratan de imitar
las soluciones dadas por expertos a un determinado problema (Palma
Méndez & Marín Morales, 2008).

1.8.2 Redes Neuronales Artificiales

Definición:

Las redes neuronales artificiales (RNA) son modelos matemáticos que


intentan reproducir el funcionamiento del sistema nervioso. Como todo
modelo, realizan una simplificación del sistema real que simulan y toman las
características principales del mismo para la resolución de una tarea
determinada. (Bertona, 2005).

1.8.3 Software

Definición:

Software no son solo programas, sino todos los documentos asociados y la


configuración de datos que se necesitan para hacer que estos programas
operen de manera correcta. (Sommerville, 2011)
El software de computadora es el producto que los ingenieros de software
construyen y después mantienen en el largo plazo. Incluye los programas que
se ejecutan dentro de una computadora, el contenido que se presenta
conforme los programas se ejecutan y los documentos que engloban todas las
formas de medios electrónicos. (Pressman, 2010)

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 14


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

1.8.4 Metodología de Desarrollo de Software

Definición:

Es un conjunto de técnicas y métodos que permiten abordar cada una de las


actividades del ciclo de vida de un proyecto de desarrollo. Es un proceso de
software detallado y completo. Se basan en una combinación de los modelos
de proceso de software. Definen artefactos, roles y actividades, junto con
prácticas y técnicas recomendadas. Es un modo sistemático de realizar,
gestionar y administrar un proyecto para llevarlo a cabo con altas
posibilidades de éxito. (Laboratorio Nacional de Calidad del Software, 2009)

1.9.Métodos y Procedimientos

1.9.1. Método

Para el desarrollo del sistema basado en conocimiento utilizaremos la


metodología 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.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 15


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

CAPÍTULO II: MARCO TEÓRICO

2.1. Sistemas Basados en Conocimiento

2.1.1. Definición

“Los sistemas basados en conocimiento son agentes inteligentes que se encargan


de resolver alguna tarea usando, como principal recurso, el conocimiento.”
(Palma Méndez & Marín Morales, 2008)
Un sistema basado en conocimiento usa y genera conocimiento a partir de datos,
información y conocimiento. Estos sistemas son capaces de entender la
información que procesan y pueden tomar una decisión basada en esta, a
diferencia de los sistemas de computadora tradicionales que no conocen o
entienden la información que procesan. (Sajja & Akerkar, Knowledge-based
Systems, 2010)
También se suele emplear el término “sistemas expertos” para referirse a los
sistemas basados en conocimiento que emulan el comportamiento de los
expertos humanos en un determinado campo, aunque este término está en desuso
se emplea para los sistemas que tratan de imitar las soluciones dadas por
expertos a un determinado problema (Palma Méndez & Marín Morales, 2008).
En la Figura 1 se muestra la intersección existente entre los sistemas inteligentes,
sistemas basados en conocimiento y sistemas expertos.

Sistemas
Inteligente
s

Sistemas
Basados en
Conocimiento

Sistemas
Expertos

Figura 1: Intersección entre Sistemas Inteligentes, Sistemas Basados en


Conocimiento y Sistemas Expertos. Fuente: Elaboración propia.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 16


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

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

En (Sajja & Akerkar, Knowledge-Based Systems for Development , 2010) se


muestra una lista de los cinco tipos principales de sistemas basados en
conocimiento que existen, estos son:
 Sistemas Expertos.
 Sistemas de manipulación de hipertexto.
 Sistemas basados en CASE.
 Bases de datos en conjunto con una interfaz de usuario inteligente.
 Sistemas tutores inteligentes.

2.1.4. Estructura

En los sistemas basados en conocimiento, existe una separación entre la


información necesaria para resolver un problema y el método para resolverlo.
Estos son los dos componentes principales de un sistema basado en
conocimiento, la base del conocimiento y el motor de inferencia.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 17


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

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

Figura 2: Estructura general de un Sistema Basado en Conocimiento. Fuente:


Elaboración propia.

2.1.5. Desarrollo de un Sistema Basado en Conocimiento

En la figura 3 se presenta una vista general del proceso de desarrollo de un


Sistema basado en conocimiento. Por lo general, el Ingeniero del conocimiento
es el encargado de adquirir, transferir y representar el conocimiento del experto,
ya que este puede que no esté familiarizado con la terminología de los sistemas
basados en conocimiento y con el proceso de desarrollo de un sistema
inteligente.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 18


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Los usuarios principales del sistema basado en conocimiento serán personas,


expertos, profesores, estudiantes y testeadores.

Expertos

Base del conocimiento y otros


Interfaz de desarrolladores
Adquisición del
conocimiento

componentes
Validaciones y Usuarios
Ingeniero del verificaciones
Conocimiento del
conocimiento
Representación
del
conocimiento

Figura 3: Desarrollo de un Sistema Basado en Conocimiento. Fuente: (Sajja &


Akerkar, Knowledge-Based Systems for Development , 2010)

El proceso de adquisición de conocimiento utiliza por lo general métodos como


las entrevistas, cuestionarios, grabaciones y la observación, para recopilar
conocimiento objetivo y explícito. Sin embargo, estos métodos no son muy
efectivos para extraer el conocimiento tácito el cual es almacenado en el
subconsciente del experto y el cual se refleja en los modelos mentales, ideas,
valores y acciones de los expertos. Para esto están siendo usadas técnicas como
el ordenamiento de conceptos, mapeo de conceptos y análisis de protocolo.
El conocimiento adquirido debe ser documentado inmediatamente en un
esquema de representación de conocimiento, ya que el conocimiento
documentado ayudara a que el ingeniero del conocimiento o el desarrollador a
que tengan un mejor entendimiento del sistema. Algunos ejemplos típicos de
esquemas de representación del conocimiento son las reglas, marcos, guiones y
redes semánticas. El ingeniero del conocimiento es el encargado de seleccionar
un esquema de representación que sea natural, eficiente, transparente y amigable
para los desarrolladores. (Sajja & Akerkar, Knowledge-Based Systems for
Development , 2010)

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 19


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

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.

2.1.6. Campos de Aplicación

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.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 20


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 Traductores.
 Solución de problemas.
 Sistemas evolutivos.
 Aprendizaje.
 Sistemas Tutores.

2.1.7. Limitaciones

Existen algunos inconvenientes y/o limitaciones que hacen que no se haya


extendido de forma generalizada el empleo de los sistemas basados en
conocimiento:
 El principal es el cuello de botella de la adquisición de conocimiento.
 Los expertos no quieren colaborar ya que no están dispuestos a perder su
trabajo.
 Aunque los expertos deseen colaborar, es complicado obtener su forma
de trabajo y generalizarla en un método.
 Los expertos están en constante aprendizaje depurando su forma de
razonar conforme van tratando nuevos casos, aunque estas características
se persiguen en el desarrollo de sistemas basados en conocimiento, son
difíciles de implementar (Palma Méndez & Marín Morales, 2008).
 La naturaleza abstracta del conocimiento.
 La adquisición, representación y manipulación del gran volumen de
datos/información/conocimiento. (Sajja & Akerkar, 2010)

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 21


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

2.2. Redes Neuronales Artificiales

2.2.1. Definición:

Existen diferentes definiciones sobre lo que es una red neuronal artificial,


dependiendo del libro o artículo al que acudamos. Tal vez una definición general
es la siguiente:
Las redes neuronales artificiales (RNA) son modelos matemáticos que intentan
reproducir el funcionamiento del sistema nervioso. Como todo modelo, realizan
una simplificación del sistema real que simulan y toman las características
principales del mismo para la resolución de una tarea determinada. (Bertona,
2005).
Otra definición completa sobre lo que es una red neuronal artificial es la
siguiente:
Una red neuronal artificial es un conjunto de unidades de procesamiento
llamados neuronas, interconectadas entre sí por varias ligaduras de
comunicación directa llamadas conexiones, con la finalidad de recibir señales de
entrada, procesarlas y emitir señales de salida. Cada conexión está asociada a un
peso, que representa la información utilizada por las neuronas para resolver un
problema. (Vega Huerta, Cortez Vásquez, Huayna, Alarcón Loayza, & Romero
Naupari, 2009).

2.2.2. Modelo Biológico:

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.

Figura 4: Estructura de una neurona biológica. Fuente: (Bertona, 2005)

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 22


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Desde un punto de vista funcional, las neuronas conforman un procesador de


información sencillo. Constan de un subsistema de entrada (dendritas), un
subsistema de procesamiento (el soma) y un subsistema de salida (axón).
La comunicación entre neuronas se lleva a cabo de la siguiente manera: en el
soma se genera un pulso eléctrico llamado potencial de acción, este se propaga a
través del axón en dirección a la sinapsis (espacio entre dos neuronas vecinas).
La información se transmite a las neuronas vecinas utilizando un proceso
químico, mediante la liberación de neurotransmisores, estos se transmiten a
través de la sinapsis hacia la neurona receptora, esta neurona toma la señal
enviada por cientos de neuronas a través de las dendritas y la transmite al soma,
estas señales pueden ser excitadoras (positivas) o inhibidoras (negativas), el
soma se encarga de integrar la información proveniente de las distintas neuronas,
si la señal resultante supera un determinado umbral, el soma emite un pulso que
se transmite a lo largo del axón dando lugar a la transmisión eléctrica a lo largo
de la neurona. Al llegar la señal al extremo del axón se liberan
neurotransmisores que permiten transmitir la señal a las neuronas vecinas.
(Bertona, 2005)

2.2.3. Modelo Artificial

La neurona artificial es un elemento de procesamiento simple que a partir de un


vector de entradas produce una única salida. En general existen tres tipos de
neuronas artificiales (Bertona, 2005):
 Neuronas de entrada: reciben información desde el exterior.
 Neuronas ocultas: reciben información desde otras neuronas artificiales.
 Neuronas de salida: reciben la información procesada y las devuelven al
exterior.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 23


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

En la Figura 5 se muestran los elementos que componen una neurona artificial:

Wij: Pesos

X1
W1j
X2

Función de

Función de
de
W2j

propagación

activación
Salida Yi:

salida
Regla
Wnj
Xn

Xj: Entradas Neurona

Figura 5: Componentes de una Neurona artificial. Fuente: (Bertona, 2005)

2.2.3.1. Componentes: En (Bertona, 2005) se listan los siguientes


componentes:

 Entradas y Salidas: Se clasifican en binarias o continuas, las neuronas


binarias solo admiten dos valores posibles, por lo general se utilizan
{-1,1} o {0,1}; las neuronas continuas admiten valores dentro de un
determinado rango por lo general [-1,1]. Su selección depende de la
aplicación y del modelo a construir.
 Pesos Sinápticos: Definen la fuerza de una conexión sináptica entre
dos neuronas, pueden tomar valores positivos (excitador), negativos
(inhibidor) o cero (no existe comunicación entre el par de neuronas).
Mediante el ajuste de los pesos la red es capaz de adaptarse a
cualquier entorno y realizar una tarea específica.
 Regla de propagación: Determina el potencial resultante (hi) de la
interacción de una neurona i con las n neuronas vecinas, se expresa
de siguiente manera:
ℎ𝑖 = 𝜎𝑖 (𝑤𝑖𝑗 , 𝑥𝑗 (𝑡))

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 24


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

La regla de propagación más simple y utilizada consiste en realizar


una sumatoria de las entradas con sus pesos correspondientes:

ℎ𝑖 (𝑡) = ∑ 𝑤𝑖𝑗 ∗ 𝑥𝑗 (𝑡))


𝑗

 Función de activación: Determina el estado de activación actual de la


neurona en base al potencial resultante hi y al estado de activación
anterior de la neurona, sin embargo en la mayoría de los modelos se
ignora el estado anterior de la neurona, y el estado de activación solo
calcula en función del potencial resultante hi :
𝑎𝑖 (𝑡) = 𝑓𝑖 (ℎ𝑖 (𝑡))
En la Tabla 2 se muestran algunas de las funciones de activación más
usadas en los distintos modelos de redes neuronales artificiales.

Función Fórmula Rango


Identidad y=x [-∞,∞]
Escalón +1, 𝑠𝑖 𝑥 ≥ 0 [0,1]
𝑦={
0, 𝑠𝑖 𝑥 < 0

+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.

 Función de salida: Proporciona el valor de salida de la neurona, en


base al estado de activación de la neurona. Por lo general se utiliza la
función identidad:
𝑦𝑖 (𝑡) = 𝑓𝑖 (𝑎𝑖 (𝑡)) = 𝑎𝑖 (𝑡)

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 25


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

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

Las neuronas artificiales definidas previamente pueden conectarse entre sí para


dar lugar a las redes neuronales artificiales, las cuales se pueden clasificar de
diferentes formas según el criterio usado. En (Serrano, Soria, & Martín, 2010) se
presenta la siguiente clasificación:

2.2.5.1. Según el número de capas:

 Redes Neuronales monocapa: Es el tipo de red neuronal más sencilla,


se tiene una capa de neuronas de entrada que proyectan las entradas a
una capa de salida donde se realizan diferentes cálculos. La capa de
entrada no se cuenta ya que no realiza ningún cálculo, por eso el
nombre de redes monocapa. Una aplicación típica de este tipo de
redes es como memorias asociativas. En la Figura 6 se muestra el
esquema de una red neuronal monocapa.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 26


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Figura 6: Esquema de una Red neuronal monocapa. Fuente:


(Serrano, Soria, & Martín, 2010)

 Redes neuronales multicapa: Es una generalización del tipo de red


anterior, en donde existen un conjunto de capas intermedias entre la
capa de entrada y de salida, llamadas capas ocultas. Las neuronas en
este tipo de red puede estar total o parcialmente conectadas. En la
Figura 7 se muestra el esquema de una red neuronal multicapa.

Figura 7: Esquema de una red neuronal multicapa. Fuente: (Serrano,


Soria, & Martín, 2010)

2.2.5.2. Según el tipo de conexiones:

 Redes neuronales no recurrentes: En este tipo de red la propagación


de las señales se produce en un sentido solamente, no existiendo la
posibilidad de realimentaciones, estas estructuras no tienen memoria.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 27


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 Redes neuronales recurrentes: Este tipo de red se caracteriza por la


existencia de lazos de realimentación, estos lazos pueden ser entre
neuronas de diferentes capas, de la misma capa o entre una misma
neurona. Este tipo de estructura es adecuada para estudiar la dinámica
de sistemas no lineales. En la Figura 8 se muestra un ejemplo de una
red neuronal recurrente.

Figura 8: Red neuronal recurrente. Fuente: (Serrano, Soria, &


Martín, 2010)

2.2.5.3. Según el grado de conexión:

 Redes neuronales totalmente conectadas: En este tipo de red todas las


neuronas de una capa se encuentran conectadas con las neuronas de la
capa siguiente (redes no recurrentes) o con las neuronas de la capa
anterior (redes recurrentes).
 Redes parcialmente conectadas: En este tipo de red no se da la
conexión total entre neuronas de diferentes capas.

2.2.6. Estructura

Las redes neuronales pueden ser usadas en diferentes estructuras dependiendo de


la aplicación a la que este destinado el sistema. En (Serrano, Soria, & Martín,
2010) se presentan diferentes estructuras según la disposición de la red neuronal,
las cuales mostramos a continuación:

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 28


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

2.2.6.1. Estructura directa

En esta estructura un sistema al comienzo desconocido y la red neuronal


tienen las mismas entradas, por lo que se conseguirá el mínimo error
cuando la salida de la RNA y la señal deseada sean iguales. Esta
estructura tiene como fin la modelización de funciones de transferencia
de sistemas de los que en principio, no conocemos nada pero tenemos la
posibilidad de excitarlos con una entrada determinada y así conocer su
salida. En la Figura 9 se muestra el esquema de bloques de la estructura
directa.

Figura 9: Esquema de una estructura directa. Fuente: (Serrano,


Soria, & Martín, 2010)

2.2.6.2. Estructura inversa

En esta estructura el error mínimo se obtiene cuando la salida de la red


neuronal es la entrada al sistema desconocido lo que conlleva a que la
función de transferencia de la red neuronal sea la inversa del sistema
desconocido. Aplicaciones típicas de esta estructura son la ecualización
de canales de comunicación. En la Figura 10 se muestra el esquema de la
estructura inversa.

Figura 10: Esquema de una estructura inversa. Fuente: (Serrano, Soria, &
Martín, 2010)

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 29


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

2.2.6.3. Estructura con retardo

Esta estructura tiende a minimizar la diferencia entre la señal deseada y


la salida de la red neuronal que será un determinado valor obtenido con
valores de la señal. Esta estructura es usada en problemas de predicción y
de control. En la Figura 11 se muestra el esquema de una estructura con
retardo.

Figura 11: Esquema de una estructura con retardo. Fuente: (Serrano,


Soria, & Martín, 2010)
2.2.6.4. Cancelador de ruido

En esta estructura el papel central del dispositivo lo asume el algoritmo


de la red neuronal. Este algoritmo tiene como objetivo minimizar el error
cuadrático entre la salida de la red neuronal y la señal que toma como
referencia. En la Figura 12 se muestra el esquema de un Cancelador de
ruido.

Figura 12: Esquema de un cancelador activo de ruido. Fuente: (Serrano,


Soria, & Martín, 2010)

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 30


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

2.2.7. Fases

En el funcionamiento de una red neuronal podemos distinguir dos fases: la fase


de aprendizaje o entrenamiento en donde la red neuronal es entrenada para
realizar un determinado tipo de procesamiento, y la fase de operación donde la
red se utiliza para realizar la tarea para la que fue entrenada. (Bertona, 2005)
2.2.7.1. Entrenamiento

Cuando ya hemos definido el tipo de neurona artificial a usar en una red


neuronal y la topología de esta, es hora de entrenarla para que pueda ser
usada. Se parte de un conjunto de pesos asignados aleatoriamente, y el
proceso de aprendizaje busca un conjunto de pesos que permitan a la red
realizar una determinada tarea. Durante este proceso se va refinando
iterativamente la solución hasta alcanzar un nivel de operación
sufrientemente bueno. (Bertona, 2005). Existen distintos métodos de
aprendizaje, en la Figura 13 se muestra una clasificación de estos.

Aprendizaje

Aprendizaje
Aprendizaje
no
Supervisado
Supervidado

Por
Competitivo y
corrección de Por refuerzo Estocástico Hebbiano
cooperativo
error

Figura 13: Categorías de aprendizaje. Fuente: (Serrano, Soria, & Martín,


2010)
 Aprendizaje Supervisado: En este tipo de aprendizaje se presente a la
red un conjunto de patrones de entrada junto con la salida esperada.
Los pesos se modifican de manera proporcional al error que se
produce entre la salida real y la salida deseada.
 Aprendizaje no Supervisado: En este tipo de aprendizaje se presenta a
la red solo un conjunto de patrones de entrada, no existe información

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 31


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

disponible sobre la salida esperada, los pesos se ajustan en base a la


correlación existente entre los datos de entrada. (Bertona, 2005)
En la Tabla 3 se muestran un resumen de los algoritmos de aprendizaje
más conocidos.

Algoritmos de Aprendizaje más conocidos


Paradigma Regla de Arquitectura Algoritmo de Tareas
Aprendizaje Aprendizaje
Supervisado Corrección Perceptrón o Algoritmos de Clasificación
del Error perceptrón Aprendizaje de patrones,
multicapa perceptrón, aproximación
retropropagación de funciones,
del error, predicción,
ADALINE, control.
MADALINE
Elman y Retropropagación Síntesis de
Jordan del error series
recurrentes temporales
Boltzman Recurrente Algoritmo del Clasificación
Aprendizaje de Patrones
Boltzman
Competitivo Competitivo LVQ Categorización
intra-clase,
comprensión
de datos.
Red ART ARTMap Clasificación
de patrones,
categorización
intra-clase.
No Corrección Red de Aprendizaje de Memoria
Supervisado del error Hopfield memoria Asociativa
asociativa
Competitiva Multicapa sin Proyección de Análisis de
realimentación Sannon Datos
Competitiva VQ Categorización,
comprensión
de datos.
SOM Kohonen SOM Categorización,
análisis de
datos.
Por Hebbian Multicapa sin Análisis lineal de Análisis de
Refuerzo realimentación discriminante Datos,
clasificación de
patrones
Sin Análisis de Análisis de
realimentación componentes datos,
o competitiva principales comprensión
de datos.
Tabla 3: Algoritmos de aprendizaje más conocidos.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 32


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

2.2.7.2. Operación

Finalizada la fase de aprendizaje, la red puede ser usada para realizar la


tarea para la cual fue entrenada. Una de las principales ventajas que
posee este modelo, es que la red aprende la relación existente entre los
datos, adquiriendo la capacidad de generalizar conceptos. Así, una red
neuronal puede tratar con información que no le fue presentada durante la
fase de entrenamiento.

2.2.8. Campos de aplicación

Las aplicaciones de las redes neuronales se pueden dividir según el tipo de


problema que resuelven o según el campo del conocimiento donde se aplican.
Por lo general las redes neuronales se utilizan para el diagnóstico, predicción,
agrupación, clasificación, reconocimiento de patrones, entre otros usos. En
(Serrano, Soria, & Martín, 2010) se hace una clasificación de los las aplicaciones
de las redes neuronales según el campo del conocimiento, en la Tabla 4 se
muestran algunas aplicaciones.

Campo del Aplicaciones


conocimiento
Medicina  Diagnóstico de cardiopatías.
 Detección de tumores cancerígenos.
 Determinación de puntos característicos del
electrocardiograma.
 Caracterización de la dinámica en la variabilidad
cardiaca.
 Compresión de señales electrocardiográficas.
 Predicción de enfermedades cardiacas.
Farmacia  Predicción del riesgo de intoxicación por digoxina.
 Predicción de la respuesta emética.
 Predicción del nivel de Tacrolimus en la sangre.
 Predicción del nivel de ciclosporina.
Procesado de  Ecualización de canales de comunicación.
la señal  Reconocimiento de patrones en imágenes.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 33


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 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.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 34


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

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

Uno de los mayores inconvenientes de las redes neuronales artificiales es el


tiempo de convergencia. Las aplicaciones reales pueden llegar a tener miles de
ejemplos en el conjunto de entrenamiento y ello requiere días de tiempo de
cálculo, dependiendo también de las características del computador que se use.
Un inconveniente en el algoritmo de backpropagation es que es susceptible a
fallar en el entrenamiento, es decir puede que la red nunca llegue a converger.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 35


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

2.3. Software

2.3.1. Definición

El software de computadora es el producto que construyen los programadores


profesionales y al que después le dan mantenimiento durante un largo tiempo.
Incluye programas que se ejecutan en una computadora de cualquier tamaño y
arquitectura, contenido que se presenta a medida de que se ejecutan los
programas de cómputo e información.
Mientras que la ingeniería de software está formada por un proceso, un conjunto
de métodos (prácticas) y un arreglo de herramientas que permite a los
profesionales elaborar software de cómputo de alta calidad. (Pressman, 2010)

2.3.2. Características

Las características que difieren considerablemente son las siguientes:

 El software se desarrolla o modifica con intelecto; no se manufactura en el


sentido clásico
Aunque hay algunas similitudes entre el desarrollo de software y la
fabricación de hardware, las dos actividades son diferentes en lo
fundamental, entre ellos: La fase de manufactura del hardware introduce
problemas de calidad que no existen (o que se corrigen con facilidad) en el
software, la relación entre los individuos dedicados y el trabajo logrado es
diferente, y los costos del proyecto.

 El software no se “desgasta”
El software es inmune a los males ambientales que desgastan el hardware.

 La mayoría del software aún se construye a medida. En el mundo del


hardware, la reutilización de componentes es una parte natural del proceso
de ingeniería. En el ámbito del software esta actividad recién se ha empezado
a extender. (Pressman, 2010)

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 36


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

2.3.3. Ventajas de la Ingeniería de Software

La Ingeniería del software es una disciplina de la ingeniería que comprende


todos los aspectos de la producción de software desde las etapas iniciales de la
especificación del sistema, hasta el mantenimiento de éste después de que se
utiliza. (Sommerville, 2011)
Dentro de las ventajas que nos proporciona, contamos:
 Incremento de satisfacción del cliente
 Incremento de la calidad del producto
 Alineamiento con el negocio
 Mejor gestión de riesgos
 Resultados más predecibles
 Reducción de costes de las actividades
 Homogeneidad operativa. Mejora de comunicación.
 Reducción del mantenimiento correctivo
 Posibilita ser más proactivo y menos reactivo
 Mayor control del impacto de los cambios
 Facilita la externalización

2.3.4. Tipos

Según (Pressman, 2010) actualmente existen siete grandes categorías de


software de computadora, las cuales se describen y se presentan algunas
aplicaciones y ejemplos en la Tabla 6:

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 37


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Categoría Descripción Aplicaciones / Ejemplos


de Software
De sistemas Conjunto de programas para dar Compiladores, editores,
servicio a otros programas. Se herramientas para
caracterizan por su gran interacción administrar archivos,
con el hardware, operación software de redes.
concurrente, recursos compartidos,
etc.
De Programas aislados que resuelven Procesamiento de
Aplicación una necesidad especifica de transacciones en punto de
negocios, también es usado para venta, control de procesos
controlar funciones de negocio en de manufactura en tiempo
tiempo real. real.
De Caracterizado por algoritmos Diseño asistido por
Ingeniería y devoradores de números. Tiene computadora, simulación
Ciencias aplicaciones en distintas áreas. de sistemas.

Incrustado Reside dentro de un producto o Control del tablero de un


sistema y es usado para implementar horno microondas.
características y funciones para el
usuario final y para el sistema en sí.
De Línea de Diseñado para proporcionar una Control de inventario de
Productos capacidad específica para uso de productos, procesamiento
diferentes consumidores, se centra de textos, hojas de cálculo,
en algún mercado limitado o masivo graficas por computadora.
de consumidores.
Aplicaciones Llamadas webapps, agrupa una Presentación de
Web amplia gama de aplicaciones. información usando texto
y graficas limitadas,
ambientes de cómputo
sofisticado integradas con
bases de datos
corporativas y
aplicaciones de negocio.
De Usan algoritmos no numéricos para Redes neuronales
Inteligencia resolver problemas complejos artificiales, demostración
Artificial de teoremas y juegos.

Tabla 6: Categorías de Software de Computadora. Fuente: (Pressman, 2010).

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 38


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

2.3.5. Procesos del Software

Un proceso de software es una serie de actividades relacionadas que conducen a


la elaboración de un producto de software. Existen diferentes procesos de
software, pero todos deben incluir cuatro actividades fundamentales para la
ingeniería del software:
 Especificación del software: se define la funcionalidad del software y sus
restricciones de operación.
 Diseño e implementación del software: se desarrolla el software para
cumplir con las especificaciones.
 Validación del software: se valida el software para asegurarse de que
cumple con lo que quiere el cliente.
 Evolución del software: el software evoluciona para satisfacer las
necesidades cambiantes del cliente. (Sommerville, 2011)
Al igual que las actividades, las descripciones de los procesos deben incluir:
 Productos: son los resultados de una actividad del proceso.
 Roles: son las actividades de la gente que interviene en el proceso.
 Precondiciones y postcondiciones: son declaraciones validas antes y
después de que se realice una actividad del proceso o se cree un
producto.
Los procesos de software se clasifican como dirigidos por un plan, donde todas
las actividades del proceso se planean por anticipado y el avance se mide contra
dicho plan, o como procesos agiles, donde la planeación es incremental y es más
fácil modificar el proceso para reflejar los requerimientos cambiantes del cliente.
(Sommerville, 2011)

2.3.6. Modelos de Proceso del Software

Un modelo de procesos del software es una descripción simplificada de un


proceso del software que presenta una visión de ese proceso. Estos modelos
pueden incluir actividades que son parte de los procesos y productos de software
y el papel de las personas involucradas en la ingeniería del software.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 39


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

En (Sommerville, 2011) se clasifican los todos procesos de desarrollo de


software en tres modelos o paradigmas generales que no son descripciones
definitivas de los procesos del software, sino, más bien, son abstracciones de los
modelos que se pueden utilizar para desarrollar software, estos modelos se
presentan con su respectiva descripción en la:

Modelo de proceso Descripción


de software
El modelo en Toma las actividades fundamentales del proceso de
cascada especificación, desarrollo, validación y evolución y,
luego, los representa como fases separadas del
proceso, tal como especificación de requerimientos,
diseño de software, implementación, pruebas,
etcétera.
Desarrollo Este enfoque vincula las actividades de
Incremental especificación, desarrollo y validación. El sistema se
desarrolla como una serie de versiones
(incrementos), y cada versión añade funcionalidad a
la versión anterior.
Ingeniería de Este enfoque se basa en la existencia de un número
software orientada a significativo de componentes reutilizables. El
la reutilización proceso de desarrollo del sistema se enfoca en la
integración de estos componentes en un sistema, en
vez de desarrollarlo desde cero.
Tabla 7: Modelos de Proceso de software. Fuente: (Sommerville, 2011)

2.3.7. Componentes

Según (Laboratorio Nacional de Calidad del Software, 2009), el software se


puede definir como el conjunto de tres componentes:

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 40


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 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

La arquitectura del software de un programa o sistema de cómputo es la


estructura o estructuras del sistema, lo que comprende a los componentes del
software, sus propiedades externas visibles y las relaciones entre ellos.
La arquitectura no es el software operativo; es una representación que permite:

 Analizar la efectividad del diseño para cumplir los requerimientos


establecidos.
 Considerar alternativas arquitectónicas en una etapa en la que hacer
cambios al diseño todavía es relativamente fácil.
 Reducir los riesgos asociados con la construcción del software.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 41


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

(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:

 Arquitecturas centradas en los datos. En el centro de esta arquitectura se


halla un almacenamiento de datos (como un archivo o base de datos) al que
acceden con frecuencia otros componentes que actualizan, agregan, eliminan o
modifican los datos de cierto modo dentro del almacenamiento. La Figura 14
ilustra un estilo común centrado en datos. El software cliente accede a un
repositorio (depósito) central. En ciertos casos éste es pasivo. Es decir, el
software cliente accede a los datos en forma independiente de cualesquiera
cambios que éstos sufran o de las acciones del software de otro cliente. Una
variante de este enfoque transforma el depósito en un “pizarrón” que envía
notificaciones al software cliente cuando hay un cambio en datos de interés del
cliente.

Las arquitecturas centradas en datos promueven la integrabilidad, es decir, los


componentes del software pueden ser cambiados y agregarse otros nuevos, del
cliente, a la arquitectura sin problemas con otros clientes además los
componentes del cliente ejecuta los procesos con independencia
(Pressman, 2010).

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 42


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Figura 14: Arquitectura centrada en Datos. Fuente: (Pressman, 2010).

 Arquitecturas de flujo de datos. Esta arquitectura se aplica cuando datos de


entrada van a transformarse en datos de salida a través de una serie de
componentes computacionales o manipuladores.
Un patrón de tubo y filtro (véase la Figura 15) tiene un conjunto de
componentes, llamados filtros, conectados por tubos que transmiten datos de un
componente al siguiente. Cada filtro trabaja en forma independiente de aquellos
componentes que se localizan arriba o abajo del flujo; se diseña para esperar
una entrada de datos de cierta forma y produce datos de salida (al filtro
siguiente) en una forma especificada. Sin embargo, el filtro no requiere ningún
conocimiento de los trabajos que realizan los filtros vecinos.
Si el flujo de datos degenera en una sola línea de transformaciones, se denomina
lote secuencial. Esta estructura acepta un lote de datos y luego aplica una serie
de componentes secuenciales (filtros) para transformarlos. (Pressman, 2010)

Figura 15: Arquitectura de flujo de datos. Fuente: (Pressman, 2010).

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 43


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 Arquitecturas de llamar y regresar. Este estilo arquitectónico permite


obtener una estructura de programa que es relativamente fácil de modificar y
escalar. Dentro de esta categoría existen varios sub estilos:
 Arquitecturas de programa principal/subprograma: Esta estructura clásica
de programa descompone una función en una jerarquía de control en la
que un programa “principal” invoca cierto número de componentes de
programa que a su vez invocan a otros. La Figura 16 ilustra una
arquitectura de este tipo.
 Arquitecturas de llamada de procedimiento remoto: Los componentes de
una arquitectura de programa principal/subprograma están distribuidos a
través de computadoras múltiples en una red. (Pressman, 2010)

Figura 16: Arquitectura de programa principal/subprograma. Fuente: (Pressman,


2010).

 Arquitecturas orientadas a objetos. Los componentes de un sistema


incluyen datos y las operaciones que deben aplicarse para manipularlos. La
comunicación y coordinación entre los componentes se consigue mediante la
transmisión de mensajes. (Pressman, 2010)

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 44


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 Arquitecturas en capas. En la Figura 17 se ilustra la estructura básica de una


arquitectura en capas. Se define un número de capas diferentes; cada una ejecuta
operaciones que se aproximan progresivamente al conjunto de instrucciones de
máquina. En la capa externa, los componentes atienden las operaciones de la
interfaz de usuario. En la interna, los componentes realizan la interfaz con el
sistema operativo. Las capas intermedias proveen servicios de utilerías y
funciones de software de aplicación. (Pressman, 2010)

Figura 17: Arquitectura en capas. Fuente: (Pressman, 2010).

2.3.9. Desarrollo de Software

El ciclo de vida del software es una descripción del conjunto de actividades y


procesos que permiten dirigir el desarrollo de un producto de software.
(Software Engineering Standards Comite of the IEEE Computer Society)
En la norma ISO 12207-1 (Piattini, Calvo, Cervera, & Fernández, 2000) las
actividades que se pueden realizar, durante el ciclo de vida del software, se
agrupan en cinco procesos principales, ocho procesos de soporte y cuatro
procesos generales de la organización.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 45


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

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:

TIPO PROCESO DESCRIPCIÓN


Adquisición Contiene las actividades y las tareas que el
usuario o cliente realizan para adquirir un
producto de software.
Suministro Contiene las actividades y tareas que un
proveedor de un producto de software tiene
que realizar para comercializarlo.
Desarrollo Contiene las actividades de requerimientos,
Principales análisis, diseño, desarrollo, implementación
y pruebas.
Explotación Contiene las actividades de comercialización
del producto de software y las tareas de
soporte a usuarios.
Mantenimiento Contiene las actividades de modificación del
producto de software con el objetivo de
mantener su consistencia.
Documentación Contiene las actividades que permitan
planificar, diseñar, desarrollar, producir,
editar distribuir y mantener documentos
necesarios para las personas que utilizan el
software.
Gestión de Contiene las actividades para identificar,
configuración definir y establecer las características de
configuración del software en un sistema.
Aseguramiento Contiene las actividades que permiten
de calidad obtener la satisfacción del cliente y el
cumplimiento de estándares que la
garanticen un buen desarrollo del producto.
Soporte Verificación Contiene las actividades que permiten
determinar si los requisitos de un producto
de software están completos y correctos.
Validación Contiene las actividades que permiten
determinar si el producto de software cumple
con los requisitos previstos para su uso.
Revisión Contiene las actividades que permitan
conjunta evaluar el estado del software y sus
productos en una actividad del ciclo de vida
o una fase de un proyecto.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 46


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Auditoría Contiene las actividades que permiten


determinar, si los puntos establecidos, y si se
han cumplido los requisitos, los planes y el
contrato.
Resolución de Contiene las actividades que permiten
problemas analizar y eliminar problemas descubiertos
durante el desarrollo, explotación,
mantenimiento u otro proceso.
Gestión Contiene las actividades y las tareas
genéricas que puede emplear una
organización que tenga que gestionar sus
procesos.
Organizaci Infraestructura Contiene las actividades que permita
ón establecer y suministrar la infraestructura
necesaria para un proceso.
Mejora Contiene las actividades para establecer,
valorar, medir, controlar y mejorar los
procesos del ciclo de vida del software.
Formación Contiene las actividades que permiten
proporcionar y mantener al personal
formado.
Tabla 8: Procesos del ciclo de vida del software. Fuente: (Pinzon & Guevara
Bolaños, 2006)

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 47


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

2.4. Metodologías de Desarrollo de Software

2.4.1. Definición

Es un conjunto de técnicas y métodos que permiten abordar cada una de las


actividades del ciclo de vida de un proyecto de desarrollo. Es un proceso de
software detallado y completo. Se basan en una combinación de los modelos de
proceso de software. Definen artefactos, roles y actividades, junto con prácticas
y técnicas recomendadas. Es un modo sistemático de realizar, gestionar y
administrar un proyecto para llevarlo a cabo con altas posibilidades de éxito.
Una gran variedad de metodologías han evolucionado durante los años, cada una
con sus fortalezas y debilidades. Una metodología de desarrollo de sistemas no
es necesariamente adecuada para usarla en todos los proyectos. Cada una de las
metodologías disponibles es más adecuada para tipos específicos de proyectos,
basados en consideraciones técnicas, organizacionales, de proyecto y de equipo.
(Laboratorio Nacional de Calidad del Software, 2009)

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)

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 48


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

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

Desarrollar un buen software depende de un gran número de actividades y


etapas, elegir la metodología correcta para un determinado proyecto es
transcendental para el éxito del producto. Según la filosofía de desarrollo se
clasifican las metodologías en dos grupos, las metodologías tradicionales y las
metodologías agiles, en la Tabla 10 se presenta una comparativa entre estos dos
grupos de metodologías.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 49


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Metodologías ágiles Metodologías Tradicionales


Basadas en heurísticas provenientes de Basadas en normas provenientes de
prácticas de producción de código. estándares seguidos por el entorno
de desarrollo.
Especialmente preparados para cambios Cierta resistencia a los cambios.
durante el proyecto.
Impuestas internamente (por el equipo) Impuestas externamente.
Proceso menos controlado, con pocos Proceso mucho más controlado,
principios. con numerosas políticas y normas.
No existe contrato tradicional o al menos Existe un contrato prefijado.
es bastante flexible.
El cliente es parte del equipo de El cliente interactúa con el equipo
desarrollo. de desarrollo mediante reuniones.
Grupos pequeños (<10 integrantes) y Grupos grandes y posiblemente
trabajando en el mismo sitio. distribuidos.
Pocos artefactos. Más artefactos.
Pocos roles. Más roles.
Menos énfasis en la arquitectura del La arquitectura del software es
software. esencial y se expresa mediante
modelos.
Tabla 10: Comparativa entre metodologías ágiles y tradicionales. Fuente:
(Laboratorio Nacional de Calidad del Software, 2009)

2.4.4. Principales Metodologías

A continuación en la Tabla 11 se muestra una lista de las metodologías actuales


más populares, sus principales características, sus fortalezas y debilidades:

Metodología Características Fortalezas Debilidades


Cascada -amplia documentación -fácil de manejar -el código es entregado
-planeación meticulosa -fácil de entender por el en la última fase del
-proceso lineal secuencial propietario y por el proyecto
-cada fase tiene sus equipo de proyecto -no es bueno cuando los
propios entregables requerimientos son
cambiantes
-baja tolerancia con
errores de diseño o
planificación
Prototipos -construye una o más -identificación precisa -lleva a un aumento
demos del software de los requerimientos de innecesario de la
-el cliente esta la aplicación. complejidad de la
activamente involucrado. -retroalimentación aplicación
-los prototipos están temprana por parte del -incrementa el esfuerzo
destinados a ser cliente de programación
descartados -experiencia del usuario -costos generados por

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 50


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

-la escritura del código mejorada construir el prototipo


tiene más valor sobre las -identificación temprana
especificaciones de de funcionalidad
escritura. faltante o redundante
Iterativa e -construye un modelo -retroalimentación - cada iteración es una
Incremental inicial que se va continua por parte del estructura rígida que se
extendiendo en cliente asemeja a un proyecto
iteraciones sucesivas -revisiones múltiples a en cascada a pequeña
-enfatiza el diseño sobre la aplicación y a escala
la documentación funcionalidad
-el cliente esta especifica
activamente involucrado -código entregado en
fases tempranas del
proyecto
Espiral -se enfoca en los -código entregado en -costos generados por el
objetivos, alternativas y fases tempranas del manejo de riesgos
restricciones proyecto -depende de un análisis
-enfatiza el análisis de -minimiza riesgos de riesgos preciso
riesgos -solida documentación
-evalúa múltiples
alternativas antes de ir a
la fase de planeación

Rapid -menos énfasis en tareas -las aplicaciones son -documentación pobre


Application de planeación y más desarrolladas -costos altos de
Development centrado al desarrollo rápidamente desarrollo
-enfoque timebox -el código puede ser -problemas de
fácilmente reutilizado integración de código
-la aplicación debe ser
dividida en módulos
Extreme -programación en pares -la aplicación se obtiene -falta de documentación
Programming -unidad de pruebas muy rápido en el -los desarrolladores
-entregas rápidas ambiente de producción rechazan la
consecutivas -entregas frecuentes de programación en pares
-propiedad colectiva código -los desarrolladores se
-orientada al cliente -se reduce el número de reúsan a escribir
-área de trabajo abierto errores pruebas primero y
-el cliente decide la -integración de código codificar después
prioridad de las tareas sencilla -requiere reuniones
-retroalimentación frecuentes
continua por parte del
cliente
Modelo en V -introduce pruebas para -tasa de error baja -depende en gran
cada fase de desarrollo -fácil de entender y usar medida del conjunto
-destaca la importancia inicial de
del mantenimiento especificaciones
SCRUM -desarrollo iterativo -entrega productos en -falta de documentación
-enfoque timebox ciclos cortos -requiere
conocido como sprints -permite una rápida desarrolladores con
-reuniones diarias retroalimentación experiencia

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 51


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

conocidas como Scrum -adaptación rápida a los -las estimaciones de


diario cambios costo no son muy
-equipo de desarrollo precisas
auto organizado

Cleanroom -desarrollo iterativo -reducción considerable -incrementa los costos


-box structure method en la tasa de errores de desarrollo
-usa modelos -productos software de -requiere de
matemáticos en el control alta calidad desarrolladores
de la calidad altamente calificados y
-enfoque estadístico para con experiencia
las pruebas
Dynamic -desarrollo iterativo - se enfoca en abordar -requiere equipos de
System -enfoque timebox efectivamente las proyecto grande ya que
Development -fechas límites no necesidades del negocio tiene múltiples roles
Method negociables -implementación post que cubrir
-estándares estrictos de proyecto -requiere de
calidad establecidos al -documentación desarrolladores
comienzo del proyecto completa calificados
-el cliente y el equipo del -Involucramiento activo
proyecto comparten un del usuario
área de trabajo
-pruebas tempranas y
continuamente
Rational -desarrollo iterativo -preciso y comprensivo -requiere profesionales
Unified -prioriza el manejo de -gestión eficiente del altamente calificados
Process riesgos cambio -el proceso de
-correcto modelado del -integración eficiente de desarrollo es complejo
negocio nuevo código y pobremente
-pruebas de desempeño -permite la reutilización organizado
de código y
componentes software
Lean -desarrollo iterativo -reduce el tiempo y -el proyecto es
Software -descarta todos los costo del proyecto altamente dependiente
Development componentes que no eliminando residuos de los miembros del
agregan valor al producto -Código entregado en equipo
-se enfoca en el cliente fases tempranas -se requiere un
-mejoramiento continuo -equipo de desarrollo miembro del equipo
motivado con habilidades para el
análisis del negocio
Test-driven -unidad de pruebas -menos tiempo gastado -requiere más código
Development -los escenarios de en depuración que la mayoría de las
pruebas se desarrollan -código de más alta metodologías
antes del código calidad -el desarrollador es el
-ciclos cortos repetitivos -menos defectos llegan que hace las pruebas
de desarrollo al usuario final -escribir las unidades de
-adecuado para la pruebas incrementa el
depuración de código costo
heredado desarrollado
con otras técnicas

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 52


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Behavior- -unidad de pruebas -fácil de mantener -los clientes se reúsan a


driven -se centra en el valor del -problemas de escribir escenarios de
development negocio usabilidad son comportamiento
-colaboración genuina descubiertos antes
entre el negocio y el -reduce la tasa de
desarrollo defectos
-fácil de integrar nuevo
código
Feature- -desarrollo iterativo -múltiples equipos -propiedad individual
driven -la aplicación se divide pueden trabajar de código
development en funciones simultáneamente en el -las iteraciones no están
-ninguna función debe proyecto bien definidas
tomar más de 2 semanas -se adecua a equipos
en implementarse grandes
-usa hitos para evaluar el -fácil de entender y
progreso adoptar
Model-driven -usa un modelo del -alto grado de -requiere una
Engineering dominio abstracción considerable
-los modelos son -incrementa la experiencia técnica
transformados productividad -la documentación es
automáticamente en -entrega productos con entendida solo por
código un alto grado de expertos en el dominio
-el conocimiento es compatibilidad y -es difícil de
encapsulado en modelos portabilidad implementar el control
de alto nivel -costos bajos de de versiones en el
-enfatiza la reutilización mantenimiento entorno de modelado
de modelos
estandarizados
Crystal -se enfoca en la gente y -fácil de implementar -las decisiones críticas
Methods en las habilidades y no en -entrega frecuente de respecto a la
Methodology los procesos código arquitectura de la
-más de una iteración en -desarrolladores tienen aplicación son hechas
una entrega tiempo dedicado para por individuos y no por
-diferentes enfoques reflexionar sobre las todo el equipo
dependiendo del tamaño posibles mejoras de
del proyecto y su código
criticidad
Joint -enfatiza la -acelera el diseño -depende en gran
Application determinación de los -mejora la cualidad medida del éxito de las
Development requerimientos del -promueve el trabajo en reuniones del grupo
sistema equipo con el cliente -no tiene un enfoque
-incluye al cliente y al -crea un diseño de las documentado para las
usuario final en el diseño perspectivas del cliente etapas que siguen a la
y desarrollo -costos bajos de determinación de
-reuniones JAD mantenimiento requerimientos y diseño
-prototipos
Adaptive -desarrollo iterativo -efectivo manejo del -manejo bajo de riesgos
Software -se enfoca en el logro cambio -utiliza suposiciones y
Development final del proyecto -fácil de entender y de predicciones
-basado en funciones implementar -falta de documentación

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 53


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

-timeboxed -permite la innovación tangible


-manejo de riesgos
Open Source -desarrollo iterativo -costos bajos -poca responsabilidad
Software -equipos -desarrolladores por el código
Development geográficamente altamente motivados y presentado
distribuidos dedicados -no existe una autoridad
-trabajo colaborativo -pruebas entendibles administrativa central
cuando el código es
revisado por varios
desarrolladores
Microsoft -tiene versiones para -soporta múltiples -difícil de instalar y
Solutions implementación ligera y enfoques de proceso configurar
Framework pesada -políticas solidas de
-fomenta la manejo de riesgos
comunicación abierta -construido para
-capacita a los miembros responder
del equipo y establece efectivamente al
responsabilidad cambio
compartida -reduce el tamaño del
equipo
Tabla 11: Principales metodologías de desarrollo de software. (Liviu, 2014)

2.4.5. Criterios de Selección

A continuación se listan algunos criterios para la selección de una metodología


de desarrollo de software, que se han podido determinar de (Liviu, 2014) y
(Centers for Medicare & Medicaid Services, 2008), estos criterios se muestran,
con sus alternativas en la Tabla 12:

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

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 54


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Desarrollo  Tiene que ser rápido


 No es necesario que sea rápido
Pruebas  Es necesario hacer pruebas constantes
 No es necesario hacer pruebas
Revisiones  Son formales
 No son formales
 Son constantes
 No son constantes
Criticidad del proyecto  Baja, implica perdida de confort
 Mediana, implica pérdida de dinero
 Alta, implica pérdida de vidas
Nivel del equipo del  Bajo (inexpertos, sin experiencia)
proyecto  Mediano (calificados)
 Alto (expertos con experiencia)
Nivel del director del  Bajo (inexpertos, sin experiencia)
proyecto  Mediano (calificados)
 Alto (expertos con experiencia)
Composición del equipo  Estable
de proyecto  Inestable
Errores  Son aceptables
 Son inaceptables
Tamaño del equipo de  Pequeño (1-10)
proyecto  Mediano (10-50)
 Grande (50-100)
Distribución del equipo  En una misma área de trabajo
de proyecto  Distribuido geográficamente
Costo del proyecto  Esta determinado
 No está determinado
 Se tiene que minimizar
 Puede aumentar
Tamaño del proyecto  Pequeño
 Mediano
 Grande
Objetivos  Son claros
 No son claros
Solución  Está definida
 No está clara
Control  Estricto
 Moderado
 No hay control
Tabla 12: Criterios de selección de una metodología.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 55


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

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

Dentro de las limitaciones de las Metodologías Ágiles se considera:

 Proximidad del Cliente.


 Falta de Cualificación
 Dependencia del equipo
 Ausencia de documentación rigurosa para el posterior mantenimiento
 Dificultad de Aplicación en equipos distribuidos.
 Dificultad para realizar más de un proyecto en paralelo.
 Soporte para la gestión de test fundamental.
 Automatizar pruebas es complicado cuando probamos aspectos tales
como interfaces de usuario, sistemas distribuidos, programas que
trabajan con base de datos o aquellos que dependen de configuraciones
de red específicas. (Yague, Rodríguez, & Garbajosa, 2008)

Mientras que las metodologías tradicionales se caracterizan por exponer


procesos basados en planeación exhaustiva, entre ellos se resaltan en sus
limitaciones:
 Su enfoque predictivo.
 Documentación pesada.
 Es exhaustivo la planificación por adelantado.
 Su estilo de gestión es autocrático.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 56


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

CAPÍTULO III: RESULTADOS

3.1. Arquitectura

Como ya sabemos un sistema basado en conocimiento o sistema experto por lo


general consta de cinco módulos: Adquisición del conocimiento, mecanismo de
inferencia, medio de explicación, base de conocimientos y la interfaz de usuario; y
su construcción consta por lo general de cuatro procesos: Adquisición del
conocimiento, Análisis del conocimiento, Representación del conocimiento e
Implementación del conocimiento. En este trabajo de investigación proponemos una
arquitectura de un sistema basado en conocimiento mediante redes neuronales
artificiales, tomando como base la arquitectura clásica de un sistema experto. En la
Figura 18 se muestra nuestra arquitectura propuesta. En esta los módulos de medio
de explicación, mecanismo de inferencia y base de conocimientos pueden ser
sustituidos por una red neuronal artificial, el proceso de adquisición del
conocimiento será parecido al de un sistema experto clásico, con la diferencia que
nosotros definiremos los patrones de entrada, los cuales obtendremos por medio de
entrevistas y/o cuestionarios al experto, e información de libros y artículos
científicos. La base de conocimientos estará conformada por los pesos de las
neuronas, los cuales se han obtenido después de la fase de aprendizaje. El
mecanismo de inferencia seria el algoritmo usado para activar cada neurona.
La interfaz de usuario, es donde los usuarios ingresaran las características del
proyecto software, la organización, etc., las cuales serán los patrones de entrada.
Teniendo los patrones de entrada, nuestro sistema interactuará con la base de datos,
para recuperar los pesos de la red neuronal, la cual ya ha sido entrenada, y utilizará
estos pesos para ejecutar el algoritmo de activación de la red neuronal y así poder
obtener el resultado adecuado, es decir la metodología más adecuada.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 57


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Figura 18: Arquitectura propuesta del Sistema Basado en Conocimiento. Fuente:


Elaboración propia

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 58


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

3.2. Comparación entre modelos de redes neuronales artificiales

En la Tabla 13 se muestra una comparación entre los distintos modelos de redes


neuronales existentes.

Red Red Self Red Red Red


BackPropag Organizing CounterPropa Hopfield Bidirectional
ation Map gation Associative
Memory
Diseñador Rumelhart y Kohonen Hecht-Nielsen Hopfield Bart Kosko
Parker (1985) (1979-82) (1987) (1982) (1987)
Arquitectura La unidad Presenta una La primera Tiene una La red tiene
procesadora topología por capa única capa de dos capas
realiza una dos capas: constituye la unidades centrales de
suma primera es la capa de procesadoras. neuronas
ponderada de capa de entrada, la Cada una de totalmente
las entradas, entrada, y la segunda es la las unidades interconectad
presenta una segunda, capa capa procesadoras as además de
salida y tiene competitiva competitiva o tiene un valor las capas
un valor está de Kohonen y o nivel de buffer de
asociado que organizada en la tercera es la activación, entrada y
se utilizará en una rejilla de capa de salida también salida.
el proceso de dos llamada llamado
ajuste de los dimensiones. también de estado, que es
pesos. Grossberg. binario.
Normalmente Objetivo
, utiliza tres o perseguido por
más capas. esta red, el
emparejamient
o del vector de
entrada X y el
vector deseado
Y.
Característic *Solución a *Aprendizaje *Clasificación *Concepto de *Inspirada en
as las sin Adaptativa de la red en la red ART.
limitaciones supervisión. Patrones. términos de *Heteroasoci
de su red *Organizar *Un buen energía. ativa: acepta
predecesora mapas ejemplo de *Doble un vector de
el Perceptron. topológicos combinación conexión por entrada en un
*Método de de diferentes cada pareja conjunto de
entrenamient capas para la de unidades neuronas y
o construcción procesadoras. produce otro
supervisado. de un nuevo *Red vector
tipo de red. recursiva. relacionado
Algoritmo de Conlleva una Localiza la Durante Tiene El conjunto
Entrenamient fase de neurona en la entrenamiento asignado un de
o propagación capa de se ajustan los estado para entrenamient
hacia Kohonen, pesos de las cada unidad o está
adelante y aumentar la conexiones de de proceso: constituido
otra fase de aproximación las dos capas, procedimient por parejas

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 59


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

propagación de los pesos primero los o de de vectores A


hacia atrás. asociados y correspondient actualización y B. El
Ambas fases disminuye los es a la capa de se aplica a entrenamient
se realizan dos Kohonen (una todas las o consiste en
por cada parámetros: de vez elegida la unidades de el cálculo de
patrón. aprendizaje y neurona una en una, la matriz de
el tamaño del ganadora) y afecta al pesos W
vecindario. después los estado de utilizando la
pesos de la cada unidad regla de
capa de salida. modificándol Hebb. Se
o o diseña para
manteniéndol almacenar
o. parejas
asociadas de
vectores.
Aplicaciones *NetTalk: *Visualizar *Clasificación *Problemas * Se elige a
sistema que topologías y de patrones, de priori los
convierte estructuras aproximación optimización patrones que
texto escrito jerárquicas de a funciones, es el van a ser
en Inglés a espacios de análisis conocido almacenados
voz de alta entrada de estadístico y problema del como
inteligibilida dimensión compresión de vendedor memorias.
d. elevada, así datos. Se ambulante
*Sistema de como su puede resumir (traveler sales
reconocimien utilización en que person, TSP.
to óptico de redes híbridas básicamente el
caracteres para problemas objetivo de
*Reconocimi de predicción y esta red es el
ento de clasificación. mapeo de un
formas de patrón en otro
dos patrón.
dimensiones
Tabla 13: Comparación entre modelos de redes neuronales artificiales.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 60


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

3.3. Comparación entre los algoritmos de entrenamiento sobre redes


neuronales artificiales

En la Tabla 14 se muestra una comparación entre distintos algoritmos de


entrenamiento supervisados para redes neuronales artificiales.

Algoritmo LVQ ART Map Back-propagation ADALINE


de Boltzman
Regla de Regla de Regla de Regla de Regla de Aprendizaje Regla de
Aprendizaje Aprendizaje Aprendizaje Aprendizaje de Corrección del Aprendizaje de
Boltzman Competitivo Competitivo Error. Corrección del
Error.
Elementos Compuesta por Algoritmo Vectores Número de neuronas Aplica un
unidades de adaptativo multidimensi en la capa de entrada vector de
proceso que onales de el cual depende del entrada y
estocásticas encuentra un entrada en número de obtiene la
(probabilística conjunto una serie de componentes del salida
s) óptimo de categorías de vector de entrada, correspondient
vectores de salida cantidad de capas e.
referencia. ocultas y número de
neuronas de cada una
de ellas, número de
neuronas en la capa de
la salida el cual
depende del número de
componentes del
vector de salida.
Aprendizaje Se lleva a cabo Cada Cuenta con Emplea un ciclo Usa la regla
y en dos etapas: neurona en la dos propagación- delta y la
Entrenamie una etapa de primera capa parámetros adaptación de dos derivación de
nto bloqueo o aprende un que fases. Una vez que se ella exige que
ajuste. vector controlan su ha aplicado un patrón la función de
prototipo, el funcionamie a la entrada de la red activación sea
cual permite nto: el como estímulo, este se lineal, que
a la neurona parámetro de propaga desde la busca
clasificar una vigilancia primera capa a través Minimizar el
región del “ρ” quien de las capas superiores error
espacio; los determina lo de la red, hasta generar cuadrático
vectores no riguroso que una salida. La señal de medio sobre
necesitan ser debe ser el salida se compara con todos los
normalizados algoritmo a la salida deseada y se patrones de
. la hora de calcula una señal de entrenamiento.
agrupar error para cada una de
La segunda medidas y el las salidas. Las salidas
capa es usada parámetro de error se propagan
para “β” quien hacia atrás, partiendo
combinar controla la de la capa de salida,
subclases velocidad de hacia todas las
dentro de una aprendizaje. neuronas de la capa
sola clase. oculta.
Característi No tienen Las neuronas Aprendizaje Capacidad de auto Calcula el
cas distinción de LVQ se rápido con adaptar los pesos de error a partir

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 61


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

entre capa de actualizan de muy poca las neuronas de las de la entrada


entrada/ocult modo carga capas intermedias para neta.
a/salida, sino independient computacion aprender la relación
que sus PE e. al, lo que que existe entre un Garantiza no
pertenecen a permite conjunto de patrones. sólo una
uno de dos Emplea en la programar el solución válida
posibles clasificación algoritmo en Capacidad genérica de para
conjuntos: la distancia dispositivos mapeo de patrones. problemas
conjunto de Euclídea y el programables linealmente
elementos de número de de bajo Su potencia reside en separables,
procesado prototipos coste, aplicar la capacidad de sino la que
visibles, que por clase no validaciones entrenar capas ocultas produce un
interaccionan es muy cruzadas de y superar las error mínimo.
con el entorno grande en orden 1 y posibilidades
o conjunto de comparación probar con restringidas. Se utiliza para
elementos de con la diferentes entrenar un
procesado no dimensión combinacion Consiste en minimizar elemento
visibles u del es de un error por medio de simple de
ocultos. problema. parámetros. gradiente procesado, con
descendiente. una función de
Usan como PE de su Aprendizaje transferencia
función de capa de continuo sin lineal.
activación la salida olvidar lo
distribución de compiten aprendido La principal
Boltzman, que entre sí de tal con aplicación se
genera salidas forma que el anterioridad encuentra en el
±1 y está ganador se campo de
basada en la activa e procesamiento
Teoría de la identifica la de señales.
Información y clase a la que
la pertenece el
termodinámica patrón de
. entrada.
Tabla 14: Comparación entre algoritmos de aprendizaje supervisado.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 62


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

3.4. Razones para considerar el algoritmo Back-propagation como método de


la investigación

 Se ha demostrado que el perceptrón multicapa con una sola capa oculta y un


número suficiente de neuronas en esta capa, es un clasificador universal. Una
característica importante del perceptrón multicapa es su tolerancia a fallos.
 El algoritmo de back-propagation es el método de aprendizaje que
comúnmente se usa para entrenar el perceptrón multicapa.
 Eficiencia computacional, ya que su coste computacional es O (N), donde N
es el número total de pesos y umbrales.
 Es el más utilizado en la práctica, por lo que existe una amplia
documentación de este, así como librerías (MLP, Neural Net) y métodos en
diferentes lenguajes de programación que pueden ser usados.
 Una vez entrenada, la red es capaz de generalizar, clasificando correctamente
patrones ruidosos o incompletos.
 Debido a las características de nuestro problema, en donde nosotros
definiremos los patrones de entrada (criterios de selección de una
metodología) y salida (metodologías más usadas en la actualidad) para
nuestra red neuronal, luego de adquirir el conocimiento de los expertos.
Consideramos que el algoritmo de aprendizaje back-propagation es lo
suficientemente adecuado como algoritmo de entrenamiento para nuestra red
neuronal.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 63


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

3.5. Patrones de Entrada (Criterios de selección):


Para un primer prototipo se han recopilado los siguientes criterios de selección:
Criterios Opciones Patrón de
Entrada
Equipo de trabajo 1. Son expertos 100
2. Son calificados 010
3. Tienen poca experiencia 001
4. Es estable 10
5. Es inestable 01
6. Tamaño: Pequeño (1-10) 100
7. Tamaño: Mediano (11-20) 010
8. Tamaño: Grande (20-más) 001
9. En una misma locación 10
10. Distribuido geográficamente 01
Requerimientos 11. Ya están definidos 10
12. Aún no están definidos 01
13. Son estables 10
14. Pueden cambiar 01
Documentación 15. Es necesarias 10
16. No es necesaria 01
Revisiones y 17. Son estrictas 10
control 18. No son estrictas 01
Recursos 19. Es necesario minimizar su uso 10
20. Existen suficientes recursos 01
Mantenimiento 21. Necesario en el futuro 10
22. No será necesario en un futuro 01
Proyecto 23. Es pequeño 100
24. Es mediano 010
25. Es grande 001
Criticidad 26. Baja 100
27. Mediana 010
28. Alta 001
Implementación 29. Lo más antes posible 10
30. No existe presión 01
Solución y 31. Son claros y definidos 10
objetivos 32. No están claros y definidos 01
Riesgos 33. Es necesario su análisis y manejo 10
34. No es necesario su análisis y manejo 01
Integración de 35. Debe ser eficiente 10
código 36. No se integrara código 01
Pruebas 37. Son constantes 10
38. No son constantes 01
Calidad del 39. Debe ser alta 10
software 40. No se requiere un producto de alta 01
calidad
Cliente 41. Forma parte del equipo 10
42. No forma parte del equipo 01
Tabla 15: Patrones de entrada.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 64


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

3.6. Patrones de Salida:

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.

3.7. Modelo de la Red Neuronal Artificial:

Para un primero prototipo la red neuronal artificial tendrá:


 Número de neuronas en la capa de entrada: 42
 Número de capas ocultas: 1
 Número de neuronas en la capa oculta: 29
 Número de neuronas en la capa de salida: 4
En la Figura 19 se muestra el modelo de nuestra red neuronal artificial.

Figura 19: Modelo de red neuronal artificial. Fuente: Elaboración propia.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 65


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

3.8. Algoritmo Back-propagation

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

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 66


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

3.9. Desarrollo del Sistema Basado en Conocimiento

3.9.1. Adquisición del Conocimiento

El conocimiento fue obtenido de libros y artículos científicos, y una entrevista


que se hizo a un experto en SCRUM, para cuatro metodologías elegidas: El
modelo en cascada, Rational Unified Process, SCRUM y XP, a continuación se
presentan algunas características y criterios para su selección de estas:
-Modelo en Cascada:
 Ideal para equipos de proyecto con poca experiencia.
 El o los jefes de proyecto tienen poca experiencia.
 La composición del equipo de proyecto no es estable.
 Se necesita realizar una correcta y amplia documentación.
 Existen revisiones y/o controles formales y estrictos del diseño.
 Se hará mantenimiento al software en el futuro por ello se requiere la
documentación.
 Se necesita medir el progreso de desarrollo del software.
 Se necesita conservar recursos.
 Se han identificado y especificado los requerimientos tempranamente.
 No habrán cambios.
 Se tiene tiempo. No existe presión para su implementación inmediata.
 El proyecto es largo, costoso y complicado.
 El proyecto tiene una solución y objetivos claros.
 Los requerimientos del proyecto pueden ser establecidos sin ambigüedades
y comprensivamente.
 Los requerimientos son estables.
 Los usuarios son conocedores del negocio y la aplicación.

-Rational Unified Process:


 Adecuado para proyectos de pequeña, mediana y grande escala.
 Es necesario priorizar el manejo de riesgos.
 Tiene documentación precisa y comprensible.
 Los cambios se pueden manejar de forma eficiente.
 La integración de código es eficiente.
 Permite la reutilización de código y componentes de software.
 Los profesionales deben estar altamente capacitados.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 67


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 El proceso de desarrollo es complejo y pobremente organizado.


 Adecuado cuando es necesario verificar constantemente la calidad.
 Adecuada cuando se necesitan hacer pruebas constantemente.
 Adecuada para diferentes dominios de aplicación, por ejemplo:
telecomunicaciones, transporte, construcción y finanzas.
 Se adecua mejor para proyectos con criticidad media o alta. Para proyectos
con criticidad baja RUP se vuelve menos eficiente y consume más tiempo,
debido a la documentación extensiva que se debe generar.
 Provee herramientas que ayudan al proceso de desarrollo (IBM solutions).
 RUP debe ser configurado y adecuado al contexto específico y a las
necesidades de una organización antes de su completa implementación.
Una de sus desventajas es que no provee pautas para su implementación,
por lo que se requiere conocimientos externos.
 No existe un límite de numero para los integrantes de un equipo, se adecua
mejor para proyectos grandes, a equipos más grandes, más eficiente el
proceso.
 Se requiere que el equipo de trabajo sea disciplinado, cada miembro
realiza una tarea definida, con un conocimiento limitado de los que otros
miembros hacen.
 Adoptar RUP requiere de una gran inversión. Esto incluye comprar, las
herramientas, costos por entrenar a las personas a usar las herramientas, y
si se quiere adecuar RUP de acuerdo a las necesidades de la organización,
se agrega un costo adicional, este proceso en si es un proyecto que requiere
pericia externa.
 Adecuado cuando se requiere un software de alta calidad.
 Se tienen definidos los requerimientos.
 Los miembros del equipo deben tener experiencia en el campo que se le
asigne.

-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.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 68


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 Las estimaciones de costos no son muy precisas.


 Adecuado para ambientes de constante cambio.
 Adecuada para equipos de trabajo pequeños (1-7).
 Los miembros del equipo deben estar en una misma locación.
 Criticidad del sistema: baja-media.
 Poca necesidad de 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.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 69


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

3.9.2. Análisis del Conocimiento

En la Tabla 17, se muestran los criterios de selección elegidos, sus opciones y


las cuatro metodologías. Se marca con una X los criterios de selección que se
tienen en cuenta para cada metodología:
Criterios Opciones Cascada RUP SCRUM XP
Equipo de trabajo 1. Son expertos X
2. Son calificados X X
3. Tienen poca experiencia X
4. Es estable X
5. Es inestable X
6. Tamaño: Pequeño (1-10) X X
7. Tamaño: Mediano (11-20) X X
8. Tamaño: Grande (20-más) X
9. En una misma locación X X
10. Distribuido
geográficamente
Requerimientos 11. Ya están definidos X X X
12. Aún no están definidos X
13. Son estables X X
14. Pueden cambiar X X X
Documentación 15. Es necesarias X
16. No es necesaria X X
Revisiones y 17. Son estrictas X
control 18. No son estrictas X
Recursos 19. Es necesario minimizar su X X
uso
20. Existen suficientes recursos X
Mantenimiento 21. Necesario en el futuro X X X
22. No será necesario en un
futuro
Proyecto 23. Es pequeño X X
24. Es mediano X X X
25. Es grande X X X
Criticidad 26. Baja X X
27. Mediana X X
28. Alta X X
Implementación 29. Lo más antes posible X
30. No existe presión X
Solución y 31. Son claros y definidos X
objetivos 32. No están claros y definidos
Riesgos 33. Es necesario su análisis y X
manejo
34. No es necesario su análisis
y manejo

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 70


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Integración de 35. Debe ser eficiente X X


código 36. No se integrara código
Pruebas 37. Son constantes X X
38. No son constantes
Calidad del 39. Debe ser alta X X X
software 40. No se requiere un producto
de alta calidad
Cliente 41. Forma parte del equipo X X
42. No forma parte del equipo
Tabla 17: Criterios de Selección y Metodologías

3.9.3. Representación del Conocimiento

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.

 Regla LN 2: 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 alta(28), 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.

 Regla LN 3: Si el equipo de trabajo es experimentado (1), el tamaño del


equipo es mediano (7), los requerimientos ya están definidos(11) y pueden
cambiar(14), la documentación no es necesaria(16), se tienen suficientes
recursos(20), se hará mantenimiento al sistema en el futuro(21), el proyecto

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 71


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

es mediano(24), la criticidad es alta(28), es necesario el análisis y manejo de


riesgos(33), la integración de código debe ser eficiente(35), las pruebas son
constantes(37) y la calidad del software debe ser alta(39), la metodología
será RUP.

 Regla LN 4: Si el equipo de trabajo es experimentado (1), el tamaño del


equipo es mediano (7), los requerimientos ya están definidos(11) y pueden
cambiar(14), la documentación no es necesaria(16), se tienen suficientes
recursos(20), se hará mantenimiento al sistema en el futuro(21), el proyecto
es grande(25), la criticidad es alta(28), es necesario el análisis y manejo de
riesgos(33), la integración de código debe ser eficiente(35), las pruebas son
constantes(37) y la calidad del software debe ser alta(39), la metodología
será RUP.

 Regla LN 5: Si el equipo de trabajo es experimentado (1), el tamaño del


equipo es grande (8), los requerimientos ya están definidos(11) y pueden
cambiar(14), la documentación no es necesaria(16), se tienen suficientes
recursos(20), se hará mantenimiento al sistema en el futuro(21), el proyecto
es mediano(24), la criticidad es alta(28), es necesario el análisis y manejo de
riesgos(33), la integración de código debe ser eficiente(35), las pruebas son
constantes(37) y la calidad del software debe ser alta(39), la metodología
será RUP.

 Regla LN 6: Si el equipo de trabajo es experimentado (1), el tamaño del


equipo es grande (8), los requerimientos ya están definidos(11) y pueden
cambiar(14), la documentación no es necesaria(16), se tienen suficientes
recursos(20), se hará mantenimiento al sistema en el futuro(21), el proyecto
es mediano(25), la criticidad es alta(28), es necesario el análisis y manejo de
riesgos(33), la integración de código debe ser eficiente(35), las pruebas son
constantes(37) y la calidad del software debe ser alta(39), la metodología
será RUP.

 Regla LN 7: Si el equipo de trabajo es calificado (2), el equipo es estable(4),


el tamaño del equipo es pequeño (6), está en una misma locación (9), los

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 72


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

requerimientos ya están definidos (11), son estables(13), las revisiones y el


control no son estrictos(18), es necesario el mantenimiento en el futuro(21),
el proyecto es pequeño (23), la criticidad es baja (26), la calidad del
software debe ser alta(39), el cliente forma parte del equipo(41), la
metodología será SCRUM.

 Regla LN 8: Si el equipo de trabajo es calificado (2), el equipo es estable(4),


el tamaño del equipo es pequeño (6), está en una misma locación (9), los
requerimientos ya están definidos (11), son estables(13), las revisiones y el
control no son estrictos(18), es necesario el mantenimiento en el futuro(21),
el proyecto es pequeño (23), la criticidad es mediana (27), la calidad del
software debe ser alta(39), el cliente forma parte del equipo(41), la
metodología será SCRUM.

 Regla LN 9: Si el equipo de trabajo es calificado (2), el equipo es estable(4),


el tamaño del equipo es pequeño (6), está en una misma locación (9), los
requerimientos ya están definidos (11), son estables(13), las revisiones y el
control no son estrictos(18), es necesario el mantenimiento en el futuro(21),
el proyecto es mediano (24), la criticidad es baja (26), la calidad del
software debe ser alta(39), el cliente forma parte del equipo(41), la
metodología será SCRUM.

 Regla LN 10: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos ya están definidos (11), son estables(13), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es mediano (24), la criticidad es mediana (27),
la calidad del software debe ser alta(39), el cliente forma parte del
equipo(41), la metodología será SCRUM.

 Regla LN 11: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos ya están definidos (11), pueden cambiar(14), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 73


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

en el futuro(21), el proyecto es pequeño (23), la criticidad es baja (26), la


calidad del software debe ser alta(39), el cliente forma parte del equipo(41),
la metodología será SCRUM.

 Regla LN 12: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos ya están definidos (11), pueden cambiar(14), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es pequeño (23), la criticidad es mediana (27),
la calidad del software debe ser alta(39), el cliente forma parte del
equipo(41), la metodología será SCRUM.

 Regla LN 13: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos ya están definidos (11), pueden cambiar(14), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es mediano (24), la criticidad es baja (26), la
calidad del software debe ser alta(39), el cliente forma parte del equipo(41),
la metodología será SCRUM.

 Regla LN 14: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos ya están definidos (11), pueden cambiar(14), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es mediano (24), la criticidad es mediana (27),
la calidad del software debe ser alta(39), el cliente forma parte del
equipo(41), la metodología será SCRUM.

 Regla LN 15: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos aún no están definidos (12), son estables(13), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es pequeño (23), la criticidad es baja (26), la

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 74


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

calidad del software debe ser alta(39), el cliente forma parte del equipo(41),
la metodología será SCRUM.

 Regla LN 16: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos aún no están definidos (12), son estables(13), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es pequeño (23), la criticidad es mediana (27),
la calidad del software debe ser alta(39), el cliente forma parte del
equipo(41), la metodología será SCRUM.

 Regla LN 17: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos aún no están definidos (12), son estables(13), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es mediano (24), la criticidad es baja (26), la
calidad del software debe ser alta(39), el cliente forma parte del equipo(41),
la metodología será SCRUM.

 Regla LN 18: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos aún no están definidos (12), son estables(13), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es mediano (24), la criticidad es mediana (27),
la calidad del software debe ser alta(39), el cliente forma parte del
equipo(41), la metodología será SCRUM.

 Regla LN 19: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos aún no están definidos (12), pueden cambiar(14), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es pequeño (23), la criticidad es baja (26), la
calidad del software debe ser alta(39), el cliente forma parte del equipo(41),
la metodología será SCRUM.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 75


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 Regla LN 20: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos aún no están definidos (12), pueden cambiar(14), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es pequeño (23), la criticidad es mediana (27),
la calidad del software debe ser alta(39), el cliente forma parte del
equipo(41), la metodología será SCRUM.

 Regla LN 21: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos aún no están definidos (12), pueden cambiar(14), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es mediano (24), la criticidad es baja (26), la
calidad del software debe ser alta(39), el cliente forma parte del equipo(41),
la metodología será SCRUM.

 Regla LN 22: Si el equipo de trabajo es calificado (2), el equipo es


estable(4), el tamaño del equipo es pequeño (6), está en una misma locación
(9), los requerimientos aún no están definidos (12), pueden cambiar(14), las
revisiones y el control no son estrictos(18), es necesario el mantenimiento
en el futuro(21), el proyecto es mediano (24), la criticidad es mediana (27),
la calidad del software debe ser alta(39), el cliente forma parte del
equipo(41), la metodología será SCRUM.

 Regla LN 23: Si el equipo de proyecto es calificado(2), el tamaño del


equipo es pequeño(6), los integrantes se encuentran en una misma
locación(9), los requerimientos pueden cambiar(14), la documentación no es
necesaria(16), es necesario minimizar el uso de recursos(19), el proyecto es
pequeño(23), la criticidad del proyecto es baja(26), se requiere una
implementación lo más antes posible(29), la integración de código debe ser
eficiente(35), las pruebas son constantes(37), la calidad del software debe
ser alta(39) y el cliente forma parte del equipo de trabajo(41), la
metodología a usar será XP.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 76


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 Regla LN 24: Si el equipo de proyecto es calificado(2), el tamaño del


equipo es pequeño(6), los integrantes se encuentran en una misma
locación(9), los requerimientos pueden cambiar(14), la documentación no es
necesaria(16), es necesario minimizar el uso de recursos(19), el proyecto es
mediano(24), la criticidad del proyecto es baja(26), se requiere una
implementación lo más antes posible(29), la integración de código debe ser
eficiente(35), las pruebas son constantes(37), la calidad del software debe
ser alta(39) y el cliente forma parte del equipo de trabajo(41), la
metodología a usar será XP.

 Regla LN 25: Si el equipo de proyecto es calificado(2), el tamaño del


equipo es pequeño(6), los integrantes se encuentran en una misma
locación(9), los requerimientos pueden cambiar(14), la documentación no es
necesaria(16), es necesario minimizar el uso de recursos(19), el proyecto es
grande(25), la criticidad del proyecto es baja(26), se requiere una
implementación lo más antes posible(29), la integración de código debe ser
eficiente(35), las pruebas son constantes(37), la calidad del software debe
ser alta(39) y el cliente forma parte del equipo de trabajo(41), la
metodología a usar será XP.

 Regla LN 26: Si el equipo de proyecto es calificado(2), el tamaño del


equipo es mediano(7), los integrantes se encuentran en una misma
locación(9), los requerimientos pueden cambiar(14), la documentación no es
necesaria(16), es necesario minimizar el uso de recursos(19), el proyecto es
pequeño(23), la criticidad del proyecto es baja(26), se requiere una
implementación lo más antes posible(29), la integración de código debe ser
eficiente(35), las pruebas son constantes(37), la calidad del software debe
ser alta(39) y el cliente forma parte del equipo de trabajo(41), la
metodología a usar será XP.

 Regla LN 27: Si el equipo de proyecto es calificado(2), el tamaño del


equipo es mediano(7), los integrantes se encuentran en una misma
locación(9), los requerimientos pueden cambiar(14), la documentación no es
necesaria(16), es necesario minimizar el uso de recursos(19), el proyecto es

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 77


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

mediano(24), la criticidad del proyecto es baja(26), se requiere una


implementación lo más antes posible(29), la integración de código debe ser
eficiente(35), las pruebas son constantes(37), la calidad del software debe
ser alta(39) y el cliente forma parte del equipo de trabajo(41), la
metodología a usar será XP.

 Regla LN 28: Si el equipo de proyecto es calificado(2), el tamaño del


equipo es mediano(7), los integrantes se encuentran en una misma
locación(9), los requerimientos pueden cambiar(14), la documentación no es
necesaria(16), es necesario minimizar el uso de recursos(19), el proyecto es
grande(25), la criticidad del proyecto es baja(26), se requiere una
implementación lo más antes posible(29), la integración de código debe ser
eficiente(35), las pruebas son constantes(37), la calidad del software debe
ser alta(39) y el cliente forma parte del equipo de trabajo(41), la
metodología a usar será XP.

3.9.4. Implementación del Conocimiento

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

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 78


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 Patrones de entrada y salida:

Patrón de entrada Patrón de Metodología


salida
001010000010101010101000101001100000000000 1000 Cascada
001010000010101010101000100101100000000000 1000 Cascada
100000100010010100011001000100001010101000 0100 RUP
100000100010010100011000100100001010101000 0100 RUP
100000010010010100011001000100001010101000 0100 RUP
100000010010010100011000100100001010101000 0100 RUP
010101001010100001001010010000000000001010 0010 SCRUM
010101001010100001001010001000000000001010 0010 SCRUM
010101001010100001001001010000000000001010 0010 SCRUM
010101001010100001001001001000000000001010 0010 SCRUM
010101001010010001001010010000000000001010 0010 SCRUM
010101001010010001001010001000000000001010 0010 SCRUM
010101001010010001001001010000000000001010 0010 SCRUM
010101001010010001001001001000000000001010 0010 SCRUM
010101001001100001001010010000000000001010 0010 SCRUM
010101001001100001001010001000000000001010 0010 SCRUM
010101001001100001001001010000000000001010 0010 SCRUM
010101001001100001001001001000000000001010 0010 SCRUM
010101001001010001001010010000000000001010 0010 SCRUM
010101001001010001001010001000000000001010 0010 SCRUM
010101001001010001001001010000000000001010 0010 SCRUM
010101001001010001001001001000000000001010 0010 SCRUM
010001001000010100100010010010000010101010 0001 XP
010001001000010100100001010010000010101010 0001 XP
010001001000010100100000110010000010101010 0001 XP
010000101000010100100010010010000010101010 0001 XP
010000101000010100100001010010000010101010 0001 XP
010000101000010100100000110010000010101010 0001 XP
Tabla 18: Patrones de Entrada y Salida.
 Número de capas ocultas: 1
 Número de neuronas en la capa oculta: 29

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 79


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

3.10. Diseño de interfaces

Para un primero prototipo de nuestro sistema basado en conocimiento, hemos


diseñado las siguientes interfaces:

Figura 20: Interfaz de Inicio. Fuente: Elaboración propia.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 80


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Figura 21: Interfaz EquipoProyecto. Fuente: Elaboración propia.

Figura 22: Interfaz ReqDocCon. Fuente: Elaboración propia.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 81


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Figura 23: Interfaz Proyecto1. Fuente: Elaboración propia.

Figura 24: Interfaz Proyecto2. Fuente: Elaboración propia.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 82


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

Figura 25: Interfaz RecursosYCliente. Fuente: Elaboración propia.

Figura 26: Interfaz Resultados. Fuente: Elaboración propia.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 83


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

CAPÍTULO IV: DISCUSIÓN

TRABAJOS FUTUROS

CONCLUSIONES

RECOMENDACIONES

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 84


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

CAPÍTULO V: REFERENCIAS BIBLIOGRÁFICAS

 Bertona, L. F. (2005). ENTRENAMIENTO DE REDES NEURONALES


BASADO EN ALGORITMOS EVOLUTIVOS. Buenos Aires: Universidad de
Buenos Aires.
 Centers for Medicare & Medicaid Services. (27 de Marzo de 2008).
https://www.cms.gov/. Obtenido de https://www.cms.gov/research-statistics-
data-and-systems/cms-information-
technology/xlc/downloads/selectingdevelopmentapproach.pdf
 Laboratorio Nacional de Calidad del Software. (2009). Ingeniería del Software:
Metodologías y Ciclos de Vida. España: INTECO.
 Liviu, M. (2014). Comparative study on software development methodologies.
Database Systems Journal, 37-56.
 Palma Méndez, J. T., & Marín Morales, R. (2008). Inteligencia Artificial:
Técnicas, métodos y aplicaciones. Madrid: McGRAW-HILL.
 Peña Ayala, A. (2006). Sistemas Basados en Conocimiento: Una base para su
concepción y desarrollo. Mexico D.F.: Instituto Politécnico Nacional.
 Piattini, M., Calvo, J., Cervera, J., & Fernández, L. (2000). Análisis y diseño
detallado de Aplicaciones Informáticas de Gestión. Alfaomega.
 Pinzon, S., & Guevara Bolaños, J. C. (2006). La Gestión, los procesos y las
metodologías de desarrollo de software. Bogotá.
 Pressman, R. (2010). Ingeniería del Software: Un Enfoque Practico (Séptima
ed.). Mexico: McGraw-Hill.
 Sajja, P. S., & Akerkar, R. (2010). Knowledge-based Systems (Primera ed.).
USA: Jones and Bartlett Publishers.
 Sajja, P. S., & Akerkar, R. (2010). Knowledge-Based Systems for Development
. TMRF, 1-11.
 Serrano, A. J., Soria, E., & Martín, J. D. (2010). Redes Neuronales Artificiales.
Valencia: Escuela Técnica Superior de Ingeniería.
 Software Engineering Standards Comite of the IEEE Computer Society. (s.f.).
IEEE Standars for Developing Software Life Cycle.
 Sommerville, I. (2011). Ingeniería de Software (Novena ed.). Mexico: Pearson
Education.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 85


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

 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.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 86


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

ANEXOS

1 Instrumentos de Recopilación de Información:

Para la fase de adquisición de conocimiento se realiza la siguiente entrevista:

Formato para entrevista estructurada


Presentación: Como parte del Trabajo de Graduación., titulado: Sistema basado en
conocimiento mediante redes neuronales artificiales para la selección de una
metodología de desarrollo de software en la creación de un proyecto software, y
como parte de la fase de adquisición del conocimiento de la metodología de
desarrollo, presento este modelo de entrevista, de la cual la información recolectada
es de carácter confidencial, y solo será utilizada para los propósitos de la
investigación. De antemano, se agradece su colaboración.

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.

-¿Existe algún inconveniente o desventaja en el uso de una metodología?


En algunos contextos los artefactos, reuniones y roles podrían no ser adecuados.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 87


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

-¿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.

2.- Criterios de selección:


-¿Para qué tipo o tipos de requerimientos (definidos, indefinidos, fijos, cambiantes,
etc.) es apropiado usar la metodología Scrum?
Cualquiera.

-¿Si el proyecto está expuesto a cambios constantes es adecuado usar la metodología


Scrum?
Si, mientras se pueda respetar el sprint.

-¿Si se requiere que en el futuro se le de mantenimiento al software se puede usar la


metodología Scrum?
Si.
-¿Si se requiere un producto software de calidad es adecuado usar la metodología
Scrum?
Si.

-¿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

-¿Es conveniente usar la metodología Scrum cuando el cliente no está involucrado


en la realización del proyecto?
En principio se complica usar Scrum si no hay involucramiento (se pierde el valor
de la iteración).

¿Si es necesario que en el proyecto se realicen pruebas constantes, es conveniente


usar la metodología Scrum?
Si.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 88


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

-¿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.

-¿Siendo el nivel de conocimientos de un equipo de trabajo: bajo (sin experiencia),


mediano (calificados) o alto (expertos), con cual o cuales niveles es más
conveniente usar la metodología Scrum?
En principio si todo el equipo no tiene experiencia se necesitaría un buen facilitador
y PO, en los otros casos si es conveniente usar Scrum.

-¿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.

-¿Por cuantos trabajadores (como mínimo y máximo) puede estar conformado el


equipo de trabajo para poder usar la metodología Scrum óptimamente?
Mínimo 3 y máximo 9

-¿Es adecuado utilizar la metodología Scrum si se quieren reducir al máximo los


errores?
Si.
-¿Siendo los tamaños de un proyecto: pequeño, mediano, grande, con cuál o cuáles
de ellos es más conveniente usar la metodología Scrum?
Todos.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 89


Sistema Basado en Conocimiento mediante Redes Neuronales Artificiales para la selección de
una Metodología de Desarrollo de Software en la creación de un Proyecto Software

-¿Si se requiere llevar un control estricto del desarrollo del proyecto, es conveniente
usar la metodología Scrum?
No.

Mayra Isabel Villanueva Ruiz – Manuel Alejandro Medina Vega 90

Potrebbero piacerti anche