Introduction to Ilybra application…
Finally I’ll start column on Ilybra application. A lending library system for lending books to readers, managing books and copies, printing reports, keeping history of reader’s lendings and of course searching capabilities by different search categories. All based on PAT framework.
Numbers of systems’ data for your information (as of 1997 – May, 2005, data has been imported from former system):
- books number is 9,530
- copies: 12,500
- readers: 1,750
- authors of books: 10,200
- history of lendings from year 1997: 10,400 records
- … and 4 librarians
..and all this fits in my PC’s RAM (the small 1G). Surprising, isn’t it? ;)
Note: system is ready for numbers 10 times bigger and was tested with that amount of data. And searching speed wihout optimisation rocks! You do heavy loading of your system before implementing, don’t you?This is “an enterprise-class system”.
Ilybra is entirely based on POJO model – and this is most important and unique. What’s unique that persistence is invisible. There are no mappings, no tables. The only requirement to the POJO model is to annotate transaction-methods and business objects (BO) – one line of code:
Ilybra uses Jakarta Struts for presentation layer, Log4J for logging, works on Tomcat or JBoss AS. Tests are made with plain JUnit. Regression tests and load testing are done by Jakarta JMeter. Ant helps with one-click distribution creation, iText generates PDF documents on the fly, CSS supports printing.
Custom aspects take care of:
- authorization and authentification
- optimization of access to some sorted data collection
- tracing execution of Struts actions
- dirty problem with null parameters
- reseting Struts’ forms
- measure the action invocation time
- Oh my, and I’ve just forgotten about the most important one: persistence – see how invisible it is my way :)
And this is reality – Ilybra exists and has a good time working our Intranet in a testing and bug discovering phase (as of 30 May, 2005). As soon it will be available on-line, I’ll tell..Why aspect oriented way?
This is pragmatic way, more. I do nothing for show. I do it because simpler software means you have to look for concerns, separate them and merge together (refactor?). And you have to do it all the time – well I do it this way.
Aspects are the most suitable way for developing this kind of applications nowadays.
And application is a set of crosscutting concerns, right? :)