Hi Abhishek,

This is a good start but it will be easier to manage comments if you go ahead 
and start a draft proposal in the GSOC 2016 submission site.  I prefer the 
google doc option to pointing to the Airavata wiki for proposal development 
since I can easily comment inline.  Please make sure you give commenting and 
suggesting privileges.

Marlon


From: Abhishek Jain <[email protected]<mailto:[email protected]>>
Reply-To: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>
Date: Monday, March 21, 2016 at 10:37 AM
To: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>
Subject: [GSoC Proposal] - Re-Factoring Apache Airavata Codebase to incorporate 
well-known object-oriented Design patterns and principles

Hi Dev Team,

Please review the following GSoC proposal that I plan to submit:


Title: Re-Factoring Apache Airavata Codebase to incorporate well-known 
object-oriented Design patterns and principles


Abstract:

Analyze the Airavata code base to incorporate well known creational, 
structural, and behavioral design patterns. As the Airavata code base has 
steadily grown over the years, this project will evaluate the architecture and 
make updates wherever necessary so that the code uses classic, well tested, 
maintainable, readable, and extensible solutions to common design problems.


Introduction:

Analyze the Airavata code base to incorporate well known creational, 
structural, and behavioral design patterns. As the Airavata code base has 
steadily grown over the years, it consists of both old and new modules. While 
the Airavata codebase has been extensively tested for functionality, it has not 
been evaluated for design elegance. Given the maturity of the current code 
base, it is the appropriate time to study and evaluate which well-known 
patterns seem to emerge from all the additions of modules and features.


This project will evaluate the architecture, refactor the code wherever 
appropriate, and make updates wherever necessary so that the code uses classic, 
well tested, maintainable, readable, loosely coupled, and extensible solutions 
to common design problems.  The application of patterns will also ensure that 
the established design principles and guidelines are followed in all the 
modules.


The current use cases of Airavata, including the planned integration with Cloud 
and Big Data technologies, will be studied to identify the common traits of the 
problems being addressed by Airavata, and incorporate or adjust the code 
patterns accordingly. For example, as Airavata is extended for use in Cloud 
environments, and different components, some with multiple implementation 
choices, have to be wired together, the Dependency Injection pattern is 
appropriate for modularity, and loosely coupled designed. The Logger code in 
Airavata can be extended to include levels to capture the severity of messages, 
errors, and exceptions.  Additionally, the code will be updated to use newer 
Java features such as lambda expressions.

Goals:

  *   Develop a dependency graph of all the modules in the Airavata code base

  *   Evaluate how the components are wired for a successful job launch to 
understand the coupling of objects (loosely coupled vs tightly coupled)

  *   Evaluate the current use of patterns and well-known design principles in 
Airavata and make updates whenever necessary along with updates to the test 
suites

  *   Evaluate the design patterns and principles of newly added services such 
as adding email functionality to send job status messages, integration of 
support for Cloud environments such as Mesos, Marathon, and Aurora, and 
accordingly update the code with proven design solutions.


Any comment and suggestions would be very helpful.


- Abhishek Jain

Reply via email to