Overall Architecture - Supply Chain Management
This work was done at IIIT-B during Fall 2009 under the guidance of Prof. G.N.S Prasanna. Thanks to my collaborators Kishore and Pradeep.
The goal of this project is to improve the a) efficiency, b) scalability and c) maintainability of a large scale software project by making certain architectural changes. The software chosen for this purpose is a tool for Supply Chain Management. We propose a plug-able architecture based on the 'Software as a Service' model to make the code modular for scalability and ease of maintenance. As a proof of concept, we implemented the Constraint manager as plug-able component. Constraints are the most important aspect of any optimization problem. There could be tens to hundreds of constraints in a complex supply chain problem. In addition, the constraints can come from different sources and hence it becomes more important to manage it outside the system and provide it as a pluggable solution.
One of the most widely used technique to improve code readability and modularity is - 'Automatic Code Refactoring'. Our aim was to improve the efficiency (run-time) by refactoring the code for parallel processing. We analyzed a state of the art tool called 'CONCURRENCER', developed at MIT, Cambridge, which can parallelize a sequential Java code by modifying data types, forking recursive function calls, etc. We implemented a middleware layer for abstracting all I/O related operations between file-system, database, etc using the Adapter Design pattern. This served in improving the efficiency and reducing code redundancy. Finally we devised certain test strategies for user interface testing using IBM Rational Functional Tester and JUNIT framework.
Downloads: Project Presentation
Figure: Block Diagram of Constraint Manager as a plug-able module