6Tools for Software Architects

Various categories of tools are available that support software architects’ tasks. This section introduces these categories and provides decision criteria for the selection of specific and/or typical tools.

6.1Integration with the iSAQB curriculum

An extract from the Tools for software architects section of the iSAQB curriculum [isaqb curriculum] is provided below.

6.1.1Learning goals

6.2General information

You don’t need to know specific examples of typical tools or products to take the CPSA-F examination. The examination deals primarily with tool categories and decision criteria (in real life, software architects naturally have to learn to use such tools appropriately, but that is not what this book is about). The examples of tools, mentioned in this book, were considered to be up-to-date and correct at the time of preparation of the book.

As a software architect you will often be confronted with typical “across-the-board” requirements with regard to your choice of tool types. Of course, such tools should perform their tasks comprehensively and reliably, but with minimal impacts on other areas.

In our opinion, there are two other general aspects of tool choices that deserve particular attention. These are:

6.2.1Costs

Commercial tools are available at a wide range of prices and with varying costs structures. Payment models include one-time purchase for a flat-rate price, prices that depend on the system size or the operating and/or development environment, License price plus regular maintenance charges, leasing, and so on. Selecting an appropriate licensing model is part of the tool selection process.

In addition to the cost of the software itself, you also have to consider administration and operating costs, as well as the cost of learning and training. Training costs alone can far exceed the purchase price of many software licenses.

6.2.2Licenses and licensing conditions

As a software architect, you need to be aware of the prevailing license conditions, particularly for the use of free ware and open source tools.

Without going into detail on licensing law, the following sections list some of the available options:

The range of legal options is extensive, and is not always easy to understand or those without appropriate specialist knowledge. If you are in any doubt, always seek legal advice prior to using a tool, a framework, or a library. Most large software organizations have their own license management departments to deal with these kinds of issues.

Warning: In the case of license violations, you can be sued (or warned) by malevolent users of your system, competitors, rivals, or others. This usually results in significant costs and a lot of effort. Always take this risk seriously and clarify the licensing conditions before using external tools, libraries, and frameworks. Open-source tools especially have highly restrictive usage clauses when it comes to commercial use of products created with them.

6.3Requirements management tools

Requirements management is performed throughout the system development lifecycle, both for new developments and changes to existing systems.

In addition to the collection of requirements, the process also includes measures for their management. The aim of requirements management is to achieve a common understanding of the system under development for the contractor and the customer. The resulting documentation often serves as a contractual basis for the subsequent implementation, and therefore needs to have a predefined structure.

6.3.1Requirements and decision criteria

6.3.2Challenges faced by requirements management tools

6.3.3Examples

6.4Modeling tools

Modeling tools can depict functional and/or technical models of software and requirements, and problem domains. They assist in creating and maintaining (mainly) graphical abstractions of reality.

Such tools can, for example, provide support starting with (abstract) business processes via stepwise refinement of more and more detailed representations of the respective circumstances.

6.4.1Requirements and decision criteria

6.4.2Challenges faced by modeling tools

6.4.3Examples

6.5Generation tools

Generation tools can generate any artifacts on the basis of abstract descriptions. For example:

6.5.1Requirements and decision criteria

6.5.2Challenges faced by code generators

Freely definable meta-models and generation rules offer increased flexibility, but at the expense of simplicity.

6.5.3Examples

6.6Static code analysis tools

When analyzed statically, the source text is subjected to a range of formal checks that scan the application for irregularities and errors. This can take place manually or with tool support.

Tools can help with the evaluation of various quality characteristics (such as complexity) in existing software systems. By identifying dependencies, static code analysis tools can also be used to optimize runtime efficiency. They can also determine whether the implementation complies with the requirements of the architecture and, for example, where permissible dependency rules have been adhered to.

6.6.1Requirements and decision criteria

6.6.2Challenges faced by static code analysis tools

6.6.3Examples

Static analysis:

6.7Dynamic analysis tools

Dynamic analysis tools examine the runtime behavior of software. By analyzing and comparing running programs they can help developers to identify issues and understand processes.

The aims of dynamic analysis include:

6.7.1Requirements and decision criteria

6.7.2Challenges faced by dynamic analysis tools

6.7.3Examples

6.8Build management tools

Build management tools enable versioning automation, compilation, packaging, testing, and inspection tasks for source code and associated artifacts.

These include:

6.8.1Requirements and decision criteria

6.8.2Challenges faced by build management tools

6.8.3Examples

6.9Configuration and version management tools

A configuration management tool primarily supports the software architect in the following tasks:

6.9.1Requirements and decision criteria

6.9.2Challenges faced by configuration and version management tools

6.9.3Examples

6.10Code management tools

Code management tools support architects and developers in the creation, editing, and comprehension of source code. (Version and configuration management are addressed in Section 6.9.)

This category of tools includes:

6.10.1Challenges faced by code management tools

6.10.2Examples

6.11Testing tools

Automated unit and integration tests provide software architects and developers with early feedback on the structure and internal interfaces of their building blocks and how they collaborate with each other. Tests are often the first users of newly created building blocks, and can provide valuable information on their creation, evolution, and improvement. Unit and integration test tools form part of:

6.11.1Requirements and decision criteria

6.11.2Challenges faced by test tools

6.11.3Examples

An extensive overview is available at http://www.opensourcetesting.org.

6.12Documentation tools

Documentation tools are intended to support software architects and developers in the long-term communication of decisions, structures, concepts, and other information. This tool category includes text-based and graphical tools for developing, maintaining, and generating documents.

6.12.1Requirements and decision criteria

6.12.2Challenges faced by documentation tools

6.12.3Examples

6.13Test your knowledge

Here are some detailed excerpts from the Tools for software architects section of the iSAQB curriculum [isaqb curriculum] to help you consolidate what you have learned.