Category Archives: Tech

Code Review Tools

Peer code review is an important part of software development process. It both helps to find defects early and encourages spreading knowledge across a development team.

When adopting code review practices you may want to find a tool that will help developers to organize the code review process: change sets exploration, communicating between developers and reviewers about defects and ways to fix them.

Recently I have done some research on existing code review tools that can integrate with Visual Studio 2010 ALM (Visual Studio 2010 + Team Foundation Server 2010).

Continue reading

Getting Things Done

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).

Continue reading

UML Specification

Last year I posted UML class diagram that depicts core concepts of REA (resources, events, agents) data model. That’s it:

REA

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.

Accounting systems

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.

Continue reading

Software architecture

Architecture is an uncertain term. The broadest meaning of architecture I’ve heard is “everything that is important”.

Martin Fowler in “Patterns of Enterprise Application Architecture” writes:

“The software industry delights in taking words and stretching them into a myriad of subtly contradictory meanings. One of the biggest sufferers is “architecture.” I tend to look at “architecture” as one of those impressive-sounding words, used primarily to indicate that we’re talking something that’s important. But I’m pragmatic enough not to let my cynicism get in the way of attracting people to my book. :-)

“Architecture” is a term that lots of people try to define, with little agreement. There are two common elements: One is the highest-level breakdown of a system into its parts; the other, decisions that are hard to change. It’s also increasingly realized that there isn’t just one way to state a system’s architecture; rather, there are multiple architectures in a system, and the view of what is architecturally significant is one that can change over a system’s lifetime.”

There are also more accurate definitions in international standards.

ANSI/IEEE Std 1471-2000, Recommended Practice for Architectural Description of Software-Intensive Systems:

Architecture is defined by the recommended practice as the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.

ISO/IEC 42010 (international standard for architecture descriptions of software-intensive systems):

“Architecture (of a system): fundamental concepts or properties of a system in its environment embodied in its elements, relationships, and in the principles of its design and evolution.

SharePoint and Rich Text Editors

SharePoint 2007 allows rich text editing only in IE. For non-IE browsers SharePoint shows only plain text editor. And we will fix this.

There are some tutorials that describe how to add one of popular rich text editors into SharePoint websites: FCKEditor, TinyMCE and others.

Firstly, I tried to follow this one but  it doesn’t work for me. They recommend to add some piece of javascript to file NON_IE.js in Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\ folder. But when I open SharePoint page in FireFox 3.6 it doesn’t ever load NON_IE.js.

So, I decided to use FCKEditor for all browsers. The javascript code is almost the same, but you should add it into CORE.js instead of NON_IE.js. See details in this article.

It’s a free solution. If you want to pay, you could get almost the same result for $599 if you buy “CKEditor for SharePoint” from authors of FCKEditor  :)

Modeling of customer, order and address entities

NopCommerce is a popular open-source shopping-cart based on ASP.NET.

To buy something the customer of online store should provide shipping and billing addresses. NopCommerce stores this information in a bit strange way. The figure below shows the simplified scheme of entities which are used to represent information about customers, orders and addresses.

 

Continue reading

Ratings

Ratings are one of the most popular kind of user-generated content. You can see it almost everywhere: in blogs, in social networks, in e-commerce websites.

Usually user sets score on some scale, e.g. from 1 to 10 or from 1 to 5.

Sometimes the user is offered only two options: thumbs up and thumbs down. There are actually three options, because he can avoid a vote.

And there can be only one option, for example ‘Like’ button in the Facebook.

Which scale is the best? It is a trade-off between precision and complication. To press ‘Like’ is easier for the user than to select an appropriate score on the 10-point scale, but ‘Like’ button is less informative.

The statistics can help us to make decision. YouTube has analyzed ratings of videos. Their users rated content on the 5-point scale. And as it turned out most ratings were 1 and 5. And 5 is a few times popular than 1.

Ratings

Continue reading

Protégé failed with NoClassDefFoundError

I have recently installed Protégé 4.1 and plugins for it. And today it has crashed when I tried to create new ontology. Error message: “NoClassDefFoundError: org/protege/editor/owl/ui/action/ProtegeOWLAction”.

Active googling gives only one possible solution:  “It looks like your Protege 4 installation is corrupted. I suggest that you remove the old installation, and make a clean install from the website.”

But I have found that it can be repaired less radical way. Just look at Protégé’s console window and read plugin loading error messages. Then delete broken plugins.