Blog

Archive for the ‘Understand 2.0’ Category

Understand 2.0 Product Structure

Wednesday, July 2nd, 2008

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. 

Tip: Comparing arbritary text or entities

Wednesday, June 18th, 2008

Note: All screen shots are thumbnails. Click to see them bigger.

Have you ever stared at two pieces of similar code, one that worked and one that didn’t, and tried to sort out “what the heck is different”?   Or perhaps you are considering merging two functions into one. This is a differencing problem, but not of two versions of the same file.   Fortunately, Understand 2.0 provides two ways to help with this:

  • Arbitrary Text Differencing – this provides two text buffers. Paste into each, do a diff.
  • Entity Comparison – select two separate entities and compare them.

I’ll show examples of each.

(more…)

Tip: Selecting blocks in the 2.0 editor

Wednesday, June 18th, 2008

A frequently requested item for our 1.4 editor was the ability to select blocks.

2.0 has it – just use the “Alt” modifier when selecting. 

Here I select a block:

2008-06-18 11.28

Ctrl-X, Ctrl-Y, and other selection commands work on block selections. For instance using “Ctrl  .”  I comment it out:

2008-06-18 11.31

Other planned features are sorting and sending selections through internal editor macros or external text processing scripts. They aren’t far off, we just have to get done with some localization changes for international versions of Understand 2.0

 

Build Metrics: B448

Wednesday, June 18th, 2008

Metrics Overview

Before covering the detailed metrics for B448 I figured a bit of an overview on Understand 2.0 metrics would be useful.

Project vs Change Metrics

There are two basic kinds of metrics that we provide in Understand 2.0.   The first is Project Metrics, which give a static view of a particular point in time.  Examples of this are CountLine and CyclomaticUnderstand 2.0 computes and presents the value of these metrics for any snapshot in the database.  

The second kind is Change Metrics. These show differences between snapshots. The differences can be static – i.e. comparing Cyclomatic from B448 to Cyclomatic in B447. Or it can be dynamic, for instance showing lines deleted (calculated by looking at diffs).

How are Snapshots Made?

You can make a snapshot in three easy ways. First, make one from the current database. Second, make one from an alternate source location where you checked out another version of your source code, and third you can make one from any point in time using TrackBack (after version B443).  All these are done from the Change->Snapshot Manager menu.

Build 448 Metrics

After making a snapshot for B448, the Snapshot Manager showed me this basic information about each recent snapshot:

2008-06-18 01.27

(more…)

Tip: Auto-Completion improved considerably in B447

Thursday, June 12th, 2008

Probably the most welcome improvement in this weeks B447 build is the release of significant improvements in our auto-completion facility in the Understand 2.0 editor.

The improvements are:

  • It exists.
    It sort of did before but you had to hit ESC and it was just offering up a dumb lexical scan of the open file.
  • It is fast.
    It quickly offers options as you type. If you find that irritating you can turn of the auto part in the Editor options dialog.
  • It has key bindings. If you turn off automatic completion then get a completion offering via ESC and CTRL-SPACE.
  • It is smarter. The completion list is based on the parse scope to that point plus what you have typed. It is aware of members and data fields (as appropriate to the language you are editing).

    2008-06-12 21.35

    2008-06-12 21.36

You, the user, as well as our own engineering staff have been asking for a good auto-completion for a long time. And with this release we feel it finally matches or exceeds the capabilities of some of the other popular IDEs.  It won’t stop here. We have plans to improve it in a variety of ways, including the use of code templates so you can tab between parameters and variables needed by the code brought in by the completion.

Your feedback and suggestions are welcome. support@scitools.com

 

Build Metrics: Build 447

Wednesday, June 11th, 2008

I’m writing this post using data and charts directly made by the the new “Metrics” menu of Understand 2.0.  It provides metrics browsing and charts directly inside of Understand 2.0.    How does this differ from our upcoming Measure tool?  Primarily in scope and flexibility. With Measure you can custom design charts and comparisons and automatically report them, plus a few zillion other things.  But the new “Metrics” menu provides quite a bit of useful information with pretty much zero learning curve.

B447

I made a snapshot. This told me this basic information about B447 versus B446:

2008-06-11 23.40

1,719 classes in B447, while 1487 were in B446.  We’ve been busy (-:

Here is an Understand 2.0 generated chart of the line volume information for B447:

B447

(more…)

Tip: Setting up User Tools for SVN

Thursday, June 5th, 2008

We use SVN for configuration management here at Scitools.

Here is a user tool import file that you can use to put SVN to work in your Understand setup.  It assumes SVN is installed in c:\program files\ but you can use find/replace to substitute your path.

File Attachment: svntools.ini (10 KB) – User Tool Import File

After saving the file, import the tools via the Tools->Configure User Tools dialog.

You will then have right click menu “User Tools->SVN” on any right click of a file or entity that is within a file.

2008-06-05 13.41

(more…)

Fast Keyboard Based Document Navigation (using the Navigator)

Wednesday, May 14th, 2008

As I walk around meeting with our engineers, I notice they will frequently have dozens of files open in Understand’s GUI.   They use the “Navigator” to move quickly between them. 

To launch the Navigator choose “Window->Navigator”, or use Ctrl-Tab or Ctrl-Shift-TabCtrl-Tab automatically moves you to the next tabbed document of the same type (e.g. editor, graph). Ctrl-Shift-Tab moves you to the left next document of the same type.

2008-05-14 22.27

(more…)

Handling extensionless C++ header files

Tuesday, May 13th, 2008

It has become vogue in recent times to use extensionless header files. I think it started with the STL library and spread, like a virus, from there.   Oops… sorry to inject my personal opinon there. Suffice to say, I think they are a bad idea.

But they are a reality and we have to deal with them.  In fact, we have hundreds of them in our own source tree, courtesy our use of Qt for GUI portability.

As a teaching example, I setup an Understand 2.0 project file that includes the Qt include tree.  I added a “Makefile” to it for example – it wasn’t really there to start with.  But it does highlight the problem and gives a clue as to why I, a static analysis tool vendor, don’t like extensionless header files…. How are we supposed to tell Makefile, or Todo, or Readme from QString.  Sure we could analyze them to see what was in them, but that is a pain and error prone.

But there is a way, and here is how.

First off, when adding a directory I have to have an additional file filter of *:

2008-05-16 07.32

This places them in the Project, but as un-parsed files:

2008-05-13 20.432008-05-13 20.46

(more…)

Welcome back Find & Replace

Tuesday, May 13th, 2008

You might have noticed that prior to Build 445, Understand 2.0 didn’t have Find and Replace functionality.  This was one of the reasons we have left it in beta status.

In this week’s Build 445 we released find/replace into a shipping build. So I thought it appropriate to blog about how it works.

You will find it under Search->Replace in Files

The “find” part of “find and replace”  works exactly like “Find in Files”.

2008-05-13 13.12

(more…)