Title: Fabio Arciniegas A. Rubby Casallas G.
1Fabio Arciniegas A.Rubby Casallas G.
Samxa
- An XML Based Academic
- Test Manager
2Agenda
- The Problem
- The Solution
- Evolution of Samxa
- Contributions
- Future Works
3The Problem
- Maximize the portability of questions and tests
4Agenda
- The Problem
- The Solution
- Typical user steps
- Basic Architecture
- Kernel
- CGIHelper
5The Solution Typical Steps user
6The Solution Typical Steps user (2)
7The Solution BasicArchitecture
SamxaServer
SamxaCGIHelper
- Produces and storages
- questions and tests.
- This is the component
- capable of reading /
- writing objects to XML
- This component takes
- the responsibility of
- converting CGI answers
- to XML
8The Solution Server Architecture
GUI
- SamXa Server follows a layered architecture.
- The XMLPersisters, the components capable of
reading/writing objects from/to XML files are
embbeded, in the Kernel.
Kernel
XMLPersisters
Database
XML
9The Solution Kernel
- Two reasons inspire this organization
- Abundant, objects should not bear the
responsiblity of saving themselves as XML.
Consequences - Flyweight pattern GoF95 can be applied leading
to a much smaller memory consumption. - Coupling between the rest of the solution and the
XML processor is greatly diminished
- The need of a domain specific object hierarchy
imposes the need of an object model
representation of the XML other than DOM.
- The kernel is composed of several units that
replicate an Object-Object Server-Object
Persister architecture. - The generalization of this structure is what we
call the XMLable design pattern.
10The Solution Kernel (2)
- Samxas XML to DBMS is based on an intermediate
object representation for both. - This is similar to the XML to DBMS proposal for
java by David Megginson
- Samxas XMLPersisters (in classes
XMLQuestionPersister, XMLTestPersister) - Follow the Builder Pattern GoF95.
- Currently XMLPersisters use a modified version of
Andy Dents C Expat wrapper. - XML4C2 Dom implementation is used for Object to
XML document persistance
11The Solution Kernel (3)
- Transformations in Samxa are performed using
external tools. - A Transformation Manager class takes care of the
calls to these tools.
When a stylesheet is registered it can specify
its type (DSSSL or XSL) and a recomnended
external tool to use.
- Currently, Samxa users have a set of 10
stylesheets. - 7 of them are written in DSSSL (use James Clarks
Jade) - 2 more of them use XSLT
- 1 is a special template that inserts the XML in a
page that uses the XML/XSL capabilities of IE5.0
12The Solution CGIHelper
This helper follows a pipe-filter architecture in
order to convert CGI-POST based information
(the answers) into XML answer documents which
conform to an Answers DTD.
The CGI Helper is written in Perl. It uses
XMLDOM for the actual translation of the posted
data to XML. It also uses XMLXSLT in order to
produce the HTML statistic pages that students
look at.
13Agenda
- The Problem
- The Solution
- Evolution of Samxa
- XML Relevant changes over Time
- Comparisions
14Evolution XML Relevant changes
- Samxa, now in its version 2.0, has undergone
- several changes that compomise its relation with
- The XML libraries/tools that it uses.
- These changes took place mainly in two
components - XMLPersister classes in the kernel and
- the CGIHelper.
- We believe this experimentation... Better yet,
- wandering through parsers and tools is
representative - of what many developers are going thru.
15Evolution XMLPersister changes
Ad Hoc Home made perl script
Expat. Using intermediate structures in userData
XML4C2 SAXParser
XML4C2 DomParser
Enhanced Expatpp using Run-time linking of
xmlparse.dll
16Evolution XMLPersister changes
Pros
Ad Hoc Home made perl script
- Solution can be highly optimized for the problem
- at hand
Expat. Using intermediate structures in userData
XML4C2 SAXParser
Cons
XML4C2 DomParser
Enhanced Expatpp using Run-time linking of
xmlparse.dll
17Evolution XMLPersister changes
Pros
Ad Hoc Home made perl script
- Really Fast
- Easy to learn
- Clear, concise code
- Totally portable
Expat. Using intermediate structures in userData
XML4C2 SAXParser
Cons
XML4C2 DomParser
Enhanced Expatpp using Run-time linking of
xmlparse.dll
18Evolution XMLPersister changes
Pros
Ad Hoc Home made perl script
- Highly readable code
- Fast development
- Originally developed for C
Expat. Using intermediate structures in userData
XML4C2 SAXParser
Cons
XML4C2 DomParser
Enhanced Expatpp using Run-time linking of
xmlparse.dll
19Evolution XMLPersister changes
Pros
Ad Hoc Home made perl script
- Highly readable code
- Fast development
- Originally developed for C
Expat. Using intermediate structures in userData
XML4C2 SAXParser
Cons
XML4C2 DomParser
Enhanced Expatpp using Run-time linking of
xmlparse.dll
20Evolution XMLPersister changes
Pros (The best of both worlds)
Ad Hoc Home made perl script
- Highly readable code
- Fast development
- Presents only a C façade
Expat. Using intermediate structures in userData
XML4C2 SAXParser
XML4C2 DomParser
Enhanced Expatpp using Run-time linking of
xmlparse.dll
21Agenda
- The Problem
- The Solution
- Evolution of Samxa
- Contributions
- The Software development process and XML related
contributions
22Contributions
During the development of SamXa several other
tools were developed. XML Tools for various
stages of the development process are now
an integral part of our work.
23Contributions
The tools developed have been useful on
several stages of the development process.
24Contributions Samples
ltREQUIREMENT ID1.1 CRITICFALSEgt ltNAMEgtText
context Creationlt/NAMEgt... lt/REQUIREMENTgt
25Contributions Samples
- Multiple objects whose data is to be gathered
from XML documents need to be manipulated. - Design and program quality imposes the need to
represent the data as something more meaningful
in your domain than the DOM tree.
26Contributions Samples
... ltTEST IDt29gt ltPROGRAM NAME/usr/local/bin
/h.plgt ltINPUT VIAstdingtHellolt/INPUTgt ltEXPE
CTEDgtHi there!lt/EXPECTEDgt lt/PROGRAMgt ltVALUEgt5lt/V
ALUEgt lt/TESTgt ...
Munin
HTML with the results
27Future Works
Create tools for the automatic generation of
classes that follow the Samxa approach for the
event oriented construction of domain specific
objects
Create simple to use components in order to
popularize parsers among developers
Complete a full set of XML based tools
that support the whole development cycle e.g dtds
visual tools for the definition of
architectures.
28Conclusions
Samxa history shows a common struggle
between tools. We hope that others can make use
of our experience when facing similar problems
Samxa shows useful, reusable techniques for
the creation of domain specific objects from XML
Samxa is an example of how an XML based
solution, using XML based assistant tools can be
applied to real life problems.
29Questions
30Fabio Arciniegas A.Rubby Casallas G.
Samxa
- An XML Based Academic
- Test Manager
www.uniandes.edu.co/l-arcini/TheFAActoryl-arcini
_at_uniandes.edu.co