The humane assessment booklet, version 3

A new version of the booklet describing humane assessment is now available for download.

The new version features more details and pictures related to the Moose analysis platform, and it shows a diagrammatic representation of the assessment process:

Process

Posted by Tudor Girba at 7 July 2010, 7:03 am comment link

Agile steps to improve the status quo

Meeting real deadlines is a hard and stressful job. It’s a job that typically eats all resources available, because when we know exactly what the best way is, we want to go full steam ahead. After all, we want to utilize our full productivity. Except that we typically do not know the best way. We know a way and we get comfortable with it.

While the status quo can be comfortable, it is certainly not perfect. There always is something to improve. However, when entrenched in a routine we typically have no clue of what that something is and how to improve it.

How can we rethink the situation? How can we find that something?

As you might know, I spent some time in research. Research is a fascinating environment because it challenges you to challenge the status quo. If you do not do it, someone else will.

During this experience, I noticed a handful of techniques that do not depend on the topic:

  • Always question the status quo, even when it appears perfect.
  • Never stop researching, even when it is not in the job description.
  • Identify the wrong assumptions, especially when they are obvious.
  • Demo your ideas, even when they seem hard to implement.
  • Listen, even when you do not agree.

Why should we care about this? Because it affects everything we do, including the design of our software system, understanding our clients’ requirements, or managing our team. And because the solution is simpler and cheaper than we might think.

I will give a talk about this topic at the SCRUM Breakfast in Bern on June 30, starting with 08:00.

Posted by Tudor Girba at 18 June 2010, 10:16 am comment link

The hidden world of code annotations

Whether under the name of annotations (in Java) or pragmas (in Smalltalk), developers use them increasingly as a means to encode extra information in the source code.

This information is typically orthogonal to the intention of the annotated code. For example, annotations can be used to identify the attributes that need to be persisted (like we do in Moose, or like Hibernate does to express mappings on tables), or they can be used to denote the methods that should be displayed in the user interface (like we do in Moose).

At first sight, this powerful mechanism comes at zero cost: you get to have more behavior without inferring with the base code. It’s not so, or like the saying goes: “any promise that is too good to be true, it probably is".

Every annotations adds a logical dependency between the places that define it or those that use it. Furthermore, annotations do not come alone. Typically, we get groups of annotations that work together or that offer similar behavior. It is true that the base code does not have anything directly to do with annotations, but the overall

To get an idea of what happens when we introduce annotations, I created a visualization called Annotation Constellation (available in Moose). The labels show annotations, the small squares represent classes, and the lines connect annotations with the classes defining the respective annotations. The spring layout reveals islands of annotations and related classes.

The picture below shows the shape of the default Pharo annotations (version 1.1). We can see that there are a handful of annotations, only few of them being connected.

The most used pragmas are #primitive: and #primitive:module:. Both of these annotate methods. The interesting thing is that in some classes, you get only usages of only one of these two, but there are also classes that use both.

A slightly different situation, can be seen with #version: and #version:imports:. These annotations are consistently used together.

Pharo-core-annotation-constellation

If the base Pharo looks pretty clean, after we load Moose in it the landscape changes dramatically, as can be seen in the picture below (the image is available in larger resolution if you copy it locally). First, there are more annotations. Second, these annotations are grouped in complex clusters showing that they work closely together.

Moose-annotation-constellation

You might think that this situation is specific to Smalltalk. Please take a look at what happens in a JEE system.

Jee-annotation-constellation

The goal of the visualization is to reveal part of the extra complexity introduced by annotations in the system. I say part because there are several things that are not taken into account, like which classes depend on the defined annotations. But even this visualization shows that we cannot afford to ignore annotations if we want to understand a system as a whole.

Posted by Tudor Girba at 10 June 2010, 8:49 pm 4 comments link

humane-assessment.com

Assessment is an act of reasoning. It is what we should do before taking a decision. However, when large amounts of data are involved, assessment gets complicated because we are just not equipped to handle many details.

Data is here to stay. Whether in the form of software systems or otherwise, we will only get more, so we better get good at dealing with it. We need tools to deal with the vastness of data, but these tools should bend around humans, rather than requiring humans to conform to them. Moose is such a tool. It offers an extensive, flexible and open-source platform for analyzing data in general and software systems in particular.

Tools are important, but we need to recognize that assessment is a human activity, and that we have to tackle it as such. Analysis tools should merely assist analysts by crunching data only when and how it is required. I call this approach the humane (or agile) assessment.

I recently launched http://humane-assessment.com, a site dedicated to it. Currently, it features only the booklet below. More will come in the near future.

Posted by Tudor Girba at 8 June 2010, 4:19 am comment link

Moose 4.0

We just released Moose Suite 4.0!

You can download it from: http://moosetechnology.org/download

This is the first fully open source release of Moose: it is based on Pharo 1.0 released under MIT, and all its components are available under a BSD/MIT license. Some of the most significant developments are listed below.

Core developments:

  • New meta-meta-model: FM3 implemented in Fame
  • New FAMIX 3 meta-model defined using Fame
  • New query interface for FAMIX
  • FAMIX extensions for Java to support annotations and exceptions
  • Glamour: new generic engine for scripting browsers
  • Merlin: a new framework for defining wizards
  • MooseAlgos: Improved generic algorithms for graph and data manipulation
  • PetitParser: a novel framework for defining modular parsers
  • Improved Mondrian engine for scripting graph-based visualizations
  • Arki: a framework for fast creation of custom reports

Improved user interface:

  • Extensible Moose Finder based on Glamour with integrated visualizations and query facilities
  • Moose meta-model browser
  • Wizard-based importers for Smalltalk and Java (with inFusion)
  • Customizable System Complexity visualization
  • Customizable Distribution Map visualization
  • Several dedicated browsers and viualizations

Better technical infrastructure:

  • Hudson-based integration server
  • Metacello project versioning
  • Fame lint rules

Improved documentation:

Other applications:

  • The Package Blueprint visualization
  • Enriched DSM (eDSM): a suite of tools for detecting dependency cycles
  • SmallDude: duplication detection engine
  • Distribution Map engine

External applications:

  • Aspect Maps: a visual tool for understanding Java aspects
  • Spy: a Smalltalk dynamic analysis instrumentation
  • AutoMoose: an integration of Moose with the command line
  • Moose JEE: a set of tools dedicated to the analysis of JEE systems
  • CAnalyzer: a parser and a set of visualizations to analyze C systems
  • Tighter integration with inFusion for Java parsing

The list of 269 issues fixed in this release can be found at: http://code.google.com/p/moose-technology/issues/list?can=1&q=status=Fixed%20milestone=4.0

Posted by Tudor Girba at 2 June 2010, 11:37 pm with tags moose, assessment comment link
<< 1 2 3 4 5 6 7 8 9 10 >>