[[TOC(heading=This section pages, WikiStart, noheading, AnalisisDominio, PropuestaDesarrollo, PlanProyecto, EstandaresDesarrollo, IdentificacionFuncionalidades, Codificacion, PrototipoInterfaz, Pruebas, Liberacion, heading=Tabla de Contenido)]] = Especificación de Funcionalidades = == Requisitos Funcionales == === 1.- Cargar Matriz === {{{ #!plantuml @startuml title Cargar Matriz de Contabilidad Social left to right direction Sistema -- (Solicitar parámetros\n de la matriz) note right of (Solicitar parámetros\m de la matriz) nro. de cuenta, ruta del archivo,\n delimitador, año, país. end note Sistema -- (Leer archivos .csv) (Leer archivos .csv) --> (cargar información\n contenida en el\n archivo) Sistema -- (Mostrar Matriz Cargada) @enduml }}} ||'''''Nombre del caso de uso:'''''[[BR]]||Cargar Matriz de Contabilidad Social|| ||'''''Actores participantes:'''''[[BR]]||Usuario|| ||'''''Condiciones de entrada:'''''[[BR]]||El usuario cuenta con archivo .csv donde se encuentra tanto los nombres de las columnas como los valores de cada una de las celdas|| ||'''''Condiciones de salida:'''''[[BR]]||Es sistema muestra en la interfaz la matriz cargada|| ||'''''Flujo de básico:'''''[[BR]]||1.- El usuario hace click sobre el menú archivo.\\ 2.- El sistema despliega tres opciones: Nuevo Proyecto, Cargar Matriz, Exportar Matriz y Salir. \\ 3.- El Usuario selecciona '''Cargar Matriz'''\\ 4.- El sistema despliega una ventana solicitando:Número de cuentas, número de decimales y lugar donde se encuentra ubicado el archivo .csv \\ 5.- El Usuario introduce los datos solicitados\\ 6.- El Sistema verifica la validez de los datos. \\ 7.- Sistema carga archivo .csv \\8.- El Sistema identifica la primera fila del archivo. \\9.- El sistema duplica y traspone dicha fila y la coloca en la primera columna \\10.- El Sistema solicita nombre de la cuenta y número de filas que la conforman. \\11.- El Usuario introduce los datos solicitados. \\ 12.- El sistema muestra la matriz con división de las cuentas, tanto en las filas como columnas || ||'''''Flujos alternativos:'''''[[BR]]|| || ||'''''Requisitos especiales:'''''||El archivo .csv debe tener el nombre de las filas(y columnas) sólo en la primera fila, estos nombres se replicaran y se colocaran por el lado de la columna. || === 2.- Cálculos Básicos de Matrices === {{{ #!plantuml @startuml title Cálculos Básicos de Matrices left to right direction Sistema --(Construir Matriz Identidad) Sistema -- (Restar Matrices) Sistema -- (Calcular Matriz Inversa) Sistema -- (Multiplicar Matriz por Matriz) Sistema -- (Multiplicar Matriz por Vector) Sistema -- (Multiplicar elementos de la matriz) @enduml }}} === 3.- Coeficientes Técnicos === {{{ #!plantuml @startuml title Coeficientes Técnicos left to right direction Usuario -- (Seleccionar\n Menú Herramientas) note right of (Seleccionar\n Menú Herramientas) Coeficientes Técnicos. end note (Seleccionar\n Menú Herramientas) --> (Seleccionar tipo de\n coeficiente técnico) Sistema -- (Sumar total de\n Columna o fila) (Sumar total de\n Columna o fila) --> (Dividir cada elemento\n de la matriz con el\n total correspondiente a la columan o fila) Sistema --(Mostrar en otra pestaña\n los resultados obtenidos) Sistema -- (Descargar resultados\n en archivo .csv) @enduml }}} ||'''''Nombre del caso de uso:'''''[[BR]]||Coeficientes Técnicos|| ||'''''Actores participantes:'''''[[BR]]||Usuario|| ||'''''Condiciones de entrada:'''''[[BR]]||Ya debe estar cargada la matriz base|| ||'''''Condiciones de salida:'''''[[BR]]||Es sistema muestra en la interfaz la matriz de coeficientes técnicos|| ||'''''Flujo de básico:'''''[[BR]]||1.- El usuario hace click en el menú '''herramienta'''\\ 2.- El usuario selecciona una de las opciones '''Coeficientes técnicos'''\\ 3.- El sistema desplega un submenú: a.- Verticales. b.- Horizontales.\\ 4.- El usuario selecciona una de las opciones\\ 5.- El sistema calcula el total por fila o columna según sea el caso.\\ 6.- El sistema divide cada uno de los elementos de la matriz por columna o fila de acuerdo caso. \\ 7.- El sistema valida que los coeficientes sean menor a uno (1)\\8.- El Sistema verifica que el total de la columna o fila sea igual a (1) de acuerdo al caso. \\9.- El Sistema muestra los resultados en una pestaña.|| ||'''''Flujos alternativos:'''''[[BR]]||7.1 Si el coeficiente es negativo o mayor a uno, el Sistema debe mostrar un aviso de error y/o señalar en rojo la celda donde están dichos coeficientes. || ||'''''Requisitos especiales:'''''|||| === 4.- Clasificar Cuentas === {{{ #!plantuml @startuml title Clasificar Cuentas Endógenas - Exógenas left to right direction Usuario -- (Seleccionar\n Menú Herramientas) (Seleccionar\n Menú Herramientas) --> (Seleccionar Definir\n Variables Exógenas) Sistema -- (Mostrar Cuentas) (Mostrar Cuentas)--> (Mostrar Componentes) Usuario -- (Seleccionar Cuentas) (Seleccionar Cuentas)--> (Seleccionar Componentes) @enduml }}} ||'''''Nombre del caso de uso:'''''[[BR]]||Clasificar Cuentas Endógenas - Exógenas|| ||'''''Actores participantes:'''''[[BR]]||Usuario|| ||'''''Condiciones de entrada:'''''[[BR]]||Ya debe estar cargada la matriz base|| ||'''''Condiciones de salida:'''''[[BR]]||Se muestra prestaña con la matriz Endógenas -Endógenas y la pestaña: Tipo de Variable muestra las cuentas endógenas y exógenas|| ||'''''Flujo de básico:'''''[[BR]]||1.- El Usuario hace click en el Menú '''Herramientas'''\\2.- El Sistema despliega el menú.\\3.- El Usuario hace click sobre la opción '''Definir Variables Exógenas'''.\\ 4.- Es Sistema muestra una ventana emergente solicitando cuenta y componentes Exógenas.\\5.- El Usuario selecciona la cuenta.\\ 6.- El Sistema muestra los componentes asociados a la cuenta seleccionada.\\7.- Usuario selecciona uno o más componentes asociados a la cuenta seleccionada.\\ 8.- El Usuario presiona el botón agregar\\ 9.- El usuario presiona el botón Finalizar\\ 10.- El sistema muestra la matriz endógena-endógena\\ 11.- El sistema muestra las variables exógenas y endógena de la matriz base en la pestaña '''Tipo de Variable'''.\\|| ||'''''Flujos alternativos:'''''[[BR]]||8.1. Selecciona otra cuenta y componentes que serán exógenas.|| ||'''''Requisitos especiales:'''''|||| === 5.- Modelo Clásico === {{{ #!plantuml @startuml title Modelo Clásico left to right direction Sistema -- (Dividir cada elemento de\n la Matriz Base entre el\n total de la columna Matriz Base\n '''Resultado: An''') Sistema -- (Construir una Matriz\n Identidad del tamaño de la\n matriz Endogena-Endogena\n '''Resultado: I''') Sistema -- (Restar I - An) (Restar I - An) --> (Estimar la '''Inversa''' [I-An]\n '''Resultado: Ma''') Sistema -- (Solicita valor\n del porcentaje de\n ajuste de políticas: '''i''') Sistema -- (Suma las filas de\n la matriz Exog-Endo: '''Su-Exo-End''') Sistema -- (Multiplica Vector '''i por Su-Exo-End''' :\n '''Inyección''') (Multiplica Vector\n '''i por Su-Exo-End''' :\n '''Inyección''') --> (Suma vector\n Inyección con Su-Exo-End:\n '''Escenario n''') (Suma vector\n Inyección con Su-Exo-End:\n '''Escenario n''') --> (Mulitplica la matriz '''Ma con el vector Escenario n''') Sistema -- (Muestra las pestañas:\n Ma, Escenario [i,Su-Exo-End, Inyección, Escenario n]\n Pestaña Resultado [Total fila base y variación]) @enduml }}} ||'''''Nombre del caso de uso:'''''[[BR]]||Modelo de Multiplicadores de MCS|| ||'''''Actores participantes:'''''[[BR]]||Usuario|| ||'''''Condiciones de entrada:'''''[[BR]]||Ya debe estar cargada la matriz base|| ||'''''Condiciones de salida:'''''[[BR]]||Se presentarán dos pestañas, en una se mostrará las propensiones medias al gasto y en la otra los Multiplicadores de Leontief|| ||'''''Flujo de básico:'''''[[BR]]||1.- El Usuario hace click en el Menú '''Herramientas'''\\2.- El Sistema despliega el menú.\\3.- El Usuario hace click sobre la opción Modelo de Multiplicadores de MCS.\\ 4.- Es Sistema solicita que defina las cuentas (y partidas en caso de existir) que sean endógenas.\\5.- El Usuario Presiona el Botón Aceptar.\\ 6.- El Sistema divide la matriz base en cuatro sub-matrices:\\ a.- Endógena-Endógena\\ b.- Endógena-Exógena\\ c.- Exógena-Endógena\\ d.- Exógena-Exógena\\7.- El sistema divide cada elemento de la sub-matriz '''Endógena-Endógena''' entre el total de la columna.\\ 8.- El Sistema almacena los resultados en la matriz '''An'''\\ 9.- El Sistema construye una matriz identidad ('''I''') con las mismas dimensiones que la matriz '''An'''\\ 10.- El Sistema resta las matrices '''(I-An)'''\\ 11.- El Sistema estima la inversa de la matriz resultante de la resta.\\ 12.- El Sistema almacena el resultado en la Matriz '''Ma'''. (Representa los Multiplicadores de Leontief).\\ 13.- El Sistema muestra los resultados en dos pestañas\\ a.- Matriz An: Propensiones medias al gasto. \\ b.- Matriz Ma: Multiplicadores de Leontief. || ||'''''Flujos alternativos:'''''[[BR]]||5.Opcional: El Usuario puede presionar el botón '''Limpiar''' para borrar la selección|| ||'''''Requisitos especiales:'''''||Si la determinante de la matriz es nula, está no tendrá inversa.|| === 5.- Evaluación de Escenarios (MMC) === {{{ #!plantuml @startuml title Evaluación de Escenarios con el Modelo de Multiplicadores de Leontief. left to right direction Usuario -- (Presionar Botón) Usuario -- (Introducir porcentaje de cambio\n en la matriz Base Endógena-Exógena) Sistema -- (Mostrar Sub-Matriz\n Base Endógena-Exógena) Sistema -- (Estimar los nuevos valores\n de la matriz Base Endógena-Exógena) (Estimar los nuevos valores\n de la matriz Base Endógena-Exógena) --> (Totalizar las filas de la\n matriz Base Endógena-Exógena) (Totalizar las filas de la\n matriz Base Endógena-Exógena)--> (Almacenar resultados en\n vector columna Escenarios) Sistema --(Multiplicar una Matriz Ma \n por el vector columna Escenarios) Sistema -- (Mostrar Resultados) @enduml }}} ||'''''Nombre del caso de uso:'''''[[BR]]||Evaluar Escenarios con el Modelo de Multiplicadores|| ||'''''Actores participantes:'''''[[BR]]||Usuario|| ||'''''Condiciones de entrada:'''''[[BR]]||El sistema debe tener cargada la matriz '''Ma'''|| ||'''''Condiciones de salida:'''''[[BR]]|| || ||'''''Flujo de básico:'''''[[BR]]||1.- El usuario presiona el icono de '''Evaluar Escenarios'''. \\ 2.- El Sistema muestra una nueva pestaña denominada '''Escenario''', en ella una matriz con el mismo marco de la sub-matriz Endógena-Exógena pero con los campos vacíos.\\ 3.- El Usuario introduce en porcentaje (%), la variación de una(s) partida(s).\\ 4.- El Usuario presiona el botón '''Evaluar'''.\\ 5.- El Sistema estima una nueva sub-matriz Endógena-Exógena' de acuerdo a los cambios introducidos por el usuario.\\ 6.- El Sistema Suma cada una de las filas de la sub-matriz Endógena-Exógena'.\\ 8.- El sistema almacena el vector columna obtenido en el punto '''7.-''' bajo el nombre de '''v_Escenario'''.\\ 9.- El Sistema multiplica la matriz '''Ma''' por el vector columna '''v_Escenario'''.\\ 10.- El Sistema almacena los resultados obtenidos en el vector '''Resultados'''.\\ 11.- El Sistema estima el porcentaje de variación entre el vector '''Resultados''' y '''vector base''' (Sumatoria de las filas de la Sub-matriz Endógena-Endógena).\\ 12.- Mostrar los resultados.|| ||'''''Flujos alternativos:'''''[[BR]]|| || ||'''''Requisitos especiales:'''''|| || === 6.- Clasificar Cuentas (Técnica de Rasmussen) === {{{ #!plantuml @startuml title Clasificar Cuentas left to right direction Sistema -- (Sumar Filas de la Matriz Ma) (Sumar Filas de la Matriz Ma) --> (Almacenar resultado en\n vector columna ea) (Sumar Filas de la Matriz Ma) --> (Totalizar el valor obtenido\n por cada cuenta del vector columna ea) (Totalizar el valor obtenido\n por cada cuenta del vector columna ea)--> (Almacenar en vector\n columna ea-agregado) (Sumar Filas de la Matriz Ma)--> (Dividir cada elemento\n del vector columna ea \n entre la sumantoria de todos los\n elementos del vector) (Dividir cada elemento\n del vector columna ea \n entre la sumantoria de todos los\n elementos del vector) --> (Almacenar elementos en un vector columna Ui) Sistema -- (Sumar Columnas de la Matriz Ma) (Sumar Columnas de la Matriz Ma) --> (Almacenar resultado en\n vector fila ed) (Sumar Columnas de la Matriz Ma) --> (Totalizar el valor obtenido\n por cada cuenta del vector fila ed) (Totalizar el valor obtenido\n por cada cuenta del vector fila ed)--> (Almacenar en vector\n fila ed-agregado) (Sumar Columnas de la Matriz Ma) --> (Dividir cada elemento\n del vector fila ed \n entre la sumantoria de todos los\n elementos del vector) (Dividir cada elemento\n del vector fila ed \n entre la sumantoria de todos los\n elementos del vector) --> (Almacenar elementos en un vector fila Uj) Sistema -- (Clasificar cuentas de acuerdo a los valores Uj y Ui) Sistema -- (Mostrar resultados) note right of (Mostrar resultados) Presentar los resultados en tres pestañas: 1.- Vector columna ea. Vector fila ed. Totales de las cuentas de los vectores columna y fila (ea y ed respectivamente) 2.- Vector columna Ui Vector Fila Uj 3.- Clasificador end note Usuario -- (Presiona botón) @enduml }}} ||'''''Nombre del caso de uso:'''''[[BR]]||Clasificar Cuentas|| ||'''''Actores participantes:'''''[[BR]]||Usuario|| ||'''''Condiciones de entrada:'''''[[BR]]||El sistema debe tener cargada la matriz '''Ma'''|| ||'''''Condiciones de salida:'''''[[BR]]|| || ||'''''Flujo de básico:'''''[[BR]]||1.- El Usuario presiona el icono '''Clasificador de Cuentas'''.\\ 2.- El sistema suma cada una de las filas de la matriz '''Ma'''.\\ 3.- El sistema almacena los resultados en un vector columna '''ea''' (efecto absorción). \\ 4.- El sistema suma cada una de las columnas de la matriz '''Ma'''.\\ 5.- El sistema almacena los resultados en un vector fila '''ed''' (efecto difusión).\\ 6.- El sistema suma los valores (tanto del vector '''ea''' como '''ed''') de las partidas que conforman cada una de las cuentas.\\7.- El sistema divide cada uno de los valores obtenidos en el vector columna '''ea''' entre la suma de cada uno de los elementos que componen el vector.\\ 8.- El sistema almacena cada uno de los valores en el vector columna '''Ui'''.\\ 9.- El sistema divide cada uno de los valores obtenidos en el vector fila '''ed''' entre la suma de cada uno de los elementos que componen el vector.\\ 10.- El sistema almacena cada uno de los valores en el vector fila '''Uj'''.\\ 11.- El sistema clasifica las cuentas de acuerdo a los valores obtenidos en '''Ui''' y '''Uj'''\\ a.- uj<1 - ui<1 -- Sector Independiente.\\b.- uj>1 - ui<1 -- Sector Impulsor de la Economía. \\ c.- uj<1 - Ui>1 -- Sector Base.\\ d.- uj>1 - ui>1 -- Sector Clave \\ 12.- Mostrar resultados:\\ a.- Resultados de los vectores ea y ed.\\ b.- Clasificador de cuentas.|| ||'''''Flujos alternativos:'''''[[BR]]|| || ||'''''Requisitos especiales:'''''|| ||