Understand 2.0: July 2008 Archives

I’ve covered making Snapshots from the Current Database and by checking out source to an alternate location in earlier posts.  Now I’m going to tell you the EASY way to do it…. Just use TrackBack.

2008-07-30 19.42

Assuming you have had TrackBack B443 or later monitoring your source trees, you can recreate the state of any monitored directory at any time. This includes file modification, file existance, file renaming, everything.

User tools are a convenient way to quickly access external tools or other applications. In an earlier post, Ken shared his SVN User Tools, which provide quick access to version control commands right inside the application.  If you use a different version control system, or want to launch another application, you'll need to know how to make your own user tools.

The Understand 2.0 editor’s “Browse Mode” makes all entities in the editor behave like links in a web browser. With a single click you can visit and update the Information Browser.

In both 1.4 and 2.0 the usual way of exploring/learning about code in the editor is via the Right Click context menu. For instance, if I want to learn about allocstrAppend() I right click on it:

2008-07-28 21.35

The Understand 2.0 you have just downloaded comes in four editions. They all use the same binary, only the license code affects their feature set.  The editions are:

  1. Understand 2.0 Engineer
  2. Understand 2.0 Pro
  3. Understand 2.0 Analyst
  4. Understand 2.0 Non-Commercial

So which is right for you?

The Understand 2.0GUI has command line options that may prove useful to you automation and personal efficiency reasons.

To see the options, just start Understand with “-help”:

%understand -help

2008-07-24 22.56

2008-07-24 13.31

I’ve just realized that while I’ve written a bunch of posts referring to snapshots and using snapshots, I’ve never explained what they are and how they can fit into a software engineer’s workflow. Hence the “missing piece of the puzzle” clip art above.

Q: What are snapshots?

A: A snapshot is a binary store included within an Understand database. A database can hold be any number of snapshots. Each contains three things:

  1. a complete Understand database containing analysis (parse) information
  2. all source, including any include files, needed to rebuild that analysis
  3. certain cached information used to speed up working with them (metrics and file information)

Q: What are snapshots used for?

A: They are used throughout Understand 2.0 to provide details and metrics about what has changed in source code between two points of time.  The “Change”, “Metrics”, and “Estimate” menus all use snapshots intensively.

“Change” will tell you what has changed at the semantic level. For instance, what classes or types changed, versus just what files/lines changed.

“Metrics” can tell you the number of semantic changes – classes removed, changed, added, so forth.

A frequent complaint of Understand 1.4 users was that unless their project was syncronized to an MSVC project it was difficult to keep Understand projects up to date about new files and especially hard to keep files removed from a project from showing up again when adding new code.

Understand 2.0 addresses this with the “Watched Dir” concept. By default any directory you add is a “watched dir”.

Understand 2.0 scans all project “watched dir” for new/removed files and the project file list updated automatically.  Importantly, any modifications you have manually made – either by removing or by changing file filters is remembered.  In 2.0 you only have to remove a file once it won’t come back unless you add it specifically.

You can trigger a rescan  with the Project->Rescan button:

2008-07-24 08.05

Or automatically on a schedule with the Project scheduler available in Project->Configure Project:

2008-07-24 08.06

It is very common to walk a call, call by, or class hierarchy tree seeing what is “going on”.  You can do this in the Information Browser, or in the various graph views we have provided for years.

A new way in Understand 2.0 is the Entity Explorer window.  It permits keyboard based fast exploring of reference hiearchies with syncronized source and informatoin updates.

To see this just click on any entity that has relationships. For instance, a function, and choose “Explorer”.  It will list the reference hiearchies availble to explore:

2008-07-24 00.24

Have you ever looked at a call tree and wondered “is somefunction()” in there?

B453, which you can download now,  introduces a new “incremental search” feature to the Information Browser that makes answering questions like that a snap.

To use it hit select where you want to start searching from and then hit the Ctrl-F key while in the IB or click on the 2008-07-23 23.46 icon.

That brings up a search box on the bottom of the IB:

2008-07-23 23.48

Metrics have always been very tightly coupled with software engineering. Love them or hate them, there is usually no avoiding them. In Understand 2.0 we've significantly increased our ability to provide useful metrics about your project. 

The metrics capabilities vary depending on what version of Understand you are using: Understand Engineer provides high level project metrics, Understand Pro lets you explore and export project and entity level metrics, and Understand Analyst lets you do all that, create custom graphs, and even compare how metrics are changing over time (trend analysis). 

All of this Metrics capability is accessed through the new Metrics menu.

Engineer

Pro

Analyst
image image image

I was working hard on doing nothing on the 4th of July holiday and didn’t do a Build Metrics post about B450. Now I’m ready to do that and I find that I forgot to make an Understand 2.0 snapshot of the source for B450.

