Software Project 2007

Imperative vs. Declarative

Connecting Java and Prolog

An Automated Trust Negotiation System intensively uses prolog reasoning. It is known that XSB prolog provides exactly the means for the needed reasoning. The group's task is to provide a framework which enables any software to easily plugin in XSB Prolog. That plug in facility should be general and should allow for any other Prolog Reasoners to be plugged in. It should offer utility functions such as datatype transformation from java into prolog (Lists, Strings, etc.). It should also offer a user interface helping prolog developers to write their prolog programs and letting them easily switch between several prolog engines performing the needed reasoning. This GUI should show the written program (syntax highlighting), offer means to specify queries (i.e., goals), and present the results of a query. It should also offer means to measure the time a computation takes.

Output: A java library which offers prolog reasoning and which is configurable in terms of the prolog engine used and contains an application supporting Prolog developers in specifying and testing prolog programs. A Web Service Implementation of an XSB Prolog Engine.


0TH STAGE: PREPARATION FOR THE PROJECT

1.1 Getting an idea of Prolog and playing around with it a bit
- download xsb prolog
- take the example program and pose some queries like 'betterDay(Friday,Sunday).'
- extend this program (instructions here) and pose some more queries
- download tuProlog (check the GUILauncher) and JLogProlog and SWI-Prolog and play with the example program
- learn about interprolog and how it relates to XSB

1.2 Assigning roles to the members of the group
- Projektmanager
- Architekt
- Qualitymanager Tests
- Requirement-Typ (Use-Cases, Szenarien)
- Qualitymanager Documentation

Output: Project preparation document
Fundamentals:
- a half-page description of each prolog you tested.
- strengths and weaknesses of each prolog.
- The well documented example code of the extended prolog program and the output of each program for some example queries.
- a 3 pages description of how interprolog, java, and xsb interoperate (including a figure/schema showing the components)
- collect a bibliography of what to read and where to find things about Prolog, InterProlog, nice tutorials, etc. (at least 20 links!)
Assignment of roles:
- half a page about the tasks of each role slightly related to the topic
- who of the group will do which role (including email address, short description of profile/knowledge/background, photos if you like, etc.)


1ST STAGE: PROJECT PROPOSAL AND MANAGEMENT PLAN

start with the Requirement Analysis:
- describe about 5 technical use cases how one may use prolog in java
- desribe about 10 more general use cases how one may use the prolog GUI
- describe some use cases for the xsb prolog web service

start with the prototypical implementation:
- implement the interface de.l3s.sp0708.PrologEngine
- extensively document the interface
- play around with the two available implementations of that interface

Main task in this stage:
- assign concrete tasks to the roles
- create milestones "what to finish when by whom", etc.
- build a project plan

Output: Project proposal (how will you solve the task) and Project management plan (Quality gates, Milestones, etc.)


2ND STAGE: ANALYSIS & SPECIFICATION

start with the over-all design:
- make clear which component interacts with whom
- get an idea of the interfaces: what should each component provide to whom?
- make several diagrams of your software

Main task in this stage:
- finish the requirement analysis

Output: Requirement Analysis Document comprising use cases, mockups (fake screenshots),
and a general desciption how things work in your software.
due: 27.11.2007


3RD STAGE: DESIGN & PROTOTYPE

Go on with the prototyping
- everything should be tested as soon as possible
- everything is documented
- every implementation decision is discussed with the group

Main task in this stage:
- finalize the design: everything (interfaces, buttons, components, etc.) is fixed and agreed upon.
(- each developer/tester closely follows this document!)

Output:
1. Design Specification comprising all diagrams, interfaces, buttons, etc.
2. A grahical prototype (mock-up, with some functionality), an XSB-web-service, lots of tests, a complete javadoc
due: 04.12.2007


4TH STAGE: DEVELOPMENT AND TEST DEFINITION

Put together successful prototypes:
- now you are building a real software according to your specification

Output:
1. your software; everything finished including all(!) the small features
2. whole documentation, each method documented! (javadoc)


5TH STAGE: TESTING


6TH STAGE: RELEASE AND DELIVERY