Understanding Software
A key problem for software enhancement is simply understanding what one has, and how the elements are connected. SD provides a variety of tools to help programmers "understand".
Code Formatters/Hyperlinked CrossReferences
These tools take a badly formatted source program, and reformat it into a standard style with appropriate indentation for language block structures. This makes source code much easier to read. Since programmers spend 50% of their time reading code, this can yield a significant cost savings. Variants produce hyperlinked cross-reference information embedded in the source, enabling the programmer to easily navigate from what he sees to defininitions and uses.
Source Code Search
These tools enable investigation of large source code bases in multiple languages. After the source code based is indexed, an interactive GUI can be used to quickly find program elements according to language structures, content, or patterns. Because the tool understands language structures, it can accurately locate program constructs even if they are split across line boundaries or spelled in unusual ways. Searches can be applied across multiple languages at the same time, enabling interlanguage linkages to be easily investigated. From a list of matches, the source code can be called up called up for direct inspection. SD can easily configure this to handle even unusual languages.
Feature Location
Test coverage tools are normally used to assessing the completeness of a test suite. Remarkably, they can help a programmer locate where a feature is hiding in a large system. When a (test-coverage) instrumented version of the code is exercised, the locations of the exercise code is capture by the test coverage tool. By exercising a feature of interest, the code that implements that feature is captured by the test coverage. By exercising other features, the test coverage tool captures the code that implements them, and code in common with feature of interest. SD's test coverage tools can compute the difference in test-coverage/feature-locations; by subtracting the locations of non-feature code from locations of the feature code, the test coverage tool can show the programmer just the code for the feature itself. That narrows down the code base to just the section of interest. SD offers test coverage tools for a wide variety of languages.
Architectural Analysis: Component Connectivity
Key to understanding or impact analysis of a large system is understanding how the sofware system elements (code modules, databases, scripts, I/O devices or screens) are connected. Key connections are typically causes-execution, reads/writes data, uses-component. SD's Component Connecivity tool extracts precise relations between the components comprising a software system, and make these easily inspected by business analysts, system architects, and software engineers.
Tools for Specific Programming, Specification, or Hardware Languages
If you are looking for tools relevant to a specific language, you can see an index of languages and the tools provided by Semantic Designs.