SOFTWARE VISUALIZATION IN THE LARGE

Authors
Citation
T. Ball et Sg. Eick, SOFTWARE VISUALIZATION IN THE LARGE, Computer, 29(4), 1996, pp. 33
Citations number
11
Categorie Soggetti
Computer Sciences","Computer Science Hardware & Architecture","Computer Science Software Graphycs Programming
Journal title
ISSN journal
00189162
Volume
29
Issue
4
Year of publication
1996
Database
ISI
SICI code
0018-9162(1996)29:4<33:SVITL>2.0.ZU;2-D
Abstract
Production-sized systems, particularly legacy software, can contain mi llions of lines of code. Even a seemingly simple, small-ream project, such as a spreadsheet, is quite complicated. Understanding, changing, and repairing code in large systems is especially time-consuming and c ostly. Knowledge of code decays as the software ages and the original programmers and design ream move on ro new assignments. The design doc uments are also usually out of date, leaving the code as the only guid e to system behavior. It is tedious to reconstruct complex system beha vior by analyzing code. Perhaps the most difficult software engineerin g projects involve ''programming in the large.'' These large-team proj ects, often in maintenance mode, require enhancements involving subtle changes to complex legacy code written over many years. Under these c ircumstances, programmer productivity is low, changes are more likely to introduce errors, and software projects are often late. Software vi sualization can help software engineers cope with this complexity whil e increasing programmer productivity. Software is intangible, having n o physical shape or size. After it is written, code ''disappears'' int o files kept on disks. Software visualization tools use graphical tech niques to make software visible by displaying programs, program artifa cts, and program behavior. Pictures of the software can help slow know ledge decay by helping project members remember-and new members discov er-how the code works. Three basic properties of software can be visua lized: software structure (as in directed graphs); runtime behavior (a s in algorithm animation); and the code itself (as in pretty printers) . Previous approaches to software visualization, although useful for s mall projects, do not scale to the production-sized systems currently being manufactured. The graphical techniques found in programming, pro gram-visualization, and algorithm-animation environments target small systems. Algorithm visualizations are usually handcrafted and require the designer to understand the code before visualizing it, making this technique infeasible for large systems or tasks involving programmer discovery. The general strategy for large projects is to decompose the project into modules, usually hierarchically, and display each module individually. In practice, this decomposition is often the most diffi cult aspect of the visualization. When software is decomposed, the ''b ig picture'' is lost, often defeating the purpose of the visualization . To address these shortcomings, the authors developed scalable techni ques for visualizing program text, text properties, and relationships involving program text, as text is the dominant medium for implementin g large software systems. They have applied their tools to visualize c ode version history, differences between releases, static properties o f code, code profiling and execution hot spots, and dynamic program sl ices. The systems presented are used daily within Bell Laboratories' d evelopment community, helping software developers work on the SESS pro duct, a real-time switching system containing millions of lines of cod e developed over the past two decades by thousands of software enginee rs. The initial developer feedback has been very positive.