pfc-prolog-cvs Mailing List for pfc-prolix
Status: Beta
Brought to you by:
ivanfrade
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(77) |
Jun
(37) |
Jul
(152) |
Aug
(180) |
Sep
(45) |
Oct
|
Nov
|
Dec
|
---|
From: <iva...@us...> - 2003-09-11 16:41:51
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/servlets In directory sc8-pr-cvs1:/tmp/cvs-serv6333 Modified Files: IdFactory.java NodeDrawData.java TreeServlet.java Log Message: Passed astyle all files Index: IdFactory.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/servlets/IdFactory.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** IdFactory.java 21 Aug 2003 18:57:17 -0000 1.1 --- IdFactory.java 11 Sep 2003 16:41:47 -0000 1.2 *************** *** 35,55 **** private static int _num = 0; ! public String createTextId() ! { ! String var = new String ("text" + (_num++)); ! return var; } ! public String createSubstId() ! { ! String var = new String("subst" + (_num++)); ! return var; } ! ! public String createTransitionId() ! { ! String var = new String("trans" + (_num++)); ! return var; } ! } // IdFactory --- 35,52 ---- private static int _num = 0; ! public String createTextId() { ! String var = new String ("text" + (_num++)); ! return var; } ! public String createSubstId() { ! String var = new String("subst" + (_num++)); ! return var; } ! ! public String createTransitionId() { ! String var = new String("trans" + (_num++)); ! return var; } ! } // IdFactory Index: NodeDrawData.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/servlets/NodeDrawData.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** NodeDrawData.java 30 Jul 2003 20:12:49 -0000 1.1 --- NodeDrawData.java 11 Sep 2003 16:41:47 -0000 1.2 *************** *** 4,16 **** import java.awt.Point; ! public class NodeDrawData ! { public Dimension size; public Point origin; ! public NodeDrawData(Point originPoint, Dimension sizeBox) ! { ! origin = originPoint; ! size = sizeBox; } } --- 4,14 ---- import java.awt.Point; ! public class NodeDrawData { public Dimension size; public Point origin; ! public NodeDrawData(Point originPoint, Dimension sizeBox) { ! origin = originPoint; ! size = sizeBox; } } Index: TreeServlet.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/servlets/TreeServlet.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** TreeServlet.java 19 Aug 2003 19:22:36 -0000 1.6 --- TreeServlet.java 11 Sep 2003 16:41:47 -0000 1.7 *************** *** 44,95 **** * @web.servlet-mapping url-pattern="*.tree" */ ! public class TreeServlet extends HttpServlet ! { public void doGet(HttpServletRequest request, ! HttpServletResponse response) ! throws ServletException, IOException ! { ! // locates session attribute ! HttpSession session = request.getSession(true); ! CurrentStateBean bean = (CurrentStateBean)session.getAttribute("prologData"); ! ! String format = request.getParameter("format"); ! SvgBean data = (SvgBean)session.getAttribute("tree"); ! if (data==null || data.getSvg() == null) { ! //FIXME send basic image ! //out.println("You have only a query loaded. Try to do an step"); ! return; ! } - if (format == null || format.equals("svg")) - { - response.setContentType("image/svg+xml"); - PrintWriter out = response.getWriter(); - out.println(data.getSvg()); - } - else { - OutputStream out = response.getOutputStream(); - response.setContentType("image/jpeg"); - SvgGenerator comeOn = new SvgGenerator(); - JPEGTranscoder transcoder = new JPEGTranscoder(); - transcoder.addTranscodingHint(transcoder.KEY_QUALITY, - new Float(1)); - transcoder.addTranscodingHint(transcoder.KEY_XML_PARSER_CLASSNAME,"org.apache.xerces.parsers.SAXParser"); - transcoder.addTranscodingHint(transcoder.KEY_WIDTH, - new Float(data.getWidth())); - transcoder.addTranscodingHint(transcoder.KEY_HEIGHT, - new Float(data.getHeight())); - TranscoderInput input = new TranscoderInput(new StringReader(data.getSvg())); - TranscoderOutput output = new TranscoderOutput(out); - try { - transcoder.transcode(input,output); - }catch (TranscoderException te) { - //FIXME - throw new IOException("Error in svg to jpeg transformation"); - } - } - } } --- 44,96 ---- * @web.servlet-mapping url-pattern="*.tree" */ ! public class TreeServlet extends HttpServlet { public void doGet(HttpServletRequest request, ! HttpServletResponse response) ! throws ServletException, IOException { ! // locates session attribute ! HttpSession session = request.getSession(true); ! // FIXME: No used!!!! Why take this bean???? ! CurrentStateBean bean = (CurrentStateBean)session.getAttribute("prologData"); ! ! String format = request.getParameter("format"); ! ! SvgBean data = (SvgBean)session.getAttribute("tree"); ! if (data==null || data.getSvg() == null) { ! //FIXME send basic image ! //out.println("You have only a query loaded. Try to do an step"); ! return; ! } ! ! if (format == null || format.equals("svg")) { ! response.setContentType("image/svg+xml"); ! PrintWriter out = response.getWriter(); ! out.println(data.getSvg()); ! } else { ! OutputStream out = response.getOutputStream(); ! response.setContentType("image/jpeg"); ! ! //FIXME: UNUSED anymore. ! SvgGenerator comeOn = new SvgGenerator(); ! ! JPEGTranscoder transcoder = new JPEGTranscoder(); ! transcoder.addTranscodingHint(transcoder.KEY_QUALITY, ! new Float(1)); ! transcoder.addTranscodingHint(transcoder.KEY_XML_PARSER_CLASSNAME,"org.apache.xerces.parsers.SAXParser"); ! transcoder.addTranscodingHint(transcoder.KEY_WIDTH, ! new Float(data.getWidth())); ! transcoder.addTranscodingHint(transcoder.KEY_HEIGHT, ! new Float(data.getHeight())); ! TranscoderInput input = new TranscoderInput(new StringReader(data.getSvg())); ! TranscoderOutput output = new TranscoderOutput(out); ! try { ! transcoder.transcode(input,output); ! } catch (TranscoderException te) { ! //FIXME ! throw new IOException("Error in svg to jpeg transformation"); ! } ! } } } |
From: <iva...@us...> - 2003-09-11 16:41:27
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/servlets In directory sc8-pr-cvs1:/tmp/cvs-serv6216 Modified Files: SvgGenerator.java Log Message: Fixed some words at spanish. Now traslated to english - Passed astyle Index: SvgGenerator.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/servlets/SvgGenerator.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** SvgGenerator.java 22 Aug 2003 11:31:39 -0000 1.6 --- SvgGenerator.java 11 Sep 2003 16:41:15 -0000 1.7 *************** *** 34,94 **** * return nodes with "name" that have an "attribute" with defined "value" */ ! private Node[] search(Node root, String name, ! String attribute, String value) ! { ! Vector results = new Vector(); ! // Pass root element ! if (root.getNodeType() == Node.DOCUMENT_NODE) ! root = ((Document)root).getDocumentElement(); ! ! NodeList children = root.getChildNodes(); ! for ( int i = 0 ; i < children.getLength() ; i++) ! { ! ! Node currentNode = children.item(i); ! int nodeType = currentNode.getNodeType(); ! if (nodeType == Node.ELEMENT_NODE && ! currentNode.getNodeName().equals(name) && ! currentNode.hasAttributes()) ! { ! NamedNodeMap attMap = currentNode.getAttributes(); ! Node attrib = attMap.getNamedItem(attribute); ! if (attrib != null && ! attrib.getNodeValue().equals(value)) ! results.add(currentNode); ! } ! } //for ! //Not found ! return (Node [])results.toArray(new Node[results.size()]); } ! private Node searchNodeByNumber(Node root, String number) ! { if (root.getNodeType() == Node.DOCUMENT_NODE) ! root = ((Document)root).getDocumentElement(); ! ! NodeList children = root.getChildNodes(); ! for ( int i = 0 ; i < children.getLength() ; i++ ) ! { ! Node currentNode = children.item(i); ! int nodeType = currentNode.getNodeType(); ! if (nodeType == Node.ELEMENT_NODE && ! (currentNode.getNodeName().equals("node") || ! currentNode.getNodeName().equals("solution"))&& ! currentNode.hasAttributes()) ! { ! NamedNodeMap attMap = currentNode.getAttributes(); ! Node attribute = attMap.getNamedItem("number"); ! if (attribute != null && ! attribute.getNodeValue().equals(number)) ! return currentNode; ! } ! } ! // not found ! return null; } ! /** ******************************** * Draw methods --- 34,88 ---- * return nodes with "name" that have an "attribute" with defined "value" */ ! private Node[] search(Node root, String name, ! String attribute, String value) { ! Vector results = new Vector(); ! // Pass root element ! if (root.getNodeType() == Node.DOCUMENT_NODE) ! root = ((Document)root).getDocumentElement(); ! ! NodeList children = root.getChildNodes(); ! for ( int i = 0 ; i < children.getLength() ; i++) { ! ! Node currentNode = children.item(i); ! int nodeType = currentNode.getNodeType(); ! if (nodeType == Node.ELEMENT_NODE && ! currentNode.getNodeName().equals(name) && ! currentNode.hasAttributes()) { ! NamedNodeMap attMap = currentNode.getAttributes(); ! Node attrib = attMap.getNamedItem(attribute); ! if (attrib != null && ! attrib.getNodeValue().equals(value)) ! results.add(currentNode); ! } ! } //for ! //Not found ! return (Node [])results.toArray(new Node[results.size()]); } ! private Node searchNodeByNumber(Node root, String number) { if (root.getNodeType() == Node.DOCUMENT_NODE) ! root = ((Document)root).getDocumentElement(); ! ! NodeList children = root.getChildNodes(); ! for ( int i = 0 ; i < children.getLength() ; i++ ) { ! Node currentNode = children.item(i); ! int nodeType = currentNode.getNodeType(); ! if (nodeType == Node.ELEMENT_NODE && ! (currentNode.getNodeName().equals("node") || ! currentNode.getNodeName().equals("solution"))&& ! currentNode.hasAttributes()) { ! NamedNodeMap attMap = currentNode.getAttributes(); ! Node attribute = attMap.getNamedItem("number"); ! if (attribute != null && ! attribute.getNodeValue().equals(number)) ! return currentNode; ! } ! } ! // not found ! return null; } ! /** ******************************** * Draw methods *************** *** 102,328 **** public static final String solutionNodeColor = "#d8d600"; ! private Dimension mySize(Node node) ! { ! Dimension result = new Dimension(nodeSizeX,nodeSizeY); ! if (node.getAttributes() == null) ! return result; ! ! if (node.getNodeName().equals("solution")) ! { ! //Node[] subst = filterSubstitutionNodes(node.getChildNodes()); ! //int numberOfSubst = subst.length; ! return result; ! } ! Node label = node.getAttributes().getNamedItem("label"); ! if (label != null) ! { ! String text = label.getNodeValue(); ! int thisNodeXSize = Math.max(text.length() * 7, nodeSizeX); ! result.width = thisNodeXSize; ! } ! return result; } ! private Dimension drawNode(Node raiz, String number, ! Point leftTopCorner, ! Writer output) ! { ! Node result = searchNodeByNumber(raiz,number); ! ! //System.out.println("Looking for transitions"); ! Node[] transitions = search(raiz,"transition","origin",number); ! Dimension boundingBox = new Dimension(0,0); ! int childYBaseLine = leftTopCorner.y + marginY + nodeSizeY; ! Vector childBoxes = new Vector(); ! for (int i = 0; i < transitions.length ; i++) ! { ! String destiny = transitions[i].getAttributes().getNamedItem("destiny").getNodeValue(); ! Point childPoint = new Point(leftTopCorner.x + boundingBox.width, ! childYBaseLine); ! Dimension currentChildBoundingBox = ! drawNode(raiz,destiny,childPoint,output); ! childBoxes.add(new NodeDrawData(childPoint,currentChildBoundingBox)); ! boundingBox.width += currentChildBoundingBox.width + marginX; ! boundingBox.height = Math.max(boundingBox.height, ! currentChildBoundingBox.height); ! } ! boundingBox.width = Math.max(boundingBox.width, ! mySize(result).width); ! boundingBox.height += nodeSizeY + marginY; ! // System.out.println("Aqui pinto la cajita"); ! Point nodePoint = new Point((boundingBox.width - marginX)/2 ! + leftTopCorner.x ! , leftTopCorner.y ); - NodeDrawData[] destinations = (NodeDrawData[])childBoxes.toArray(new NodeDrawData[childBoxes.size()]); - for (int i = 0; i < destinations.length ; i++) - { - imprimirTransicion(nodePoint,destinations[i],output); - } - imprimirNodo(result,nodePoint,output); ! return boundingBox; } ! private void imprimirTransicion(Point origen, NodeDrawData destino, Writer output) ! { ! try ! { ! output.write("<path d=\"M " ! + origen.x // + currentNodeSizeX / 2 ! + " " + (origen.y+nodeSizeY) ! + " L " ! + (destino.origin.x + destino.size.width/2) ! + " " + destino.origin.y + "\" \n"); ! output.write("id=\"" + idGenerator.createTransitionId() ! + "\"\n"); ! output.write("style=\"fill:none;fill-rule:evenodd;stroke:black;" ! + "stroke-opacity:1;stroke-width:0.5pt;stroke-linejoin:" ! + "miter;stroke-linecap:butt;fill-opacity:1;\"/>"); ! } ! catch (IOException e) { ! System.out.println("Error writing transition"); ! } } private void printConventionalNode(Node node, Point leftTopPoint, ! Writer output) ! { ! try { ! int currentNodeSizeX = mySize(node).width; ! //the poing i receive is really de middle of boundingBox ! output.write("<rect \n " ! + " width=\"" + currentNodeSizeX + "\" \n" ! + " height=\"" + nodeSizeY + "\" \n" ! + " x=\"" + (leftTopPoint.x - (currentNodeSizeX / 2)) + "\" \n" ! + " y=\"" + leftTopPoint.y + "\" \n" ! + " id=\""+node.getAttributes().getNamedItem("number").getNodeValue()+"\" \n" ! + " style=\"fill:" + conventionalNodeColor ! + ";fill-opacity:1;\" " ! + " /> \n"); ! Node label = node.getAttributes().getNamedItem("label"); ! if (label != null) ! output.write("<text \n" ! + " x=\"" + (leftTopPoint.x - currentNodeSizeX/2.5) + "\" \n" ! + " y=\"" + (leftTopPoint.y + nodeSizeY/2 ) + "\" \n" ! + " id=\"" + idGenerator.createTextId() ! + "\">\n" ! + " <tspan id=\"" + idGenerator.createTextId() ! + "\" >\n " ! + label.getNodeValue() ! + "\n </tspan>\n" ! + "</text>"); - } catch (IOException e) { - System.out.println("Error writing Node"); - } - } ! private Node[] filterSubstitutionNodes(NodeList original) ! { ! Vector results = new Vector(); ! int elements = original.getLength(); ! for (int i = 0; i < elements; i++) { ! Node currentNode = original.item(i); ! int nodeType = currentNode.getNodeType(); ! if (nodeType == Node.ELEMENT_NODE && ! currentNode.getNodeName().equals("substitution")) ! results.add(currentNode); ! } ! return (Node [])results.toArray(new Node[results.size()]); } private void printSolutionNode(Node node, Point leftTopPoint, ! Writer output) ! { ! try ! { ! int currentNodeSizeX = mySize(node).width; ! output.write("<rect \n " ! + " width=\"" + currentNodeSizeX + "\" \n" ! + " height=\"" + nodeSizeY + "\" \n" ! + " x=\"" + (leftTopPoint.x - (currentNodeSizeX / 2)) + "\" \n" ! + " y=\"" + leftTopPoint.y + "\" \n" ! + " id=\"" +node.getAttributes().getNamedItem("number").getNodeValue()+"\" \n" ! + " style=\"fill:" + solutionNodeColor ! +";fill-opacity:1;\" " ! + " /> \n"); ! Node[] subst = filterSubstitutionNodes(node.getChildNodes()); ! int numberOfSubst = subst.length; - float substYPoint = leftTopPoint.y + nodeSizeY/2; - for (int i = 0; i < numberOfSubst; i++) - { - output.write("<text \n" - + " x=\"" + (leftTopPoint.x - currentNodeSizeX/2.5) + "\" \n" - + " y=\"" + (substYPoint + 12*i) + "\" \n" - + " id=\"" + idGenerator.createTextId() - + "\">\n" - + " <tspan id=\"" + idGenerator.createTextId() - + "\" >\n " - + subst[i].getAttributes().getNamedItem("variable").getNodeValue() - + " : " - + subst[i].getAttributes().getNamedItem("value").getNodeValue() - + "\n </tspan>\n" - + "</text>"); - } - } catch (IOException io) { - System.out.println("Error writing Solution node"); - } - } // And the refactoring winner is... ! private void imprimirNodo(Node node, Point leftTopPoint, ! Writer output) ! { ! //System.out.println("En el punto (" + leftTopPoint.x + "," ! // + leftTopPoint.y + ") imprimo el nodo " ! // + node.getNodeName()); ! // + node.getAttributes().getNamedItem("number").getNodeValue()); ! if (node.getNodeName().equals("solution")) ! printSolutionNode(node, leftTopPoint, output); ! else ! printConventionalNode(node, leftTopPoint, output); } ! /** * Aux methods ***/ private String svgInit(int height, int width) ! throws IOException ! { ! StringWriter w = new StringWriter(); ! w.write("<?xml version=\"1.0\" " ! + "encoding=\"UTF-8\" standalone=\"no\"?>\n" ! + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\"\n" ! + "\"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n"); ! ! w.write("<svg xmlns=\"http://www.w3.org/2000/svg\"\n " ! + " xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n " ! + " version=\"1\"\n " ! + " x=\"30\" y=\"30\"\n " ! + " height=\"" + height + "\" width=\"" + width + "\"> \n"); ! return w.toString(); } ! private String svgEnd() ! throws IOException ! { ! return new String("\n</svg>\n"); } --- 96,305 ---- public static final String solutionNodeColor = "#d8d600"; ! private Dimension mySize(Node node) { ! Dimension result = new Dimension(nodeSizeX,nodeSizeY); ! if (node.getAttributes() == null) ! return result; ! if (node.getNodeName().equals("solution")) { ! //Node[] subst = filterSubstitutionNodes(node.getChildNodes()); ! //int numberOfSubst = subst.length; ! return result; ! } ! ! Node label = node.getAttributes().getNamedItem("label"); ! if (label != null) { ! String text = label.getNodeValue(); ! int thisNodeXSize = Math.max(text.length() * 7, nodeSizeX); ! result.width = thisNodeXSize; ! } ! return result; } ! private Dimension drawNode(Node raiz, String number, ! Point leftTopCorner, ! Writer output) { ! Node result = searchNodeByNumber(raiz,number); ! //System.out.println("Looking for transitions"); ! Node[] transitions = search(raiz,"transition","origin",number); ! Dimension boundingBox = new Dimension(0,0); ! int childYBaseLine = leftTopCorner.y + marginY + nodeSizeY; ! Vector childBoxes = new Vector(); ! for (int i = 0; i < transitions.length ; i++) { ! String destiny = transitions[i].getAttributes().getNamedItem("destiny").getNodeValue(); ! Point childPoint = new Point(leftTopCorner.x + boundingBox.width, ! childYBaseLine); ! Dimension currentChildBoundingBox = ! drawNode(raiz,destiny,childPoint,output); ! childBoxes.add(new NodeDrawData(childPoint,currentChildBoundingBox)); ! boundingBox.width += currentChildBoundingBox.width + marginX; ! boundingBox.height = Math.max(boundingBox.height, ! currentChildBoundingBox.height); ! } ! boundingBox.width = Math.max(boundingBox.width, ! mySize(result).width); ! boundingBox.height += nodeSizeY + marginY; + // System.out.println("Aqui pinto la cajita"); + Point nodePoint = new Point((boundingBox.width - marginX)/2 + + leftTopCorner.x + , leftTopCorner.y ); ! NodeDrawData[] destinations = (NodeDrawData[])childBoxes.toArray(new NodeDrawData[childBoxes.size()]); ! for (int i = 0; i < destinations.length ; i++) { ! printTransition(nodePoint,destinations[i],output); ! } ! printNode(result,nodePoint,output); ! ! return boundingBox; } ! private void printTransition(Point origen, NodeDrawData destino, Writer output) { ! try { ! output.write("<path d=\"M " ! + origen.x // + currentNodeSizeX / 2 ! + " " + (origen.y+nodeSizeY) ! + " L " ! + (destino.origin.x + destino.size.width/2) ! + " " + destino.origin.y + "\" \n"); ! output.write("id=\"" + idGenerator.createTransitionId() ! + "\"\n"); ! output.write("style=\"fill:none;fill-rule:evenodd;stroke:black;" ! + "stroke-opacity:1;stroke-width:0.5pt;stroke-linejoin:" ! + "miter;stroke-linecap:butt;fill-opacity:1;\"/>"); ! } catch (IOException e) { ! System.out.println("Error writing transition"); ! } } private void printConventionalNode(Node node, Point leftTopPoint, ! Writer output) { ! try { ! int currentNodeSizeX = mySize(node).width; ! //the poing i receive is really de middle of boundingBox ! output.write("<rect \n " ! + " width=\"" + currentNodeSizeX + "\" \n" ! + " height=\"" + nodeSizeY + "\" \n" ! + " x=\"" + (leftTopPoint.x - (currentNodeSizeX / 2)) + "\" \n" ! + " y=\"" + leftTopPoint.y + "\" \n" ! + " id=\""+node.getAttributes().getNamedItem("number").getNodeValue()+"\" \n" ! + " style=\"fill:" + conventionalNodeColor ! + ";fill-opacity:1;\" " ! + " /> \n"); ! Node label = node.getAttributes().getNamedItem("label"); ! if (label != null) ! output.write("<text \n" ! + " x=\"" + (leftTopPoint.x - currentNodeSizeX/2.5) + "\" \n" ! + " y=\"" + (leftTopPoint.y + nodeSizeY/2 ) + "\" \n" ! + " id=\"" + idGenerator.createTextId() ! + "\">\n" ! + " <tspan id=\"" + idGenerator.createTextId() ! + "\" >\n " ! + label.getNodeValue() ! + "\n </tspan>\n" ! + "</text>"); ! ! } catch (IOException e) { ! System.out.println("Error writing Node"); ! } } ! private Node[] filterSubstitutionNodes(NodeList original) { ! Vector results = new Vector(); ! int elements = original.getLength(); ! for (int i = 0; i < elements; i++) { ! Node currentNode = original.item(i); ! int nodeType = currentNode.getNodeType(); ! if (nodeType == Node.ELEMENT_NODE && ! currentNode.getNodeName().equals("substitution")) ! results.add(currentNode); ! } ! return (Node [])results.toArray(new Node[results.size()]); } private void printSolutionNode(Node node, Point leftTopPoint, ! Writer output) { ! try { ! int currentNodeSizeX = mySize(node).width; ! output.write("<rect \n " ! + " width=\"" + currentNodeSizeX + "\" \n" ! + " height=\"" + nodeSizeY + "\" \n" ! + " x=\"" + (leftTopPoint.x - (currentNodeSizeX / 2)) + "\" \n" ! + " y=\"" + leftTopPoint.y + "\" \n" ! + " id=\"" +node.getAttributes().getNamedItem("number").getNodeValue()+"\" \n" ! + " style=\"fill:" + solutionNodeColor ! +";fill-opacity:1;\" " ! + " /> \n"); ! Node[] subst = filterSubstitutionNodes(node.getChildNodes()); ! int numberOfSubst = subst.length; ! ! float substYPoint = leftTopPoint.y + nodeSizeY/2; ! for (int i = 0; i < numberOfSubst; i++) { ! output.write("<text \n" ! + " x=\"" + (leftTopPoint.x - currentNodeSizeX/2.5) + "\" \n" ! + " y=\"" + (substYPoint + 12*i) + "\" \n" ! + " id=\"" + idGenerator.createTextId() ! + "\">\n" ! + " <tspan id=\"" + idGenerator.createTextId() ! + "\" >\n " ! + subst[i].getAttributes().getNamedItem("variable").getNodeValue() ! + " : " ! + subst[i].getAttributes().getNamedItem("value").getNodeValue() ! + "\n </tspan>\n" ! + "</text>"); ! } ! } catch (IOException io) { ! System.out.println("Error writing Solution node"); ! } } // And the refactoring winner is... ! private void printNode(Node node, Point leftTopPoint, ! Writer output) { ! //System.out.println("En el punto (" + leftTopPoint.x + "," ! // + leftTopPoint.y + ") imprimo el nodo " ! // + node.getNodeName()); ! // + node.getAttributes().getNamedItem("number").getNodeValue()); ! if (node.getNodeName().equals("solution")) ! printSolutionNode(node, leftTopPoint, output); ! else ! printConventionalNode(node, leftTopPoint, output); } ! /** * Aux methods ***/ private String svgInit(int height, int width) ! throws IOException { ! StringWriter w = new StringWriter(); ! w.write("<?xml version=\"1.0\" " ! + "encoding=\"UTF-8\" standalone=\"no\"?>\n" ! + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\"\n" ! + "\"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n"); ! ! w.write("<svg xmlns=\"http://www.w3.org/2000/svg\"\n " ! + " xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n " ! + " version=\"1\"\n " ! + " x=\"30\" y=\"30\"\n " ! + " height=\"" + height + "\" width=\"" + width + "\"> \n"); ! return w.toString(); } ! private String svgEnd() ! throws IOException { ! return new String("\n</svg>\n"); } *************** *** 330,375 **** * Main method ** ************************************* */ ! public String transform(String xmlString) { - - if (xmlString == null) - return null; ! try { ! //FileReader xmlFile = new FileReader("/home/ivan/pfc/documentos/salida-prolix-treexml.xml"); ! DocumentBuilderFactory factory = ! DocumentBuilderFactory.newInstance(); ! DocumentBuilder builder = factory.newDocumentBuilder(); ! //Document document = builder.parse(new InputSource(xmlFile)); ! Document document = builder.parse(new InputSource(new StringReader(xmlString))); ! // Works with generic Writer. ! StringWriter svg = new StringWriter(); ! Dimension total = drawNode(document,"1",new Point(10,10),svg); ! setSize(total); ! //System.out.println("Dimensiones totales: " + total.width + " " ! // + total.height); ! ! String result = svgInit(total.height, total.width).concat(svg.toString()).concat(svgEnd()); ! //System.out.println("Pues no paso nada malo"); ! return result; ! } ! catch (FactoryConfigurationError e) { ! // unable to get a document builder factory ! return null; ! } ! catch (ParserConfigurationException e) { ! // parser was unable to be configured ! return null; ! } ! catch (SAXException e) { ! // parsing error ! return null; ! } //FIXME: Is necesary IOException here??? ! catch (IOException e) { ! System.out.println("I/O Error: File Not Exist or Problems with Writers"); ! return null; ! } } --- 307,349 ---- * Main method ** ************************************* */ ! public String transform(String xmlString) { ! if (xmlString == null) ! return null; ! try { ! //FileReader xmlFile = new FileReader("/home/ivan/pfc/documentos/salida-prolix-treexml.xml"); ! DocumentBuilderFactory factory = ! DocumentBuilderFactory.newInstance(); ! DocumentBuilder builder = factory.newDocumentBuilder(); ! //Document document = builder.parse(new InputSource(xmlFile)); ! Document document = builder.parse(new InputSource(new StringReader(xmlString))); ! // Works with generic Writer. ! StringWriter svg = new StringWriter(); ! ! Dimension total = drawNode(document,"1",new Point(10,10),svg); ! setSize(total); ! //System.out.println("Dimensiones totales: " + total.width + " " ! // + total.height); ! ! String result = svgInit(total.height, total.width).concat(svg.toString()).concat(svgEnd()); ! ! return result; ! } catch (FactoryConfigurationError e) { ! // unable to get a document builder factory ! return null; ! } catch (ParserConfigurationException e) { ! // parser was unable to be configured ! return null; ! } catch (SAXException e) { ! // parsing error ! return null; ! } //FIXME: Is necesary IOException here??? ! catch (IOException e) { ! System.out.println("I/O Error: File Not Exist or Problems with Writers"); ! return null; ! } } *************** *** 382,386 **** */ public Dimension getSize() { ! return size; } --- 356,360 ---- */ public Dimension getSize() { ! return size; } *************** *** 390,397 **** */ public void setSize(Dimension newSize) { ! this.size = newSize; } ! //public static void main(String argv[]) { // SvgGenerator on = new SvgGenerator(); --- 364,371 ---- */ public void setSize(Dimension newSize) { ! this.size = newSize; } ! //public static void main(String argv[]) { // SvgGenerator on = new SvgGenerator(); |
From: <iva...@us...> - 2003-09-07 15:06:31
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/proceso In directory sc8-pr-cvs1:/tmp/cvs-serv18770/proceso Modified Files: herramientas.tex Log Message: todas las web en las referencias - puesta referencia a la figura correspondiente en las secuencias Index: herramientas.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/proceso/herramientas.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** herramientas.tex 4 Sep 2003 20:31:02 -0000 1.2 --- herramientas.tex 7 Sep 2003 15:06:27 -0000 1.3 *************** *** 162,168 **** En el caso de \texttt{Prolix}, donde solo hay un desarrollador, el CVS sigue resultando útil para mantener una única versión del proyecto, a pesar de que el desarrollador trabaje desde distintos lugares y ordenadores. ! Sobre las modificaciones del código y su control, el CVS guarda las diferencias entre las sucesivas versiones, pudiendo volver de forma sencilla a cualquiera de ellas, o simplemente observar los cambios para entender la evolución del proyecto, y con el uso de <<tags>> (etiquetas) podemos <<marcar>> un momento determinado del proyecto (en \texttt{Prolix} esto se hizo con los releases), permitiendo así poder volver a ese estado del proyecto si es necesario. Es decir: podría obtenerse el código tal cual estaba cuando se hizo el lanzamiento de la versión 0.1, por ejemplo. - % FIXME: ejemplo de un diff La copia virtual del trabajo debe guardarse en alguna máquina que haga de servidor del CVS (puede ser local o remota), y se debe utilizar un cliente de CVS para obtener la copia de trabajo. Hay programas cliente para casi todas las plataformas y sistemas operativos. En el caso de \texttt{Prolix} se utilizó el servidor de CVS de sourceforge, y el cliente de consola incluido en Debian GNU/Linux. --- 162,180 ---- En el caso de \texttt{Prolix}, donde solo hay un desarrollador, el CVS sigue resultando útil para mantener una única versión del proyecto, a pesar de que el desarrollador trabaje desde distintos lugares y ordenadores. ! Sobre las modificaciones del código y su control, el CVS guarda las diferencias entre las sucesivas versiones, pudiendo volver de forma sencilla a cualquiera de ellas, o simplemente observar los cambios para entender la evolución del proyecto, y con el uso de <<tags>> (etiquetas) podemos <<marcar>> un momento determinado del proyecto (en \texttt{Prolix} esto se hizo con los releases), permitiendo así poder volver a ese estado del proyecto si es necesario. Es decir: podría obtenerse el código tal cual estaba cuando se hizo el lanzamiento de la versión 0.1. ! ! Ejemplo de como se muestra la diferencia entre un fichero y su original en el CVS tras unos cambios. Aparece la linea original (con el simbolo $<$ al principio) y la linea nueva en su lugar (con el simbolo $>$ ). ! ! \begin{verbatim} ! /LoadConsultAction.java,v ! retrieving revision 1.16 ! diff -r1.16 LoadConsultAction.java ! 120c120,121 ! < errors.add(``consult'',new ActionError(``error.syntax.exception'')); ! --- ! > errors.add(``consult'',new ActionError(``error.syntax.exception'', ! > se.getMessage())); ! \end{verbatim} La copia virtual del trabajo debe guardarse en alguna máquina que haga de servidor del CVS (puede ser local o remota), y se debe utilizar un cliente de CVS para obtener la copia de trabajo. Hay programas cliente para casi todas las plataformas y sistemas operativos. En el caso de \texttt{Prolix} se utilizó el servidor de CVS de sourceforge, y el cliente de consola incluido en Debian GNU/Linux. *************** *** 217,223 **** \end{itemize} ! Aunque el nombre del proyecto es \texttt{Prolix}, el nombre Unix asignado por sourceforge al proyecto (el nombre que utiliza en todos los aspectos técnicos) es <<pfc-prolog>>. Así, la pagina web del proyecto en SourceForge es \texttt{http://www.sourceforge.net/projects/pfc-prolog}. ! Además, Sourceforge cede al proyecto un espacio en sus servidores para la página web del mismo, con la única condición de colocar un logo de sourceforge en esas páginas. \texttt{Prolix} dispone de ese espacio en \texttt{http://pfc-prolog.sourceforge.net}, donde estan disponibles algunos ficheros que aunque son propios del proyecto no se incluyen en el CVS, como son los intérpretes o los DTD del XML utilizado en el proyecto. \subsubsection{Sistema de composición de textos \LaTeX} --- 229,235 ---- \end{itemize} ! Aunque el nombre del proyecto es \texttt{Prolix}, el nombre Unix asignado por sourceforge al proyecto (el nombre que utiliza en todos los aspectos técnicos) es <<pfc-prolog>>. Así, la pagina web del proyecto en SourceForge es \ref{sf-prolix}. ! Además, Sourceforge cede al proyecto un espacio en sus servidores para la página web del mismo, con la única condición de colocar un logo de sourceforge en esas páginas. \texttt{Prolix} dispone de ese espacio en \ref{prolix-domain}, donde estan disponibles algunos ficheros que aunque son propios del proyecto no se incluyen en el CVS, como son los intérpretes o los DTD del XML utilizado en el proyecto. \subsubsection{Sistema de composición de textos \LaTeX} |
From: <iva...@us...> - 2003-09-07 15:06:31
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es In directory sc8-pr-cvs1:/tmp/cvs-serv18770 Modified Files: bibliografia.tex test.tex Log Message: todas las web en las referencias - puesta referencia a la figura correspondiente en las secuencias Index: bibliografia.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/bibliografia.tex,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** bibliografia.tex 26 Aug 2003 13:50:17 -0000 1.3 --- bibliografia.tex 7 Sep 2003 15:06:27 -0000 1.4 *************** *** 28,31 **** --- 28,32 ---- \bibitem{websphere-web}IBM Webpshere application server: \url{http://www-3.ibm.com/software/info1/websphere/index.jsp} \bibitem{sf-prolix}Prolix en Sourceforge: \url{https://sourceforge.net/project/pfc-prolog} + \bibitem{prolix-domain}Página de Prolix: \url{http://pfc-prolog.sourceforge.net} \bibitem{mysql-web}MySQL AB: \url{http://www.mysql.com} \bibitem{batik-web}Batik SVG toolkit: \url{http://xml.apache.org/batik/} Index: test.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/test.tex,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** test.tex 6 Sep 2003 10:34:03 -0000 1.11 --- test.tex 7 Sep 2003 15:06:27 -0000 1.12 *************** *** 36,46 **** %\clearpage ! %\chapter{Diseño} ! %\input{diseno/diseno.tex} ! %\clearpage ! %\chapter{Proceso de desarrollo} ! %\input{proceso/proceso.tex} ! %\clearpage %\chapter{Pruebas} --- 36,46 ---- %\clearpage ! \chapter{Diseño} ! \input{diseno/diseno.tex} ! \clearpage ! \chapter{Proceso de desarrollo} ! \input{proceso/proceso.tex} ! \clearpage %\chapter{Pruebas} *************** *** 52,58 **** %\clearpage ! \chapter{Conclusiones} ! \input{conclusiones/conclusiones.tex} ! \clearpage %\chapter{Código Fuente (Servidor)} --- 52,58 ---- %\clearpage ! %\chapter{Conclusiones} ! %\input{conclusiones/conclusiones.tex} ! %\clearpage %\chapter{Código Fuente (Servidor)} |
From: <iva...@us...> - 2003-09-07 15:06:31
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno In directory sc8-pr-cvs1:/tmp/cvs-serv18770/diseno Modified Files: secuenciac4-web.tex secuenciac5-web.tex Log Message: todas las web en las referencias - puesta referencia a la figura correspondiente en las secuencias Index: secuenciac4-web.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/secuenciac4-web.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** secuenciac4-web.tex 3 Sep 2003 16:23:42 -0000 1.1 --- secuenciac4-web.tex 7 Sep 2003 15:06:27 -0000 1.2 *************** *** 105,108 **** --- 105,110 ---- \paragraph{Usuario hace logout en el sistema} + Representación del diagrama de secuencia en la figura \ref{DSE42W}. + \begin{sidewaysfigure}[hpb] \begin{DiagramaSecuencia}{ *************** *** 153,156 **** --- 155,160 ---- \paragraph{Alumno se registra} + La secuencia del escenario, contando con al verificación de datos que facilita <<struts>>, esta representada en la figura \ref{DSE43W}. + \begin{sidewaysfigure}[hpb] \begin{DiagramaSecuencia}{ *************** *** 195,198 **** --- 199,204 ---- %% Escenario 4.4. \paragraph{Usuario cambia su clave de acceso} + + Diagrama de secuencia en la figura \ref{DSE44W} \begin{sidewaysfigure}[hpb] Index: secuenciac5-web.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/secuenciac5-web.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** secuenciac5-web.tex 3 Sep 2003 16:23:42 -0000 1.1 --- secuenciac5-web.tex 7 Sep 2003 15:06:27 -0000 1.2 *************** *** 50,53 **** --- 50,55 ---- \paragraph{Administrador elimina usuario de la aplicación} + Representación de su secuencia de operaciones en \ref{DSE52W}. + \begin{sidewaysfigure}[hpb] \begin{DiagramaSecuencia}{ |
From: <iva...@us...> - 2003-09-07 14:57:44
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb In directory sc8-pr-cvs1:/tmp/cvs-serv17131 Removed Files: ProfessorRoleBean.java Log Message: Removed unused Bean --- ProfessorRoleBean.java DELETED --- |
From: <iva...@us...> - 2003-09-07 14:48:10
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/clases In directory sc8-pr-cvs1:/tmp/cvs-serv15308 Modified Files: web-servlets.tex Log Message: Node Nodelist se ponen como nombre cualificado, string siempre con mayuscula Index: web-servlets.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/clases/web-servlets.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** web-servlets.tex 4 Sep 2003 20:31:02 -0000 1.2 --- web-servlets.tex 7 Sep 2003 14:48:00 -0000 1.3 *************** *** 28,32 **** \paragraph{Métodos} \begin{itemize} ! \item \texttt{<<constructor>> NodeDrawData(Point,Dimension)} \\ Constructor que asigna a los atributos los elementos pasados como argumento. \end{itemize} --- 28,32 ---- \paragraph{Métodos} \begin{itemize} ! \item \texttt{<<constructor>> NodeDrawData(java.awt.Point,java.awt.Dimension)} \\ Constructor que asigna a los atributos los elementos pasados como argumento. \end{itemize} *************** *** 61,73 **** \begin{itemize} \item \texttt{$-$ search(org.w3c.dom.Node root, String name, String attribute, String value) : org.w3c.dom.Node []} \\ Devuelve los nodos de nombre <<name>> que tengan un atributo llamado <<attribute>> con el valor <<value>>, buscando a partir del nodo <<root>>. ! \item \texttt{$-$ searchNodeByNumber(org.w3c.dom.Node root, string number) : org.w3c.dom.Node} \\ Buscan a partir de <<root>> un nodo identificado como <<number>>. \item \texttt{$-$ java.awt.Dimension mySize(org.w3c.dom.Node node) : java.awt.Dimension} \\ Devuelve el tamaño necesario para englobar el texto del nodo. ! \item \texttt{$-$ Dimension drawNode(Node raiz, string number, Point leftTopCorner, Writer output)} \\ Algoritmo de la transformación, que dibuja el árbol <<raiz>> desde el nodo <<number>> partiendo del punto <<leftTopCorner>>, guardando el resultado en <<output>>. ! \item \texttt{$-$ imprimirTransicion(Point origen, NodeDrawData destino, Writer output)} \\ Escribe el SVG correspondiente a una transición del punto origen al lugar correspondiente del árbol hijo, cuyos datos almacena <<destino>>. El resultado se guarda en <<output>>. ! \item \texttt{$-$ printConventionalNode(Node node, Point leftTopPoint, Writer output)} \\ Escribe el SVG correspondiente al nodo <<node>> que no es solución, incluida su etiqueta, en el punto <<leftTopPoint>>, y guardando el resultado en <<output>>. ! \item \texttt{$-$ filterSubstitutionNodes(NodeList original) : Node [ ] } \\ Filtra la lista de nodos <<original>> para dejar solo elementos <<substitution>>. ! \item \texttt{$-$ printSolutionNode(Node node, Point leftTopPoint, Writer output)} \\ Escribe el SVG correspondiente al nodo solución <<node>>, en el punto <<leftTopPoint>>, dejando el resultado en <<output>>. ! \item \texttt{$-$ imprimirNodo(Node node, Point leftTopPoint, Writer output)} \\ Método que controla si el nodo <<node>> debe imprimirse como solución o como convencional, usando los métodos correspondientes. ! \item \texttt{$-$ svgInit(int height, int width) : string} \\ Escribe la cabecera del documento SVG. Para ello requiere el alto <<height>> y el ancho <<width>> del dibujo. \\ \textbf{Excepciones: } \begin{itemize} --- 61,73 ---- \begin{itemize} \item \texttt{$-$ search(org.w3c.dom.Node root, String name, String attribute, String value) : org.w3c.dom.Node []} \\ Devuelve los nodos de nombre <<name>> que tengan un atributo llamado <<attribute>> con el valor <<value>>, buscando a partir del nodo <<root>>. ! \item \texttt{$-$ searchNodeByNumber(org.w3c.dom.Node root, String number) : org.w3c.dom.Node} \\ Buscan a partir de <<root>> un nodo identificado como <<number>>. \item \texttt{$-$ java.awt.Dimension mySize(org.w3c.dom.Node node) : java.awt.Dimension} \\ Devuelve el tamaño necesario para englobar el texto del nodo. ! \item \texttt{$-$ java.awt.Dimension drawNode(org.w3c.dom.Node raiz, String number, java.awt.Point leftTopCorner, Writer output)} \\ Algoritmo de la transformación, que dibuja el árbol <<raiz>> desde el nodo <<number>> partiendo del punto <<leftTopCorner>>, guardando el resultado en <<output>>. ! \item \texttt{$-$ imprimirTransicion(java.awt.Point origen, NodeDrawData destino, Writer output)} \\ Escribe el SVG correspondiente a una transición del punto origen al lugar correspondiente del árbol hijo, cuyos datos almacena <<destino>>. El resultado se guarda en <<output>>. ! \item \texttt{$-$ printConventionalNode(org.w3c.dom.Node node, java.awt.Point leftTopPoint, Writer output)} \\ Escribe el SVG correspondiente al nodo <<node>> que no es solución, incluida su etiqueta, en el punto <<leftTopPoint>>, y guardando el resultado en <<output>>. ! \item \texttt{$-$ filterSubstitutionNodes(org.w3c.dom.NodeList original) : org.w3c.dom.Node [ ] } \\ Filtra la lista de nodos <<original>> para dejar solo elementos <<substitution>>. ! \item \texttt{$-$ printSolutionNode(org.w3c.dom.Node node, java.awt.Point leftTopPoint, Writer output)} \\ Escribe el SVG correspondiente al nodo solución <<node>>, en el punto <<leftTopPoint>>, dejando el resultado en <<output>>. ! \item \texttt{$-$ imprimirNodo(org.w3c.dom.Node node, java.awt.Point leftTopPoint, Writer output)} \\ Método que controla si el nodo <<node>> debe imprimirse como solución o como convencional, usando los métodos correspondientes. ! \item \texttt{$-$ svgInit(int height, int width) : String} \\ Escribe la cabecera del documento SVG. Para ello requiere el alto <<height>> y el ancho <<width>> del dibujo. \\ \textbf{Excepciones: } \begin{itemize} *************** *** 79,85 **** \item IOException \end{itemize} ! \item \texttt{transform(string xmlString) : string} \\ Método que arranca la transformación del documento en TreeXML contenido en <<xmlString>>. ! \item \texttt{getSize() : Dimension} \\ Devuelve el tamaño del SVG obtenido. ! \item \texttt{setSize(Dimension)} \\ Set del tamaño del SVG. \end{itemize} --- 79,85 ---- \item IOException \end{itemize} ! \item \texttt{transform(String xmlString) : String} \\ Método que arranca la transformación del documento en TreeXML contenido en <<xmlString>>. ! \item \texttt{getSize() : java.awt.Dimension} \\ Devuelve el tamaño del SVG obtenido. ! \item \texttt{setSize(java.awt.Dimension)} \\ Set del tamaño del SVG. \end{itemize} |
From: <iva...@us...> - 2003-09-06 10:34:09
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es In directory sc8-pr-cvs1:/tmp/cvs-serv19719 Modified Files: test.tex Removed Files: transform.sh Log Message: Eliminado script inutil Index: test.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/test.tex,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** test.tex 4 Sep 2003 20:31:01 -0000 1.10 --- test.tex 6 Sep 2003 10:34:03 -0000 1.11 *************** *** 52,58 **** %\clearpage ! %\chapter{Conclusiones} ! %\input{conclusiones/conclusiones.tex} ! %\clearpage %\chapter{Código Fuente (Servidor)} --- 52,58 ---- %\clearpage ! \chapter{Conclusiones} ! \input{conclusiones/conclusiones.tex} ! \clearpage %\chapter{Código Fuente (Servidor)} *************** *** 68,88 **** %\section{Clases para el cliente Web} %\input{codigo/web.java.tex} ! \section{Páginas JSP} ! \input{codigo/jsp/jsp.tex} ! \clearpage ! \chapter{Ficheros auxiliares} ! \section{Buildfile \texttt{build.xml}} ! \input{codigo/buildxml.tex} ! \clearpage ! \section{Fichero de recursos (internacionalización)} ! \input{codigo/resources.tex} ! \clearpage ! \section{Información extra al XDoclet} ! \input{codigo/xdoclet/xdoclet.tex} ! \clearpage ! \section{Hoja de transformación} ! \input{codigo/hoja-xsl.tex} ! \clearpage %\input{bibliografia.tex} --- 68,88 ---- %\section{Clases para el cliente Web} %\input{codigo/web.java.tex} ! %\section{Páginas JSP} ! %\input{codigo/jsp/jsp.tex} ! %\clearpage ! %\chapter{Ficheros auxiliares} ! %\section{Buildfile \texttt{build.xml}} ! %\input{codigo/buildxml.tex} ! %\clearpage ! %\section{Fichero de recursos (internacionalización)} ! %\input{codigo/resources.tex} ! %\clearpage ! %\section{Información extra al XDoclet} ! %\input{codigo/xdoclet/xdoclet.tex} ! %\clearpage ! %\section{Hoja de transformación} ! %\input{codigo/hoja-xsl.tex} ! %\clearpage %\input{bibliografia.tex} --- transform.sh DELETED --- |
From: <iva...@us...> - 2003-09-06 10:31:31
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es In directory sc8-pr-cvs1:/tmp/cvs-serv19459 Modified Files: libro.tex Log Message: Corregido el orden de los capitulos Index: libro.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/libro.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** libro.tex 4 Sep 2003 20:31:01 -0000 1.2 --- libro.tex 6 Sep 2003 10:31:28 -0000 1.3 *************** *** 38,55 **** \clearpage - \chapter{Análisis} - \input{analisis/analisis.tex} - \clearpage - \chapter{Requisitos} \input{requisitos/formales.tex} \clearpage ! \chapter{Diseño} ! \input{diseno/diseno.tex} \clearpage \chapter{Proceso de desarrollo} \input{proceso/proceso.tex} \clearpage --- 38,55 ---- \clearpage \chapter{Requisitos} \input{requisitos/formales.tex} \clearpage ! \chapter{Análisis} ! \input{analisis/analisis.tex} \clearpage \chapter{Proceso de desarrollo} \input{proceso/proceso.tex} + \clearpage + + \chapter{Diseño} + \input{diseno/diseno.tex} \clearpage |
From: <iva...@us...> - 2003-09-06 10:30:41
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es In directory sc8-pr-cvs1:/tmp/cvs-serv19354 Modified Files: build.xml Log Message: Ahora el clean elimina tambien los ficheros eps que ya se generan automaticamente Index: build.xml =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/build.xml,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** build.xml 4 Sep 2003 18:19:34 -0000 1.11 --- build.xml 6 Sep 2003 10:30:37 -0000 1.12 *************** *** 54,57 **** --- 54,58 ---- **/*.ps, **/*.pdf" /> + <fileset dir="${basedir}/img" includes="**/*.eps" /> </delete> <delete includeEmptyDirs="true"> |
From: <iva...@us...> - 2003-09-06 10:29:45
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno In directory sc8-pr-cvs1:/tmp/cvs-serv19193/diseno Modified Files: paquetes.tex Log Message: Quitada rejilla de ayuda al dibujo en el diagrama de paquetes Index: paquetes.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/paquetes.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** paquetes.tex 4 Sep 2003 18:06:27 -0000 1.1 --- paquetes.tex 6 Sep 2003 10:29:41 -0000 1.2 *************** *** 83,88 **** } \scalebox{0.9}{% ! \begin{pspicture}(1,1)(27,18) ! \psgrid \pssetdiagramasclase% \rput(14,9.5){\PaqueteProlix} --- 83,87 ---- } \scalebox{0.9}{% ! \begin{pspicture}(1,1)(27,18) %\psgrid \pssetdiagramasclase% \rput(14,9.5){\PaqueteProlix} |
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/img/png In directory sc8-pr-cvs1:/tmp/cvs-serv17974 Added Files: beans.png global2.png recorridos.png session-bean-detallado.png transformacion.png visitor.png Log Message: anyadidas imagenes png necesarias al proyecto --- NEW FILE: beans.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: global2.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: recorridos.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: session-bean-detallado.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: transformacion.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: visitor.png --- (This appears to be a binary file; contents omitted.) |
From: <iva...@us...> - 2003-09-06 10:15:08
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/img/png In directory sc8-pr-cvs1:/tmp/cvs-serv17419/png Log Message: Directory /cvsroot/pfc-prolog/prolix-doc/pfc-es/img/png added to the repository |
From: <iva...@us...> - 2003-09-06 10:14:32
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/img/dia In directory sc8-pr-cvs1:/tmp/cvs-serv17311/dia Added Files: enganche-interprete-prolix.dia Log Message: Anyadida un diagrama mas de dia --- NEW FILE: enganche-interprete-prolix.dia --- (This appears to be a binary file; contents omitted.) |
From: <iva...@us...> - 2003-09-06 10:12:30
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/img In directory sc8-pr-cvs1:/tmp/cvs-serv17071 Added Files: preparar-imagenes.sh Log Message: Anyadido script para generar los eps a partir de los dia y png --- NEW FILE: preparar-imagenes.sh --- #! /bin/bash diac() { echo "Convirtiendo ficheros de DIA a eps... " DIA_FILES=`find dia/ -name "*.dia" | cut -d "/" -f 2-` for i in ${DIA_FILES}; do( dia -n -t eps dia/${i} );done mv dia/*.eps . } pngc() { echo "Convirtiendo ficheros PNG a eps... " PNG_FILES=`find png -name "*.png" | cut -d "/" -f 2-` for i in ${PNG_FILES}; do( EPS_FILE=`echo ${i} | sed --expression="s/png$/eps/g"` convert png/${i} ${EPS_FILE} );done } diac pngc |
From: <iva...@us...> - 2003-09-05 16:29:07
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/conclusiones In directory sc8-pr-cvs1:/tmp/cvs-serv7200 Modified Files: conclusiones.tex Log Message: Completadas conclusiones Index: conclusiones.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/conclusiones/conclusiones.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** conclusiones.tex 4 Sep 2003 20:31:02 -0000 1.2 --- conclusiones.tex 5 Sep 2003 16:29:03 -0000 1.3 *************** *** 1,4 **** ! \section{Conclusiones generales} \section{Conclusiones sobre las herramientas} ! \section{Conclusiones sobre la metodologia} ! \section{Posibles mejoras} \ No newline at end of file --- 1,78 ---- ! Siendo coherentes con la filosofía de desarrollo del proyecto, estas no son las conclusiones de un trabajo terminado cuyo proceso de evolución ha concluido, sino las de un desarrollador que, después de comenzar y elaborar las bases de ese proyecto, espera poder continuar trabajando en él con la ayuda de otros usuarios y programadores, una vez liberado de su categoría de Proyecto Fin de Carrera, para pasar a ser un proyecto de Software Libre. ! ! El proyecto realizado se puede considerar una base lo suficientemente sólida como para empezar a utilizarse en un entorno real, y con una estructura fácilmente adaptable y ampliable a nuevas necesidades. El objetivo inicial de obtener una aplicación de uso real ha sido lograda, y ahora los alumnos dispondrán de una herramienta que facilite su aprendizaje de Prolog. ! ! \section{Conclusiones a la metodología} ! ! El sistema no se elaboró siguiendo el esquema habitual de desarrollo, sino en fases o iteraciones. La principal ventaja obtenida fue el dosificar el aprendizaje de nuevas tecnologías en un proceso continuo, en función de la demanda, ahorrando un tiempo de aprendizaje previo donde las tecnologías estudiadas luego pueden resultar innecesarias, o las necesarias no haberse dominado con el nivel de detalle suficiente. Valga como experiencia el estudio previo del desarrollador del proyecto sobre XML, que resulto inadecuado a las necesidades reales: es difícil conocer qué se va a necesitar. ! ! La planificación y el crecimiento del programa se produjo de forma natural añadiendo las funcionalidades deseadas, en función de lo que en cada momento se creía más necesario o accesible. El precio a pagar por ello consiste en un cierto trabajo extra rediseñando código (<<refactorizando>>) que provoca (y aquí usamos la expresión de \cite{beck-XP}) <<miedo>> en el programador, pues debe modificar partes del programa que estaban funcionando bien. Sin embargo considero que la satisfacción de realizar esos cambios resulta muy motivadora para el informático como programador. ! ! La continua revisión del código del programa produce una mayor seguridad del programador, y una mejora de la calidad de ese código. Lo cual combinado con herramientas que permiten mantener la seguridad de tener una copia <<que funciona>> producen un software más consistente. ! ! Una percepción personal después de desarrollar el proyecto, es la mayor apreciación de la programación. Después de estudiar una ingeniería, donde se adquieren los conocimientos necesarios para desarrollar una labor a otro nivel, menos centrada en el teclado y más proximal al estudio teórico, resulta difícil enfrascarse en la tarea de teclear y compilar un programa. Sin embargo resultó un trabajo interesante y motivador, pues a menudo se olvida el reto intelectual que supone escribir código. Y aún más el de escribir buen código. ! \section{Conclusiones sobre las herramientas} ! ! Sin duda los tres elementos más importantes en el desarrollo de este proyecto fueron la herramienta de compilación \texttt{Ant}, el sistema de control de versiones, \texttt{CVS}, y el generador de código \texttt{XDoclet}. ! ! Por su genericidad no le dedicamos un apartado al lenguaje Java y sus librerías, pero debemos reseñar que su coherencia y su forma de trabajo contagian un estilo de programación ordenado y consistente. El uso de una biblioteca de funciones con un funcionamiento determinado (pensando, por ejemplo, en solicitar un objeto y trabajar con él directamente, no a través de quien nos lo cede) da una idea de lo que es diseño elegante, útil y reaprovechable. ! ! \subsection{Herramienta de compilación \texttt{Ant}} ! ! La facilidad de uso y la potencia para automatizar tareas agilizó el proceso de desarrollo de forma insospechada. Trabajando con java es muy fácil encontrarse con <<CLASSPATH>> muy grandes, cuando se desarrolla el programa en distintos terminales hay que mantener esa variable coherente, o como ocurría en el caso de este proyecto, el programa no puede probarse compilando simplemente, sino que es necesario empaquetarlo de una determinada manera y copiarlo a un sitio concreto. ! ! Todos estos problemas quedan resueltos con \texttt{Ant}. Inicialmente se pierde lo que parece demasiado tiempo configurando su \texttt{buildfile}, retocando tareas, dependencias (fue uno de los ficheros más modificados, como atestigua el CVS), y añadiendo funcionalidades necesarias. Sin embargo después de dominar unas cuantas tareas básicas (ayudados por una documentación envidiable), es rápido y sencillo realizar estas correcciones, y compensa con creces el esfuerzo pensando en el tiempo ahorrado posteriormente. ! ! Usando Ant pudo reducirse a la ejecución de un comando el compilar y desplegar el proyecto, el subir ficheros de back-up a la web del proyecto, o el realizar las operaciones para obtener ficheros para un <<release>>. ! ! \subsection{Sistema de control de versiones CVS} ! ! Esta herramienta, una vez que se comienza a utilizar resulta ya indispensable para el programador. Debemos reseñar con entusiasmo la seguridad que aporta al mantener un historial de cambios, y darnos la posibilidad de probar esos cambios sin perder la versión anterior, fácilmente recuperable. ! ! Cuando como en este caso además el CVS esta en otra máquina, en Internet, podemos además despreocuparnos de un fallo de nuestro ordenador, que podría ser catastrófico sin el uso de esta tecnología. ! ! Su manejo resulta muy sencillo, pues se puede empezar con las características más básicas (actualizar cambios, añadir cambios), y luego según surgen necesidades aprender nuevos comandos y características. ! ! También resulta una herramienta importantísima para permitir el trabajo coordinado desde diferentes puntos, como sucedió en este proyecto (por motivos laborales). ! ! \subsection{Generador de código \texttt{XDoclet}} ! ! Esta es otra de las piezas vitales del sistema. Como en las anteriores, los primeros pasos manejándola son un tanto difíciles, pero los resultados y el aumento de productividad que se puede obtener de su manejo hacen merecer de sobra los problemas iniciales. Puedo decir que desarrollando aplicaciones con EJB su uso resulta \emph{esencial}, pues por un poco que crezca la complejidad del programa nos encontramos con una cantidad de código que debe ser <<consistente>> muy difícil de mantener sin herramientas automáticas, añadiendo también una tediosa labor de compilación con mensajes poco descriptivos. ! ! La documentación disponible (instalada localmente al bajar sus ficheros) es muy buena en explicaciones, con ejemplos para los puntos esenciales. Puede generar código para varios contenedores del J2EE, y todos los ficheros de configuración necesarios se generan, al igual que el código de forma automática. ! ! \subsection{Otras herramientas} ! ! El editor XEmacs también ha sido una gran ayuda para el desarrollo de este proyecto, y es un programa que considero fundamental manejar para cualquier programador. Como simple editor permite moverse por el texto y realizar los cambios más habituales de forma rápida, y además dispone de numerosas ayudas para el programador. Esto, junto con la potencia del modo consola (especialmente en los sistemas Unix), suplen sobradamente un Entorno de Desarrollo Integrado (IDE). ! ! Deberíamos también recomendar phpMyAdmin, especialmente si los conocimientos del programados sobre SQL son básicos. Permite manejar la base de datos de forma intuitiva, traducido al español, y con abundante documentación. ! ! Otras herramientas utilizadas y cuya evolución no debemos perder de vista son <<argoUML>> y <<Umbrello>> como herramientas CASE de diseño con UML. Los diagramas de clases se han elaborado con <<Umbrello>>. Esta en un proceso de desarrollo temprano, pero es capaz de generar código, y es mucho más flexible que la Rational Rose, por lo que las características de las que no dispone (definir interfaces, por ejemplo) se pueden simular. Resulta muy facil mandar informes de errores desde el mismo programa y por experiencia propia podemos garantizar que se reciben y contestan. <<argoUML>> se utilizó al principio del problema, pero aún tenia fallos importantes, dando problemas bastante graves, como la corrupción de ficheros. ! ! Los demás diagramas que aparecen en esta documentación, se elaboraron con <<Dia>>, el programa de diagramas de Gnome. Resulta muy fácil de utilizar, tiene una paleta de símbolos a utilizar muy variada (para multitud de lenguajes, incluido UML, o STEP), y puede exportar gráficos a numerosos formatos. Además es posib le especificar que guarde los ficheros sin comprimir, siendo estos texto plano que se puede subir al CVS. ! ! Todas estas herramientas son software libre. ! ! \subsection{\LaTeX} ! ! Por último hablamos de \LaTeX, con el que se ha escrito esta documentación. Su curva de aprendizaje es muy pronunciada. Los primeros encuentros con esta forma de escribir documentos resultan un tanto frustrantes, quizá por el cambio de forma de pensar y escribir respecto a los métodos tradicionales. Sin embargo, según crece el documento se va justificando su elección. ! ! La inclusión de imágenes que parecía uno de los temas más espinosos resultó más fácil de lo esperado utilizando el formato .eps, al que exportan casi todos los programas utilizados, o al que es posible convertir gráficos en otros formatos (como png). ! ! El uso de paquetes especiales como pst-uml permitieron introducir los diagramas de casos de uso y escenarios sin recurrir a herramientas externas, aunque si que se utilizaron algunas, como lgrind para formatear código fuente e introducirlo en la documentación. En ese sentido es muy remarcable la facilidad de \LaTeX para importar ficheros. Con un script muy sencillo se generaron ficheros .tex con el código de aquellos ficheros del proyecto cuyo lenguaje no era java (jsp y xml), que se puede incluir en el documento maestro y pasan a numerarse y colocarse en el tomo con una tipografía y estilo similar al resto. ! ! Y por supuesto, al tratarse de ficheros en texto plano, pudo mantenerse la documentación en el CVS. ! ! \section{Posibles mejoras} ! ! Acabamos estas conclusiones proponiendo algunas mejoras al proyecto. Resulta importante poner en marcha en un entorno real la aplicación, pues la información recabada por el uso habitual podría considerarse una mejora en si, y una forma de afinar estas sugerencias: ! ! \begin{itemize} ! \item \textbf{Sistema de logs}. Utilizando el sistema de log del jBoss, mantener unos registros del sistema que permitan monitorizar algunas estadísticas como número de visitas por usuario, uso de la biblioteca, consultas por sesión. ! \item \textbf{Desarrollo de diferentes clientes}. Hay desarrollado uno en modo consola un tanto rústico, pero seria interesante poder realizar uno en Gtk o en las bibliotecas gráficas de windows. Esta mejora no implicaría modificación del código en funcionamiento. ! \item \textbf{Comentarios a los programas}. Quizá los usuarios podrían añadir comentarios a los programas de la biblioteca, haciendo sugerencias o preguntas al autor. ! \item \textbf{Utilización del e-mail}. Podrían encontrarse utilidades a disponer de la dirección de correo electrónico del usuario, como poder mandarse un programa a su correo, o notificarle el añadido de un comentario (ver punto anterior). ! \item \textbf{Integración de un foro}. Que pueda servir de punto de reunión a los usuarios de la aplicación, como sitio de consulta sobre Prolog, \dotx ! \item \textbf{Bibliografía y enlaces recomendados}. Mantener información a sitios interesantes referidos a la programación lógica y a Prolog. ! \end{itemize} \ No newline at end of file |
From: <iva...@us...> - 2003-09-04 20:31:12
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno In directory sc8-pr-cvs1:/tmp/cvs-serv26004/pfc-es/diseno Modified Files: dia-secuencia-web.tex dia-secuencia.tex diseno.tex general.tex interprete.tex j2ee-uml.tex secuenciac1-web.tex secuenciac1.tex secuenciac2-web.tex secuenciac2.tex secuenciac4.tex Log Message: Pasada revision ortografica Index: dia-secuencia-web.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/dia-secuencia-web.tex,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** dia-secuencia-web.tex 3 Sep 2003 16:22:12 -0000 1.3 --- dia-secuencia-web.tex 4 Sep 2003 20:31:02 -0000 1.4 *************** *** 1,4 **** % ! % Coordinacion de diagramas por Escenarios % % secuencia del cliente web --- 1,4 ---- % ! % Coordinación de diagramas por Escenarios % % secuencia del cliente web Index: dia-secuencia.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/dia-secuencia.tex,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** dia-secuencia.tex 31 Aug 2003 22:24:07 -0000 1.5 --- dia-secuencia.tex 4 Sep 2003 20:31:02 -0000 1.6 *************** *** 1,4 **** % ! % Coordinacion de diagramas por Escenarios % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --- 1,4 ---- % ! % Coordinación de diagramas por Escenarios % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Index: diseno.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/diseno.tex,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** diseno.tex 4 Sep 2003 17:43:52 -0000 1.8 --- diseno.tex 4 Sep 2003 20:31:02 -0000 1.9 *************** *** 1,4 **** % ! % Coordinación de la parte diseno de la documentación % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --- 1,4 ---- % ! % Coordinación de la parte diseño de la documentación % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Index: general.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/general.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** general.tex 26 Aug 2003 22:38:25 -0000 1.1 --- general.tex 4 Sep 2003 20:31:02 -0000 1.2 *************** *** 6,10 **** \section{Representación general de la aplicación} ! En esta sección mostramos una visión a muy alto nivel de la aplicación, a traves de diagramas con sucesivos niveles de detalle. Se estudian con más profundidad algunos de los escenarios de la fase de análisis, como ejemplos de interacción de los elementos de la arquitectura presentada, y se explica el diseño de datos de la apicación. \subsection{Vista general de la aplicación} --- 6,10 ---- \section{Representación general de la aplicación} ! En esta sección mostramos una visión a muy alto nivel de la aplicación, a través de diagramas con sucesivos niveles de detalle. Se estudian con más profundidad algunos de los escenarios de la fase de análisis, como ejemplos de interacción de los elementos de la arquitectura presentada, y se explica el diseño de datos de la aplicación. \subsection{Vista general de la aplicación} *************** *** 19,23 **** \end{figure} ! En el siguiente nivel de detalle, especificamos la forma de colocar los elementos anteriores en su entorno (servidor web o de aplicaciones) y la comunicación entre ellos (protocolos web o TreeXML). Añadimos la representación de múltiples usuarios accediendo simultaneamente a la aplicación. \begin{figure}[ht] --- 19,23 ---- \end{figure} ! En el siguiente nivel de detalle, especificamos la forma de colocar los elementos anteriores en su entorno (servidor web o de aplicaciones) y la comunicación entre ellos (protocolos web o TreeXml). Añadimos la representación de múltiples usuarios accediendo simultáneamente a la aplicación. \begin{figure}[ht] *************** *** 28,32 **** \end{figure} ! Y para plasmar esta arquitectura en software real, mostramos un último esquema donde detallamos las tecnologias utilizadas en cada una de las partes. \begin{figure}[ht] --- 28,32 ---- \end{figure} ! Y para plasmar esta arquitectura en software real, mostramos un último esquema donde detallamos las tecnologías utilizadas en cada una de las partes. \begin{figure}[ht] *************** *** 72,77 **** \ncline{->}{2,1}{2,2}\naput*{Solicita avanzar un paso} \ncline{->}{3,2}{3,3}\naput*{Avanzar un paso en la resolución} ! \ncline{<-}{4,2}{4,3}\naput*{Resultado en TreeXML} ! \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Transformación TreeXML -> SVG} \ncline{<-}{7,1}{7,2}\naput*{HTML + SVG} \end{psmatrix} --- 72,77 ---- \ncline{->}{2,1}{2,2}\naput*{Solicita avanzar un paso} \ncline{->}{3,2}{3,3}\naput*{Avanzar un paso en la resolución} ! \ncline{<-}{4,2}{4,3}\naput*{Resultado en TreeXml} ! \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Transformación TreeXml -> SVG} \ncline{<-}{7,1}{7,2}\naput*{HTML + SVG} \end{psmatrix} *************** *** 112,117 **** \ncline{->}{2,1}{2,2}\naput*{Solicita avanzar un paso} \ncline{->}{3,2}{3,3}\naput*{Avanzar un paso en la resolución} ! \ncline{<-}{4,2}{4,3}\naput*{Resultado en TreeXML} ! \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Transformación TreeXML -> SVG} \ncEVW[offsetA=0,offsetB=0]{->}{reflectc}{reflectd}\ncput*[npos=1.5]{Transformación SVG -> JPEG} \ncline{<-}{9,1}{9,2}\naput*{HTML + JPEG} --- 112,117 ---- \ncline{->}{2,1}{2,2}\naput*{Solicita avanzar un paso} \ncline{->}{3,2}{3,3}\naput*{Avanzar un paso en la resolución} ! \ncline{<-}{4,2}{4,3}\naput*{Resultado en TreeXml} ! \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Transformación TreeXml -> SVG} \ncEVW[offsetA=0,offsetB=0]{->}{reflectc}{reflectd}\ncput*[npos=1.5]{Transformación SVG -> JPEG} \ncline{<-}{9,1}{9,2}\naput*{HTML + JPEG} *************** *** 154,158 **** \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Avanzar hasta solución} \ncline{<-}{6,2}{6,3}\naput*{Resultado en TreeXML} ! \ncEVW[offsetA=0,offsetB=0]{->}{reflectc}{reflectd}\ncput*[npos=1.5]{Transformación XSLT: TreeXML - HTML} \ncline{<-}{9,1}{9,2}\naput*{HTML} \end{psmatrix} --- 154,158 ---- \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Avanzar hasta solución} \ncline{<-}{6,2}{6,3}\naput*{Resultado en TreeXML} ! \ncEVW[offsetA=0,offsetB=0]{->}{reflectc}{reflectd}\ncput*[npos=1.5]{Transformación XSLT: TreeXml - HTML} \ncline{<-}{9,1}{9,2}\naput*{HTML} \end{psmatrix} *************** *** 167,179 **** \subsubsection{Comunicación Navegador Web - Cliente Web} ! Esta se realiza utilizando el protocolo habitual de internet, HTTP. Uno de los requisitos de la aplicación era evitar la instalación de software por parte del cliente, y librarle de todo el trabajo posible. Por ello todo el trabajo de elaboración de realiza en el servidor web, comunicandose con el cliente a traves de formatos estandar web, como el HTML, SVG o JPEG. ! SVG (Scalable Vector Graphics)\cite{svg-w3c-web} es un formato del consorcio de estandares web w3c\cite{w3c-web}, que ofrece mayores prestaciones que los formátos gráficos habituales: auna las ventajas de estar definido como un lenguaje XML, con la de los gráficos escalares, que permiten por ejemplo ampliar la imagen con una perdida de resolución muchisimo menor. ! Un ejemplo de imagen en SVG y su codigo: \begin{figure}[h] \begin{center} \includegraphics[height=20mm,keepaspectratio=true]{img/ejemploSvg} ! \caption{Grafico SVG.} \end{center} \end{figure} --- 167,179 ---- \subsubsection{Comunicación Navegador Web - Cliente Web} ! Esta se realiza utilizando el protocolo habitual de Internet, HTTP. Uno de los requisitos de la aplicación era evitar la instalación de software por parte del cliente, y librarle de todo el trabajo posible. Por ello todo el trabajo de elaboración de realiza en el servidor web, comunicándose con el cliente a través de formatos estándar web, como el HTML, SVG o JPEG. ! SVG (Scalable Vector Graphics)\cite{svg-w3c-web} es un formato del consorcio de estándares web w3c\cite{w3c-web}, que ofrece mayores prestaciones que los formatos gráficos habituales: auna las ventajas de estar definido como un lenguaje XML, con la de los gráficos escalares, que permiten por ejemplo ampliar la imagen con una perdida de resolución muchísimo menor. ! Un ejemplo de imagen en SVG y su código: \begin{figure}[h] \begin{center} \includegraphics[height=20mm,keepaspectratio=true]{img/ejemploSvg} ! \caption{Gráfico SVG.} \end{center} \end{figure} *************** *** 215,224 **** Actualmente los navegadores soportan de forma simbólica este formato: solo gráficos independientes (no formando parte de una página), y sin color. Se espera que pronto se solucionen estos problemas, y en las versiones en desarrollo de los navegadores (p.j. Mozilla) parece que se esta trabajando en el tema. ! Por lo tanto este formato no puede ser utilizado todavia, pero disponemos de herramientas para trabajar con el, y transformarlo en otros formatos. En nuestro caso se utiliza la herramienta Batik\cite{batik-web} para transformarlo en JPEG. Un formato propietario, pero estandar de facto en internet, y ampliamente soportado por todos los navegadores. \subsubsection{Comunicación Cliente Web - Aplicación} ! En este caso tratamos de la comunicación entre elementos software escritos en java. Disponemos del protocolo RMI (Remote Method Invocation), para la interacción entre objetos a traves de la red. Y sobre ese protocolo intercambiamos información en el lenguaje definido para esta aplicación: TreeXML. El DTD del lenguaje no resulta demasiado complicado: --- 215,224 ---- Actualmente los navegadores soportan de forma simbólica este formato: solo gráficos independientes (no formando parte de una página), y sin color. Se espera que pronto se solucionen estos problemas, y en las versiones en desarrollo de los navegadores (p.j. Mozilla) parece que se esta trabajando en el tema. ! Por lo tanto este formato no puede ser utilizado todavía, pero disponemos de herramientas para trabajar con el, y transformarlo en otros formatos. En nuestro caso se utiliza la herramienta Batik\cite{batik-web} para transformarlo en JPEG. Un formato propietario, pero estándar de facto en Internet, y ampliamente soportado por todos los navegadores. \subsubsection{Comunicación Cliente Web - Aplicación} ! En este caso tratamos de la comunicación entre elementos software escritos en java. Disponemos del protocolo RMI (Remote Method Invocation), para la interacción entre objetos a través de la red. Y sobre ese protocolo intercambiamos información en el lenguaje definido para esta aplicación: TreeXml. El DTD del lenguaje no resulta demasiado complicado: *************** *** 246,260 **** El elemento padre de todo el documento es el elemento \textit{tree}, que puede tener como hijos elementos \textit{node}, \textit{solution} o \textit{transition} en cualquier numero cada uno de ellos (esto es lo que explica la primera linea <<ELEMENT>> del DTD. Estos elementos hijo no tiene a su vez mas hijos, excepto \textit{solution}, que puede tener cualquier numero de elementos \textit{substitution}. ! Despues estan enumerados los atributos de cada elemento definido, siguiendo el patrón << < !ATTLIST {nombre-elemento} {nombre-atributo} {tipo} {otros-parametros} >>. En <<otros parametros>> agrupamos el valor por defecto o si es requerido el parámetro. ! De esta forma un arbol de resolución como: \begin{figure}[h] \begin{center} \includegraphics[height=70mm,keepaspectratio=true]{img/arbol-2-soluciones} ! \caption{Arbol de resolución.} \end{center} \end{figure} ! Esta representado en TreeXML como: \begin{verbatim} --- 246,260 ---- El elemento padre de todo el documento es el elemento \textit{tree}, que puede tener como hijos elementos \textit{node}, \textit{solution} o \textit{transition} en cualquier numero cada uno de ellos (esto es lo que explica la primera linea <<ELEMENT>> del DTD. Estos elementos hijo no tiene a su vez mas hijos, excepto \textit{solution}, que puede tener cualquier numero de elementos \textit{substitution}. ! Después están enumerados los atributos de cada elemento definido, siguiendo el patrón << < !ATTLIST {nombre-elemento} {nombre-atributo} {tipo} {otros-parámetros} >>. En <<otros parámetros>> agrupamos el valor por defecto o si es requerido el parámetro. ! De esta forma un árbol de resolución como: \begin{figure}[h] \begin{center} \includegraphics[height=70mm,keepaspectratio=true]{img/arbol-2-soluciones} ! \caption{Árbol de resolución.} \end{center} \end{figure} ! Esta representado en TreeXml como: \begin{verbatim} *************** *** 279,283 **** ! Usando TreeXML garantizamos la posibilidad de comunicar cualquier cliente con la aplicación: es texto plano, que el cliente puede interpretar como mejor le convenga, convirtiendolo a una representación en modo texto, a un formato gráfico adecuando (como el caso de \texttt{Prolix}) u otras combinaciones. \subsection{Vista detallada de la aplicación} --- 279,283 ---- ! Usando TreeXml garantizamos la posibilidad de comunicar cualquier cliente con la aplicación: es texto plano, que el cliente puede interpretar como mejor le convenga, convirtiéndolo a una representación en modo texto, a un formato gráfico adecuando (como el caso de \texttt{Prolix}) u otras combinaciones. \subsection{Vista detallada de la aplicación} Index: interprete.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/interprete.tex,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** interprete.tex 4 Sep 2003 17:43:52 -0000 1.4 --- interprete.tex 4 Sep 2003 20:31:02 -0000 1.5 *************** *** 20,24 **** \begin{center} \includegraphics[width=120mm,keepaspectratio=true]{img/enganche-interprete-prolix.eps} ! \caption{\label{general}Representación del enganche a traves de interfaces de aplicación - intérprete.} \end{center} \end{figure} --- 20,24 ---- \begin{center} \includegraphics[width=120mm,keepaspectratio=true]{img/enganche-interprete-prolix.eps} ! \caption{\label{general}Representación del enganche a través de interfaces de aplicación - intérprete.} \end{center} \end{figure} *************** *** 41,45 **** \end{figure} ! El diagrama de secuencia sobre como interactuan estas clases esta representado en la figura \ref{secuenciaInterpreter}, y para completar el modelado de su comportamiento, mostramos en la figura \ref{estadosContext} el diagrama de estados de \texttt{PrologContext}. \begin{figure}[ht] --- 41,45 ---- \end{figure} ! El diagrama de secuencia sobre como interactúan estas clases esta representado en la figura \ref{secuenciaInterpreter}, y para completar el modelado de su comportamiento, mostramos en la figura \ref{estadosContext} el diagrama de estados de \texttt{PrologContext}. \begin{figure}[ht] *************** *** 160,168 **** ! El método \texttt{isCompletlyExplored()} devuelve si todos sus posibles hijos estan explorados. En caso de que lo estén, puede ser porque tiene hijos y están explorados, o porque es un nodo final, dato que podemos consultar con \texttt{isFinal()}. Si es final, puede ser solución. Si su query (\texttt{getQuery()}) es la clausula vacia, es una solución, aunque encapsulamos esta operación en el método \texttt{isSolution()}. ! Para navegar por el arbol se utilizan los métodos \texttt{getParent()} que devuelve una referencia al TreeElement padre del nodo actual. Y \texttt{getNextLevelElements()} para obtener los nodos hijos. ! En cada nodo deberiamos encontrar las substituticiones que se hicieron para llegar a el. Las solicitamos con el método \texttt{getSubstitutions()}, que devuelve de cero a varias referencias a \texttt{Substitution}, una clase que almacena el valor anterior y nuevo de una variable. Por último el interfaz de \texttt{TreeElement} incluye el método que le permite aceptar clases <<visitor>>, que hereden de la clase \texttt{TreeElementVisitor} cuyo diagrama mostramos en la figura \ref{visitor}. Su implementación no depende del programador del intérprete pues su código es: --- 160,168 ---- ! El método \texttt{isCompletlyExplored()} devuelve si todos sus posibles hijos están explorados. En caso de que lo estén, puede ser porque tiene hijos y están explorados, o porque es un nodo final, dato que podemos consultar con \texttt{isFinal()}. Si es final, puede ser solución. Si su query (\texttt{getQuery()}) es la clausula vacía, es una solución, aunque encapsulamos esta operación en el método \texttt{isSolution()}. ! Para navegar por el árbol se utilizan los métodos \texttt{getParent()} que devuelve una referencia al TreeElement padre del nodo actual. Y \texttt{getNextLevelElements()} para obtener los nodos hijos. ! En cada nodo deberíamos encontrar las substituticiones que se hicieron para llegar a el. Las solicitamos con el método \texttt{getSubstitutions()}, que devuelve de cero a varias referencias a \texttt{Substitution}, una clase que almacena el valor anterior y nuevo de una variable. Por último el interfaz de \texttt{TreeElement} incluye el método que le permite aceptar clases <<visitor>>, que hereden de la clase \texttt{TreeElementVisitor} cuyo diagrama mostramos en la figura \ref{visitor}. Su implementación no depende del programador del intérprete pues su código es: *************** *** 175,179 **** \end{verbatim} ! De esta forma, con el patrón <<visitor>> podemos implemetar operaciones diferentes sobre la estructura del arbol. \begin{figure}[ht] --- 175,179 ---- \end{verbatim} ! De esta forma, con el patrón <<visitor>> podemos implementar operaciones diferentes sobre la estructura del árbol. \begin{figure}[ht] *************** *** 197,201 **** %\subsection{Resultados del intérprete (vista dinámica)} % ! % En el apartado anterior comentamos la clase \texttt{TreeElement} que retorna el interprete cuando se le solicitan resultados. En este apartado explicamos como se representa el arbol de soluciones en esa estructura y como crece en cada consulta, usando un ejemplo. % % Sea el programa: --- 197,201 ---- %\subsection{Resultados del intérprete (vista dinámica)} % ! % En el apartado anterior comentamos la clase \texttt{TreeElement} que retorna el interprete cuando se le solicitan resultados. En este apartado explicamos como se representa el árbol de soluciones en esa estructura y como crece en cada consulta, usando un ejemplo. % % Sea el programa: Index: j2ee-uml.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/j2ee-uml.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** j2ee-uml.tex 25 Aug 2003 20:56:02 -0000 1.1 --- j2ee-uml.tex 4 Sep 2003 20:31:02 -0000 1.2 *************** *** 1,4 **** % ! % Diseño::problematica j2ee-uml % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --- 1,4 ---- % ! % Diseño::problemática j2ee-uml % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% *************** *** 10,22 **** \textit{El Lenguaje Unificado de Modelado (UML) es un lenguaje para especificar, visualizar, construir y documentar los artefactos de los sistemas software, así como para el modelado del negocio y otros sistemas no software}\cite{omg-web} ! Actualmente UML es la notación de modelado estandard en la industria informática. Su elaboración comenzó en 1994 cuando Grady Booch y Jim Rumsbaugh decidieron unir las notaciones que habian desarrollado para sus propios métodos (el de Booch y el \textit{OMT: Object Modeling Technique}). Posteriormente se unió a ellos Ivar Jacobson, y entre otros colaboladores, se desataca el papel de Cris Kobryn. En 1997 fue reconocido como estandard por el \textit{Object Management Group}, el consorcio de empresas cuyo objetivo es promover las especificaciones necesarias para obtener software standard y de calidad. ! La plataforma J2EE nació en 1999 cuando Sun decidió redefinir java. Por su filosofia multiplataforma (en el sentido de no estar atado a un sistema operativo) java comenzó a utilizarse en multitud de aplicaciones, desde electrodomésticos hasta sistemas de empresa. Originalmente java estaba estructurado como un SDK (Kit de desarrollo) básico, con librerias para las diferentes utilidades, lo cual empezó a resultar ineficiente, por lo que Sun reorganizó el entorno en 3 versiones: J2ME (Micro Edition, para aplicaciones de dispositivos <<pequeños>>), j2SE (Standard Edition, para aplicaciones convencionales) y J2EE (Entreprise Edition, para aplicaciones a gran escala, web y distribuidas). En esencia la plataforma J2EE consiste en un conjunto de interfaces y clases auxiliares en el lenguaje Java (por tanto totalmente orientadas a objetos), que las aplicaciones pueden o deben utilizar para beneficiarse de una serie de servicios implementados en lo que se conoce como el <<contenedor>> de aplicaciones. ! Uno de los objetos (de forma coloquial) mas importantes de esta arquitectura es el EJB: Enterprise Java Bean. Cumpliendo unos requisitos claramente especificados, el programador puede concentrarse en crear EJBs con la lógica de negocio. Esto libera al desarrollador de una serie de problemas de diseño, implementación y prueba, como la persistencia o la localización de un elemento o el mantener la sessión del usuario. Estas tareas, comunes a todas las aplicaciones, quedan en manos del <<contenedor>>, lo que aumenta su fiabilidad, reduce el numero de pruebas necesarias a la aplicación, y agiliza el desarrollo de código util. ! A nivel práctico, escribir un EJB consiste en implementar unos determinados interfaces respetando ciertas normas sobre los nombres de métodos y variables. Hacerlo <<a mano>> no es dificil si se trata de poco código, pero según crecen el número de EJBs, y los cambios se suceden, es más dificil mantener coherentes todos los ficheros. Sin embargo es posible el uso de herramientas (como en el caso de \texttt{Prolix} con \texttt{XDoclet}), mediante las cuales es posible escribir un único fichero y generar automáticamente todos los demás, con la seguridad de coherencia que ello conlleva. ! Hay disponibles herramientas como \texttt{WithClass}\cite{microgold-web} o \texttt{Oracle9i jDeveloper}\cite{oracle-jdev-web}, que permiten diseñar los EJB en UML y generar su codigo. Sin embargo parece ser que aún no hay una forma <<oficial>> de Sun para representar de forma simplificada estos elementos\cite{uml-ejb-jcp}, por lo que suponemos que o bien el diseño se realiza completo para poder generar el código (escribiendo todos los interfaces y relaciones) o la notación utilizada es propia de la herramienta. En ambos casos son herramientas de pago. \ No newline at end of file --- 10,22 ---- \textit{El Lenguaje Unificado de Modelado (UML) es un lenguaje para especificar, visualizar, construir y documentar los artefactos de los sistemas software, así como para el modelado del negocio y otros sistemas no software}\cite{omg-web} ! Actualmente UML es la notación de modelado estándar en la industria informática. Su elaboración comenzó en 1994 cuando Grady Booch y Jim Rumsbaugh decidieron unir las notaciones que habían desarrollado para sus propios métodos (el de Booch y el \textit{OMT: Object Modeling Technique}). Posteriormente se unió a ellos Ivar Jacobson, y entre otros colaboradores, se desataca el papel de Cris Kobryn. En 1997 fue reconocido como estándar por el \textit{Object Management Group}, el consorcio de empresas cuyo objetivo es promover las especificaciones necesarias para obtener software estándar y de calidad. ! La plataforma J2EE nació en 1999 cuando Sun decidió redefinir java. Por su filosofía multiplataforma (en el sentido de no estar atado a un sistema operativo) java comenzó a utilizarse en multitud de aplicaciones, desde electrodomésticos hasta sistemas de empresa. Originalmente java estaba estructurado como un SDK (Kit de desarrollo) básico, con librerías para las diferentes utilidades, lo cual empezó a resultar ineficiente, por lo que Sun reorganizó el entorno en 3 versiones: J2ME (Micro Edition, para aplicaciones de dispositivos <<pequeños>>), j2SE (Standard Edition, para aplicaciones convencionales) y J2EE (Entreprise Edition, para aplicaciones a gran escala, web y distribuidas). En esencia la plataforma J2EE consiste en un conjunto de interfaces y clases auxiliares en el lenguaje Java (por tanto totalmente orientadas a objetos), que las aplicaciones pueden o deben utilizar para beneficiarse de una serie de servicios implementados en lo que se conoce como el <<contenedor>> de aplicaciones. ! Uno de los objetos (de forma coloquial) mas importantes de esta arquitectura es el EJB: Enterprise Java Bean. Cumpliendo unos requisitos claramente especificados, el programador puede concentrarse en crear EJBs con la lógica de negocio. Esto libera al desarrollador de una serie de problemas de diseño, implementación y prueba, como la persistencia o la localización de un elemento o el mantener la sesión del usuario. Estas tareas, comunes a todas las aplicaciones, quedan en manos del <<contenedor>>, lo que aumenta su fiabilidad, reduce el numero de pruebas necesarias a la aplicación, y agiliza el desarrollo de código útil. ! A nivel práctico, escribir un EJB consiste en implementar unos determinados interfaces respetando ciertas normas sobre los nombres de métodos y variables. Hacerlo <<a mano>> no es difícil si se trata de poco código, pero según crecen el número de EJBs, y los cambios se suceden, es más difícil mantener coherentes todos los ficheros. Sin embargo es posible el uso de herramientas (como en el caso de \texttt{Prolix} con \texttt{XDoclet}), mediante las cuales es posible escribir un único fichero y generar automáticamente todos los demás, con la seguridad de coherencia que ello conlleva. ! Hay disponibles herramientas como \texttt{WithClass}\cite{microgold-web} o \texttt{Oracle9i jDeveloper}\cite{oracle-jdev-web}, que permiten diseñar los EJB en UML y generar su código. Sin embargo parece ser que aún no hay una forma <<oficial>> de Sun para representar de forma simplificada estos elementos\cite{uml-ejb-jcp}, por lo que suponemos que o bien el diseño se realiza completo para poder generar el código (escribiendo todos los interfaces y relaciones) o la notación utilizada es propia de la herramienta. En ambos casos son herramientas de pago. \ No newline at end of file Index: secuenciac1-web.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/secuenciac1-web.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** secuenciac1-web.tex 1 Sep 2003 20:26:04 -0000 1.2 --- secuenciac1-web.tex 4 Sep 2003 20:31:02 -0000 1.3 *************** *** 5,9 **** \paragraph{Alumno carga programa} ! Representado en la figura \ref{DSE11W}. Las operaciones relativas al servidor estan en la figura \ref{DSE11}, en la página \pageref{DSE11}. \begin{sidewaysfigure}[hpb] --- 5,9 ---- \paragraph{Alumno carga programa} ! Representado en la figura \ref{DSE11W}. Las operaciones relativas al servidor están en la figura \ref{DSE11}, en la página \pageref{DSE11}. \begin{sidewaysfigure}[hpb] Index: secuenciac1.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/secuenciac1.tex,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** secuenciac1.tex 31 Aug 2003 22:24:07 -0000 1.3 --- secuenciac1.tex 4 Sep 2003 20:31:02 -0000 1.4 *************** *** 5,9 **** \paragraph{Alumno carga programa} ! En la figura \ref{DSE11} mostramos el diagrama de secuencia del escenario <<Alumno carga programa>>. El segundo caso de uso (<<cargar programa desde biblioteca>>) desde el punto de vista del servidor es igual que este, diferenciandose solo en la parte del cliente web. \begin{sidewaysfigure}[hpb] --- 5,9 ---- \paragraph{Alumno carga programa} ! En la figura \ref{DSE11} mostramos el diagrama de secuencia del escenario <<Alumno carga programa>>. El segundo caso de uso (<<cargar programa desde biblioteca>>) desde el punto de vista del servidor es igual que este, diferenciándose solo en la parte del cliente web. \begin{sidewaysfigure}[hpb] Index: secuenciac2-web.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/secuenciac2-web.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** secuenciac2-web.tex 3 Sep 2003 16:22:12 -0000 1.2 --- secuenciac2-web.tex 4 Sep 2003 20:31:02 -0000 1.3 *************** *** 81,85 **** \paragraph{Alumno avanza hasta siguiente solución} ! Representado el diagrama de secuencia en la figura \ref{DSE22W}. La operación de tranformación \texttt{transform} de la clase \texttt{SvgGenerator} muestra completa en la figura \ref{transf-svg}. --- 81,85 ---- \paragraph{Alumno avanza hasta siguiente solución} ! Representado el diagrama de secuencia en la figura \ref{DSE22W}. La operación de transformación \texttt{transform} de la clase \texttt{SvgGenerator} muestra completa en la figura \ref{transf-svg}. *************** *** 263,267 **** \paragraph{Alumno visualiza soluciones} ! Este escenario se desarrolla integramente en la parte de visualización de la aplicación, extrayendo los datos del modelo (JavaBean). Se representa su secuencia en la figura \ref{DSE24W}. \begin{figure} --- 263,267 ---- \paragraph{Alumno visualiza soluciones} ! Este escenario se desarrolla íntegramente en la parte de visualización de la aplicación, extrayendo los datos del modelo (JavaBean). Se representa su secuencia en la figura \ref{DSE24W}. \begin{figure} *************** *** 295,299 **** %% Escenario 2.5 ! \paragraph{Alumno visualiza arbol de representación de soluciones} Al igual que en el escenario anterior, toda la labor de este escenario se realiza en el lado del cliente web, aunque en este caso se requieren más operaciones para transformar el SVG en JPEG. --- 295,299 ---- %% Escenario 2.5 ! \paragraph{Alumno visualiza árbol de representación de soluciones} Al igual que en el escenario anterior, toda la labor de este escenario se realiza en el lado del cliente web, aunque en este caso se requieren más operaciones para transformar el SVG en JPEG. Index: secuenciac2.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/secuenciac2.tex,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** secuenciac2.tex 3 Sep 2003 16:22:12 -0000 1.4 --- secuenciac2.tex 4 Sep 2003 20:31:02 -0000 1.5 *************** *** 47,51 **** \paragraph{Alumno avanza hasta siguiente solución} ! Se ha optado por representar las operaciónes \texttt{isSolution()} y \texttt{getCompletlyExplored()} de la clase \texttt{TreeOperations} y \texttt{transformToTreeXML()} de la clase \texttt{TransformationControl} en diagramas diferentes (figuras \ref{isSolution}, \ref{isCE} y \ref{transformToTreeXml} respectivamente), para obtener un diagrama de secuencia principal(figura \ref{DSE22}) más claro. \begin{sidewaysfigure}[hpb] --- 47,51 ---- \paragraph{Alumno avanza hasta siguiente solución} ! Se ha optado por representar las operaciones \texttt{isSolution()} y \texttt{getCompletlyExplored()} de la clase \texttt{TreeOperations} y \texttt{transformToTreeXML()} de la clase \texttt{TransformationControl} en diagramas diferentes (figuras \ref{isSolution}, \ref{isCE} y \ref{transformToTreeXml} respectivamente), para obtener un diagrama de secuencia principal(figura \ref{DSE22}) más claro. \begin{sidewaysfigure}[hpb] Index: secuenciac4.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/secuenciac4.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** secuenciac4.tex 31 Aug 2003 22:24:07 -0000 1.2 --- secuenciac4.tex 4 Sep 2003 20:31:02 -0000 1.3 *************** *** 4,8 **** \paragraph{Usuario hace login en el sistema} ! El sistema comprueba si el usuario que pretende hacer login es el administrador. Si es así se asegura de que haya un administrador creado (figura \ref{yaHayAdmin}) o crea uno si todavia o existe (figura \ref{noHayAdmin}). En cualquier caso (sea administrador o no), el sistema cierra la sesión anterior si la hubiese, y comienza una nueva con ese usuario y password solicitado, como representamos en la figura \ref{DSE41}, la secuencia principal. %%%% login --- 4,8 ---- \paragraph{Usuario hace login en el sistema} ! El sistema comprueba si el usuario que pretende hacer login es el administrador. Si es así se asegura de que haya un administrador creado (figura \ref{yaHayAdmin}) o crea uno si todavía o existe (figura \ref{noHayAdmin}). En cualquier caso (sea administrador o no), el sistema cierra la sesión anterior si la hubiese, y comienza una nueva con ese usuario y password solicitado, como representamos en la figura \ref{DSE41}, la secuencia principal. %%%% login |
From: <iva...@us...> - 2003-09-04 20:31:12
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/requisitos In directory sc8-pr-cvs1:/tmp/cvs-serv26004/pfc-es/requisitos Modified Files: formales.tex Log Message: Pasada revision ortografica Index: formales.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/requisitos/formales.tex,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** formales.tex 31 Aug 2003 17:32:05 -0000 1.4 --- formales.tex 4 Sep 2003 20:31:03 -0000 1.5 *************** *** 11,16 **** \item El entorno de la aplicación debe ser totalmente web \begin{enumerate} ! \item La utilización de la aplicación no deberia requerir la instalación de software por parte del cliente ! \item Se debera ajustar el máximo posible a estándares que garanticen su funcionamiento en todo tipo de clientes \end{enumerate} --- 11,16 ---- \item El entorno de la aplicación debe ser totalmente web \begin{enumerate} ! \item La utilización de la aplicación no debería requerir la instalación de software por parte del cliente ! \item Se deberá ajustar el máximo posible a estándares que garanticen su funcionamiento en todo tipo de clientes \end{enumerate} *************** *** 18,22 **** \begin{enumerate} \item Para acceder a la aplicación el usuario debe estar registrado. ! \item El usuario podra registrarse a si mismo, de forma automática y gratuita por la Web. \item La supresión de un usuario será tarea del/de los administrador(es). \end{enumerate} --- 18,22 ---- \begin{enumerate} \item Para acceder a la aplicación el usuario debe estar registrado. ! \item El usuario podrá registrarse a si mismo, de forma automática y gratuita por la Web. \item La supresión de un usuario será tarea del/de los administrador(es). \end{enumerate} *************** *** 25,41 **** \begin{enumerate} \item La aplicación debe admitir la carga de programas y la resolución de consultas en lenguaje Prolog. ! \item En cada paso detectará los errores correspondientes e informará al ususario para su corrección. \item Durante la sesión de usuario se pueden almacenar las ultimas consultas realizadas, pudiendo repetirse sin ser necesario teclearlas de nuevo. \end{enumerate} ! \item La resolución de las consultas podra obtenerse de forma gráfica. \begin{enumerate} ! \item Debe poder observarse una representación gráfica del arbol de resolución ! \item Esta representación se hará si es posible en SVG u otro estandar libre. En su defecto en un formato gráfico visualizable en cualquier sistema cliente. \end{enumerate} \item Los usuarios dispondrán de una biblioteca de programas \begin{enumerate} ! \item Cualquier usuario puede guardar sus programas en una biblioteca, poniendolos a disposición de los demás usuarios \item Cada usuario tiene acceso a todos los programas de la biblioteca, pudiendo ejecutarlos, modificarlos, y guardarlos con otro nombre. \item El usuario puede borrar solo sus propios programas. --- 25,41 ---- \begin{enumerate} \item La aplicación debe admitir la carga de programas y la resolución de consultas en lenguaje Prolog. ! \item En cada paso detectará los errores correspondientes e informará al usuario para su corrección. \item Durante la sesión de usuario se pueden almacenar las ultimas consultas realizadas, pudiendo repetirse sin ser necesario teclearlas de nuevo. \end{enumerate} ! \item La resolución de las consultas podrá obtenerse de forma gráfica. \begin{enumerate} ! \item Debe poder observarse una representación gráfica del árbol de resolución ! \item Esta representación se hará si es posible en SVG u otro estándar libre. En su defecto en un formato gráfico visualizable en cualquier sistema cliente. \end{enumerate} \item Los usuarios dispondrán de una biblioteca de programas \begin{enumerate} ! \item Cualquier usuario puede guardar sus programas en una biblioteca, poniéndolos a disposición de los demás usuarios \item Cada usuario tiene acceso a todos los programas de la biblioteca, pudiendo ejecutarlos, modificarlos, y guardarlos con otro nombre. \item El usuario puede borrar solo sus propios programas. |
From: <iva...@us...> - 2003-09-04 20:31:11
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/manual In directory sc8-pr-cvs1:/tmp/cvs-serv26004/pfc-es/manual Modified Files: configuracion.tex instalacion.tex requisitos.tex Log Message: Pasada revision ortografica Index: configuracion.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/manual/configuracion.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** configuracion.tex 25 Aug 2003 20:58:48 -0000 1.1 --- configuracion.tex 4 Sep 2003 20:31:02 -0000 1.2 *************** *** 8,14 **** \subsection{Configuración del software para la ejecución} ! \subsubsection{Maquina virtual de java 1.4} ! Este software dispone de abundante documentación y esta portado a multiples plataformas, además de ser de uso común, por lo que nos remitimos a sus manuales. --- 8,14 ---- \subsection{Configuración del software para la ejecución} ! \subsubsection{Máquina virtual de java 1.4} ! Este software dispone de abundante documentación y esta portado a múltiples plataformas, además de ser de uso común, por lo que nos remitimos a sus manuales. *************** *** 41,45 **** \end{verbatim} ! Aquí podemos configurar el nombre de la base de datos qeu queremos utilizar, y el usuario-password que utilizará la aplicación para actuar con ella. El resto de parametros funcionan para el conector dado. \subsection{Configuración del software para la compilación} --- 41,45 ---- \end{verbatim} ! Aquí podemos configurar el nombre de la base de datos que queremos utilizar, y el usuario-password que utilizará la aplicación para actuar con ella. El resto de parámetros funcionan para el conector dado. \subsection{Configuración del software para la compilación} *************** *** 49,55 **** \subsubsection{Herramienta de compilación Ant 1.5.4} ! Despues de obtener los ficheros binarios de la web, descomprimir los ficheros en un directorio e incluirlo en el PATH. Se recomienda crear una variable \verb+ANT_HOME+ apuntando al directorio donde descomprimimos los archivos, pero en sistemas NT/2000 y Linux no es necesario. ! Es indispensble utilizar la versión 1.5.4, pues se utilizan algunas características no disponibles en versiones anteriores. \subsubsection{Generador de código XDoclet 1.2b4} --- 49,55 ---- \subsubsection{Herramienta de compilación Ant 1.5.4} ! Después de obtener los ficheros binarios de la web, descomprimir los ficheros en un directorio e incluirlo en el PATH. Se recomienda crear una variable \verb+ANT_HOME+ apuntando al directorio donde descomprimimos los archivos, pero en sistemas NT/2000 y Linux no es necesario. ! Es indispensable utilizar la versión 1.5.4, pues se utilizan algunas características no disponibles en versiones anteriores. \subsubsection{Generador de código XDoclet 1.2b4} *************** *** 61,65 **** \subsubsection{Plataforma J2EE} ! Despues de bajar el J2EE SDK y descomprimirlo en un directorio, definir una variable de entorno llamada \verb+J2EE_HOME+ que apunte a ese directorio. \subsubsection{Biblioteca Batik} --- 61,65 ---- \subsubsection{Plataforma J2EE} ! Después de bajar el J2EE SDK y descomprimirlo en un directorio, definir una variable de entorno llamada \verb+J2EE_HOME+ que apunte a ese directorio. \subsubsection{Biblioteca Batik} Index: instalacion.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/manual/instalacion.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** instalacion.tex 25 Aug 2003 20:58:48 -0000 1.1 --- instalacion.tex 4 Sep 2003 20:31:02 -0000 1.2 *************** *** 19,23 **** Ambos ficheros deben copiarse en \verb+JBOSS_HOME/server/default/deploy+. Se puede realizar esta operación con el jBoss arrancado, pues dispone de <<hot deploy>>, que le permite detectar cuando llega un fichero nuevo y desplegarlo sin reiniciarse. ! En el momento en que acabe el despliegue de la aplicación (jBoss informa de ello en su consola), se puede acceder a la aplicación a traves de la dirección: \verb+http://{nombre-de-la-maquina}:8080/prolix/login.jsp+, desde cualquier navegador web. \subsection{Instalación desde el código fuente} --- 19,23 ---- Ambos ficheros deben copiarse en \verb+JBOSS_HOME/server/default/deploy+. Se puede realizar esta operación con el jBoss arrancado, pues dispone de <<hot deploy>>, que le permite detectar cuando llega un fichero nuevo y desplegarlo sin reiniciarse. ! En el momento en que acabe el despliegue de la aplicación (jBoss informa de ello en su consola), se puede acceder a la aplicación a través de la dirección: \verb+http://{nombre-de-la-maquina}:8080/prolix/login.jsp+, desde cualquier navegador web. \subsection{Instalación desde el código fuente} *************** *** 25,31 **** En \cite{sf-prolix}, disponemos también de un fichero de código fuente. Al bajarlo y descomprimirlo se crea un directorio \verb+prolix-{numero_de_version}+, que contiene el código fuente de la aplicación. ! Suponiendo todo el software configurado correctamente, podemos instalar la aplicación con la ejecución del comando: \textit{ant deploy} en la carpeta recien creada, el cual despliega la aplicación en el jBoss para la configuración default. ! Si se prefiriese instalarla en otro nivel de arranque del jboss, con la ejecución de \textit{ant package-server} y \textit{ant package-webclient} obtenemos en el directorio \texttt{dist} los ficheros requeridos por el jBoss, que despues podemos copiar a mano. En ese momento, al igual que con la instalación desde los binarios, si el jBoss esta arrancado, podemos acceder a la aplicación mediante la dirección:\\ \verb+http://{nombre-de-la-maquina}:8080/prolix/login.jsp+ --- 25,31 ---- En \cite{sf-prolix}, disponemos también de un fichero de código fuente. Al bajarlo y descomprimirlo se crea un directorio \verb+prolix-{numero_de_version}+, que contiene el código fuente de la aplicación. ! Suponiendo todo el software configurado correctamente, podemos instalar la aplicación con la ejecución del comando: \textit{ant deploy} en la carpeta recién creada, el cual despliega la aplicación en el jBoss para la configuración default. ! Si se prefiriese instalarla en otro nivel de arranque del jBoss, con la ejecución de \textit{ant package-server} y \textit{ant package-webclient} obtenemos en el directorio \texttt{dist} los ficheros requeridos por el jBoss, que después podemos copiar a mano. En ese momento, al igual que con la instalación desde los binarios, si el jBoss esta arrancado, podemos acceder a la aplicación mediante la dirección:\\ \verb+http://{nombre-de-la-maquina}:8080/prolix/login.jsp+ Index: requisitos.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/manual/requisitos.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** requisitos.tex 3 Sep 2003 16:27:08 -0000 1.2 --- requisitos.tex 4 Sep 2003 20:31:02 -0000 1.3 *************** *** 17,21 **** \end{itemize} ! Estos requisitos deben ampliarse en proporción al número de usuarios y peticiones recibidas. jBoss esta diseñado para poder ser utilizando hasta en entornos de varios procesadores, y sistemas muy grandes. Luego su desempeño podra ser el que el hardware le permita. --- 17,21 ---- \end{itemize} ! Estos requisitos deben ampliarse en proporción al número de usuarios y peticiones recibidas. jBoss esta diseñado para poder ser utilizando hasta en entornos de varios procesadores, y sistemas muy grandes. Luego su desempeño podrá ser el que el hardware le permita. *************** *** 45,47 **** \end{itemize} ! Todos estos elementos se pueden obtener de forma gratuita en internet, en las páginas anotadas en la bibliografia, y disponen de abundante documentación tanto online, como localmente una vez instaladas. El conector tiene una instalación particular del contenedor. \ No newline at end of file --- 45,47 ---- \end{itemize} ! Todos estos elementos se pueden obtener de forma gratuita en Internet, en las páginas anotadas en la bibliografía, y disponen de abundante documentación tanto online, como localmente una vez instaladas. El conector tiene una instalación particular del contenedor. \ No newline at end of file |
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/clases In directory sc8-pr-cvs1:/tmp/cvs-serv26004/pfc-es/diseno/clases Modified Files: clases.tex dia-clases.tex ejb-entityjb.tex ejb-sessionjb.tex web-beans.tex web-servlets.tex Log Message: Pasada revision ortografica Index: clases.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/clases/clases.tex,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** clases.tex 3 Sep 2003 16:22:13 -0000 1.4 --- clases.tex 4 Sep 2003 20:31:02 -0000 1.5 *************** *** 1,5 **** % % ! % Diseño :: descripcion de clases % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --- 1,5 ---- % % ! % Diseño :: descripción de clases % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% *************** *** 8,12 **** \paragraph{Nomenclatura} ! Se ha optado por poner los atributos de las clases con todas sus propiedades (visibilidad tipo nombre-variable), y en los métodos marcar sólo los privados con el simbolo <<$-$>>, siendo públicos por defecto. \bgroup --- 8,12 ---- \paragraph{Nomenclatura} ! Se ha optado por poner los atributos de las clases con todas sus propiedades (visibilidad tipo nombre-variable), y en los métodos marcar sólo los privados con el símbolo <<$-$>>, siendo públicos por defecto. \bgroup Index: dia-clases.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/clases/dia-clases.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** dia-clases.tex 31 Aug 2003 17:23:39 -0000 1.1 --- dia-clases.tex 4 Sep 2003 20:31:02 -0000 1.2 *************** *** 46,50 **** \begin{center} \includegraphics[height=210mm,width=210mm,keepaspectratio=true,angle=-90]{img/recorridos} ! \caption{\label{umlrecorridos} Jerarquia de clases y relaciones que componen la encapsulación de los recorridos del arbol \texttt{TreeElement}} \end{center} \end{figure} --- 46,50 ---- \begin{center} \includegraphics[height=210mm,width=210mm,keepaspectratio=true,angle=-90]{img/recorridos} ! \caption{\label{umlrecorridos} Jerarquía de clases y relaciones que componen la encapsulación de los recorridos del árbol \texttt{TreeElement}} \end{center} \end{figure} Index: ejb-entityjb.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/clases/ejb-entityjb.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ejb-entityjb.tex 31 Aug 2003 10:51:19 -0000 1.1 --- ejb-entityjb.tex 4 Sep 2003 20:31:02 -0000 1.2 *************** *** 22,26 **** \paragraph{Descripción} Entity EJB que abstrae la figura de Programa de la tabla de datos. ! \paragraph{Relaciones de agregración} \begin{itemize} \item Clase \texttt{UserBean} --- 22,26 ---- \paragraph{Descripción} Entity EJB que abstrae la figura de Programa de la tabla de datos. ! \paragraph{Relaciones de agregación} \begin{itemize} \item Clase \texttt{UserBean} Index: ejb-sessionjb.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/clases/ejb-sessionjb.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ejb-sessionjb.tex 31 Aug 2003 17:23:39 -0000 1.2 --- ejb-sessionjb.tex 4 Sep 2003 20:31:02 -0000 1.3 *************** *** 12,16 **** \paragraph{Atributos} \begin{itemize} ! \item \texttt{private UserLocal loggedUser} \\ Referencia al usuario logeado. \item \texttt{private StudentRole studentUseCase} \\ Referencia al bean que encapsula el intérprete. \item \texttt{private LibraryManagement library} \\ Referencia al bean que gestiona todo lo relacionado con la biblioteca. --- 12,16 ---- \paragraph{Atributos} \begin{itemize} ! \item \texttt{private UserLocal loggedUser} \\ Referencia al usuario conectado. \item \texttt{private StudentRole studentUseCase} \\ Referencia al bean que encapsula el intérprete. \item \texttt{private LibraryManagement library} \\ Referencia al bean que gestiona todo lo relacionado con la biblioteca. *************** *** 41,45 **** \end{itemize} ! \item \texttt{createAdmin(String username,String password)} \\ Da de alta un administrador en el sistema. Comprueba que el usuario logeado tenga permisos de administrador. \\ \textbf{Excepciones: } \begin{itemize} --- 41,45 ---- \end{itemize} ! \item \texttt{createAdmin(String username,String password)} \\ Da de alta un administrador en el sistema. Comprueba que el usuario en sesión tenga permisos de administrador. \\ \textbf{Excepciones: } \begin{itemize} *************** *** 66,70 **** \end{itemize} ! \item \texttt{changePassword(String newPasswd)} \\ Cambia el password del usuario actualmente logeado en el sistema.\\ \textbf{Excepciones: } \begin{itemize} --- 66,70 ---- \end{itemize} ! \item \texttt{changePassword(String newPasswd)} \\ Cambia el password del usuario actualmente conectado en el sistema.\\ \textbf{Excepciones: } \begin{itemize} *************** *** 81,85 **** \item \texttt{getStudentRole() : StudentRole} \\ Devuelve el bean con el intérprete para que el cliente pueda interactuar con él. ! \item \texttt{getLibraryManagement() : LibraryManagement} \\ Devuelve el bean que gestiona la biblioteca, para que el cliente interactue con él. \item \texttt{getLoggedUser() : UserLocal} \\ Devuelve una referencia al usuario en el sistema.\\ --- 81,85 ---- \item \texttt{getStudentRole() : StudentRole} \\ Devuelve el bean con el intérprete para que el cliente pueda interactuar con él. ! \item \texttt{getLibraryManagement() : LibraryManagement} \\ Devuelve el bean que gestiona la biblioteca, para que el cliente interactúe con él. \item \texttt{getLoggedUser() : UserLocal} \\ Devuelve una referencia al usuario en el sistema.\\ *************** *** 155,159 **** \paragraph{Métodos} \begin{itemize} ! \item \texttt{visit(TreeElement,TreeElementVisitor)} \\ Busca el ultimo elemento en el arbol de \texttt{TreeElement} y le aplica el visitor. \end{itemize} --- 155,159 ---- \paragraph{Métodos} \begin{itemize} ! \item \texttt{visit(TreeElement,TreeElementVisitor)} \\ Busca el ultimo elemento en el árbol de \texttt{TreeElement} y le aplica el visitor. \end{itemize} *************** *** 161,165 **** \descripcionClase{Clase \texttt{prolix.ejb.sessionjb.PostOrderTraversor}} ! \paragraph{Descripción} Implementación del interfaz \texttt{TreeTraversor} (página \pageref{ttinterfaz}), que hace un recorrido post-orden del arbol de \texttt{TreeElement} aplicando el <<visitor>> a cada nodo. \paragraph{Relaciones de asociación} --- 161,165 ---- \descripcionClase{Clase \texttt{prolix.ejb.sessionjb.PostOrderTraversor}} ! \paragraph{Descripción} Implementación del interfaz \texttt{TreeTraversor} (página \pageref{ttinterfaz}), que hace un recorrido post-orden del árbol de \texttt{TreeElement} aplicando el <<visitor>> a cada nodo. \paragraph{Relaciones de asociación} *************** *** 256,260 **** \paragraph{Atributos} \begin{itemize} ! \item \texttt{private PrologContext \_prologCtx} \\ Mantiene una referencia al contexto de prolog (instancia del intérprete). \item \texttt{public static final string prologInterpreterClassname} \\ Nombre cualificado de la clase que implementa el interfaz PrologInterpreter. \item \texttt{private string \_program} \\ Programa cargado en este momento. --- 256,260 ---- \paragraph{Atributos} \begin{itemize} ! \item \texttt{private PrologContext \_prologCtx} \\ Mantiene una referencia al contexto de Prolog (instancia del intérprete). \item \texttt{public static final string prologInterpreterClassname} \\ Nombre cualificado de la clase que implementa el interfaz PrologInterpreter. \item \texttt{private string \_program} \\ Programa cargado en este momento. *************** *** 297,301 **** \end{itemize} ! \item \texttt{nextSolution() : string} \\ Devuelve el TreeXML del arbol de resolución con la solución siguiente al punto donde se encontraba. \\ \textbf{Excepciones: } \begin{itemize} --- 297,301 ---- \end{itemize} ! \item \texttt{nextSolution() : string} \\ Devuelve el TreeXml del árbol de resolución con la solución siguiente al punto donde se encontraba. \\ \textbf{Excepciones: } \begin{itemize} *************** *** 306,310 **** \end{itemize} ! \item \texttt{step() : string} \\ Devuelve el TreeXML del arbol resultante de avanzar un único paso en la resolución. \\ \textbf{Excepciones: } \begin{itemize} --- 306,310 ---- \end{itemize} ! \item \texttt{step() : string} \\ Devuelve el TreeXml del árbol resultante de avanzar un único paso en la resolución. \\ \textbf{Excepciones: } \begin{itemize} *************** *** 328,332 **** \descripcionClase{Clase \texttt{prolix.ejb.sessionjb.TransformationControl}} ! \paragraph{Descripción} Clase que encapsula todas las operaciones para transformar el TreeElement resultado del intérprete en treeXml. \paragraph{Relaciones de asociación} --- 328,332 ---- \descripcionClase{Clase \texttt{prolix.ejb.sessionjb.TransformationControl}} ! \paragraph{Descripción} Clase que encapsula todas las operaciones para transformar el TreeElement resultado del intérprete en TreeXml. \paragraph{Relaciones de asociación} *************** *** 345,349 **** \descripcionClase{Clase \texttt{prolix.ejb.sessionjb.TreeOperations}} ! \paragraph{Descripción} Clase que encapsula todas las operaciones para transformar el TreeElement resultado del intérprete en treeXml. \paragraph{Relaciones de asociación} --- 345,349 ---- \descripcionClase{Clase \texttt{prolix.ejb.sessionjb.TreeOperations}} ! \paragraph{Descripción} Clase que encapsula todas las operaciones para transformar el TreeElement resultado del intérprete en TreeXml. \paragraph{Relaciones de asociación} *************** *** 360,364 **** \descripcionClase{Interfaces \texttt{prolix.ejb.sessionjb.TreeTraversors}} ! \paragraph{Descripción} Interfaz para todas las clases que quiern implementar un recorrido sobre un \texttt{TreeElement}. \paragraph{Relaciones de asociación} --- 360,364 ---- \descripcionClase{Interfaces \texttt{prolix.ejb.sessionjb.TreeTraversors}} ! \paragraph{Descripción} Interfaz para todas las clases que quieran implementar un recorrido sobre un \texttt{TreeElement}. \paragraph{Relaciones de asociación} *************** *** 370,374 **** \paragraph{Métodos} \begin{itemize} ! \item \texttt{visit(TreeElement,TreeElementVisitor)} \\ Declaración del método que deben implementar los recorridos sobre el \texttt{TreeElement}, realizando como y cuando convenga la operación del \texttt{TreeElementVisitor} que también recibe como parametro. \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --- 370,374 ---- \paragraph{Métodos} \begin{itemize} ! \item \texttt{visit(TreeElement,TreeElementVisitor)} \\ Declaración del método que deben implementar los recorridos sobre el \texttt{TreeElement}, realizando como y cuando convenga la operación del \texttt{TreeElementVisitor} que también recibe como parámetro. \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Index: web-beans.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/clases/web-beans.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** web-beans.tex 31 Aug 2003 10:57:54 -0000 1.1 --- web-beans.tex 4 Sep 2003 20:31:02 -0000 1.2 *************** *** 8,12 **** \item \texttt{private string programHTML} \\ Programa cargado, con saltos de linea en HTML \item \texttt{private string consult} \\ Consulta cargada ! \item \texttt{private string result} \\ TreeXML resultado actual \item \texttt{private boolean noMoreSolutions} \\ Indica si hay más soluciones \end{itemize} --- 8,12 ---- \item \texttt{private string programHTML} \\ Programa cargado, con saltos de linea en HTML \item \texttt{private string consult} \\ Consulta cargada ! \item \texttt{private string result} \\ TreeXml resultado actual \item \texttt{private boolean noMoreSolutions} \\ Indica si hay más soluciones \end{itemize} *************** *** 46,50 **** \descripcionClase{Clase \texttt{prolix.web.beans.LibraryBean}} ! \paragraph{Descripción} Bean que almacena los programas de la libreria. \paragraph{Atributos} --- 46,50 ---- \descripcionClase{Clase \texttt{prolix.web.beans.LibraryBean}} ! \paragraph{Descripción} Bean que almacena los programas de la librería. \paragraph{Atributos} *************** *** 62,66 **** \descripcionClase{Clase \texttt{prolix.web.beans.LoginBean}} ! \paragraph{Descripción} Bean que almacena la información del usuario en session. \paragraph{Atributos} --- 62,66 ---- \descripcionClase{Clase \texttt{prolix.web.beans.LoginBean}} ! \paragraph{Descripción} Bean que almacena la información del usuario en sesión. \paragraph{Atributos} Index: web-servlets.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno/clases/web-servlets.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** web-servlets.tex 31 Aug 2003 10:54:20 -0000 1.1 --- web-servlets.tex 4 Sep 2003 20:31:02 -0000 1.2 *************** *** 11,16 **** \begin{itemize} \item \texttt{createTextId() : String} \\ Crea un identificador para una etiqueta de texto de la forma <<text(numero)>>. ! \item \texttt{createSubstId() : String} \\ Crea un identificador para una etiqueta de texto que contendra substituciones de la forma <<subst(numero)>>. ! \item \texttt{createTransitionId() : String} \\ Crea un identificador de la forma <<trans(numero)>> para definir de forma única una transicions \end{itemize} --- 11,16 ---- \begin{itemize} \item \texttt{createTextId() : String} \\ Crea un identificador para una etiqueta de texto de la forma <<text(numero)>>. ! \item \texttt{createSubstId() : String} \\ Crea un identificador para una etiqueta de texto que contendrá substituciones de la forma <<subst(numero)>>. ! \item \texttt{createTransitionId() : String} \\ Crea un identificador de la forma <<trans(numero)>> para definir de forma única una transición \end{itemize} *************** *** 42,48 **** \item \texttt{public static int nodeSizeX} \\ Tamaño horizontal de un nodo. \item \texttt{public static int nodeSizeY} \\ Tamaño vertical de un nodo. ! \item \texttt{private java.awt.Dimension size} \\ Dimension final del SVG obtenido. ! \item \texttt{public static string conventionalNodeColor} \\ Color, en hexadecimal, de un nodo que no es solución. ! \item \texttt{public static string solutionNodeColor} \\ Color, en hexadecimal, de un nodo solución. \item \texttt{private IdFactory idGenerator} \\ Generador de identificadores necesarios para la conversión. \end{itemize} --- 42,48 ---- \item \texttt{public static int nodeSizeX} \\ Tamaño horizontal de un nodo. \item \texttt{public static int nodeSizeY} \\ Tamaño vertical de un nodo. ! \item \texttt{private java.awt.Dimension size} \\ Dimensión final del SVG obtenido. ! \item \texttt{public static String conventionalNodeColor} \\ Color, en hexadecimal, de un nodo que no es solución. ! \item \texttt{public static String solutionNodeColor} \\ Color, en hexadecimal, de un nodo solución. \item \texttt{private IdFactory idGenerator} \\ Generador de identificadores necesarios para la conversión. \end{itemize} *************** *** 63,68 **** \item \texttt{$-$ searchNodeByNumber(org.w3c.dom.Node root, string number) : org.w3c.dom.Node} \\ Buscan a partir de <<root>> un nodo identificado como <<number>>. \item \texttt{$-$ java.awt.Dimension mySize(org.w3c.dom.Node node) : java.awt.Dimension} \\ Devuelve el tamaño necesario para englobar el texto del nodo. ! \item \texttt{$-$ Dimension drawNode(Node raiz, string number, Point leftTopCorner, Writer output)} \\ Algoritmo de la transformación, que dibuja el arbol <<raiz>> desde el nodo <<number>> partiendo del punto <<leftTopCorner>>, guardando el resultado en <<output>>. ! \item \texttt{$-$ imprimirTransicion(Point origen, NodeDrawData destino, Writer output)} \\ Escribe el SVG correspondiente a una transicion del punto origen al lugar correspondiente del arbol hijo, cuyos datos almacena <<destino>>. El resultado se guarda en <<output>>. \item \texttt{$-$ printConventionalNode(Node node, Point leftTopPoint, Writer output)} \\ Escribe el SVG correspondiente al nodo <<node>> que no es solución, incluida su etiqueta, en el punto <<leftTopPoint>>, y guardando el resultado en <<output>>. \item \texttt{$-$ filterSubstitutionNodes(NodeList original) : Node [ ] } \\ Filtra la lista de nodos <<original>> para dejar solo elementos <<substitution>>. --- 63,68 ---- \item \texttt{$-$ searchNodeByNumber(org.w3c.dom.Node root, string number) : org.w3c.dom.Node} \\ Buscan a partir de <<root>> un nodo identificado como <<number>>. \item \texttt{$-$ java.awt.Dimension mySize(org.w3c.dom.Node node) : java.awt.Dimension} \\ Devuelve el tamaño necesario para englobar el texto del nodo. ! \item \texttt{$-$ Dimension drawNode(Node raiz, string number, Point leftTopCorner, Writer output)} \\ Algoritmo de la transformación, que dibuja el árbol <<raiz>> desde el nodo <<number>> partiendo del punto <<leftTopCorner>>, guardando el resultado en <<output>>. ! \item \texttt{$-$ imprimirTransicion(Point origen, NodeDrawData destino, Writer output)} \\ Escribe el SVG correspondiente a una transición del punto origen al lugar correspondiente del árbol hijo, cuyos datos almacena <<destino>>. El resultado se guarda en <<output>>. \item \texttt{$-$ printConventionalNode(Node node, Point leftTopPoint, Writer output)} \\ Escribe el SVG correspondiente al nodo <<node>> que no es solución, incluida su etiqueta, en el punto <<leftTopPoint>>, y guardando el resultado en <<output>>. \item \texttt{$-$ filterSubstitutionNodes(NodeList original) : Node [ ] } \\ Filtra la lista de nodos <<original>> para dejar solo elementos <<substitution>>. *************** *** 87,91 **** \descripcionClase{Clase \texttt{prolix.web.servlets.TreeServlet}} ! \paragraph{Descripción} Servlet que devuelve el arbol de resolución en SVG o JPEG según se le solicite. \paragraph{Relaciones de asociación} --- 87,91 ---- \descripcionClase{Clase \texttt{prolix.web.servlets.TreeServlet}} ! \paragraph{Descripción} Servlet que devuelve el árbol de resolución en SVG o JPEG según se le solicite. \paragraph{Relaciones de asociación} *************** *** 98,102 **** \paragraph{Métodos} Puesto que trata de un servlet, implementa el método para responder a las peticiones tal como lo define \texttt{HttpServlet}. \begin{itemize} ! \item \texttt{doGet()} \\ Si se le solicita SVG, devuelve el arbol este formato. En caso de solicitar JPEG realiza la transformación y devuelve el resultado. \\ \textbf{Excepciones: } \begin{itemize} \item ServletException --- 98,102 ---- \paragraph{Métodos} Puesto que trata de un servlet, implementa el método para responder a las peticiones tal como lo define \texttt{HttpServlet}. \begin{itemize} ! \item \texttt{doGet()} \\ Si se le solicita SVG, devuelve el árbol este formato. En caso de solicitar JPEG realiza la transformación y devuelve el resultado. \\ \textbf{Excepciones: } \begin{itemize} \item ServletException |
From: <iva...@us...> - 2003-09-04 20:31:11
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/pruebas In directory sc8-pr-cvs1:/tmp/cvs-serv26004/pfc-es/pruebas Modified Files: casosDeUso.tex pruebas.tex Log Message: Pasada revision ortografica Index: casosDeUso.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/pruebas/casosDeUso.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** casosDeUso.tex 3 Sep 2003 19:14:09 -0000 1.1 --- casosDeUso.tex 4 Sep 2003 20:31:03 -0000 1.2 *************** *** 4,8 **** \section{Pruebas orientadas por casos de uso} ! Siguiendo los casos de uso y escenarios de la seccion \ref{seccion:escenarios}, realizamos las pruebas del sistema, presentando en cada una la descripción de la misma, la salida esperada y la salida real obtenida. Usaremos el programa de prueba de la figura \ref{ejemploProlog} donde sea necesario. --- 4,8 ---- \section{Pruebas orientadas por casos de uso} ! Siguiendo los casos de uso y escenarios de la sección \ref{seccion:escenarios}, realizamos las pruebas del sistema, presentando en cada una la descripción de la misma, la salida esperada y la salida real obtenida. Usaremos el programa de prueba de la figura \ref{ejemploProlog} donde sea necesario. *************** *** 19,23 **** buenamusica(blues). \end{verbatim} ! \caption{\label{ejemploProlog} Programa en prolog utilizado en las pruebas} \end{figure} --- 19,23 ---- buenamusica(blues). \end{verbatim} ! \caption{\label{ejemploProlog} Programa en Prolog utilizado en las pruebas} \end{figure} *************** *** 28,41 **** \subsubsection{Alumno carga programa} ! Se trata de comprobar que \texttt{Prolix} gestiona bien la carga de programas y la muestra de sus errores, no de la labor del intérprete (que además es facilmente reemplazable), por lo que no se realizan pruebas exhaustivas del lenguaje Prolog. \begin{prueba} \descripcion Carga correcta de un programa. Se utiliza como ejemplo el programa de la figura \ref{ejemploProlog}. ! \salidaEsperada Deberiamos avanzar a la página de introducir consultas, donde se mostrase el programa introducido. ! \salidaReal Se produce el efecto deseado, mostrandose la página adecuada. \end{prueba} \begin{prueba} ! \descripcion Carga de un programa con errores sintácticos. Se teclea el programa de ejemplo, quitanto en la linea 4 el paréntesis de cierre:\\ \begin{verbatim} --- 28,41 ---- \subsubsection{Alumno carga programa} ! Se trata de comprobar que \texttt{Prolix} gestiona bien la carga de programas y la muestra de sus errores, no de la labor del intérprete (que además es fácilmente reemplazable), por lo que no se realizan pruebas exhaustivas del lenguaje Prolog. \begin{prueba} \descripcion Carga correcta de un programa. Se utiliza como ejemplo el programa de la figura \ref{ejemploProlog}. ! \salidaEsperada Deberíamos avanzar a la página de introducir consultas, donde se mostrase el programa introducido. ! \salidaReal Se produce el efecto deseado, mostrándose la página adecuada. \end{prueba} \begin{prueba} ! \descripcion Carga de un programa con errores sintácticos. Se teclea el programa de ejemplo, quitando en la linea 4 el paréntesis de cierre:\\ \begin{verbatim} *************** *** 48,52 **** \end{verbatim} ! \salidaEsperada Deberia mostrarse un mensaje de error, y no permitir consultar el programa. \salidaReal Se muestra en pantalla el mensaje <<Error sintactico line 4:13: unexpected token: soul>>. El mensaje de error indica con acierto la linea y marca el token anterior al que da error. La diagnosticación de estos errores es parte del intérprete. \end{prueba} --- 48,52 ---- \end{verbatim} ! \salidaEsperada Debería mostrarse un mensaje de error, y no permitir consultar el programa. \salidaReal Se muestra en pantalla el mensaje <<Error sintactico line 4:13: unexpected token: soul>>. El mensaje de error indica con acierto la linea y marca el token anterior al que da error. La diagnosticación de estos errores es parte del intérprete. \end{prueba} *************** *** 62,66 **** buenamusica(blues). \end{verbatim} ! \salidaEsperada Deberia mostrarse un mensaje de error y el programa editable para corregir los errores. \salidaReal Aparece el programa editable, y el mensaje <<Error léxico line 2:15: unexpected char: @ >> \end{prueba} --- 62,66 ---- buenamusica(blues). \end{verbatim} ! \salidaEsperada Debería mostrarse un mensaje de error y el programa editable para corregir los errores. \salidaReal Aparece el programa editable, y el mensaje <<Error léxico line 2:15: unexpected char: @ >> \end{prueba} *************** *** 83,87 **** \begin{prueba} \descripcion Carga de una consulta correcta. Usando el programa de ejemplo, evaluamos \texttt{buengrupo(folsom)}. ! \salidaEsperada Deberia llegarse a la página de evaluar soluciones, donde se mostrase el programa y la consulta (ambos no editables), sin ninguna solución por el momento. \salidaReal Llegamos a la página esperada y se muestran tanto el programa como la consulta cargada, mientras se espera la orden de avanzar solución. \end{prueba} --- 83,87 ---- \begin{prueba} \descripcion Carga de una consulta correcta. Usando el programa de ejemplo, evaluamos \texttt{buengrupo(folsom)}. ! \salidaEsperada Debería llegarse a la página de evaluar soluciones, donde se mostrase el programa y la consulta (ambos no editables), sin ninguna solución por el momento. \salidaReal Llegamos a la página esperada y se muestran tanto el programa como la consulta cargada, mientras se espera la orden de avanzar solución. \end{prueba} *************** *** 93,98 **** \begin{prueba} ! \descripcion El alumno solicita avanzar hasta la siguiente solución despues de carga la consulta de la prueba anterior (\texttt{buengrupo(folsom)}). ! \salidaEsperada El sistema deberia devolver un \texttt{Si} la primera vez que se solicita la solución, y un \texttt{No hay mas soluciones} o mensaje equivalente las siguientes. \salidaReal Se muestra en la página de soluciones un mensaje de <<Solución 1: si>>. Al solicitar otra solución muestra el mensaje de <<No hay mas soluciones>> y desaparece la opción de mostrar soluciones. \end{prueba} --- 93,98 ---- \begin{prueba} ! \descripcion El alumno solicita avanzar hasta la siguiente solución después de carga la consulta de la prueba anterior (\texttt{buengrupo(folsom)}). ! \salidaEsperada El sistema debería devolver un \texttt{Si} la primera vez que se solicita la solución, y un \texttt{No hay mas soluciones} o mensaje equivalente las siguientes. \salidaReal Se muestra en la página de soluciones un mensaje de <<Solución 1: si>>. Al solicitar otra solución muestra el mensaje de <<No hay mas soluciones>> y desaparece la opción de mostrar soluciones. \end{prueba} *************** *** 100,104 **** \begin{prueba} \descripcion Añadimos la clausula \texttt{grupotoca(beth,pop)}. Y cargamos la consulta \texttt{buengrupo(beth)}. ! \salidaEsperada No deberia sorprendernos que el sistema contestase con un sonoro <<No>> a tan evidente pregunta. \salidaReal El sistema devuelve un <<No hay mas soluciones>> pues efectivamente intenta resolver la consulta, hasta explorar todas las posibilidades y no encuentra solución afirmativa. \end{prueba} --- 100,104 ---- \begin{prueba} \descripcion Añadimos la clausula \texttt{grupotoca(beth,pop)}. Y cargamos la consulta \texttt{buengrupo(beth)}. ! \salidaEsperada No debería sorprendernos que el sistema contestase con un sonoro <<No>> a tan evidente pregunta. \salidaReal El sistema devuelve un <<No hay mas soluciones>> pues efectivamente intenta resolver la consulta, hasta explorar todas las posibilidades y no encuentra solución afirmativa. \end{prueba} *************** *** 106,110 **** \begin{prueba} \descripcion Se carga la consulta \texttt{buengrupo(X)}, para el programa ejemplo. ! \salidaEsperada Deberia mostrarse una solución << X = folsom >>. Si se solicita otra más << X = uveOcho >> y si se solicita una tercera, <<No hay mas soluciones>>. \salidaReal Aparecen los resultados esperados. \end{prueba} --- 106,110 ---- \begin{prueba} \descripcion Se carga la consulta \texttt{buengrupo(X)}, para el programa ejemplo. ! \salidaEsperada Debería mostrarse una solución << X = folsom >>. Si se solicita otra más << X = uveOcho >> y si se solicita una tercera, <<No hay mas soluciones>>. \salidaReal Aparecen los resultados esperados. \end{prueba} *************** *** 115,135 **** \begin{prueba} \descripcion Comprobaremos que el sistema, una vez cargado el programa y al consulta correctamente, es capaz de avanzar en la resolución paso a paso. Esta opción solo esta permitida en la resolución gráfica (en la resolución textual no tiene sentido). Cargamos una consulta que conlleve varios pasos como \texttt{buengrupo(X)}. ! \salidaEsperada El arbol de resolución deberia crear un nodo cada vez que seleccionemos avanzar un paso. ! \salidaReal. Efectivamente se añade un nodo en cada avance, desapareciendo la opción de avanzar un paso cuando se acaba de recorrer el arbol. \end{prueba} %% Escenario 2.4 \subsubsection{Alumno visualiza soluciones} ! Cuando el alumno cambia de resolución gráfica a texto, el servidor no realiza ninguna labor, se trata de visualizar los datos obtenidos en la parte cliente. Para comprobar la visualización de soluciones, cargamos programa ejemplo, consulta \texttt{buengrupo(X)} y ejecutamos distintas combinaciones de cambio entre el modo gráfico y texto, despues de realizar un paso o un avance hasta solución, o paso a paso hasta solución. \begin{prueba} \descripcion Cargada la consulta, vamos al modo gráfico y avanzamos un paso. ! \salidaEsperada Todavia no se ha encontrado ninguna solución, no deberia mostrarse ningun mensaje. ! \salidaReal Efectivamente, no se muestra ningun resultado. \end{prueba} \begin{prueba} \descripcion Cargada la consulta, vamos al modo gráfico y avanzamos hasta solución. ! \salidaEsperada Deberia mostrarnos un mensaje de <<solucion X = folsom>>. \salidaReal Se muestra el resultado deseado. \end{prueba} --- 115,135 ---- \begin{prueba} \descripcion Comprobaremos que el sistema, una vez cargado el programa y al consulta correctamente, es capaz de avanzar en la resolución paso a paso. Esta opción solo esta permitida en la resolución gráfica (en la resolución textual no tiene sentido). Cargamos una consulta que conlleve varios pasos como \texttt{buengrupo(X)}. ! \salidaEsperada El árbol de resolución debería crear un nodo cada vez que seleccionemos avanzar un paso. ! \salidaReal. Efectivamente se añade un nodo en cada avance, desapareciendo la opción de avanzar un paso cuando se acaba de recorrer el árbol. \end{prueba} %% Escenario 2.4 \subsubsection{Alumno visualiza soluciones} ! Cuando el alumno cambia de resolución gráfica a texto, el servidor no realiza ninguna labor, se trata de visualizar los datos obtenidos en la parte cliente. Para comprobar la visualización de soluciones, cargamos programa ejemplo, consulta \texttt{buengrupo(X)} y ejecutamos distintas combinaciones de cambio entre el modo gráfico y texto, después de realizar un paso o un avance hasta solución, o paso a paso hasta solución. \begin{prueba} \descripcion Cargada la consulta, vamos al modo gráfico y avanzamos un paso. ! \salidaEsperada Todavía no se ha encontrado ninguna solución, no debería mostrarse ningún mensaje. ! \salidaReal Efectivamente, no se muestra ningún resultado. \end{prueba} \begin{prueba} \descripcion Cargada la consulta, vamos al modo gráfico y avanzamos hasta solución. ! \salidaEsperada Debería mostrarnos un mensaje de <<solucion X = folsom>>. \salidaReal Se muestra el resultado deseado. \end{prueba} *************** *** 137,158 **** \begin{prueba} \descripcion Cargada la consulta, vamos al modo gráfico y avanzamos paso a paso hasta encontrar solución. ! \salidaEsperada Deberia mostrarnos las soluciones encontradas hasta el momento (continuando la prueba anterior, además de <<solución X = folsom>> deberia mostrar <<solución X = uveOcho >>). \salidaReal El resultado es el esperado. \end{prueba} %% Escenario 2.5 ! \subsubsection{Alumno visualiza arbol de representación de soluciones} ! Comprobamos al representación del arbol de resolución cuando cambiamos del modo texto al modo gráfico. \begin{prueba} ! \descripcion Cargamos el programa y consulta de las pruebas anteriores, y solicitamos la resolución gráfica antes de ejecutar ningun paso o avance. ! \salidaEsperada No debería mostrarse ningún arbol de resolución, pues no se realizó ninguna operación. \salidaReal No se muestra ninguna imagen, en la representación gráfica. \end{prueba} \begin{prueba} ! \descripcion Cargamos el programa y consulta de las pruebas anteriores, y solicitamos la resolución gráfica despues de ejecutar un <<avanzar hasta solución>>. ! \salidaEsperada Deberia mostrarse un arbol de resolución que incluyese la primera solución. ! \salidaReal Tal como se esperaba, aparece el arbol correcto. \end{prueba} --- 137,158 ---- \begin{prueba} \descripcion Cargada la consulta, vamos al modo gráfico y avanzamos paso a paso hasta encontrar solución. ! \salidaEsperada Debería mostrarnos las soluciones encontradas hasta el momento (continuando la prueba anterior, además de <<solución X = folsom>> debería mostrar <<solución X = uveOcho >>). \salidaReal El resultado es el esperado. \end{prueba} %% Escenario 2.5 ! \subsubsection{Alumno visualiza árbol de representación de soluciones} ! Comprobamos al representación del árbol de resolución cuando cambiamos del modo texto al modo gráfico. \begin{prueba} ! \descripcion Cargamos el programa y consulta de las pruebas anteriores, y solicitamos la resolución gráfica antes de ejecutar ningún paso o avance. ! \salidaEsperada No debería mostrarse ningún árbol de resolución, pues no se realizó ninguna operación. \salidaReal No se muestra ninguna imagen, en la representación gráfica. \end{prueba} \begin{prueba} ! \descripcion Cargamos el programa y consulta de las pruebas anteriores, y solicitamos la resolución gráfica después de ejecutar un <<avanzar hasta solución>>. ! \salidaEsperada Debería mostrarse un árbol de resolución que incluyese la primera solución. ! \salidaReal Tal como se esperaba, aparece el árbol correcto. \end{prueba} *************** *** 165,176 **** \begin{prueba} ! \descripcion Se procede a guardar el programa ejemplo en la biblioteca, introduciendo todos los datos requeridos (titulo y descripcion). ! \salidaEsperada Si el alumno accede a la biblioteca deberia encontrarse el programa, no produciendose ningun efecto visual inmediato. ! \salidaReal Usandose otro escenario comprobamos que el programa esta guardado realmente. (Comprobable también en los registros del sistema). \end{prueba} \begin{prueba} \descripcion Se intenta guardar el programa en la biblioteca sin incluir el título. ! \salidaEsperada Deberia mostrarse un mensaje de error solicitando el dato, y no guardar nada en la biblioteca. \salidaReal Se muestra el mensaje <<Debe poner título a su programa>>, y la biblioteca no ha sufrido cambios. \end{prueba} --- 165,176 ---- \begin{prueba} ! \descripcion Se procede a guardar el programa ejemplo en la biblioteca, introduciendo todos los datos requeridos (titulo y descripción). ! \salidaEsperada Si el alumno accede a la biblioteca debería encontrarse el programa, no produciéndose ningún efecto visual inmediato. ! \salidaReal Usándose otro escenario comprobamos que el programa esta guardado realmente. (Comprobable también en los registros del sistema). \end{prueba} \begin{prueba} \descripcion Se intenta guardar el programa en la biblioteca sin incluir el título. ! \salidaEsperada Debería mostrarse un mensaje de error solicitando el dato, y no guardar nada en la biblioteca. \salidaReal Se muestra el mensaje <<Debe poner título a su programa>>, y la biblioteca no ha sufrido cambios. \end{prueba} *************** *** 178,182 **** \begin{prueba} \descripcion Se intenta guardar el programa en la biblioteca sin incluir descripción. ! \salidaEsperada Deberia mostrarse un mensaje de error solicitando descripción, y el programa no debe guardarse en la biblioteca. \salidaReal Se muestra el mensaje <<Debe escribir una breve descripción de su programa>> y la biblioteca no cambia. \end{prueba} --- 178,182 ---- \begin{prueba} \descripcion Se intenta guardar el programa en la biblioteca sin incluir descripción. ! \salidaEsperada Debería mostrarse un mensaje de error solicitando descripción, y el programa no debe guardarse en la biblioteca. \salidaReal Se muestra el mensaje <<Debe escribir una breve descripción de su programa>> y la biblioteca no cambia. \end{prueba} *************** *** 184,188 **** \begin{prueba} \descripcion Se intenta guardar dos veces el mismo programa (el mismo título). (Se almacenan usando el título como clave). ! \salidaEsperada El sistema deberia informar de la coincidencia de claves. \salidaReal El sistema muestra un mensaje de <<Error guardando programa - puede que haya otro con ese titulo>>. \end{prueba} --- 184,188 ---- \begin{prueba} \descripcion Se intenta guardar dos veces el mismo programa (el mismo título). (Se almacenan usando el título como clave). ! \salidaEsperada El sistema debería informar de la coincidencia de claves. \salidaReal El sistema muestra un mensaje de <<Error guardando programa - puede que haya otro con ese titulo>>. \end{prueba} *************** *** 193,197 **** \begin{prueba} \descripcion El alumno selecciona uno de sus programas y la opción borrar, cuando tiene 3 programas disponibles. ! \salidaEsperada Deberia de observar los 2 programas restantes. \salidaReal Efectivamente se muestra solo los 2 programas restantes. Y comprobando la base de datos del sistema, verificamos que le programa se ha eliminado. \end{prueba} --- 193,197 ---- \begin{prueba} \descripcion El alumno selecciona uno de sus programas y la opción borrar, cuando tiene 3 programas disponibles. ! \salidaEsperada Debería de observar los 2 programas restantes. \salidaReal Efectivamente se muestra solo los 2 programas restantes. Y comprobando la base de datos del sistema, verificamos que le programa se ha eliminado. \end{prueba} *************** *** 199,204 **** \begin{prueba} \descripcion El alumno borra el último de sus programas. ! \salidaEsperada Su biblioteca deberia de mostrarse vacia. ! \salidaReal La biblioteca se muestra vacia. \end{prueba} --- 199,204 ---- \begin{prueba} \descripcion El alumno borra el último de sus programas. ! \salidaEsperada Su biblioteca debería de mostrarse vacía. ! \salidaReal La biblioteca se muestra vacía. \end{prueba} *************** *** 207,212 **** \begin{prueba} ! \descripcion Despues de hacer login como administrador, borramos un programa de la biblioteca, propiedad de otro usuario. ! \salidaEsperada Deberiamos visualizar la biblioteca sin el programa borrado, y el programa debe estar efectivamente eliminado. \salidaReal Comprobamos en la base de datos que el programa no está, y no se muestra en la página de biblioteca. \end{prueba} --- 207,212 ---- \begin{prueba} ! \descripcion Después de hacer login como administrador, borramos un programa de la biblioteca, propiedad de otro usuario. ! \salidaEsperada Deberíamos visualizar la biblioteca sin el programa borrado, y el programa debe estar efectivamente eliminado. \salidaReal Comprobamos en la base de datos que el programa no está, y no se muestra en la página de biblioteca. \end{prueba} *************** *** 218,222 **** \descripcion Introducimos utilizando un usuario un programa en la biblioteca. Usando un segundo usuario, introducimos otro programa en la biblioteca. Comprobamos que el segundo usuario cuando accede a sus propios programas solo puede ver el suyo. ! \salidaEsperada Aunque en la biblioteca haya dos programas, el usuario deberia acceder a su propia biblioteca y ver solo el suyo. \salidaReal Efectivamente se produce el efecto deseado. \end{prueba} --- 218,222 ---- \descripcion Introducimos utilizando un usuario un programa en la biblioteca. Usando un segundo usuario, introducimos otro programa en la biblioteca. Comprobamos que el segundo usuario cuando accede a sus propios programas solo puede ver el suyo. ! \salidaEsperada Aunque en la biblioteca haya dos programas, el usuario debería acceder a su propia biblioteca y ver solo el suyo. \salidaReal Efectivamente se produce el efecto deseado. \end{prueba} *************** *** 227,231 **** \begin{prueba} \descripcion El alumno debe observar todos los programas que hay disponibles en la biblioteca. ! \salidaEsperada Comprobamos en la base de datos los programas disponibles, hacemos login con un usuario con permisos de alumno y al acceder a la biblioteca deberia poder verlos todos. \salidaReal Se muestran todos los programas disponibles en la base de datos. \end{prueba} --- 227,231 ---- \begin{prueba} \descripcion El alumno debe observar todos los programas que hay disponibles en la biblioteca. ! \salidaEsperada Comprobamos en la base de datos los programas disponibles, hacemos login con un usuario con permisos de alumno y al acceder a la biblioteca debería poder verlos todos. \salidaReal Se muestran todos los programas disponibles en la base de datos. \end{prueba} *************** *** 239,243 **** \begin{prueba} \descripcion Alumno hace login con un usuario y clave correctos. ! \salidaEsperada El sistema deberia dejarnos acceder a la página de carga de programas. \salidaReal Se produce el efecto deseado. \end{prueba} --- 239,243 ---- \begin{prueba} \descripcion Alumno hace login con un usuario y clave correctos. ! \salidaEsperada El sistema debería dejarnos acceder a la página de carga de programas. \salidaReal Se produce el efecto deseado. \end{prueba} *************** *** 245,249 **** \begin{prueba} \descripcion Usuario intenta entrar en el sistema sin introducir una clave. ! \salidaEsperada El sistema deberia mostrar un mensaje de error y permitir realizar el login correctamente. \salidaReal Se muestra la página de login con un mensaje <<debe teclear su password>>. \end{prueba} --- 245,249 ---- \begin{prueba} \descripcion Usuario intenta entrar en el sistema sin introducir una clave. ! \salidaEsperada El sistema debería mostrar un mensaje de error y permitir realizar el login correctamente. \salidaReal Se muestra la página de login con un mensaje <<debe teclear su password>>. \end{prueba} *************** *** 257,261 **** \begin{prueba} \descripcion Usuario con permisos de administrador introduce su nombre y clave. ! \salidaEsperada El sistema deberia mostrar la página de administrador. \salidaReal El sistema se dirige a la página apropiada. \end{prueba} --- 257,261 ---- \begin{prueba} \descripcion Usuario con permisos de administrador introduce su nombre y clave. ! \salidaEsperada El sistema debería mostrar la página de administrador. \salidaReal El sistema se dirige a la página apropiada. \end{prueba} *************** *** 275,285 **** \begin{prueba} \descripcion Un nuevo visitante decide registrarse e introduce sus datos correctamente en la página. ! \salidaEsperada El sistema deberia hacer login al mismo tiempo que registrar al usuario y almacenarlo en la base de datos. ! \salidaReal El usuario aparece logeado en el sistema y si comprobamos la base de datos confirmamos que sus datos han sido guardados. \end{prueba} \begin{prueba} \descripcion Un nuevo visitante decide registrarse pero introduce nombre de usuario ya registrado. ! \salidaEsperada El sistema deberia mostrar un mensaje de error apropiado y darle oportunidad de registrarse con otro nombre. \salidaReal El sistema vuelve a la página de registro mostrando un error <<El nombre de usuario ya esta ocupado>>. \end{prueba} --- 275,285 ---- \begin{prueba} \descripcion Un nuevo visitante decide registrarse e introduce sus datos correctamente en la página. ! \salidaEsperada El sistema debería hacer login al mismo tiempo que registrar al usuario y almacenarlo en la base de datos. ! \salidaReal El usuario aparece conectado en el sistema y si comprobamos la base de datos confirmamos que sus datos han sido guardados. \end{prueba} \begin{prueba} \descripcion Un nuevo visitante decide registrarse pero introduce nombre de usuario ya registrado. ! \salidaEsperada El sistema debería mostrar un mensaje de error apropiado y darle oportunidad de registrarse con otro nombre. \salidaReal El sistema vuelve a la página de registro mostrando un error <<El nombre de usuario ya esta ocupado>>. \end{prueba} *************** *** 287,291 **** \begin{prueba} \descripcion Un nuevo visitante decide registrarse pero introduce la clave y la confirmación de la clave distintas. ! \salidaEsperada El sistema deberia mostrar un mensaje de error apropiado y darle la oportunidad de registrarse correctamente. La base de datos no deberia almacenar ningun cambio. \salidaReal El sistema vuelve a la página de registro mostrando el mensaje de <<no coinciden el password y la confirmación>>, y la base de datos no se modifica. \end{prueba} --- 287,291 ---- \begin{prueba} \descripcion Un nuevo visitante decide registrarse pero introduce la clave y la confirmación de la clave distintas. ! \salidaEsperada El sistema debería mostrar un mensaje de error apropiado y darle la oportunidad de registrarse correctamente. La base de datos no debería almacenar ningún cambio. \salidaReal El sistema vuelve a la página de registro mostrando el mensaje de <<no coinciden el password y la confirmación>>, y la base de datos no se modifica. \end{prueba} *************** *** 296,300 **** \begin{prueba} \descripcion El usuario que esta actualmente en el sistema decide cambiar su clave, e introduce correctamente la nueva clave y la confirmación. ! \salidaEsperada El usuario deberia volver a la página principal y su cambio de password quedar reflejado en la base de datos. \salidaReal El usuario aparece en la página principal y si comprobamos la base de datos podemos confirmar el cambio de clave. \end{prueba} --- 296,300 ---- \begin{prueba} \descripcion El usuario que esta actualmente en el sistema decide cambiar su clave, e introduce correctamente la nueva clave y la confirmación. ! \salidaEsperada El usuario debería volver a la página principal y su cambio de password quedar reflejado en la base de datos. \salidaReal El usuario aparece en la página principal y si comprobamos la base de datos podemos confirmar el cambio de clave. \end{prueba} *************** *** 309,319 **** \begin{prueba} \descripcion Usuario con permisos de administrador, rellena correctamente los datos para crear un administrador. ! \salidaEsperada El sistema deberia dar de alta al nuevo administrador con los permisos adecuados en el sistema, y darle la oportunidad de hacer login. \salidaReal El sistema muestra la pantalla de login. En la base de datos comprobamos que el nuevo usuario ha sido creado y con los permisos apropiados. \end{prueba} \begin{prueba} ! \descripcion Usuario con permisos de adminsitrador intenta registrar un administrador con un nombre de usuario ya ocupado. ! \salidaEsperada Volviendo a mostrar el formulario, deberia indicarse el error. \salidaReal Se muestra en la pantalla del formulario el error <<El nombre de usuario esta ocupado>> \end{prueba} --- 309,319 ---- \begin{prueba} \descripcion Usuario con permisos de administrador, rellena correctamente los datos para crear un administrador. ! \salidaEsperada El sistema debería dar de alta al nuevo administrador con los permisos adecuados en el sistema, y darle la oportunidad de hacer login. \salidaReal El sistema muestra la pantalla de login. En la base de datos comprobamos que el nuevo usuario ha sido creado y con los permisos apropiados. \end{prueba} \begin{prueba} ! \descripcion Usuario con permisos de administrador intenta registrar un administrador con un nombre de usuario ya ocupado. ! \salidaEsperada Volviendo a mostrar el formulario, debería indicarse el error. \salidaReal Se muestra en la pantalla del formulario el error <<El nombre de usuario esta ocupado>> \end{prueba} *************** *** 321,325 **** \begin{prueba} \descripcion Usuario con permisos de administrador intenta registrar otro administrador y la clave y confirmación no coinciden. ! \salidaEsperada Deberia mostrarse el error apropiado y dar oportunidad de corregir el dato erroneo. \salidaReal Se muestra el error <<No coincide el password y la confirmación>>. \end{prueba} --- 321,325 ---- \begin{prueba} \descripcion Usuario con permisos de administrador intenta registrar otro administrador y la clave y confirmación no coinciden. ! \salidaEsperada Debería mostrarse el error apropiado y dar oportunidad de corregir el dato erróneo. \salidaReal Se muestra el error <<No coincide el password y la confirmación>>. \end{prueba} *************** *** 329,334 **** \begin{prueba} ! \descripcion Usuario con permisos de administrador escoge un usuario y seleccion la operación <<borrar>>. ! \salidaEsperada El usuario seleccionado no deberia aparecer en la nueva lista de usuarios, ni en la base de datos. \salidaReal Efectivamente el usuario desaparece en ambos lugares. \end{prueba} --- 329,334 ---- \begin{prueba} ! \descripcion Usuario con permisos de administrador escoge un usuario y selección la operación <<borrar>>. ! \salidaEsperada El usuario seleccionado no debería aparecer en la nueva lista de usuarios, ni en la base de datos. \salidaReal Efectivamente el usuario desaparece en ambos lugares. \end{prueba} Index: pruebas.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/pruebas/pruebas.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** pruebas.tex 3 Sep 2003 19:14:09 -0000 1.1 --- pruebas.tex 4 Sep 2003 20:31:03 -0000 1.2 *************** *** 1,5 **** % % ! % Coordinación de la seccion de pruebas %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --- 1,5 ---- % % ! % Coordinación de la sección de pruebas %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
From: <iva...@us...> - 2003-09-04 20:31:10
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion In directory sc8-pr-cvs1:/tmp/cvs-serv26004/pfc-es/introduccion Modified Files: motivacion.tex objetivos.tex softexistente.tex solo_intro.tex Log Message: Pasada revision ortografica Index: motivacion.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/motivacion.tex,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** motivacion.tex 3 Sep 2003 16:26:35 -0000 1.4 --- motivacion.tex 4 Sep 2003 20:31:02 -0000 1.5 *************** *** 6,17 **** \section{Motivación} ! El proyecto \texttt{Prolix} nace bajo el amparo del proyecto Idefix, con el objetivo de proveer una herramienta de enseñanza a traves de la Web. Entre los objetivos de Idefix esta el facilitar la enseñanza a traves de internet. El auge de este medio que ya es de uso cotidiano, pone al alcanze del profesor y alumno una serie de herramientas de comunicación y consulta que sin duda pueden aprovecharse para replantear el concepto de enseñanza a distancia tradicional. Sin embargo las herramientas educativas no estan a la altura de la anteriores, teniendo que recurrir al material tradicional para realizar la labor de las asignaturas, reduciendose así el importante papel que Internet puede jugar en un canal de comunicación para el correo y la web, que si bien es un gran avance, no aprovecha ni un mínimo porcentaje de su potencial. \newline ! El siguiente paso en la evolución de la enseñanza a distancia en este nuevo medio deberia ser el desarrollo de esas herramientas educativas, con el objetivo ideal de que el trabajo integro de la asignatura pudiese realizarse por la Web. La interactividad entonces seria total, y próxima a la de una asignatura presencial, pero con todas las ventajas de movilidad y disponibilidad que provee la informática. \newline ! \texttt{Prolix} es una de estas herramientas: un intérprete de Prolog que funciona a traves de la Web. Enmarcandolo en el contexto anterior, los alumnos de la asignatura de Lógica o Programación Funcional, por usar un ejemplo de la facultad en la que se desarrolla este proyecto, pueden realizar sus prácticas online, en cualquier ordenador, sin requerir software adicional, mejorando así la facilidad de uso respecto a un intérprete tradicional. Pero no es esta la única ventaja que vamos a obtener de un intérprete online, pues a su alrededor pueden crearse una serie de servicios extra como una biblioteca de programas, en la que los usuarios (alumnos) pudiesen compartir programas, observando el código de ejemplos que el profesor pueda incluir o de aportaciones de otros alumnos. Desde el punto de vista de quien empieza a trabajar con Prolog (y podemos hacerlo extensible a cualquier lenguaje de programación), la observación de otro código es una ayuda considerable para su aprendizaje. Es sugerencia común entre programadores el leer código como forma de adquirir habilidad en el arte de la programación. Para el profesor, este sistema le aporta una imagen más próxima a la realidad de la evolución de sus alumnos: de un trabajo semanal (como suele ser habitual) se pasa a valorar el trabajo dia a dia, pudiendo plantear un ejercicio y resolverse en el tiempo que el alumno decida dedicarle (podria ser instantaneamente en un caso ideal). La aportación de los usuarios a la biblioteca también permite conocer el nivel de conocimiento y la evolución de los mismos. \newline ! Para el alumno, con caracter individual, se pretende facilitar su introduccion en el mundo de la programación lógica, y el manejo de Prolog. Una de las funcionalidades mas importantes de este proyecto es la resolución gráfica del programa en Prolog. Resultara de gran ayuda para la compresión del proceso de resolución el poder observarlo generado por el interprete, en lugar del dibujo a mano, propenso a errores y mucho mas confuso cuando el programa crece. --- 6,17 ---- \section{Motivación} ! El proyecto \texttt{Prolix} nace bajo el amparo del proyecto Idefix, con el objetivo de proveer una herramienta de enseñanza a través de la Web. Entre los objetivos de Idefix esta el facilitar la enseñanza a través de Internet. El auge de este medio que ya es de uso cotidiano, pone al alcance del profesor y alumno una serie de herramientas de comunicación y consulta que sin duda pueden aprovecharse para replantear el concepto de enseñanza a distancia tradicional. Sin embargo las herramientas educativas no están a la altura de la anteriores, teniendo que recurrir al material tradicional para realizar la labor de las asignaturas, reduciéndose así el importante papel que Internet puede jugar en un canal de comunicación para el correo y la web, que si bien es un gran avance, no aprovecha ni un mínimo porcentaje de su potencial. \newline ! El siguiente paso en la evolución de la enseñanza a distancia en este nuevo medio debería ser el desarrollo de esas herramientas educativas, con el objetivo ideal de que el trabajo integro de la asignatura pudiese realizarse por la Web. La interactividad entonces seria total, y próxima a la de una asignatura presencial, pero con todas las ventajas de movilidad y disponibilidad que provee la informática. \newline ! \texttt{Prolix} es una de estas herramientas: un intérprete de Prolog que funciona a través de la Web. Enmarcándolo en el contexto anterior, los alumnos de la asignatura de Lógica o Programación Funcional, por usar un ejemplo de la facultad en la que se desarrolla este proyecto, pueden realizar sus prácticas online, en cualquier ordenador, sin requerir software adicional, mejorando así la facilidad de uso respecto a un intérprete tradicional. Pero no es esta la única ventaja que vamos a obtener de un intérprete online, pues a su alrededor pueden crearse una serie de servicios extra como una biblioteca de programas, en la que los usuarios (alumnos) pudiesen compartir programas, observando el código de ejemplos que el profesor pueda incluir o de aportaciones de otros alumnos. Desde el punto de vista de quien empieza a trabajar con Prolog (y podemos hacerlo extensible a cualquier lenguaje de programación), la observación de otro código es una ayuda considerable para su aprendizaje. Es sugerencia común entre programadores el leer código como forma de adquirir habilidad en el arte de la programación. Para el profesor, este sistema le aporta una imagen más próxima a la realidad de la evolución de sus alumnos: de un trabajo semanal (como suele ser habitual) se pasa a valorar el trabajo día a día, pudiendo plantear un ejercicio y resolverse en el tiempo que el alumno decida dedicarle (podría ser instantáneamente en un caso ideal). La aportación de los usuarios a la biblioteca también permite conocer el nivel de conocimiento y la evolución de los mismos. \newline ! Para el alumno, con carácter individual, se pretende facilitar su introducción en el mundo de la programación lógica, y el manejo de Prolog. Una de las funcionalidades mas importantes de este proyecto es la resolución gráfica del programa en Prolog. Resultara de gran ayuda para la compresión del proceso de resolución el poder observarlo generado por el interprete, en lugar del dibujo a mano, propenso a errores y mucho mas confuso cuando el programa crece. Index: objetivos.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/objetivos.tex,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** objetivos.tex 3 Sep 2003 16:26:35 -0000 1.5 --- objetivos.tex 4 Sep 2003 20:31:02 -0000 1.6 *************** *** 1,4 **** % ! % Introduccion::objetivos % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --- 1,4 ---- % ! % Introducción::objetivos % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% *************** *** 6,18 **** \section{Objetivos} ! El desarrollo de este proyecto se marca como objetivo el obtener una herramienta informática que pueda utilizarse en un entorno educativo real para facilitar el aprendizaje de Prolog a traves de la Web. ! Hablando del aspecto mas concreto del proyecto, se trata de desarrollar la interfaz Web que permita interactuar con un intérprete de Prolog existente de un Proyecto Fin de Carrera anterior. Deberia presentar el arbol de resolución del programa según avanza su ejecución, disponer de un sistema de usuarios, y una biblioteca de ejemplos donde los alumnos y profesores puedan poner sus programas a disposición de los demás. ! El proyecto, consecuente con sus intenciones educativas, se liberará como software libre. Aunque inicialmente, por ser Proyecto Fin de Carrera y por tanto trabajo individual, no resulta demasiado util esta característica, en el momento en que el programa quede liberado, cualquier programador puede modificarlo, mejorarlo y redistribuirlo. Esto permitira que con el paso del tiempo \texttt{Prolix} se actualice por programadores que lo hayan utilizado, o lo esten utilizando y por lo tanto perciban sus carencias, evitando que el proyecto se quede obsoleto en un plazo relativamente breve de tiempo (hecho común en la informática). ! El objetivo de mantener vivo el proyecto, con la colaboración de los usuarios, conduce a la idea de lograr el mayor numero de usuarios posibles. Y una de las mayores trabas en la difusión de un trabajo suele ser el idioma. Por eso otro de los objetivos propuestos es lograr un sistema internacionalizable. El código fuente y la documentación de la página web estan en ingles, y todos los mensajes mostrados al usuario recogidos de tal manera que la internacionalización de la aplicación es rápida, sencilla, y asequible incluso para usuarios no programadores. ! No resultaria utópico pensar, que estando el proyecto disponible en la web, licenciado como software libre, personas vinculadas a la programación lógica tradujesen el programa a otros idiomas como aportación altruista al mismo. Este ejemplo puede extenderse así al propio código fuente del programa, que a pesar de todo el cuidado puesto en su escritura y todas las pruebas realizadas, no podemos garantizar al 100% ni que este libre de bugs (errores) ni que sea el mejor código posible. Otra de las trabas mas habituales para las aplicaciones es la diferencia de plataformas y sistemas operativos. Manteniendo la idea anterior de llegar al mayor numero de usuarios posibles, sea cual sea su entorno de trabajo, se hace necesario desarrollar el proyecto en un entorno multiplataforma, y si fuese posible utilizando estándares abiertos. Ambos objetivos se alcanzan con el uso del entorno Java, y de estándares del consorcio w3c como SVG y XML. --- 6,18 ---- \section{Objetivos} ! El desarrollo de este proyecto se marca como objetivo el obtener una herramienta informática que pueda utilizarse en un entorno educativo real para facilitar el aprendizaje de Prolog a través de la Web. ! Hablando del aspecto mas concreto del proyecto, se trata de desarrollar la interfaz Web que permita interactuar con un intérprete de Prolog existente de un Proyecto Fin de Carrera anterior. Debería presentar el árbol de resolución del programa según avanza su ejecución, disponer de un sistema de usuarios, y una biblioteca de ejemplos donde los alumnos y profesores puedan poner sus programas a disposición de los demás. ! El proyecto, consecuente con sus intenciones educativas, se liberará como software libre. Aunque inicialmente, por ser Proyecto Fin de Carrera y por tanto trabajo individual, no resulta demasiado útil esta característica, en el momento en que el programa quede liberado, cualquier programador puede modificarlo, mejorarlo y redistribuirlo. Esto permitirá que con el paso del tiempo \texttt{Prolix} se actualice por programadores que lo hayan utilizado, o lo estén utilizando y por lo tanto perciban sus carencias, evitando que el proyecto se quede obsoleto en un plazo relativamente breve de tiempo (hecho común en la informática). ! El objetivo de mantener vivo el proyecto, con la colaboración de los usuarios, conduce a la idea de lograr el mayor numero de usuarios posibles. Y una de las mayores trabas en la difusión de un trabajo suele ser el idioma. Por eso otro de los objetivos propuestos es lograr un sistema internacionalizable. El código fuente y la documentación de la página web están en ingles, y todos los mensajes mostrados al usuario recogidos de tal manera que la internacionalización de la aplicación es rápida, sencilla, y asequible incluso para usuarios no programadores. ! No resultaría utópico pensar, que estando el proyecto disponible en la web, licenciado como software libre, personas vinculadas a la programación lógica tradujesen el programa a otros idiomas como aportación altruista al mismo. Este ejemplo puede extenderse así al propio código fuente del programa, que a pesar de todo el cuidado puesto en su escritura y todas las pruebas realizadas, no podemos garantizar al 100% ni que este libre de bugs (errores) ni que sea el mejor código posible. Otra de las trabas mas habituales para las aplicaciones es la diferencia de plataformas y sistemas operativos. Manteniendo la idea anterior de llegar al mayor numero de usuarios posibles, sea cual sea su entorno de trabajo, se hace necesario desarrollar el proyecto en un entorno multiplataforma, y si fuese posible utilizando estándares abiertos. Ambos objetivos se alcanzan con el uso del entorno Java, y de estándares del consorcio w3c como SVG y XML. Index: softexistente.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/softexistente.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** softexistente.tex 18 Aug 2003 18:44:55 -0000 1.2 --- softexistente.tex 4 Sep 2003 20:31:02 -0000 1.3 *************** *** 1,4 **** % ! % Introduccion::software existente % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --- 1,4 ---- % ! % Introducción::software existente % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Index: solo_intro.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/solo_intro.tex,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** solo_intro.tex 19 Aug 2003 01:16:34 -0000 1.3 --- solo_intro.tex 4 Sep 2003 20:31:02 -0000 1.4 *************** *** 8,12 **** \begin{document} ! \chapter{Introduccion} \input{motivacion.tex} \input{objetivos.tex} --- 8,12 ---- \begin{document} ! \chapter{Introducción} \input{motivacion.tex} \input{objetivos.tex} |
From: <iva...@us...> - 2003-09-04 20:31:06
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/analisis In directory sc8-pr-cvs1:/tmp/cvs-serv26004/pfc-es/analisis Modified Files: analisis.tex casos_de_uso.tex escenarios.tex Log Message: Pasada revision ortografica Index: analisis.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/analisis/analisis.tex,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** analisis.tex 20 Aug 2003 18:09:37 -0000 1.3 --- analisis.tex 4 Sep 2003 20:31:01 -0000 1.4 *************** *** 1,4 **** % ! % Coordinacion de la parte de analisis de la documentación % % --- 1,4 ---- % ! % Coordinación de la parte de análisis de la documentación % % Index: casos_de_uso.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/analisis/casos_de_uso.tex,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** casos_de_uso.tex 31 Aug 2003 17:20:21 -0000 1.5 --- casos_de_uso.tex 4 Sep 2003 20:31:01 -0000 1.6 *************** *** 1,4 **** % ! % analisis::Casos de uso % %%%%%%%%%%%%%%%%%%%%%%%%%% --- 1,4 ---- % ! % análisis::Casos de uso % %%%%%%%%%%%%%%%%%%%%%%%%%% *************** *** 9,13 **** %Caso de uso: ! \casouso{Cargar programa} Introduccion del programa Prolog en el sistema \begin{casosusoEscenarios} --- 9,13 ---- %Caso de uso: ! \casouso{Cargar programa} Introducción del programa Prolog en el sistema \begin{casosusoEscenarios} *************** *** 24,28 **** \casosusoEscenario{Alumno avanza un paso la ejecución} \casosusoEscenario{Alumno visualiza soluciones} ! \casosusoEscenario{Alumno visualiza arbol de representación de las soluciones} \end{casosusoEscenarios} --- 24,28 ---- \casosusoEscenario{Alumno avanza un paso la ejecución} \casosusoEscenario{Alumno visualiza soluciones} ! \casosusoEscenario{Alumno visualiza árbol de representación de las soluciones} \end{casosusoEscenarios} *************** *** 63,73 **** El actor \emph{alumno} es un usuario con conocimientos de programación lógica, generalmente estudiante de la asignatura <<Lógica>>, que ! pretende utilizar el sistema \texttt{Prolix} a traves de su navegador preferido, para evaluar sus programas en Prolog y obtener una representación ! gráfica del proceso de resolución. Representa también la figura del profesor actuando como un usuario convencional para introducir sus programas en la libreria. \subsection{Administrador} ! El actor \emph{administrador} representa a un usuario con responsabilidad de administrar el sistema, pues tendra acceso a la supresión de usuarios y programas sin restricciónes. Generalmente será un rol interpretado por el profesor de la asignatura. \begin{figure}[hp] --- 63,73 ---- El actor \emph{alumno} es un usuario con conocimientos de programación lógica, generalmente estudiante de la asignatura <<Lógica>>, que ! pretende utilizar el sistema \texttt{Prolix} a través de su navegador preferido, para evaluar sus programas en Prolog y obtener una representación ! gráfica del proceso de resolución. Representa también la figura del profesor actuando como un usuario convencional para introducir sus programas en la librería. \subsection{Administrador} ! El actor \emph{administrador} representa a un usuario con responsabilidad de administrar el sistema, pues tendrá acceso a la supresión de usuarios y programas sin restricciones. Generalmente será un rol interpretado por el profesor de la asignatura. \begin{figure}[hp] Index: escenarios.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/analisis/escenarios.tex,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** escenarios.tex 3 Sep 2003 16:30:01 -0000 1.7 --- escenarios.tex 4 Sep 2003 20:31:01 -0000 1.8 *************** *** 18,22 **** \textbf{Precondiciones:} \begin{itemize} ! \item Alumno logeado. \end{itemize} --- 18,22 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Alumno conectado. \end{itemize} *************** *** 70,74 **** \textbf{Precondiciones:} \begin{itemize} ! \item Alumno logeado. \end{itemize} --- 70,74 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Alumno conectado. \end{itemize} *************** *** 178,182 **** \begin{enumerate} \item Alumno solicita un nuevo resultado con la opción <<Siguiente solución>>. ! \item El sistema evalua la consulta hasta llegar a solución, o a la conclusión de no haber mas soluciones. \item El sistema muestra a la solución o mensaje de no haber más soluciones. \end{enumerate} --- 178,182 ---- \begin{enumerate} \item Alumno solicita un nuevo resultado con la opción <<Siguiente solución>>. ! \item El sistema evalúa la consulta hasta llegar a solución, o a la conclusión de no haber mas soluciones. \item El sistema muestra a la solución o mensaje de no haber más soluciones. \end{enumerate} *************** *** 217,221 **** \textbf{Precondiciones:} \begin{itemize} ! \item Alumno logeado. \item Programa cargado. \item Consulta cargada. --- 217,221 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Alumno en sesión. \item Programa cargado. \item Consulta cargada. *************** *** 226,231 **** \begin{enumerate} \item Alumno solicita avanzar un paso en la ejecución. ! \item El sistema evalua la petición. ! \item El sistema muestra el arbol de resolución actualizado. \end{enumerate} --- 226,231 ---- \begin{enumerate} \item Alumno solicita avanzar un paso en la ejecución. ! \item El sistema evalúa la petición. ! \item El sistema muestra el árbol de resolución actualizado. \end{enumerate} *************** *** 266,270 **** \textbf{Precondiciones:} \begin{itemize} ! \item Alumno logeado. \item Programa cargado. \item Consulta cargada. --- 266,270 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Alumno conectado. \item Programa cargado. \item Consulta cargada. *************** *** 305,313 **** %% Escenario 2.5 ! \subsubsection{Alumno visualiza arbol de representación de soluciones} \textbf{Precondiciones:} \begin{itemize} ! \item Alumno logeado. \item Programa cargado. \item Consulta cargada. --- 305,313 ---- %% Escenario 2.5 ! \subsubsection{Alumno visualiza árbol de representación de soluciones} \textbf{Precondiciones:} \begin{itemize} ! \item Alumno en sesión. \item Programa cargado. \item Consulta cargada. *************** *** 317,321 **** \begin{enumerate} \item Alumno solicita representación gráfica de la resolución ! \item El sistema muestra el arbol del resolución en su estado actual \end{enumerate} --- 317,321 ---- \begin{enumerate} \item Alumno solicita representación gráfica de la resolución ! \item El sistema muestra el árbol del resolución en su estado actual \end{enumerate} *************** *** 341,345 **** \psset{labelsep=1.5mm} \ncline{->}{2,1}{2,2}\naput*{Solicitar representación gráfica} ! \ncline{<-}{3,1}{3,2}\naput*{Mostrar arbol} \end{psmatrix} \end{center} --- 341,345 ---- \psset{labelsep=1.5mm} \ncline{->}{2,1}{2,2}\naput*{Solicitar representación gráfica} ! \ncline{<-}{3,1}{3,2}\naput*{Mostrar árbol} \end{psmatrix} \end{center} *************** *** 351,360 **** %% Escenario 3.1 ! %% Precondiciones: Haber cargado un porgrama con exito \subsubsection{Alumno guarda programa en la biblioteca} \textbf{Precondiciones:} \begin{itemize} ! \item Alumno logeado. \item Programa cargado. \end{itemize} --- 351,360 ---- %% Escenario 3.1 ! %% Precondiciones: Haber cargado un programa con éxito \subsubsection{Alumno guarda programa en la biblioteca} \textbf{Precondiciones:} \begin{itemize} ! \item Alumno conectado. \item Programa cargado. \end{itemize} *************** *** 365,369 **** \item El sistema actualiza biblioteca. \end{enumerate} ! %Item deberia comprobar que no existe un programa con ese nombre!!! \textbf{Secuencias alternativas:} --- 365,369 ---- \item El sistema actualiza biblioteca. \end{enumerate} ! %Ítem debería comprobar que no existe un programa con ese nombre!!! \textbf{Secuencias alternativas:} *************** *** 406,410 **** \textbf{Precondiciones:} \begin{itemize} ! \item Alumno logeado. \end{itemize} --- 406,410 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Alumno en sesión. \end{itemize} *************** *** 440,444 **** \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solititud borrar programa} \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Comprobar permisos} \ncEVW[offsetA=0,offsetB=0]{->}{reflectc}{reflectd}\ncput*[npos=1.5]{Suprimir programa} --- 440,444 ---- \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solicitud borrar programa} \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Comprobar permisos} \ncEVW[offsetA=0,offsetB=0]{->}{reflectc}{reflectd}\ncput*[npos=1.5]{Suprimir programa} *************** *** 454,458 **** \textbf{Precondiciones:} \begin{itemize} ! \item Administrador logeado. \end{itemize} --- 454,458 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Administrador conectado. \end{itemize} *************** *** 486,490 **** \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solititud borrar programa} \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Suprimir programa} \ncline{<-}{5,1}{5,2}\naput*{Mostrar biblioteca actualizada} --- 486,490 ---- \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solicitud borrar programa} \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Suprimir programa} \ncline{<-}{5,1}{5,2}\naput*{Mostrar biblioteca actualizada} *************** *** 499,503 **** \textbf{Precondiciones:} \begin{itemize} ! \item Alumno logeado. \end{itemize} --- 499,503 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Alumno conectado. \end{itemize} *************** *** 531,536 **** \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solititud programas propios} ! \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Busqueda en biblioteca por usuario} \ncline{<-}{5,1}{5,2}\naput*{Mostrar resultados búsqueda} \end{psmatrix} --- 531,536 ---- \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solicitud programas propios} ! \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Búsqueda en biblioteca por usuario} \ncline{<-}{5,1}{5,2}\naput*{Mostrar resultados búsqueda} \end{psmatrix} *************** *** 544,548 **** \textbf{Precondiciones:} \begin{itemize} ! \item Alumno logeado. \end{itemize} --- 544,548 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Alumno autentificado. \end{itemize} *************** *** 551,555 **** \item Alumno solicita visualizar la biblioteca. \item El sistema obtiene todos los programas de la biblioteca. ! \item El sistema muesta el listado con los programas obtenidos. \end{enumerate} \begin{figure}[ht] --- 551,555 ---- \item Alumno solicita visualizar la biblioteca. \item El sistema obtiene todos los programas de la biblioteca. ! \item El sistema muestra el listado con los programas obtenidos. \end{enumerate} \begin{figure}[ht] *************** *** 575,580 **** \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solititud todos programas} ! \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Busqueda en biblioteca} \ncline{<-}{5,1}{5,2}\naput*{Mostrar resultados búsqueda} \end{psmatrix} --- 575,580 ---- \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solicitud todos programas} ! \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Búsqueda en biblioteca} \ncline{<-}{5,1}{5,2}\naput*{Mostrar resultados búsqueda} \end{psmatrix} *************** *** 623,627 **** \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Envio nombre y clave} \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Validación} \ncline{<-}{5,1}{5,2}\naput*{Pagina principal para el usuario} --- 623,627 ---- \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Envío nombre y clave} \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Validación} \ncline{<-}{5,1}{5,2}\naput*{Pagina principal para el usuario} *************** *** 637,641 **** \textbf{Precondiciones:} \begin{itemize} ! \item Usuario logeado. \end{itemize} --- 637,641 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Usuario conectado. \end{itemize} *************** *** 643,647 **** \begin{enumerate} \item Usuario solicita salir del sistema. ! \item El sistema cierra la session de usuario. \item El sistema muestra la página de login de nuevo usuario. \end{enumerate} --- 643,647 ---- \begin{enumerate} \item Usuario solicita salir del sistema. ! \item El sistema cierra la sesión de usuario. \item El sistema muestra la página de login de nuevo usuario. \end{enumerate} *************** *** 669,673 **** \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solititud salida} \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Cerrar sesión} \ncline{<-}{5,1}{5,2}\naput*{Página de entrada} --- 669,673 ---- \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solicitud salida} \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Cerrar sesión} \ncline{<-}{5,1}{5,2}\naput*{Página de entrada} *************** *** 683,687 **** \textbf{Secuencia principal:} \begin{enumerate} ! \item Usuario completa y envia un formulario con los datos requeridos. \item El sistema valida los datos, crea el usuario y hace login en el sistema. \end{enumerate} --- 683,687 ---- \textbf{Secuencia principal:} \begin{enumerate} ! \item Usuario completa y envía un formulario con los datos requeridos. \item El sistema valida los datos, crea el usuario y hace login en el sistema. \end{enumerate} *************** *** 733,737 **** \textbf{Precondiciones:} \begin{itemize} ! \item Alumno logeado. \end{itemize} --- 733,737 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Alumno en sesión. \end{itemize} *************** *** 770,774 **** \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solititud cambio clave} \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Validación} \ncline{<-}{5,1}{5,2}\naput*{Página inicial del usuario} --- 770,774 ---- \footnotesize\ttfamily% \psset{labelsep=1.5mm} ! \ncline{->}{2,1}{2,2}\naput*{Solicitud cambio clave} \ncEVW[offsetA=0,offsetB=0]{->}{reflecta}{reflectb}\ncput*[npos=1.5]{Validación} \ncline{<-}{5,1}{5,2}\naput*{Página inicial del usuario} *************** *** 785,789 **** \textbf{Precondiciones:} \begin{itemize} ! \item Administrador logeado. \end{itemize} --- 785,789 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Administrador conectado. \end{itemize} *************** *** 792,796 **** \item Administrador introduce los datos necesarios y solicita crear nuevo administrador. \item El sistema comprueba los permisos de Administrador, los datos introducidos, y da de alta al nuevo usuario con permisos de administrador. ! %% que pasa? vuelve a la pagina de login? de administrador? le logea? \end{enumerate} --- 792,796 ---- \item Administrador introduce los datos necesarios y solicita crear nuevo administrador. \item El sistema comprueba los permisos de Administrador, los datos introducidos, y da de alta al nuevo usuario con permisos de administrador. ! %% que pasa? vuelve a la pagina de login? de administrador? le conecta? \end{enumerate} *************** *** 841,845 **** \textbf{Precondiciones:} \begin{itemize} ! \item Administrador logeado. \end{itemize} --- 841,845 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Administrador autentificado. \end{itemize} *************** *** 889,893 **** \textbf{Precondiciones:} \begin{itemize} ! \item Administrador logeado. \end{itemize} --- 889,893 ---- \textbf{Precondiciones:} \begin{itemize} ! \item Administrador conectado. \end{itemize} |
From: <iva...@us...> - 2003-09-04 20:31:06
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/conclusiones In directory sc8-pr-cvs1:/tmp/cvs-serv26004/pfc-es/conclusiones Modified Files: conclusiones.tex Log Message: Pasada revision ortografica Index: conclusiones.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/conclusiones/conclusiones.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** conclusiones.tex 3 Sep 2003 19:11:59 -0000 1.1 --- conclusiones.tex 4 Sep 2003 20:31:02 -0000 1.2 *************** *** 1,3 **** \section{Conclusiones generales} \section{Conclusiones sobre las herramientas} ! \section{Conclusiones sobre la metodologia} \ No newline at end of file --- 1,4 ---- \section{Conclusiones generales} \section{Conclusiones sobre las herramientas} ! \section{Conclusiones sobre la metodologia} ! \section{Posibles mejoras} \ No newline at end of file |
From: <iva...@us...> - 2003-09-04 20:31:05
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es In directory sc8-pr-cvs1:/tmp/cvs-serv26004/pfc-es Modified Files: libro.tex test.tex Log Message: Pasada revision ortografica Index: libro.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/libro.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** libro.tex 3 Sep 2003 19:16:32 -0000 1.1 --- libro.tex 4 Sep 2003 20:31:01 -0000 1.2 *************** *** 1,4 **** % - % % Documento principal del tomo % --- 1,3 ---- *************** *** 22,25 **** --- 21,26 ---- \title{Prolix : Intérprete Prolog Online} + + \author{Iván Frade Ortea} \date{Septiembre 2003} *************** *** 78,90 **** \input{codigo/web.java.tex} \section{Páginas JSP} \clearpage \chapter{Ficheros auxiliares} \section{Buildfile \texttt{build.xml}} \section{Fichero de recursos (internacionalización)} \section{Información extra al XDoclet} \section{Hoja de transformación} \clearpage - \backmatter --- 79,98 ---- \input{codigo/web.java.tex} \section{Páginas JSP} + \input{codigo/jsp/jsp.tex} \clearpage \chapter{Ficheros auxiliares} \section{Buildfile \texttt{build.xml}} + \input{codigo/buildxml.tex} + \clearpage \section{Fichero de recursos (internacionalización)} + \input{codigo/resources.tex} + \clearpage \section{Información extra al XDoclet} + \input{codigo/xdoclet/xdoclet.tex} + \clearpage \section{Hoja de transformación} + \input{codigo/hoja-xsl.tex} \clearpage \backmatter Index: test.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/test.tex,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** test.tex 3 Sep 2003 19:16:32 -0000 1.9 --- test.tex 4 Sep 2003 20:31:01 -0000 1.10 *************** *** 1,5 **** % % ! % Documento para testear la compilacion de otros en latex % % --- 1,5 ---- % % ! % Documento para testear la compilación de otros en latex % % *************** *** 8,12 **** %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! \documentclass [a4paper,11pt] {book} \usepackage[spanish]{babel} \usepackage[latin1]{inputenc} --- 8,12 ---- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! \documentclass [a4paper,10pt] {book} \usepackage[spanish]{babel} \usepackage[latin1]{inputenc} *************** *** 52,81 **** %\clearpage ! \chapter{Conclusiones} ! \input{conclusiones/conclusiones.tex} ! \clearpage ! \chapter{Código Fuente (Servidor)} ! \section{Enterprise Java Beans y nucleo de la aplicación} ! \input{codigo/ejb.java.tex} ! \section{Interfaces y excepciones con el intérprete} ! \input{codigo/interpreter.java.tex} ! \section{Excepciones de la aplicación} ! \input{codigo/exceptions.java.tex} ! \clearpage ! \chapter{Código Fuente (Cliente)} ! \section{Clases para el cliente Web} ! \input{codigo/web.java.tex} \section{Páginas JSP} \clearpage \chapter{Ficheros auxiliares} \section{Buildfile \texttt{build.xml}} \section{Fichero de recursos (internacionalización)} \section{Información extra al XDoclet} \section{Hoja de transformación} \clearpage ! \input{bibliografia.tex} \end{document} --- 52,89 ---- %\clearpage ! %\chapter{Conclusiones} ! %\input{conclusiones/conclusiones.tex} ! %\clearpage ! %\chapter{Código Fuente (Servidor)} ! %\section{Enterprise Java Beans y núcleo de la aplicación} ! %\input{codigo/ejb.java.tex} ! %\section{Interfaces y excepciones con el intérprete} ! %\input{codigo/interpreter.java.tex} ! %\section{Excepciones de la aplicación} ! %\input{codigo/exceptions.java.tex} ! %\clearpage ! %\chapter{Código Fuente (Cliente)} ! %\section{Clases para el cliente Web} ! %\input{codigo/web.java.tex} \section{Páginas JSP} + \input{codigo/jsp/jsp.tex} \clearpage \chapter{Ficheros auxiliares} \section{Buildfile \texttt{build.xml}} + \input{codigo/buildxml.tex} + \clearpage \section{Fichero de recursos (internacionalización)} + \input{codigo/resources.tex} + \clearpage \section{Información extra al XDoclet} + \input{codigo/xdoclet/xdoclet.tex} + \clearpage \section{Hoja de transformación} + \input{codigo/hoja-xsl.tex} \clearpage ! %\input{bibliografia.tex} \end{document} |