A Class Librarian

Project Proposal by Martin Stacey


A Class Librarian

Software

Java or VB.net and XHTML, maybe XML, plus a database management system,
alternatively, some other object oriented language

Covers

Programming, systems design, databases, possibly web interface design

Skills Required

Programming, object oriented systems design, preferably some interest in HCI

Challenge

Conceptual ?? Technical ??? Programming ???

Brief Description

Modern object oriented programming languages provide programmers with an enormous amount of power through their class libraries. An enormous amount of what you might want to do has already been done for you; the downside of this is that you have to learn how to find it. One OO programmer described this as programming by rummaging in the bargain basement. You can learn all about the basic general purpose classes, but you can't expect to master the entire standard class libraries, let alone packages developed by third parties. And there's an enormous amount out there, for several well-established languages like C++, Java and Smalltalk. You could do with some help...

The aim of this project is to develop an interactive software system to guide programmers through the depths of the class libraries available for their chosen object oriented language. This could be either (1) a stand-alone application to be supplied with the development environment for the language, or (2) a part of a/the programming environment for the language, or (3) a stand-alone web application communicating with a server-side database, or (4) an interface within the programming environment, that uses the internet to communicate with a server-side database that can be updated after the release of the software itself, or in an ideal world (5), both interfaces (3) and (4) communicating with a single server-side application.

The project combines several design challenges: deciding what the system ought to say about objects and how they might be used, to make the system useful to programmers with varying backgrounds and levels of expertise; how to organise the descriptions of objects and how to provide a search facility that enables the users to start with their real problems and find what they need; and how to organise the descriptions of objects so that the class librarian system can be incrementally developed, to include more objects and handle revisions of information and new versions of the language, without any more work than necessary. Good interfaces for creating object descriptions and support for incremental development are essential for a system that could actually be used. The system should make it easy to create new entries by modifying old ones, organise entries in the catalogue into hierarchies and then amend those hierarchies, and include cross-references to different kinds of objects within the catalogue.

Among the crucial design decisions is how to handle who controls the content of the system - do you want to allow users to make modifications themselves, or just trusted users such as third party package vendors, or only after users' suggestions are checked by a moderator? In an ideal world, the system should support different approaches to security and maintaining information integrity. It should support password protection for edit functions; it should also enable submissions of proposed changes to be made to a moderator. Ideally the system should support rollback to a previous state, and some form of version control.

Extensions

How can you incorporate information about design patterns, and support the users when their needs are for information about combinations of classes?

How can you support merging different versions that have been extended differently from an earlier state, for instance by third-party software developers who want to include documentation about their own classes.


Back to