What's in a Word: Evaluate
Tags: architecture, basics, metrics, evaluate
Published: 2021-07-19 10:43:31


The next post in this [mini-series](#mini-series) discussing overloaded terms: This time, I'll cover _evaluation_, a term that's often used in the context of systems or architecture reviews.

## The Origin

> The [dictionary.com](http://www.dictionary.com/brows /evaluate) definition states:
> _evaluate_: verb (used with object), evaluated, evaluating.
>
> 1. to determine or set the value or amount of; appraise: to evaluate property.
> 2. to judge or determine the significance, worth, or quality of; assess: to evaluate the results of an experiment.
> 3. Mathematics. to determine or calculate the numerical value of (a formula, function, relation, etc.).
>
> Of French origin, the word _evaluate_, contains the term _value_ as its primary constituent. Value refers to a number or numerical value.


## Evaluate to Determine Value
The (numerical) value is something that e.g. mathematicians and accountants need to determine. If we think about numbers in software architecture, we care about:

* timing, throughput, numbers-of-concurrent-users or similar
_runtime_ metrics
* source code metrics, like size, coupling, test coverage
* effort estimation

However, when we talk about these metrics, we don't speak of "evaluation" but of measuring or estimation.

## Evaluate to Find Problems
In his book [_Evaluating Software Architectures_](https://www.amazon.com/Evaluating-Software-Architectures-Methods-Studies/dp/020170482X), the author Paul Clements uses the term _evaluate_ to identify potential (quality) issues or problems in software architectures. He presents a few methodical approaches to finding such problems, primarily the ATAM method: _architecture tradeoff analysis method_.

Yes, you read that correctly: an _analysis_ method in a book  about _evaluation_.

I always wondered why Paul Clements didn't call his book "Analyzing Software Architectures" (I didn't ask him personally, though).

Let's conclude: **When speaking of _evaluating_, what software architects actually mean is _analyzing_.**

## Evaluate expressions
In programming, we use the term _evaluate_ in context with language expressions or functions.

## Conclusion: Did you mean "Analyze"?
I propose that we (as software developers and architects) better distinguish between analysis and evaluation. In the [aim42](http://aim42.org) method for improving software architectures, these distinction has been made very prominent:

1. The _analyze_ phase of aim42 identifies problems and risks
2. the _evaluate_ phase determines how bad/severe these problems are in business terms. The outcome of this evaluation are numbers (e.g. cost).

### Side note: Numbers and Nanoseconds
The famous and awesome inventor of the compiler, Grace Hopper, gave a talk about [numbers and nanoseconds](http://highscalability.com/blog/2012/3/1/grace-hopper-to-programmers-mind-your-nanoseconds.html) – every developer should see and understand this talk :-).


## Proposal: Focus on Analysis
_Analyze_ (or _assess_) your system and situation to identify problems, risks, symptoms and root-causes. Only later, you may _evaluate_ these issues with respect to the amount of damage, pain or havoc they can cause.


## Thank you
Thanks for reading – and may simplicity and effectiveness be with you and your architectural decisions!

## Related Posts <a name="mini-series"></a>

* [What's in a Word: Quality](https://dev.to/gernotstarke/what-s-in-a-word-quality-48pl)
* [What's in a Word: Consistency](https://dev.to/gernotstarke/what-s-in-a-word-consistency-206b)

## Sources and Further References

* [Software Architecture Glossary](https://leanpub.com/isaqbglossary) by members of the iSAQB association. Extensive (and free!) collection of software architecture terminology, oriented towards the various iSAQB curricula - available as an eBook and online.

* [Evaluating Software Architectures](https://www.amazon.com/Evaluating-Software-Architectures-Methods-Studies/dp/020170482X): a (often quite theoretical) and very early book on identifying problems in software architectures. The primary source for the well-known ATAM method.

### Image Credits
Header-image based upon <a href="https://unsplash.com/@mrthetrain?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Joshua Hoehne</a> on <a href="https://unsplash.com/s/photos/dictionary?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>