airavata-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Abhishek Jain <ajai...@binghamton.edu>
Subject [GSoC Proposal] - Re-Factoring Apache Airavata Codebase to incorporate well-known object-oriented Design patterns and principles
Date Mon, 21 Mar 2016 14:37:04 GMT
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

Mime
View raw message