Ideas GSoC'14

Project: Integrating Arena and Voodoo
Possible Mentors: Nicolás Passerini, Nicolás Scarcella

Description:
Arena is an educational MVB (i.e. binding-based MVC) framework which allows to build graphical applications in several JVM-based languages, such as Java, Scala, XTend and Groovy. 

Arena bindings allow to automatically keep models and views synchronized. To do so, the framework uses AOP to generate events whenever a domain object changes its state. Currently Arena aspects are constructed on top of Javassist, which is a nice but extremely low level tool. As the Arena project has been growing, Javassist has become a limitation to create more complex aspects.

Independently, we have development a tool called Voodoo which provides a nicer interface to manipulate JVM bytecodes. The objective of this project is to take advantage of Voodoo in order to improve Arena.

Student Level: Advanced
The student should have good knowledge of Java and Scala and basic concepts about bytecodes and AOP.

Contribution: 
Arena is used with educative purposes in three different universities in Argentina in order to teach the basic concepts of MVC and UI Construction. Improving the lower layers of Arena will allow to build several new features. We expect that these improvements will help that more students have a better experience while learning how to build a GUI.

Project: Improving Ozono Object-Diagrams
Possible Mentors: Nicolás Passerini

Description:
Ozono automatically creates object diagrams for the set of ozono-defined objects.

We would like to improve these diagrams by:
  • Better graphics
  • Automatic positioning of new nodes so that all nodes are visible.
  • Allowing to interact with the objects in the graph, i.e. send a message or change the objects internal state.
  • Allowing to programatically generate a diagram from a test case.

Student Level: Intermediate
The student should have knowledge of the Smalltalk language and good experience with object-oriented programming.

Contribution: 
Ozono is used to teach object-oriented programming to hundreds of students every year. Object diagrams are a great tool to help students understand both the behaviour of their programs and some subleties of the semantics of the object-oriented paradigm. Interactive diagrams will allow the students to improve their knowledge of object-oriented programming.

Project: Redesign of the Ozono User Interface

Possible Mentors: Carla Griggio, Gisela Decuzzi 

Description:
The current user interface of Ozono has some usability issues that interfere in the learning process of the student. The user interface of Ozono is very important because part of the simplicity that the tool offers to program is that some actions usually done programatically can be done by interacting with a graphic user interface (example: creating an object is done by pressing a button). A new interface has to be developed, and these are some of the improvements that the student could do:

Let the student visualize the object diagram of the current state of his "lesson" at any moment, no matter what other tool he is using at the same time.
Have only one workspace. Right now Ozono lets the student create several workspaces and name them, but observations in the classroom showed that students don't use this feature and it only adds one more confusing step until being able to interact with their objects.
Have a separate window for tests: tests are independent from the regular state of the lesson, so it should be clear from a user interface perspective that it's not a feature that will modify the object diagram (the state of the objects of the lesson).
Internationalization: the current version of Ozono only supports spanish, and we would like to offer the tool to other language speaking universities .

Student Level: Intermediate
The student should propose other improvements in his proposal after using Ozono and discussing with the mentors.

Contribution: 
As Ozono is a tool intended to help learning object oriented programming easily, it's very important that the user interface design doesn't interfere in this process. A very easy to use language for the first steps of the learning process has to be supported by a very easy to use user interface.

Project: Arena Mobile

Possible Mentors: Ronnie De Jesus / Pablo Tesone


Description:

Arena is an educational MVB (i.e. binding-based MVC) framework which allows to build graphical applications in several JVM-based languages, such as Java, Scala, XTend and Groovy.


Arena bindings allow the automatic synchronization of the models and the view. This framework allows the construction of desktop based UI. In Arena the definition of the UI and the rendering is separated in layers, so the same definition can generate different products. Nowadays only exists a render for SWT.


The main idea of this project is the implementation of a render to be able to generate Mobile applications.


It’s not only the transformation of the UI Widget, but the rendering has to take care of the differences between the devices.


The main idea is not to have the same windows in both devices, mobile and desktop, but to have the same way of definition of the UI. Taking advances of the use of bindings, transactions and declarative definition that Arena already have.


As a part of the actual development of Arena some proof of concepts has been built, but this tests has to be integrated with the actual tool.


Student Level: Medium / Advanced

The student should have good knowledge of Java and Scala and some Android UI development..


Contribution:

Arena is used with educative purposes in three different universities in Argentina in order to teach the basic concepts of MVC and UI Construction. Having a tool that can produce Mobile Application allows the different UI courses that uses Arena to center in the differences and the main concepts of a mobile application.

Project: Queries for Arena Persistence

Possible Mentors: Fernando Dodino / Pablo Tesone


Description:

Arena Persistence is a small persistence layer compatible with several JVM-based languages, such as Java, Scala, XTend and Groovy.


This layer integrates with Arena and allows the student to integrate his application with a industrial level persistence solution. It hides all the problems and drawbacks of more complex solutions centering in only the basic concepts.


As it is used in software design courses it encourages the users to good practices putting interest in concepts like: identity, relationships, queries, object oriented design.


It is not intended to have a great performance. It is built on top of Neo4J graph oriented database.


The main idea of the project is the construction of a DSL that allows the user of the database to perform queries over all the data stored. Nowadays the queries are performed by examples only.


Also the new DSL have to be expressed in terms of object oriented design, it has to be closer to HQL (Hibernate Query Language) than to SQL.



Student Level: Medium

The student should have good knowledge of Java and Scala. A small expertise on DSL building can be desirable.


Contribution:

Arena Persistence is used only with educative purposes in three different universities in Argentina in order to teach the basic concepts of Software Design, Integration and Object Oriented Persistence. This tool allows the students to get a full working application without entering in the complexity and problems of tools like Hibernate. This tool allows an easy migration to other industrial level tools.



Comments