Vision
The ultimate IDE/CASE tool should supports all steps in the software development process.
Current tools perform only minimal semantic-level analysis of code.
Vision What is needed is a tool based on
the code’s semantic structure that will: Allow semantic-level manipulation Enforce a design on an
implementation Support addition of free-form
information to the model. Our goal is to develop a framework
for implementing such a tool.
Problem Domain
Zen is a software repository and a code editor in a single program
Will work on a Developer’s PC, multi-platform
Will provide minimal code/text editing functionality.
Current Situation
The best analysis and design tools available today share the following deficiencies: Support a limited set of programming and
modeling languages. Not language neutral. Do not allow adding free-form information to
project/code. Support few rigid methodologies. Use templates for code generation.
Proposed Solution We propose to build Zen, an IDE which uses a
database to store the code in its semantic structure (graph).
Work with a semantic model, rather than text. Object Oriented database, because it offers a
native representation of graph-like structures. Zen will include a scripting engine, which
would dynamically load user-written scripts. Language-specific functionality and
visualization through a plugin system using the scripting engine.
Representation of semantic structure of code
System Architecture
Classic Model-View-Controller Plugins will extend Core and/or UI
components.
Bare bone Architecture
Plugins System Architecture
A DSL Plugin Architecture
Technologies Graphical Library: Eclipse Rich
Client Platform. Intuitive Open source Platform independent
Database: db4o Simple query mechanisms Performed well in comparison to other
DBs
Technologies Main implementation language:
Java Staff is well acquainted with Java there are many libraries written in
Java that are instrumental to our goals
Scriptability: JRuby JRuby is an implementation of Ruby in
Java Allows direct use of Java libraries
Functional Requirements Editing Code:
Rudimentary code editing functionality. Add/remove/view free-form links between code
elements. Impact View: the user will be able to see which
code elements are related to the one currently being edited and how.
Semantic-Level manipulation of code - perform actions on the data structure representing the code:
add/remove nodes to/from the code graph. add/remove links between nodes in the graph. Use stored scripts to alter the code graph.
Functional Requirements Generic infrastructure: Zen will provide
extension points for plug-ins, as shown earlier. Plug-ins can contribute scripts, language/model DB schemas or GUI elements.
Scriptability: Query the code's data structure. Apply simple refactorings to the code graph.
Non-Functional Requirements
Intuitive and familiar UI Perform 90% of basic actions in
time < 1 sec on 1 million lines of code
Major Use-Cases
Risks
Time constraints: The project is limited to just writing the framework discussed and a few small examples.
Immature platform (database): In comparison to other database engines (SQL based), db4o has been less rigorously tested.
Risks
Testability: Scriptability offers a lot of flexibility to the user. We expect Zen to be based on a thick layer of user-supplied scripts. Therefore, the range of tests to be made is large, so the script API will need to undergo meticulous testing.