Nebojša Dinić
Java Development Head of Development Team
Platform nebojsa.dinic@antegra.com
www.antegra.com
www.asseco-see.com
Goals
• To make state-of-art software
• Fast development process
• Development standardization
• Design Patterns for implementation of services
2
Key terms
• Technologies
• Development process
• Design Patterns
• UML
• Maven
• Subversion
• Artifactory
• Continuum
• IDE
3
Technology Overview
• Light client: HTML, JavaScript (AJAX), Flash, PDF
• GUI Server Components: ADF (MVC), Jasper Reports
• Business Logic Components: Plain Java, EJB3.0, JMS
• Persistence Layer: Toplink (Eclipselink)
• Database: any relational accessible through JDBC
(Oracle, MS SQL Server)
All layers are portable and
implementable on multiple
platforms without
programming customizations!
4
Our platform
• Data dictionary
• Private and public services
• Centralized parameters and settings
• Multilanguage
• Centralized report definition
• Centralized background definition with execution
scheduling
• Custom GUI components
• Various security systems implementation
• Four eyes principle
• Simple publication of the services as WEB services
5
Software Design
• One platform component
• Centralization for common behavior
• Logical functionality families are physically
software modules
• Specific functionalities implement same service pattern
• External services implement same proxy pattern
• Domain Driven Design
• Focusing on domain business
• Deriving model which is common language
between technical experts and domain experts (UML)
• Multilayer approach in application architecture
• Our aim is to try not to mix business API with any
framework specific API
6
Platform
Development workstation Exploitation workstation
•Windows •Linux
•Linux •Windows
Code repository Continuous integration
•Unix-like •Unix-like
•Windows •Windows
DB server Application server
•Unix-like •Unix-like
•Windows •Windows
7
Development process
Workstation
Continuous integration
Continuous integration server
Product 1 Product 1 Product 2
(profile1) (profile2) (profile 1)
9
Maven
• Maven provides us a comprehensive model that can be
applied to all software projects
• Maven provides sensible default strategies for the most
common tasks from the project build cycle
• We follow Maven standard directory structure, not IDE
specific
• Through project definition we deal with dependencies in
consistent way - developers do not need to bother about that
nor to maintain their local repositories with libraries
• Through Maven profiles we are able to produce the output of
the project for different environments (application servers)
10
Artifactory
• Artifactory is repository manager
• Contains cache for remote repositories
• Reduces network traffic
• Place for storing developed components that can be
reused
11
Continuum
• Apache Continuum is used as an continuous integration
server
• It provides
o Automated builds
o Integration with source control management system
o Runs JUnit tests
o Feedback about test results to development
12
IDE
• Eclipse
o Maven is fully integrated via plug-in
• JDeveloper
o ADF visual development environment
o Fast MVC pattern
13
Issue & Feature Tracking
• Redmine
• Some of the features
o Multiple projects support
o Flexible role based access control
o Flexible issue tracking system
o Per project wiki
o Per project forums
o Time tracking
o Issue creation via email
14
Product System Topology
Browser
Browser
Application
Application Security Server
Security Server
Server
Server
GUI
GUI
Application
Application
Clearing
Clearing Transport
Transport Server
Server
House
House Component
Component Business Logic
Business Logic
Database Server
Database Server Core Banking
Core Banking
15
Q&A
16