Commit a50bdda5 authored by Bruno López Trigo's avatar Bruno López Trigo

Modificado código demostrador web para cambiar facilmente a URL da API

parent 8c07d573
......@@ -275,9 +275,9 @@ public class LogBuilder implements LogInterface {
BufferedReader br = new BufferedReader(new FileReader(dataset));
String line;
ArrayList<String> atts = new ArrayList<>();
Pattern p = Pattern.compile("^@(attribute|ATTRIBUTE)\\s'?([\\w-]*)'?.*$");
Pattern p = Pattern.compile("(?i)^@(ATTRIBUTE)\\s'?([\\w-]*)'?.*$");
Matcher m;
while ((line = br.readLine()) != null && !line.matches("^@(data|DATA)$")) {
while ((line = br.readLine()) != null && !line.matches("(?i)^@(DATA)$")) {
m = p.matcher(line);
if (m.matches()) {
atts.add(m.group(2));
......
......@@ -7,7 +7,7 @@
<display-name>expliclas</display-name>
<welcome-file-list>
<welcome-file>/doc/index.html</welcome-file>
<welcome-file>doc/index.html</welcome-file>
</welcome-file-list>
<servlet>
......
......@@ -5,9 +5,9 @@
<meta charset="UTF-8">
<title>Swagger UI</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/doc/swagger-ui.css" >
<link rel="icon" type="image/png" href="/doc/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/doc/favicon-16x16.png" sizes="16x16" />
<link rel="stylesheet" type="text/css" href="doc/swagger-ui.css" >
<link rel="icon" type="image/png" href="doc/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="doc/favicon-16x16.png" sizes="16x16" />
<style>
html
{
......@@ -34,8 +34,8 @@
<body>
<div id="swagger-ui"></div>
<script src="/doc/swagger-ui-bundle.js"> </script>
<script src="/doc/swagger-ui-standalone-preset.js"> </script>
<script src="doc/swagger-ui-bundle.js"> </script>
<script src="doc/swagger-ui-standalone-preset.js"> </script>
<script>
window.onload = function() {
......
......@@ -7,7 +7,7 @@
<display-name>expliclas</display-name>
<welcome-file-list>
<welcome-file>/doc/index.html</welcome-file>
<welcome-file>doc/index.html</welcome-file>
</welcome-file-list>
<servlet>
......
......@@ -5,9 +5,9 @@
<meta charset="UTF-8">
<title>Swagger UI</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/doc/swagger-ui.css" >
<link rel="icon" type="image/png" href="/doc/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/doc/favicon-16x16.png" sizes="16x16" />
<link rel="stylesheet" type="text/css" href="doc/swagger-ui.css" >
<link rel="icon" type="image/png" href="doc/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="doc/favicon-16x16.png" sizes="16x16" />
<style>
html
{
......@@ -34,8 +34,8 @@
<body>
<div id="swagger-ui"></div>
<script src="/doc/swagger-ui-bundle.js"> </script>
<script src="/doc/swagger-ui-standalone-preset.js"> </script>
<script src="doc/swagger-ui-bundle.js"> </script>
<script src="doc/swagger-ui-standalone-preset.js"> </script>
<script>
window.onload = function() {
......
#Generated by Maven
#Sat Jun 02 21:11:38 CEST 2018
#Wed Jun 06 17:35:42 CEST 2018
version=1.0
groupId=brunolopez
artifactId=expliclas-api
This diff is collapsed.
......@@ -5,6 +5,7 @@
"dependencies": {
"react": "^16.3.2",
"react-dom": "^16.3.2",
"react-global-configuration": "^1.2.1",
"react-router-dom": "^4.2.2",
"react-scripts": "1.1.4"
},
......
......@@ -10,6 +10,7 @@ import Explanation from './components/Explanation';
import Footer from './components/Footer';
import NotFound from './components/NotFound';
import Alert from './components/Alert';
import { API_ROOT } from './config';
class App extends Component {
......@@ -36,7 +37,7 @@ class App extends Component {
}
setLogState(e) {
fetch('http://localhost:8080/expliclas/token')
fetch(`${API_ROOT}/token`)
.then((response) => {
return response.headers.get("Authorization");
})
......
......@@ -33,4 +33,4 @@ class AddCard extends Component {
}
}
export default withRouter(AddCard);
\ No newline at end of file
export default withRouter(AddCard);
......@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import './css/Classifier.css';
import Alert from './Alert';
import { API_ROOT } from '../config';
class Classifier extends Component {
......@@ -52,7 +53,7 @@ class Classifier extends Component {
}
getProblemInfo(){
var url = "http://localhost:8080/expliclas/global/" + this.state.problem;
var url = API_ROOT + "/global/" + this.state.problem;
fetch(url, {
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -76,7 +77,7 @@ class Classifier extends Component {
}
getLog(){
var url = "http://localhost:8080/expliclas/log/" +
var url = API_ROOT + "/log/" +
this.state.problem + "/" + this.state.algorithm +
"/" + this.state.problem + ".arff." + this.state.algorithm + ".log.txt";
......@@ -103,7 +104,7 @@ class Classifier extends Component {
}
getGlobalExpl(){
var url = "http://localhost:8080/expliclas/global/" + this.state.problem +
var url = API_ROOT + "/global/" + this.state.problem +
"/" + this.state.algorithm;
fetch(url, {
......@@ -261,4 +262,4 @@ class Classifier extends Component {
}
export default withRouter(Classifier);
\ No newline at end of file
export default withRouter(Classifier);
......@@ -42,4 +42,4 @@ class DatasetCard extends Component {
}
}
export default withRouter(DatasetCard);
\ No newline at end of file
export default withRouter(DatasetCard);
......@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import DatasetCard from './DatasetCard';
import AddCard from './AddCard';
import Alert from './Alert';
import { API_ROOT } from '../config';
class Datasets extends Component {
......@@ -25,7 +26,7 @@ class Datasets extends Component {
}
getDatasets(){
fetch('http://localhost:8080/expliclas/datasets',{
fetch(`${API_ROOT}/datasets`,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
})
......@@ -48,7 +49,7 @@ class Datasets extends Component {
}
deleteDataset(event){
var url = "http://localhost:8080/expliclas/dataset/" + event.target.id;
var url = API_ROOT + "/dataset/" + event.target.id;
fetch(url,{
method: 'DELETE',
headers: new Headers({
......@@ -95,4 +96,4 @@ class Datasets extends Component {
}
export default Datasets;
\ No newline at end of file
export default Datasets;
......@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import './css/Explanation.css';
import FormAttributes from "./FormAttributes";
import { API_ROOT } from '../config';
class Explanation extends Component {
......@@ -26,7 +27,7 @@ class Explanation extends Component {
}
getAttributes(){
var url = 'http://localhost:8080/expliclas/global/' + this.state.problem;
var url = API_ROOT + "/global/" + this.state.problem;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -44,7 +45,7 @@ class Explanation extends Component {
getDatasets(){
var url = 'http://localhost:8080/expliclas/dataset/' + this.state.problem;
var url = API_ROOT + '/dataset/' + this.state.problem;
fetch(url,{
headers: new Headers({
......@@ -75,7 +76,7 @@ class Explanation extends Component {
this.state.actualValues[this.state.attributes[i].name] + "&";
}
var url = 'http://localhost:8080/expliclas/classification/' + this.state.problem +
var url = API_ROOT + '/classification/' + this.state.problem +
'/' + this.state.algorithm + '/' + query;
fetch(url,{
......@@ -95,7 +96,7 @@ class Explanation extends Component {
}
selectDataset(event){
var url = 'http://localhost:8080/expliclas/dataset/' + this.state.problem;
var url = API_ROOT + '/dataset/' + this.state.problem;
var id = event.target.id;
fetch(url,{
......@@ -178,4 +179,4 @@ class Explanation extends Component {
}
export default withRouter(Explanation);
\ No newline at end of file
export default withRouter(Explanation);
import React, { Component } from 'react';
import './css/Footer.css';
import logo from './images/logo.png';
import { API_ROOT } from '../config';
class Footer extends Component {
......@@ -10,7 +11,7 @@ class Footer extends Component {
}
closeSession(){
fetch("http://localhost:8080/expliclas/token/remove",{
fetch(`${API_ROOT}/token/remove`,{
method: 'DELETE',
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -23,7 +24,7 @@ class Footer extends Component {
}
goToAPIDoc(){
window.location.href = "http://localhost:8080/doc/index.html";
window.location.href = API_ROOT + "/doc/index.html";
}
render(){
......@@ -40,4 +41,4 @@ class Footer extends Component {
}
export default Footer;
\ No newline at end of file
export default Footer;
......@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import Alert from './Alert';
import './css/Form.css';
import { API_ROOT } from '../config';
class FormJ48 extends Component {
......@@ -287,7 +288,7 @@ class FormJ48 extends Component {
});
var data = new FormData(this.refs.formJ48);
var name = this.refs.formJ48[0].value;
var url = this.props.name ? "http://localhost:8080/expliclas/log/buildexisting/" + name + "/J48" : "http://localhost:8080/expliclas/log/build/" + name + "/J48";
var url = this.props.name ? API_ROOT + "/log/buildexisting/" + name + "/J48" : API_ROOT + "/log/build/" + name + "/J48";
fetch(url, {
method: 'POST',
body: data,
......@@ -635,4 +636,4 @@ class FormJ48 extends Component {
}
}
export default withRouter(FormJ48);
\ No newline at end of file
export default withRouter(FormJ48);
......@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import Alert from './Alert';
import './css/Form.css';
import { API_ROOT } from '../config';
class FormREP extends Component {
......@@ -234,7 +235,7 @@ class FormREP extends Component {
});
var data = new FormData(this.refs.formREP);
var name = this.refs.formREP[0].value;
var url = this.props.name ? "http://localhost:8080/expliclas/log/buildexisting/" + name + "/REPTree" : "http://localhost:8080/expliclas/log/build/" + name + "/REPTree";
var url = this.props.name ? API_ROOT + "/log/buildexisting/" + name + "/REPTree" : API_ROOT + "/log/build/" + name + "/REPTree";
fetch(url, {
method: 'POST',
body: data,
......@@ -539,4 +540,4 @@ class FormREP extends Component {
}
}
export default withRouter(FormREP);
\ No newline at end of file
export default withRouter(FormREP);
import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import Alert from './Alert';
import { API_ROOT } from '../config';
class FormRT extends Component {
......@@ -232,7 +233,7 @@ class FormRT extends Component {
});
var data = new FormData(this.refs.formRT);
var name = this.refs.formRT[0].value;
var url = this.props.name ? "http://localhost:8080/expliclas/log/buildexisting/" + name + "/RandomTree" : "http://localhost:8080/expliclas/log/build/" + name + "/RandomTree";
var url = this.props.name ? API_ROOT + "/log/buildexisting/" + name + "/RandomTree" : API_ROOT + "/log/build/" + name + "/RandomTree";
fetch(url, {
method: 'POST',
body: data,
......@@ -536,4 +537,4 @@ class FormRT extends Component {
}
}
export default withRouter(FormRT);
\ No newline at end of file
export default withRouter(FormRT);
import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import Alert from './Alert';
import { API_ROOT } from '../config';
class Logs extends Component {
......@@ -34,7 +35,7 @@ class Logs extends Component {
}
getLogs(){
var url = 'http://localhost:8080/expliclas/logs/' + this.state.problem;
var url = API_ROOT + '/logs/' + this.state.problem;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -52,7 +53,7 @@ class Logs extends Component {
for(var i=0; i<this.state.locations.length; i++){
if(this.state.locations[i].type === "J48"){
var url = 'http://localhost:8080/expliclas/log/' + this.state.locations[i].location;
var url = API_ROOT + '/log/' + this.state.locations[i].location;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -109,7 +110,7 @@ class Logs extends Component {
for(i=0; i<this.state.locations.length; i++){
if(this.state.locations[i].type === "J48"){
url = 'http://localhost:8080/expliclas/log/' + this.state.locations[i].location;
url = API_ROOT + '/log/' + this.state.locations[i].location;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -150,7 +151,7 @@ class Logs extends Component {
for(i=0; i<this.state.locations.length; i++){
if(this.state.locations[i].type === "RandomTree"){
url = 'http://localhost:8080/expliclas/log/' + this.state.locations[i].location;
url = API_ROOT + '/log/' + this.state.locations[i].location;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -190,7 +191,7 @@ class Logs extends Component {
for(i=0; i<this.state.locations.length; i++){
if(this.state.locations[i].type === "REPTree"){
url = 'http://localhost:8080/expliclas/log/' + this.state.locations[i].location;
url = API_ROOT + '/log/' + this.state.locations[i].location;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -313,4 +314,4 @@ class Logs extends Component {
}
export default withRouter(Logs);
\ No newline at end of file
export default withRouter(Logs);
export const API_ROOT = 'http://localhost:8080/expliclas';
This diff is collapsed.
\relax
\@writefile{toc}{\contentsline {chapter}{\numberline {A}Manuais t\IeC {\'e}cnicos}{69}}
\@writefile{toc}{\contentsline {chapter}{\numberline {A}Manuais t\IeC {\'e}cnicos}{83}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@setckpt{capitulos/apendicea}{
\setcounter{page}{70}
\setcounter{page}{84}
\setcounter{equation}{0}
\setcounter{enumi}{3}
\setcounter{enumii}{0}
......
\relax
\@writefile{toc}{\contentsline {chapter}{\numberline {B}Manuais de usuario}{71}}
\@writefile{toc}{\contentsline {chapter}{\numberline {B}Manuais de usuario}{85}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@setckpt{capitulos/apendiceb}{
\setcounter{page}{72}
\setcounter{page}{86}
\setcounter{equation}{0}
\setcounter{enumi}{3}
\setcounter{enumii}{0}
......
......@@ -3,9 +3,9 @@
\bibcite{cdma}{2}
\bibcite{gonzalez}{3}
\bibcite{patricia}{4}
\@writefile{toc}{\contentsline {chapter}{Bibliograf\IeC {\'\i }a}{75}}
\@writefile{toc}{\contentsline {chapter}{Bibliograf\IeC {\'\i }a}{89}}
\@setckpt{capitulos/bibliografia}{
\setcounter{page}{76}
\setcounter{page}{90}
\setcounter{equation}{0}
\setcounter{enumi}{3}
\setcounter{enumii}{0}
......
\relax
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Dese\IeC {\~n}o}{61}}
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Dese\IeC {\~n}o}{75}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@setckpt{capitulos/cap4}{
\setcounter{page}{62}
\setcounter{page}{76}
\setcounter{equation}{0}
\setcounter{enumi}{3}
\setcounter{enumii}{0}
......
\relax
\@writefile{toc}{\contentsline {chapter}{\numberline {6}Conclusi\IeC {\'o}ns e posibles ampliaci\IeC {\'o}ns}{67}}
\@writefile{toc}{\contentsline {chapter}{\numberline {6}Conclusi\IeC {\'o}ns e posibles ampliaci\IeC {\'o}ns}{81}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@setckpt{capitulos/conclusions}{
\setcounter{page}{68}
\setcounter{page}{82}
\setcounter{equation}{0}
\setcounter{enumi}{3}
\setcounter{enumii}{0}
......
\relax
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Exemplos}{63}}
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Exemplos}{77}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Un exemplo de secci\IeC {\'o}n}{63}}
\newlabel{mi_ecuacion}{{5.1}{63}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}Un exemplo de subsecci\IeC {\'o}n}{63}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.2}Otro exemplo de subsecci\IeC {\'o}n}{63}}
\@writefile{toc}{\contentsline {subsubsection}{Un exemplo de subsubsecci\IeC {\'o}n}{63}}
\@writefile{toc}{\contentsline {subsubsection}{Un exemplo de subsubsecci\IeC {\'o}n}{63}}
\@writefile{toc}{\contentsline {subsubsection}{Un exemplo de subsubsecci\IeC {\'o}n}{63}}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Un exemplo de secci\IeC {\'o}n}{77}}
\newlabel{mi_ecuacion}{{5.1}{77}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}Un exemplo de subsecci\IeC {\'o}n}{77}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.2}Otro exemplo de subsecci\IeC {\'o}n}{77}}
\@writefile{toc}{\contentsline {subsubsection}{Un exemplo de subsubsecci\IeC {\'o}n}{77}}
\@writefile{toc}{\contentsline {subsubsection}{Un exemplo de subsubsecci\IeC {\'o}n}{77}}
\citation{cuda}
\citation{cdma}
\citation{gonzalez}
\citation{patricia}
\citation{cuda}
\citation{gonzalez}
\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Esta \IeC {\'e} a figura de tal e cal.}}{64}}
\newlabel{enlace1}{{5.1}{64}}
\@writefile{lot}{\contentsline {table}{\numberline {5.1}{\ignorespaces Esta \IeC {\'e} a t\IeC {\'a}boa de tal e cal.}}{64}}
\newlabel{enlace2}{{5.1}{64}}
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Exemplos de figuras e cadros}{64}}
\@writefile{toc}{\contentsline {section}{\numberline {5.3}Exemplos de referencias \IeC {\'a} bibliograf\IeC {\'\i }a}{64}}
\@writefile{toc}{\contentsline {section}{\numberline {5.4}Exemplos de enumeraci\IeC {\'o}ns}{64}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Esta \IeC {\'e} a figura de tal e cal.}}{78}}
\newlabel{enlace1}{{5.1}{78}}
\@writefile{lot}{\contentsline {table}{\numberline {5.1}{\ignorespaces Esta \IeC {\'e} a t\IeC {\'a}boa de tal e cal.}}{78}}
\newlabel{enlace2}{{5.1}{78}}
\@writefile{toc}{\contentsline {subsubsection}{Un exemplo de subsubsecci\IeC {\'o}n}{78}}
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Exemplos de figuras e cadros}{78}}
\@writefile{toc}{\contentsline {section}{\numberline {5.3}Exemplos de referencias \IeC {\'a} bibliograf\IeC {\'\i }a}{78}}
\@writefile{toc}{\contentsline {section}{\numberline {5.4}Exemplos de enumeraci\IeC {\'o}ns}{79}}
\@setckpt{capitulos/exemplos}{
\setcounter{page}{66}
\setcounter{page}{80}
\setcounter{equation}{1}
\setcounter{enumi}{3}
\setcounter{enumii}{0}
......
\relax
\@writefile{toc}{\contentsline {chapter}{\numberline {C}Licenza}{73}}
\@writefile{toc}{\contentsline {chapter}{\numberline {C}Licenza}{87}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@setckpt{capitulos/licenza}{
\setcounter{page}{74}
\setcounter{page}{88}
\setcounter{equation}{0}
\setcounter{enumi}{3}
\setcounter{enumii}{0}
......
This diff is collapsed.
This diff is collapsed.
\babel@toc {galician}{}
\addvspace {10\p@ }
\addvspace {10\p@ }
\contentsline {figure}{\numberline {2.1}{\ignorespaces Estrutura de directorios do proxecto en GitLab}}{9}
\contentsline {figure}{\numberline {2.2}{\ignorespaces Estrutura de c\IeC {\'o}digo wekaparser en GitLab}}{10}
\contentsline {figure}{\numberline {2.3}{\ignorespaces Estrutura de c\IeC {\'o}digo expliclas-api en GitLab}}{11}
\contentsline {figure}{\numberline {2.4}{\ignorespaces Estrutura de c\IeC {\'o}digo expliclas en GitLab}}{12}
\contentsline {figure}{\numberline {2.5}{\ignorespaces Matriz de probabilidade e impacto de riscos}}{20}
\contentsline {figure}{\numberline {2.1}{\ignorespaces Estrutura de Descomposici\IeC {\'o}n do Traballo}}{8}
\contentsline {figure}{\numberline {2.2}{\ignorespaces Estrutura de directorios do proxecto en GitLab}}{19}
\contentsline {figure}{\numberline {2.3}{\ignorespaces Estrutura de c\IeC {\'o}digo wekaparser en GitLab}}{20}
\contentsline {figure}{\numberline {2.4}{\ignorespaces Estrutura de c\IeC {\'o}digo expliclas-api en GitLab}}{22}
\contentsline {figure}{\numberline {2.5}{\ignorespaces Estrutura de c\IeC {\'o}digo expliclas en GitLab}}{23}
\contentsline {figure}{\numberline {2.6}{\ignorespaces Matriz de probabilidade e impacto de riscos}}{32}
\addvspace {10\p@ }
\contentsline {figure}{\numberline {3.1}{\ignorespaces Diagrama de caso de uso.}}{44}
\contentsline {figure}{\numberline {3.1}{\ignorespaces Diagrama de caso de uso.}}{58}
\addvspace {10\p@ }
\addvspace {10\p@ }
\contentsline {figure}{\numberline {5.1}{\ignorespaces Esta \IeC {\'e} a figura de tal e cal.}}{64}
\contentsline {figure}{\numberline {5.1}{\ignorespaces Esta \IeC {\'e} a figura de tal e cal.}}{78}
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
......
This diff is collapsed.
This diff is collapsed.
......@@ -25,6 +25,8 @@
\usepackage{listings}
\usepackage{dirtytalk}
\usepackage{multirow}
\usepackage{geometry}
\usepackage{pdflscape}
% \usepackage{hyperref} % menús no pdf pero non leva ben co package galician
......
......@@ -12,52 +12,52 @@
\contentsline {subsubsection}{Exclusi\IeC {\'o}ns do proxecto}{7}
\contentsline {section}{\numberline {2.2}Planificaci\IeC {\'o}n do proxecto}{7}
\contentsline {subsubsection}{Estrutura de descomposici\IeC {\'o}n do traballo (EDT)}{7}
\contentsline {subsubsection}{Definici\IeC {\'o}n das actividades}{7}
\contentsline {subsubsection}{Planitificaci\IeC {\'o}n inicial}{7}
\contentsline {subsubsection}{Planificaci\IeC {\'o}n real}{7}
\contentsline {subsubsection}{Ciclo de vida por incrementos}{7}
\contentsline {section}{\numberline {2.3}Xesti\IeC {\'o}n da configuraci\IeC {\'o}n}{7}
\contentsline {subsubsection}{Sistema de xesti\IeC {\'o}n de configuraci\IeC {\'o}n}{8}
\contentsline {subsubsection}{Estrutura do directorio do proxecto}{8}
\contentsline {subsubsection}{Xesti\IeC {\'o}n do c\IeC {\'o}digo}{9}
\contentsline {subsubsection}{Xesti\IeC {\'o}n da documentaci\IeC {\'o}n}{12}
\contentsline {subsubsection}{Comunicaci\IeC {\'o}n entre os membros do equipo}{13}
\contentsline {subsubsection}{Xesti\IeC {\'o}n de cambios}{13}
\contentsline {subsubsection}{Solicitude de cambio}{14}
\contentsline {subsubsection}{Valoraci\IeC {\'o}n do cambio}{14}
\contentsline {section}{\numberline {2.4}Xesti\IeC {\'o}n de costes}{15}
\contentsline {subsection}{\numberline {2.4.1}Costes de RRHH}{15}
\contentsline {subsection}{\numberline {2.4.2}Costes de materiais}{15}
\contentsline {subsection}{\numberline {2.4.3}Costes de software}{15}
\contentsline {subsection}{\numberline {2.4.4}Costes indirectos}{15}
\contentsline {subsection}{\numberline {2.4.5}Coste total do proxecto}{15}
\contentsline {section}{\numberline {2.5}Plan de Xesti\IeC {\'o}n de Riscos}{15}
\contentsline {subsection}{\numberline {2.5.1}Identificaci\IeC {\'o}n de riscos}{15}
\contentsline {subsection}{\numberline {2.5.2}An\IeC {\'a}lise de riscos}{16}
\contentsline {subsection}{\numberline {2.5.3}Matriz de probabilidade e impacto}{20}
\contentsline {subsection}{\numberline {2.5.4}Acci\IeC {\'o}ns de prevenci\IeC {\'o}n e continxencia}{20}
\contentsline {chapter}{\numberline {3}An\IeC {\'a}lise}{25}
\contentsline {section}{\numberline {3.1}Especificaci\IeC {\'o}n de requisitos}{25}
\contentsline {subsection}{\numberline {3.1.1}Requisitos de informaci\IeC {\'o}n}{25}
\contentsline {subsection}{\numberline {3.1.2}Requisitos funcionais}{30}
\contentsline {subsection}{\numberline {3.1.3}Requisitos non funcionais}{39}
\contentsline {subsection}{\numberline {3.1.4}Matriz de dependencia de requisitos}{42}
\contentsline {subsection}{\numberline {3.1.5}Requisitos de interface gr\IeC {\'a}fica}{42}
\contentsline {section}{\numberline {3.2}Casos de uso}{44}
\contentsline {subsection}{\numberline {3.2.1}Matriz de requisitos / casos de uso}{59}
\contentsline {chapter}{\numberline {4}Dese\IeC {\~n}o}{61}
\contentsline {chapter}{\numberline {5}Exemplos}{63}
\contentsline {section}{\numberline {5.1}Un exemplo de secci\IeC {\'o}n}{63}
\contentsline {subsection}{\numberline {5.1.1}Un exemplo de subsecci\IeC {\'o}n}{63}
\contentsline {subsection}{\numberline {5.1.2}Otro exemplo de subsecci\IeC {\'o}n}{63}
\contentsline {subsubsection}{Un exemplo de subsubsecci\IeC {\'o}n}{63}
\contentsline {subsubsection}{Un exemplo de subsubsecci\IeC {\'o}n}{63}
\contentsline {subsubsection}{Un exemplo de subsubsecci\IeC {\'o}n}{63}
\contentsline {section}{\numberline {5.2}Exemplos de figuras e cadros}{64}
\contentsline {section}{\numberline {5.3}Exemplos de referencias \IeC {\'a} bibliograf\IeC {\'\i }a}{64}
\contentsline {section}{\numberline {5.4}Exemplos de enumeraci\IeC {\'o}ns}{64}
\contentsline {chapter}{\numberline {6}Conclusi\IeC {\'o}ns e posibles ampliaci\IeC {\'o}ns}{67}
\contentsline {chapter}{\numberline {A}Manuais t\IeC {\'e}cnicos}{69}
\contentsline {chapter}{\numberline {B}Manuais de usuario}{71}
\contentsline {chapter}{\numberline {C}Licenza}{73}
\contentsline {chapter}{Bibliograf\IeC {\'\i }a}{75}
\contentsline {subsubsection}{Definici\IeC {\'o}n das actividades}{9}
\contentsline {subsubsection}{Planitificaci\IeC {\'o}n inicial}{18}
\contentsline {subsubsection}{Planificaci\IeC {\'o}n real}{18}