This page is divided in three parts, the first one is about the experience of the C³ author in order to get its way of thinking, the second one is about the story of this library and the last is the thanks.
The author experience
My name is Mik, I am software architect and Java expert for one of the largest European defense company. I have been professional in writing software since 1997, for industrial, telecoms, and Mainly for defense domain. Within military domain, I have worked for Intelligence, Artillery, Electronic Warfare and Maritime Patrol sub domain. The expert title has been given to me, I do agree with it only for the following definition : "An expert is an experienced person which do you not have the truth but which has experienced all the main software failure cases and which is able to avoid them".. Personally I have a great experience of failure, believe me, I am not proud of my first large programs, and every day, I do my best to create quality software at the best price. To do so, in my opinion the first important point is the architecture. If you are interesting in photo and cartoons, have a look on my blog at miksblog.capcaval.org.
At the end of the 90's, with few years of experiences as professional coder and after some software failures, I came to the conclusion that my applications were much more complex than needed. In other words, the function to be developed amounts to a quantity of complexity, and my result was much more complex, with too many lines of code( after some refactoring, I was able to reduce it by twice) and a very low level of readability for a human being. Sometime, I was even not able to read my own code. Furthermore, I noticed that all the time I had to do lots of refactoring on written code, specially at the end of development for the last functions.
From this analysis, I had to found some solutions, which was using design patterns. At this time, I started creating into my software some black boxes with contract, corresponding to different functions. For the data flow, I was defining methods inside interfaces( or pure virtual method for C++) and also using observer pattern. With that, I was able to split complex functions into smaller and simpler ones. It is also easier to manage dependencies between them.
In 2004, I met two great software architects, Philippe Fournies and Emmanuel Grivot( have a look to its architecture site http://emmanuel-grivot.blogspot.com). They work on very complex systems and are technical leader for their own companies. nowadays, Philippe works for the leading company in Air Traffic management and Emmanuel works for one of the leading naval defence company for which he creates architecture on huge naval combat system. They transmit me their knowledges on architecture, which I have being using on several projects with real success. With them, my architectures were simplified by having one abstraction instead of several patterns. C³ get inspiration from their ideas. I sincerely dedicate C³ to them, they deserve it, even if Emmanuel uses to say "I have inventing nothing, all the patterns already existed, I have just put them together". After several years of efficient way of programming, I want to share it with others thanks to open source.
Thanks to :
- Christophe Huntzinger for your current and future articles
- David Trevien for the components 3D image
- Philippe Fournies for your reading and remarks.