[[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<\b>) Sistema -- (Construir una Matriz\n Identidad del tamaño de la\n matriz Endogena-Endogena\n Resultado: I<\b>) Sistema -- (Restar I - An) (Restar I - An) --> (Estimar la Inversa<\b> [I-An]\n Resultado: Ma<\b>) Sistema -- (Solicita valor\n del porcentaje de\n ajuste de políticas: i<\b>) Sistema -- (Suma las filas de\n la matriz Endo-Exo: Su-Endo-Exo<\b>) Sistema -- (Multiplica Vector i por Su-Endo-Exo<\b> :\n Inyección<\b>) (Multiplica Vector\n i por Su-Endo-Exo<\b> :\n Inyección<\b>) --> (Suma vector\n Inyección con Su-Endo-Exo:\n Escenario n<\b>) (Suma vector\n Inyección con Su-Endo-Exo:\n Escenario n<\b>) --> (Mulitplica la matriz Ma con el vector Escenario n<\b>) Sistema -- (Muestra las pestañas:\n Ma, Escenario [i,Su-Endo-Exo, Inyección, Escenario n]\n Pestaña Resultado [Total fila base y variación]) @enduml }}} ||'''''Nombre del caso de uso:'''''[[BR]]||Modelo Clásico|| ||'''''Actores participantes:'''''[[BR]]||Usuario|| ||'''''Condiciones de entrada:'''''[[BR]]||El usuario debe cargar la matriz base y definir las variables exógenas|| ||'''''Condiciones de salida:'''''[[BR]]||Se presentarán tres pestañas: Ma (Multiplicadores de Leontief), Escenario n(cuatro columnas: porcentaje de ajuste de políticas, sub-total matriz Exo-End, Inyección y Sub-Total Escenario n) y Resultado n (Resultado y Variación porcentual)|| ||'''''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 clásico.\\ 4.- El sistema divide cada elemento de la matriz Endógena-Endógena con el total de cada columna de la matriz base. (An)\\5.- El Sistema construye una matriz identidad con la misma dimensiones que la anterior. (I\\ 6.- El sistema resta las matrices I - An<\b>\\ 7.- El sistema calcula la inversa de la matriz (I-An). Es decir, estima la inversa de leontief Ma<\b>.\\ 8.- El Sistema muestra una pestaña con los resultados de Ma<\b>\\ 9.- El sistema muestra la pestaña Escenario n con las siguientes columnas:\\ a. Porcentaje de Ajuste de Política:<\b> Una columna, cuyo valor por defecto es cero y donde el usuario introduce el escenario a evaluar (variación uno o más componentes).\\ b.- Sub-Total Exo:<\b> columna donde se muestra el total de cada una de las filas de la matriz Endógena-Exógena. \\ Inyección: Muestra el resultado de multiplicar los vectores: Porcentaje de Ajuste de Política y Sub-Total Exo. \\ d. Escenario 1:<\b> Muestra el resultado de Suma los vectores: Sub-Total Exo e inyección.\\ e. También muestra dos botones en un panel: Calcular y Finalizar \\ 10.- El usuario introduce los porcentaje de ajuste de política que desea evaluar. \\ 11.- El usuario presiona el botón Calcular<\b>.\\ 12.- El sistema multiplica los vectores: Porcentaje de Ajuste de Política y Sub-Total Exo. \\ 13.- El Sistema Suma los vectores: Sub-Total Exo e inyección. \\ 14. El Usuario presiona la el botón Finalizar<\b>. \\15. El Sistema multiplica la matriz Ma<\b> con el vector Escenario n<\b>. \\ 16. El Sistema muestra los resultados en una pestaña denominada: Resultados n<\n> || ||'''''Flujos alternativos:'''''[[BR]]|| || ||'''''Requisitos especiales:'''''||Si la determinante de la matriz es nula, está no tendrá inversa.|| === 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:'''''|| ||