Continuous Development in the Cloud

Cloud computing enables the design of ultra-optimized, cost-effective continuous development, integration, deployment and delivery, environments.

Those environments leverage automation for testing the code and dynamic resource allocation for make it cost-effective.

However, at the current stage there is no support for development of cloud-based applications that involves the creation of virtual images.

I am looking for a Master student to investigate the problem of “Optimizing Continuous Development Environments for the Cloud-based applications”.

If you are interested, contact me.

An Eclipse Plugin for the development of Executable Specifications

The PBnJ tool let you mingle imperative java code and declarative statements (aka specifications) in the same place. This allows developers to write robust and resilient code that automatically “fall-backs” to its intended behavior when things go wrong. For example, when exceptions are thrown or unexpected conditions prevent the program to terminate correctly.

At the current status, the PBnJ tool provides only a manual and console-based interface, but lacks full support at the IDE level.
IDEs implement features such as code completion, code suggestion, syntax checks, and syntax highlighting that improve developers’ productivity and quality of java code.
The Eclipse platform is the “de-facto” standard when it comes to IDE, and it has extensibility core concept: by implementing small plugins the IDE can offer additional features to the programmers. Therefore, we choose Eclipse as our target platform for this project.

The project consists in the design and implementation of a plug-in that enables IDE support for the PBnJ tool.
This job fits nicely into a Praktikum or a Bachelor thesis; nevertheless, it might become a by-product of a regular Master Thesis.
Applicants are required to have good Java programming skills and a basic understanding of the Eclipse platform, and will be advised during the project.

Contact me if you are interested

Additional References:
[1] Falling Back on Executable Specifications

Mocking The Cloud

When it comes to test applications and software systems that work on, or with, clouds developers resort to real running systems to execute test (i.e. real clouds). This makes difficult to implement a truly test-driven development because the real systems and stable implementations are not always readily available, and test execution may takes an extremely huge amount o time.

Proper mocks of clouds would benefit as they enable faster and practical execution of tests in pre-production environments.

Challenges arise in deciding on how to mock clouds (specific APIs vs generic interfaces) what property to mock (Start/stop VM vs Full fletdged mock), and more.

If you are interested in working on this topic, contact me.

Automatic deployment of complex Cloud applications

Cloud applications rarely consists in single-server-single-component architecture; this means that when it comes to automatically deploy them on one (or even multiple Clouds) one has to consider the mutual dependencies that each component in each instance have with the other components not only inside the same instance but also across different instances.

We are developing an extensible software tool that can deploy complex applications/architectures on a target cloud, and we need your help in (mark one of the following ;) ):  implementing it, refactoring it, redesign it, but also extending it.

Continue reading