Getting Things Done

1/6/2012 7:27:07 PM
You may know an organizational method GTD (Getting Things Done). The idea is that the person moves tasks out of his mind into some external medium, exocortex. It may be a piece of paper or a text file or a database.
There are a lot of modifications of GTD. Some of them are quite sophisticated. They prescribe to classify tasks with many classifiers (project, activity, time, place, etc.) and to sort tasks a particular way.
I’ve tried some of these methods and some software products that support these methods. I can’t use each of them longer than 3 weeks, because they demand too much discipline.
But there is another edition of GTD that has proved to be useful. This method was described by Anatoly Levenchuk in this post (in Russian).
The method is simple. Tasks are divided into 3 groups:
  • Not done (active)
  • Obsolete
  • Done
All these tasks are written down into a plain text file. The active tasks are in the beginning of the file; the next are obsolete tasks; done ones are in the end.
We are interested only in active tasks. You may get rid of obsolete and done tasks completely if you don’t need to keep track of these tasks.
Active tasks are partly prioritized. The task is more important than another if it is closer to the top of the list. The main tool of prioritization is cut/paste. You simply cut important and/or urgent tasks and paste them somewhere close to the top of the list.
When the task is done, you move it to the list of done tasks (or delete this line if you don’t want to track done tasks). Obsolete tasks are treated similarly.
This method allows keeping all your tasks in one place outside your brain, and you always can see what you should do and what the priorities are.

UML Specification

1/5/2012 8:49:08 PM
Last year I posted UML class diagram that depicts core concepts of REA (resources, events, agents) data model. That’s it:
REA model
My colleague had looked at this diagram and said that it’s not canonical UML class diagram, because there is a generalization between associations.
I agree that it’s uncommon to show a generalization between associations in such diagrams. But it’s absolutely legal use of UML. Section 7.3.3 “Association (from Kernel)” of UML 2.0 spec describes semantics and notation of generalization between associations.
UML spec is huge (UML 2.0 superstructure specification has 710 pages), so it describes a plenty of definitions that are not in common use.

Steve Jobs

1/4/2012 7:40:48 PM
I’m a bit late. This article was in my reading list for a few months. It’s the best article about Steve that I’ve ever read.
Design is all about trade-offs. Costs, usability, security, etc. When you design something you should consider a plenty of different requirements, and these requirements often conflict with each other. Steve was a great designer.

Microsoft BI Resources

1/4/2012 5:34:55 PM
I learn Microsoft BI, so during last few weeks I was searching the Internet for information regarding this topic. I think that you may be interested in these resources too. So, here the links are:
 
39 videos cover themes from basics of business intelligence to the details of SQL Server Analysis Services 2008. All videos are free of charge, but you should register to download them.
 
You can find quite interesting videos on BI essentials, data warehousing, SSIS, SSRS, SSAS in the following trainings there:
 
Different whitepapers.
 
Videos and presentations. Quite interesting.
 
Tutorials, articles, webcasts, live samples.
 
And a few books:
 
"Smart Business Intelligence Solutions with Microsoft SQL Server 2008" by Lynn Langit, Kevin S. Goff, Davide Mauri, Sahil Malik, and John Welch
"Microsoft SQL Server 2005 Analysis Services Step by Step" by Reed Jacobson, Stacia Misner, Hitachi Consulting
"Microsoft SQL Server 2005 Reporting Services Step by Step" by Stacia Misner, Hitachi Consulting

Accounting systems

10/8/2011 9:33:57 PM
Exchange and conversion of resources are fundamental processes for businesses; that’s why many enterprise software systems track resources movement. The most valuable thing for an organization is money.  Nonetheless, they also need to take into account other resources: goods, materials, labor.
Accountancy is a large and old profession. One of the most fundamental concepts in accounting is double-entry book-keeping: you keep track of states of accounts by tracking every single movement of resources. If you have all movement records, then you can recalculate balances of the accounts.
Martin Fowler gives the following basic model of accounts, entries and transactions in his article “Patterns of accounting”:

accountAndEntry.gif
 
There is a more complex data model for accounting systems than the one above. The authors call it REA (resources, events, agents) and treat it as a business process modeling ontology.
The most fundamental concepts of REA are the following:
 
Economic resource: a thing that is scarce and has utility for economic agents and is something users of business applications want to plan, monitor and control.
Economic agent: an individual or organization capable of having control over economic resources, and transferring or receiving the control to or from other individuals or organizations.
Economic event: a change in the value of an economic resource that is under the control of the enterprise. Each economic event is either an increment economic event or a decrement economic event.
Commitment: a promise or obligation of economic agents to perform an economic event in the future. Each commitment is either an increment commitment or a decrement commitment.
 
There are also some fundamental rules (axioms):
 
Stockflow axiom: At least one increment economic event and one decrement economic event exist for each economic resource; conversely increment and decrement economic events must affect identifiable economic resources.
Duality axiom: All decrement economic events must be eventually paired in duality relationships with increment economic events and vice-versa.
Participation axiom: Each economic event must be related by a provide relationship to an economic agent and by a receive relationship to an economic agent.
Reciprocal axiom: Each increment commitment must be related by a reciprocity relationship to at least one decrement commitment and vice versa.
Fulfillment axiom: Each commitment must be fulfilled by at least one economic event; increment commitments must be fulfilled by increment economic events and decrement commitments must be fulfilled by decrement economic events.
 
Frederik Gailly represented core concepts of REA in UML class diagram model:

00072tq7.png
 
In theory, an ontology is a "formal, explicit specification of a shared conceptualization". As REA is an ontology, it is a widespread generalized model. If you make your accounting system on top of REA, you get an advantage of more easy integration with other systems that use this ontology too. I hope that in the near future REA will become more popular, and will help to reduce cost of accounting data integration as ISO15926 ontology does in systems engineering software.
 
If you design an accounting system, it’s also helpful to read Martin Fowler’s “Accounting patterns”. He described some interesting cases and patterns there.