350 parts ibank functional structure technical modules authentication
350 parts
i-bank functional structure ▪ technical modules – – – – authentication auditing user profile OTP functionality e-mail notifications push notifications etc ▪ business modules – – – – deposits cards loans bill payments investments transaction files etc
i-bank code structure ▪ 15 technical modules ▪ 35 business modules ▪ 350 projects ▪ 240 k lines
ALM planning deployment defining testing designing building
modular design business area planning defining designing deployme nt buildin g testing
day #1 modular design customer designing deployme nt designing deployme buildin nt g testing component (c# project) product designing deployme buildin nt g testing component (c# project) order buildin g testing component (c# project)
day #2 modular design customer designing deployme nt designing deployme buildin nt g testing component (c# project) product designing deployme buildin nt g testing component (c# project) order buildin g testing component (c# project)
day #3 circular reference customer designing deployme nt designing deployme buildin nt g testing component (c# project) product designing deployme buildin nt g testing component (c# project) order buildin g testing component (c# project)
day #4 modular design customer designing deployme nt designing deployme buildin nt g testing component (c# project) product designing deployme buildin nt g testing component (c# project) order buildin g testing component (c# project)
day #5 modular design customer product designing deployme nt buildin g testing component (c# project) order
dependency resolution customer product order component (c# project)
customer c# projects component publishing web service dependency product component publishing modular design order component publishing implementation projects rdbms dependency component implementation component interface component (folder)
component interface data contracts very simple reusable methods classes vs interfaces service interfaces
invalid paths customer c# projects component publishing product component publishing order component publishing component implementation component interface component (folder)
valid paths customer c# projects component publishing product component publishing order component publishing component implementation component interface component (folder)
nuget packages modular design customer component publishing product component publishing order component publishing component implementation component interface component (folder)
extension methods c# decoupling tools interface implementation
c# decoupling tools type mapping extension methods
c# decoupling tools dependency injection dependency propagation component (c# project) unit application db connection configuration logging unit component (c# project) unit low level libraries component (c# project) unit unit high level libraries component (c# project) unit low level libraries component (c# project) unit
c# decoupling tools dependency injection dependency resolution component (c# project) unit application configuration factory abstract factory static factory service locator component (c# project) unit low level libraries component (c# project) unit unit high level libraries component (c# project) unit low level libraries component (c# project) unit
c# decoupling tools dependency injection controller constructor
c# decoupling tools dependency injection simple injector configuration
1 st upload (Sept 2014) ▪ 255 k lines ▪ 30% Duplicated Code (49 k lines, 9. 5 k units) ▪ 11 k C# lines 61+ LOC ▪ 2 k C# lines Mc. Cabe 26+ ▪ 1 k C# lines > 4 Parameters
1 st upload (Sept 2014) ▪ 255 k lines ▪ 30% Duplicated Code (49 k lines, 9. 5 k units) ▪ 11 k C# lines 61+ LOC ▪ 2 k C# lines Mc. Cabe 26+ ▪ 1 k C# lines > 4 Parameters
unit: method, function module: file, class, unit & module guidelines function refactoring techniques • extract method • extract object ▪ short units of code – up to 15 lines ▪ simple units of code – up to 4 branch points ▪ write code once ▪ small unit interface ▪ separate concerns in modules – small modules
module guidelines ▪ loosely coupled components – small module interface ▪ balanced number & size of top level components ▪ small codebase
technology & tools ▪ Type. Script ▪ npm, bower, gulp, tsd, … ▪ internal package repository (Nexus) ▪ build automation (TFS) ▪ maintainability tools (Sonar. Lint) ▪ maintainability monitoring (SIG, Sonar. Qube)
- Slides: 27