Welcome to the Home Page for SASSY

SASSY aims to bring the power of knowledge databases to the process of developing the high level design or architecture of a software system.

The project is currently in a feasibility study phase. Prototypes for some of the components are being created. These will then be used to build a proof-of-concept design for SASSY itself. If this proves successful the preliminary version will be used to create a full architecture for SASSY from which the detailed design and implementation will be created.

Logo

The web represents the semantic web or knowledge database. The book represents the documentation that is generated, which is why it is in front of the web.

Subprojects

The following subprojects are planned. Those with a SourceForge link have some code available.

  • CFI - Common Facilities Infrastructure and Common Development Infrastructure.

    These are two libraries, libcfi and libcdi, the first contains a collection of utilities for C++ programs on the Linux platform, while the second provides a test harness for C++ programs. Download CFI

  • rdfxx

    This library provides a C++ wrapper for the Redland librdf to provide a more concise interface for RDF programs. Download rdfxx

  • formgen

    This is a program that uses an RDF schema to create the XML that Qt uses to create forms.

  • rdfgui

    This GUI program will initially provide a means for visually inspecting an RDF database. It will then be extended to use the output of formgen to create data entry forms so that it will be easier to enter data into an RDF database. Download rdfgui

  • gth - GUI Test Harness

    This is a library and supporting program for creating tests of GUI programs by simulating user actions.

  • classifier

    A common task when building a system is to document any existing system. This program will allow its user to build classification hierarchies of that data.

    A side project will create classifiers for documents, photos, videos and music. This is just because I want such things, and they will be nearly built anyway.

  • nlg

    This library provides a C++ implementation of the Java SimpleNLG natural language generator.

  • toil (Threaded Object Interpreted Language)

    This is a little language I developed a few years ago. Its like Forth, but with objects and multiple inheritance. It will be enhanced to include methods for assembling LaTex documents and accessing the RDF databases.Download toil

  • dom (Document Object Model)

    A library for managing the structure and content of a document. It will have a renderer for LaTeX, and later one for HTML.

  • scal (Simple C++ Actor Library)

    This library implements the Actor paradigm in C++. This will be useful if the design for SASSY includes a multi-threaded server. Download scal

  • zinc (Zero Impact Notification Channel)

    Provides a means for servers to report their status without being impacted by the clients. Download zinc

  • self

    A component which allows a server to monitor its own state and adjust its parameters to optimise its performance.

  • diagen

    This program will work with GraphViz to create diagrams.

  • planner

    (We are now getting into more speculative stuff) This program will use expert system principles to solve planning problems. It will work with RDF data.

  • Sentence-planner

    This will create the input to nlg for sentences. Initially it will just generate simple sentences describing relationships in the database.

  • Diagram-planner

    Like the sentence-planner, but for diagrams.

  • Table-planner

    Ditto for tabular data

  • Discourse-planner

    This will take a small RDF data store and plan out the best way of turning it into a document. (Surprisingly, this may be simpler than the sentence planner.)

  • Content-selector

    This program will take a small set of SPARQL queries and retrieve the data that links their results together. For example, with two queries that each find a single item in the database, this program will attempt to find the shortest path between them and return all the intermediate items.

  • doclang

    This is a declarative language for defining a document. It will generate code for toil.

  • sassy

    This will provide a user interface tying it all together.

  • web

    This will provide a web interface allowing collaborative work on designs

  • sagen

    If the planner works as well as hoped then it may be possible to extend SASSY to move beyond recording the architecture to actually assisting in creating it.