It has been our busiest month yet, as evidenced by the lack of blog posts. We've been preparing the code drop for our Developer Release, which involves tying together all the different modules we've been working on. While the rest of the team toils, I'm going to talk about one of the bigger issues we've been dealing with over the past few months--data persistence, which is developer-speak for "saving information in the database".
Designing object-oriented software yields almost total control over modeling business concepts. Traditional database-driven design may have a Transaction table that holds all transactions, each with identical fields. An object-oriented approach allows the creation of separate objects for each type of transaction, endowing each transaction with the properties and functionality that make it unique. Why have a Share amount in a Dividend? Dividends don't actually have shares, after all. With an object-oriented approach, Dividends not only remain share-free, but also add other unique fields, like PaidDate and ExDate, and specific functionality to utilize them.
Sounds great, right? It is. Much of our next-gen functionality is dependent on FinFolio using a modern object framework. Time-sensitive ownership, n-level account/portfolio trees, the extensible plug-in framework, alerts, and even on-the-fly cost allocation is all dependent on a pervasive object model.