UIT2201: CS & the IT Revolution
Class Software Project (Fall 2003)
IDEA Systems Architecture (Sp2003)
This is the sample software architecture used for IDEA (Spring 2003).
Architecture:
The following architecture has been carefully designed (in Feb 2003) after consultation
with my graduate students, Francis Ng and Chong Ket Fah. This architecture
is designed so that each of the four main components (Controller, GUI,
DBMS, and Feature-Engine) can be independently developed after
each team have understood the idea behind the architecture.
IDEA IDEA
Page result
(submit) page
| ^
| |
cgi cgi
| |
===========|============|=======================================
| I D E A |
V |
+---------------------------------------------------+
| |
| +-----------------+ +----------------+ |
| | IDEAController |-------->| IDEAGUI | |
| | | | Component | |
| +-----------------+ +----------------+ |
+---------------------------------------------------+
| ^
. . . . .|. . . . . .|. . . . . . . . . . . . . . . . . . . . . . . . . .
V |
+-----------------------+ +----------------+
| | | |
| IDEAFeatureEngine |--------->| IDEADBMS |
| Component | | Component |
| |<---------| |
+-----------------------+ +----------------+
================================================================
Brief Explanation:
- Web pages served out by IDEA are called IDEA Page (which may be simple html or
html with forms and buttons and other stuffs).
- Whenever an IDEA page is activated,
the request is send to IDEA system for processing (via cgi).
The IDEA system should "process" the web request,
computing whatever it needs (using the IDEAFeatureEngine)
and returns a new IDEA Page that will display the "outcome"
(or "result") of the web request.
- The result IDEA Page may also contain Forms or Buttons or menu
for other action.
- In order to reduce the inter-dependence of the various subsystems,
there are four components:
- IDEAController: This component is the most important component.
It receives the web request, figures out what is needed, then
call the appropriate "function" in the IDEAFeatureEngine to compute
the result. It also receives the results computed, figures out
the answer code and calls the appropriate "function" in the
IDEAGUI component to generate correct result IDEA Page to be returned.
- IDEAGUI: This component is responsible for generating the
IDEA Pages (GUI) for the IDEA system. Note that the IDEA Pages for
any given web request may be different depending on the outcome of
the computation from the IDEAFeatureEngine.
- IDEAFeatureEngine: This component is responsible for
processing each of the web request. It may call the database
stored in IDEADBMS to get the information it needs to compute
the answer.
(Note: The "functions" in IDEAFeatureEngine can be
written in any language (C/C++, Java, perl, sh, csh)
provided that an
executable file is provided and the program reads in the
appropriate input parameter list and prints out the correct
output parameter list.)
- IDEADBMS: This component implements the underlying
database that stores all the requisite information that is
needed by the IDEA system. It also includes suitable interfaces
where necessary to facilitate online/offline updating of the
database.
- Communication APIs: (Being cleaned up....)
When calling the IDEAFeatureEngine function, it sends a
code that contains information on the parameters of the
web request, the function to be called, the sub-system
that it belong to, and so on.
The output will also contain a list that includes the above
AND the output generated.
Sample Codes:
A sample (mockup) has been written by
Francis Ng. I have provided some explanatory notes:
UIT2201: CS & IT Revolution; (Fall 2003); A/P Leong HW