Challenge Overview
Project Overview
The client is building the Fund Accounting Yield Application (FAYA), previously referred to as the SEC Yield application. This is the 2nd phase, where we’d like to add new calculation engines and provide more front end features for the end user.Note: SEC Yield is synonymous with FAYA. The client has made the application name more broad to correctly encompass all of its functions.
We look forward to seeing your architecture designs!
Tips for success:
- Asking questions early and getting PM's feedback is very important for the success of this competition.
- Raise questions if you feel anything is confusing, or if you have any questions on the provided documentation.
Challenge Overview
In this challenge we are addressing the following:- New SEC Yield rule engines and calculators
- Designing "What If" requirement
- Designing "Quality Check" requirements.
Challenge Requirements
For this challenge, we need to come up with a full design / architecture that address the requirements.The expected deliverable :
- Updated TCUML containing all necessary diagrams (Classes/Models and Sequence diagrams)
- RESTful API Endpoint Documentation (preferred swagger documentation)
- Code Challenges Specifications
- Updated ERD / SQL Scripts
- Updated Application Design Specification
Please refer to the documentation (posted in challenge forums) provided to address the new requirements :
- FundandClassLevelYieldCalculations.docx, SecurityYieldCalcSpecs.docx, SecurityIncomeCalcSpecs.docx
- Contains the SEC Yield engines to address, it includes the phase 1 engines, only the new engines are in scope.
- The SecurityYieldCalcSpecsCASHFLOWONLY.docx document is the only yield engine where we need to do manual calculation in-memory and do seeking for the yield.
- RulesEngineWorkflow.vsd
- Phase 1 boxes are the rule engines we implemented in phase 1, the other rule engines are the scope of this challenge
- Diamond box (decision/logic point) : to determine the security type
- Rectangle/Square box: Notes about the security
- Hexagon box : represents the yield engine to be used
- Pentagon-like box: represents the income engine to be used
- Circles (numbers) : Refers to a row in WorkFlowBackUp.xlsx
- You need to pass values during the engine selection logic (as currently done), refer to the MetaDataBackUp.xlsx (Pass Through Values sheet) for what the values you need to feed in the fields during the flow logic execution.
- WorkFlowBackUp.xlsx
- The document is a description for the rules engine workflow document, each row has a number, the number is represented as a circle in the Rules Engine Workflow visio document
- The document is self explanatory, first column is the yield engine, second is income engine, 3rd is the input to calculator, 4th is what the fields being set in the calculator (same for income engine).
- Refer to DataDictionary.xlsx for explanation of the fields
- DataDictionary.xlsx : Represents the metadata for the fields mentioned in the Rules Engine Workflow and Backup documents
- WhatIfReq.docx
- This is the requirement for What If Analysis in the front-end http://54.208.2.67:5555/what-if-analysis (login as user1/123456)
- Tolerance Check should be called after submitting What If Analysis
- Quality Check Requirements
- We already have the interface, we need to design the real implementation for it, the MetaDataBackUp.xlsx includes (Tolerances and Warnings sheet) the cases we need to address in the quality check implementation.
- Other notes:
- You will follow existing design patterns for adding new engines, each engine should have its calculator separated, you can reuse existing calculators if applies.
- Create new class diagram and sequence diagrams for the new requirements, if you want to update existing classes, then please color them in BLUE to indicate update, and RED to indicate new item on these existing items. Also to remove confusion, color all existing diagrams that has blue/red in black color.
Technology Stack
- Required frameworks / libraries- Optional frameworks / libraries - You do not have to use these, but if your architecture warrants uses of one of these types of systems, these are our choices.
- Java 8
- Spring 4.x
- Spring Web - MVC
- Apache HTTP Server
- Apache Tomcat 8.x
- Log4j / SLF4J / Apache Commons
- Apache Commons Libraries
- REST through Spring
- Maven
- Angular
- Sonar for Code Quality
- JUNIT for Test Automation
- JAXB
- Jackson
- Spring AOP
- JQuery
- Apache Camel
Documents and Existing Architecture
Provided in challenge forums.Final Submission Guidelines
Final Submission Guidelines
The expected deliverables are:- TCUML file.
- RESTful API Endpoint Documentation
- Code Specifications
- Application Design Specification
- Rule Engine Calculation documents
- Updated ERD/DDL