I have come to this a bit late, but am concerned about some of the answers. They are all good, but they are pushing the concepts well beyond the question. The question was whether DeanConsulting has approached it correctly.
My answeris that they have done an almost perfect job. 9.8/10 for the example they gave.
They wrote an English description:
"... a small software application that keeps track of a user's software keys. The program will be able to add, edit, and delete keys from a file. The data for a key will be: title, version, purchase date, key1, key2, author, and contact."
The class name is a bit naff. This is a small but important point. Your English calls it 'Software keys" and the class is called 'Softtitle'. Why not call it 'SoftwareKey'.
Firstly, my mother, very literate but NOT a techie, would understand the second name but would hesitate at your one. I couldn't find in the dictionary either. This is a huge mistake made by most modellers. They want to invent new names that other people will find hard to remember, particularly when there may be hundreds of them. If 'Software keys' are what you are describing, why not call them 'SoftwareKey's. I have seen a huge projects halved in size by getting that right.
Secondly, by using the word 'Title' in the class name, you felt obliged to change the English 'Title' into 'name'. You must decide what it is your are modelling, and what that first attribute really really is. Then call them that.
When I look back, the class you describe contains keys (plural) and other things. Would it be better to call it something like 'SoftwareRecord' or 'SoftwareCatalogueEntry' or 'SoftwareKeyRecord'. I might like to keep the Username needed for support and the password in it as well. Then I think that 'keys' would be totally wrong. Maybe SoftwareDetails'.
Why only software? My ISP broadband box has an Id theat the ISP people want quoted as well as a username and password. My fire safe has combination keys. So maybe it is better to not restrict it, because the internal data is not restrictive. Perhaps 'KeyDetails'?
Whatever you do, I want my mother to be able to understand it. This is NOT coding. This is high level Documentation that your CEO, Finance Director and others should understand. In UML, part of the class diagram is the 'Business Domain'. It should model the business and names of things are part of the business.
Above all, keep consistency. Is it a 'title' or is it a 'name'?
The other 0.1 marks went on not having a 'view' function. I guess, you think that the 'edit' one doubles as this. If so fine, but always start with all four concepts. The point of having the program seems to be so that you can find the keys for a program accessed by title. Version, Purchase Date, Author etc, are for secondary use. So maybe you have two views: one the title and Keys, and the other as for editing.
You were advised to produce display objects. This is probably overkill in this situation. But taking their point, now you have two object classes, either of which can be displayed. One is 'KeyDetails' and the other is 'IdentifiedKeyValues'; this last one only contains title and
and keys. But dont create Display classes unless they are required. This example is totally atypical because of its simplicity; most examples do need them.
Finally, there is an excellent free IDE with an excellent UML tool provided by Sun. It is called 'Java Studio Enterprise 8'.
Better than Rational Rose, a bit better than Visio, and may be better than Rational Software Modeller, not quite as good as Visual Paradigm. But it is free.
Gil