CM: THE NEXT GENERATION of ALM Tool

leave it with the consultant.

The next customization goal for next generation ALM tool is that customization must be incremental.  Don't make the customer specify it up front because he generally doesn't understand the process fully at the end of the product lifecycle, much less at the start.

The next customization goal - it must be extensive.  Give me a database and a process tool and I can have all the data I need for the ideal process.  But if I have a lousy user interface, I'm in trouble.  Every aspect of the user interface needs to be customized (OK, perhaps you don't need the standard "themes" package).  The tool must speak the language of the corporation.  It must understand the branching strategy of the project.  It must ask for only the information required, and pick up the information from the environment otherwise.  It must allow you to put buttons and menu items in place without hassle.  Quick links too.

CM+ gives some great examples here.  Some customization lines from a the quick links definitions:

browser  MyProblems
reverse (probs @pcontext assignee @user status < answer sort stream)
(:12 status date:10 priority:6 product:9 stream title type originator:12 )
-leaf -refresh -expand 0 -title -fields -trim

browser {designer cmmgr super} MyUpdates
changes @user @pcontext status <= ready class not requirement sort status sort product
(:18 status product:10 stream title problems activities)
-leaf -refresh -expand 0 -title -fields -trim

These define two quick links in the browser panel:  Optionally roles that include them -  quick link name.  Then a data expression identifying what the link corresponds to.  Then an optional list of fields and default sizing.  Then some options. Now it's very easy to put this in a dialog panel.

comment  ?{@roles}*Roles ?16[My]LinkName ?DataExpression  ?<Table>Table ?(?Table)*Fields ?{-leaf -refresh "-expand 0" -title -fields -trim}*Options ?"Define Quick Link"

And this defines the panel:

jfmar11-7

Fig. 7 - A sample Quick Link Definition panel defined in a single line of code.

That took me less than 5 minutes to define.  That's why it's easy, not just to customize CM+, but to simplify customization.  Clicking OK will type out the line to put into my "browsers.gui" file - and my quick link is defiined.  OK - but what about that data expression - more on that in a bit.

Menus are equally easy to define in CM+. For example:

@popup                          "Assign Problem"  change   "@user prot not with prjmgr"  "assign @1 assignee"
@popup   {prjmgr cmmgr} "Assign Priority"    change   ""                                        "change @1 -field priority"

This defines two of the popup menu items for a Problem object.  Optional roles, button name, category, qualifier, command.  Again very simple (@1 is the unique id of the problem object).  Some menu items are more complex, but usually range from one to two lines.  Again, very easy to define a menu item definition capability.  But an expert is often happier to use the command language.

Ah yes, there's another gotcha. Command language, data expression, GUI generation language, macro language.  We've seen that the GUI generation language is very high level.  So is the data expression language.  And the macro language is quite capable.  There are over 100 commands - some configure options, some bring up displays, graphs and tables. Some do basic CM operations.  Others do basic database operations.

In CM+ you can do a lot of customization without learning the "languages".  But there's a lot more you can do if you learn them, and you can generally do it faster.  So what CM+ does is to allow you to interactively use these languages so that you see instant results.  Type in:  note ?<Stream>Stream.  You'll

About the author

Joe Farah's picture
Joe Farah

Joe Farah is the President and CEO of Neuma Technology and is a regular contributor to the CM Journal. Prior to co-founding Neuma in 1990 and directing the development of CM+, Joe was Director of Software Architecture and Technology at Mitel, and in the 1970s a Development Manager at Nortel (Bell-Northern Research) where he developed the Program Library System (PLS) still heavily in use by Nortel's largest projects. A software developer since the late 1960s, Joe holds a B.A.Sc. degree in Engineering Science from the University of Toronto. You can contact Joe at farah@neuma.com