I have a couple options:

  1. Check out B450 source to an alternate location and make a snapshot from it.
  2. Look up the revision tag time for B450 and use TrackBack to make a snapshot.

I’ll choose #1 just for an example. Next time, I’ll show #2.

First, I’ll check my SVN e-mail log to see when B450 was tagged:

2008-07-10 05.10

Understand 2.0 projects contain a lot more user provided information than 1.4 projects. Things like Architecture, Snapshots, Metrics comparison data,  and Maintenance estimates take effort to create and would hurt if lost.

I urge you to back up your Understand 2.0 databases regularly, especially if you are using any of the above features. A simple copy will do, and the copied database will compress.

In B450 we have introduced a Project Scheduler. It  can be used to automatically update project files, project parses and build snapshots. In the the next build or two we will add Understand database back up to this scheduler.  Longer term we plan to also have reports, metrics updates and script/script set runs scheduled as well.

 

Concurrent to Understand 2.0’s movement from beta to release we are also announcing some product structure changes.

2.0 adds a lot of features, but not all those features are of interest to all engineers.  Or if of interest, then some do not need the same level of functionality.  And not all features require the same support (one of our major expenses).  And, frankly, some of those features are worth more to some customers than others (I’m not going to hide that we do hope to make some more money).

To make sure that customers can buy tools closer to their exact needs Understand 2.0 is offered in four different levels. The “lowest”, Understand Engineer offers what 1.4 offered.  So the segmentation mainly involves new features only. The four levels are:

  1. Understand 2.0 Non-Commercial
    This version has all features of the highest Understand level, but only supports C/C++/Java and C#.
    We are still finalizing license agreements for this version, but it is intended for use by students and open source developers.
    If you wish to be notified when it is available, just e-mail sales@scitools.com.  We can supply temp codes to permit use until the final shrinkwrap agreement for this version is finished.  The eventual license will be an annual license.

  2. Understand 2.0 Engineer
    This version supports C/C++/Java and C#.  Understand Engineer provides similar capabilities to Understand 1.4 including the excellent navigation, graphics, maintenance editor, reporting and project metrics. 2.0 adds combined language analysis, basic change analysis, single scenario maintenance estimations and metrics charts/graphs.  Our standard for this version was that it be better than 1.4 but cost the same. One key difference, Understand Engineer will not be offered with a floating license. For that, get Pro or Analyst.

  3. Understand 2.0 Pro
    This version comes in two language variants – L1 (C/C++/Java/FORTRAN) and L2 (L1+Ada, PL/M, Jovial). It provides all the capabilities of Understand Engineer, but offers advanced snapshot based change analysis, a full set of metrics, broader metrics charting capabilities, and multi-scenario maintenance estimation.  We envision Understand Pro as what a team would typically outfit an engineer with if they are trying to create a rigourous programming environment.

  4. Understand 2.0 Analyst
    This version also comes in L1 and L2 language variants. It provides Pro capabilities, plus advanced multi-snapshot change analysis and change metrics, detailed multi-time metrics charting, and multi-scenario/multi-plan maintenance estimation. We’ve also placed API development in Analyst, although scripts or API programs built with Analyst can be used by Pro or Engineer versions of Understand 2.0 .  We envision Analyst as what an IVV, QA, Test team members would use, and also as something a team operating in a rigorous environment would have a license or two available as team members rolled through IVV/metrics analysis/change analysis roles. 

THe exact differences can best be seen by running 2.0 and alternating Run Levels via the Help menu.  Or you can check out the feature comparison matrix on our revised website.

What about 1.4 licenses?   Understand for C++, Java, FORTRAN map to Understand 2.0 Pro with their respective languages and API usage enabled.  Understand for Ada, JOVIAL and PL/M licenses map to Understand 2.0 Analyst licenses with their respective languages enabled.  Combined language analysis is avialable but will consume a legacy license for each language. No new license is needed, your existing ones will work.   If you want to have your licenses upgraded to L1 or L2 language packs then our sales@scitools.com folks can help with quotations for that.

What about TrackBack?   TrackBack is a cool product that helps us every day. We are fully committed to TrackBack and plan near term improvements for it.  But it will be part of Understand 2.0 going forward.  We just think it is something that every engineer should have.  It will be in each Understand 2.0 kit.  Customers who have TrackBack but not Understand will be sent a download link for updating separate from Understand.

I’ll caveat that the features between the versions can change, and probably will, once we get feedback from customers and experience selling this way. 

At the beginning of July we released Understand 2.0. It represented the culmination of about 3 years of work where we maintained and improved Understand 1.4 while simultenously developing a brand new version of Understand.

Our goal for 2.0 was to make a tool that is a “must have” if you are maintaining code (and who isn’t??).