Feb 17, 2009: Announcement of the Coverity Architecture Library

Application Architecture Data of Over 2,500 Open Source Projects Now Available at Coverity Scan Site

Publicly Available Library to Help Developer Community Optimize Use of Open Source and Learn From Successful Architectures

Each of the supplied diagrams in the Library have been generated using Coverity Architecture Analyzer. The tool uses information gathered during the build of a codebase to create a comprehensive list of interdependencies in the code. These dependencies can be investigated interactively with the Architecture Analyzer desktop application. It can also be used to generate diagrams like the one shown on the right.

This diagram shows a version of the Apache webserver, displayed at the directory level, with all dependencies between files rolled up into the file's directory. Some minor directories have been omitted to simplify the diagram. A subset of the dependencies collected from Apache's server/main.c are shown below.

The layout of the diagram is explained in more detail on the Introduction page. Use the tabs above to browse the full collection of diagrams for a wide variety of C and C++ open source projects, By Category or By Name.

Introduction to the Coverity Architecture Library

The Architecture Library includes one or more block diagrams and the associated architecture data files that have been generated for each of over 2,500 open source projects. The images shown in this introduction are for 'Acunia Jam'.

Each block in the diagram represents a summary of all of the cross reference information for a set of functions, variables, structures, and #defines. In the smaller diagrams, consolidation is at the directory level. In the larger diagrams, each block represents one source file. Using the Coverity Architecture Analyzer application, the user can interactively manipulate the diagrams, moving blocks, rearranging layering, or consolidating files together with other logically associated files.

Blocks in the diagram are ordered based on the number of references between blocks. The blocks on the bottom of the diagram are those that the upper blocks build on. This normally results in the lower layers consisting of include files and library functions.

When a project's source files are all in one directory, the directory level diagram will show the project directory, and a block for the system include file directories. Larger projects will show a block for each source directory. In the file level diagrams, system include files have been omitted to save space.

The majority of relationships between files flow downward on the diagrams. The reference arrows pointing downward have been omitted for the sake of readability. Upwards arrows are relationships that are in the opposite direction to most control flow in the program. They can highlight callback mechanisms, circular data structure definitions, circular code references, or conditional compilation, such as where an #ifdef in the lower file is controlled by a #define in a higher file.

Step by step instructions to generate diagrams

  • Request a copy of the Architecture Analyzer application. The program is a Java application, and can be run on Windows, Linux, OSX, and other platforms with Java support. 30 day trial licenses are available to anyone, and open source commiters may request a 1 year, renewable license. Please send requests via the 'Submit a Request' tab.
  • The following instructions describe the process used to create the diagrams published in the Architecture Library. Use these steps to understand the framework of the process, then feel free to explore the many different settings that can be configured while working with the CVA files.
  • Download one or more CVA files from the Architecture Library for open source projects you wish to explore in detail, or create a custom architecture description, or diagrams for.
  • You will receive a license file by email. Place it in the application directory.
  • In the Architecture Analyzer application, select File->New.
  • In the CVA file input field, specify one of the CVA files you downloaded.
  • Set the model to 'Linked'.
  • Press 'Next'.
  • On the Pre-transformations page, add a transformation from '/usr/bulk/*' to '/usr/{1}'. (The CVA files retain full paths for every file touched in the build process, and Pre-transformations allow you to hide irrelevant path information so it does not distract while working with the dataset.)
  • Press 'Next'.
  • On the Excludes page, add an exclusion depending on whether you wish to regenerate the Dir or File diagram. For the Dir diagram, exclude 'home/coverity/*' (internal build data that aren't part of the project itself) for the File diagram, we'll exclude everything except the build directory, to keep out the system and library include files - '!usr/bulk/pkgsrc/*' (The exclamation inverts the expression, so we exclude everything except the one relevant path) NOTE: There is no '/' before these exclude expressions.
  • There are more options on the next page, but they are not changed for these diagrams, so hit 'Finish'.
  • The architecture data is now loaded. You can explore the various Perspectives with the icons down the left edge of the window. To generate diagrams, select the Architecture Perspective (4th icon from the top).
  • Select the 'Create diagram' icon
  • Leave the radio button on 'Initialize diagram based on existing code', and click 'Next'.
  • Set 'Depth of content' to 'All'. For File diagrams, check the 'Include files' checkbox.
  • Click 'Finish'.
  • Display of arrows can be controlled by the settings in the Options menu, at the top right of the diagram. Images can be saved by selection 'Options->Export'.
  • Each block can be repositioned, deleted, grouped, or subsumed into another block by dragging it, and using the options on the context menu (right mouse button).
  • Click on any arrow to see a list of dependencies. Click on any block to see a list of elements in that block.
  • If you create a diagram and wish to have it included in the Architecture Library, releasing it under the Creative Commons Attribution license, please send it in via the 'Submit a Request' tab.
Submit a request
Name:
Email:
Phone:

Type of request:
Comments:

All diagrams and CVA files published as part of the Architecture Library are released under a Creative Commons license. Creative Commons License
Coverity Architecture Library by Coverity Inc. is licensed under a Creative Commons Attribution 3.0 United States License.

If you have any questions or would like to suggest additional projects to be added, please use the form on the 'Submit a Request' tab.


 
     
  “COVERITY'S STATIC SOURCE CODE ANALYSIS HAS PROVEN TO BE AN EFFECTIVE STEP TOWARDS FURTHERING THE QUALITY AND SECURITY OF LINUX.”  
     
     
  ANDREW MORTON,
LEAD KERNEL MAINTAINER
 
 
     
     NEWS
 
  Coverity releases Open Source Report 2008, an in-depth study of almost 10 billion lines of analyzed code.  
 
 
 
  Rung 2: Coverity Venture with U.S. Department of Homeland Security Resolves Quality Issues and Potential Security Vulnerabilities in 11 Major Open-Source Projects

 
 
 
  Open MPI Project Partners with Coverity to Accelerate Advanced Computing Research  
 
 
  Scan now open to Java projects

 
 
 
  Scan Expanded with Graphics Software at Libre Graphics Meeting  
 
 
  Scan Expanded to 150 projects on its anniversary

 
 
 
  Happy First Birthday, Scan  
 
 
  Coverity Names David Maxwell as Open Source Strategist

 
 
 
  Coverity detects a security hole in X Windows that allows any user with a login to gain root privileges  
 
 
  Amanda releases major version (2.5) of the popular backup and recovery software with milestone of 0 Coverity defects  
 
 
  Scan.coverity.com results in over 1000 patches to projects in the first few weeks  
 
 
  internet.com logo
Coverity Study Ranks LAMP Code Quality
 
 
 
  eweek logo
DHS Funds Open-Source Security Project
 
 

 

©2007 COVERITY INCORPORATED | PRIVACY POLICY