Results 1 - 10
of
26
LaSSIE: a Knowledge-Based Software Information System
, 1991
"... Invisibility is an inherent and significant problem in the task of developing large software systems. There are no direct solutions to this problem ..."
Abstract
-
Cited by 160 (7 self)
- Add to MetaCart
Invisibility is an inherent and significant problem in the task of developing large software systems. There are no direct solutions to this problem
Implementation and Performance of Integrated Application-Controlled Caching, Prefetching and Disk Scheduling
, 1996
"... Although file caching and prefetching are known techniques to improve the performance of file systems, little work has been done on intergrating caching and prefetching. Optimal prefetching is nontrivial because prefetching may require early cache block replacements. Moreover, the tradeoff between t ..."
Abstract
-
Cited by 100 (8 self)
- Add to MetaCart
Although file caching and prefetching are known techniques to improve the performance of file systems, little work has been done on intergrating caching and prefetching. Optimal prefetching is nontrivial because prefetching may require early cache block replacements. Moreover, the tradeoff between the latency-hiding benefits of prefetching and the increase in the number of fetches required must be considered. This paper presents the design and implementation of a file system that integrates application-controlled caching, prefetching and disk scheduling. We use a two-level cache management strategy. The kernel uses the LRU-SP policy [CFL94a] to allocate blocks to processes, and each process uses the controlledaggressive policy, an algorithm previously shown in a theoretical sense to be near-optimal, for managing its cache. Each process then improves its disk access latency by submitting its prefetches in batches and schedules the requests in each batch to optimize disk access performa...
GENOA -- A customizable language- and front-end independent code analyzer
- IN PROCEEDINGS OF THE 14TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING
, 1992
"... Programmers working on large software systems spend a great deal of time examining code and trying to understand it. Code Analysis tools (e.g., cross referencing tools such as CIA and Cscope) can be very helpful in this process. In this paper we describe genoa, an application generator that can pro ..."
Abstract
-
Cited by 62 (5 self)
- Add to MetaCart
Programmers working on large software systems spend a great deal of time examining code and trying to understand it. Code Analysis tools (e.g., cross referencing tools such as CIA and Cscope) can be very helpful in this process. In this paper we describe genoa, an application generator that can produce a whole range of useful code analysis tools. genoa is designed to be language- and front-end independent; it can be interfaced to any front-end for any language that produces an attributed parse tree, simply by writing an interface specification. While genoa programs can perform arbitrary analyses on the parse tree, the genoa language has special, compact iteration operators that are tuned for expressing simple, polynomial time analysis programs; in fact, there is a useful sublanguage of genoa that can express precisely all (and only) polynomial time (PTIME) analysis programs on parse-trees. Thus, we argue that genoa is a convenient "little language" to implement simple, fast analysis t...
Software Interconnection Models
- Proceedings of the 9th International Conference on Software Engineering
, 1987
"... We present a formulation of interconnection models and present the unit and syntactic models --- the primary models used for managing the evolution of large software systems. We discuss various tools that use these models and evaluate how well these models support the management of system evolution. ..."
Abstract
-
Cited by 55 (14 self)
- Add to MetaCart
We present a formulation of interconnection models and present the unit and syntactic models --- the primary models used for managing the evolution of large software systems. We discuss various tools that use these models and evaluate how well these models support the management of system evolution. We then introduce the semantic interconnection model. The semantic interconnection model incorporates the advantages of the unit and syntactic interconnection models and provides extremely useful extensions to them. By refining the grain of interconnections to the level of semantics (that is, to the predicates that define aspects of behavior) we provide tools that are better suited to manage the details of evolution in software systems and that provide a better understanding of the implications of changes. We do this by using the semantic interconnection model to formalize the semantics of program construction, the semantics of changes, and the semantics of version equivalence and compatibi...
Support for Maintaining Object-Oriented Programs
- IEEE Transactions on Software Engineering
, 1992
"... In this paper, we explain how inheritance and dynamic binding make object-oriented programs difficult to maintain, and we give a concrete example of the problems that arise. We show that the difficulty lies in the fact that conventional tools are poorly suited for work with object-oriented languages ..."
Abstract
-
Cited by 39 (5 self)
- Add to MetaCart
In this paper, we explain how inheritance and dynamic binding make object-oriented programs difficult to maintain, and we give a concrete example of the problems that arise. We show that the difficulty lies in the fact that conventional tools are poorly suited for work with object-oriented languages, and we argue that semantics-based tools are essential for effective maintenance of object-oriented programs. We then describe a system we have developed for working with C++ programs. This system comprises a relational database system for information about programs, and an interactive database interface integrated with a text editor. We describe our system architecture, detail the database relations, provide informal evidence on the system's effectiveness, and compare it to other research with similar goals. Keywords: software maintenance, object-oriented languages and environments, programming environments, semantic analysis of code, software representation in relational databases, C++. ...
Graphically displaying text
- Journal of Computational and Graphical Statistics
, 1994
"... There are many examples of text databases including literary corpora and computer source code where statistics are associated with each line. A visualization technique for this class of data represents the text lines as thin colored rows within columns. The position, length, and indentation of each ..."
Abstract
-
Cited by 37 (7 self)
- Add to MetaCart
There are many examples of text databases including literary corpora and computer source code where statistics are associated with each line. A visualization technique for this class of data represents the text lines as thin colored rows within columns. The position, length, and indentation of each row corresponds to that of the text. The color of each row is determined by a statistic associated with each line. The display looks like a miniature picture of the text with the color showing the spatial distribution of the statistic within the text. Using this technique, SeeSoft™, a dynamic graphics software tool, can easily display 50,000 lines of text simultaneously on a high-resolution monitor. 1.
Conceptual Module Querying for Software Reengineering
- In Proceedings of the 20th International Conference on Software Engineering
, 1998
"... Many tools have been built to analyze source code. Most of these tools do not adequately support reengineering activities because they do not allow a software engineer to simultaneously perform queries about both the existing and the desired source structure. This paper introduces the conceptual mod ..."
Abstract
-
Cited by 27 (1 self)
- Add to MetaCart
Many tools have been built to analyze source code. Most of these tools do not adequately support reengineering activities because they do not allow a software engineer to simultaneously perform queries about both the existing and the desired source structure. This paper introduces the conceptual module approach that overcomes this limitation. A conceptual module is a set of lines of source that are treated as a logical unit. We show how the approach simplifies the gathering of source information for reengineering tasks, and describe how a tool to support the approach was built as a front-end to existing source analysis tools. Keywords Source code analysis, software reuse, code scavenge, software structure, modularization, reverse engineering 1 INTRODUCTION Many reengineering activities performed by software engineers require reasoning about the source code for the system. Part of the reengineering process, for instance, may involve the identification and formation of new software c...
Lightweight Structural Summarization as an Aid to Software Evolution
, 1996
"... To effectively perform a change to an existing software system, a software engineer needs to have some understanding of the structure of the system. All too often, though, an engineer must proceed to change a system without sufficient structural information because existing software understanding te ..."
Abstract
-
Cited by 23 (3 self)
- Add to MetaCart
To effectively perform a change to an existing software system, a software engineer needs to have some understanding of the structure of the system. All too often, though, an engineer must proceed to change a system without sufficient structural information because existing software understanding techniques are unable to help the engineer acquire the desired knowledge within the time and cost constraints specified for the task. The thesis of this research is that an approach based on summarization can overcome the limitations associated with existing approaches, enabling an engineer to assess, plan, and execute changes to a software system more effectively. Summarization involves the production of overviews of vast amounts of user-selected information in a timely manner. I describe two tech...
Asking and answering questions during a programming change task
- In Transactions on Software Engineering (TSE
, 2008
"... Despite significant existing empirical work, little is known about the specific kinds of questions programmers ask when evolving a code base. Understanding precisely what information a programmer needs about the code base as they work is key to determining how to better support the activity of progr ..."
Abstract
-
Cited by 20 (2 self)
- Add to MetaCart
Despite significant existing empirical work, little is known about the specific kinds of questions programmers ask when evolving a code base. Understanding precisely what information a programmer needs about the code base as they work is key to determining how to better support the activity of programming. The goal of this research is to provide an empirical foundation for tool design based on an exploration of what programmers need to understand about a code base and of how they use tools to discover that information. To this end, we undertook two qualitative studies of programmers performing change tasks to medium to large sized programs. One study involved newcomers working on assigned change tasks to a mediumsized code base. The other study involved industrial programmers working on their own change tasks to code with which they had experience. The focus of our analysis has been on what information a programmer needs to know about a code base while performing a change task and also on how they go about discovering that information. Based on a systematic analysis of the data from these user studies as well as an analysis of the support that current programming tools provide for these activities, this research makes four key contributions: (1) a catalog of 44 types of questions programmers ask, (2) a categorization of those questions into four categories based on the kind and scope of information needed to answer a question, (3) a description of important context for the process of answering questions, and (4) a description of support that is missing from current programming tools.
The Performance Impact of Kernel Prefetching on Buffer Cache Replacement Algorithms
- In SIGMETRICS
, 2005
"... Abstract—A fundamental challenge in improving file system performance is to design effective block replacement algorithms to minimize buffer cache misses. Despite the well-known interactions between prefetching and caching, almost all buffer cache replacement algorithms have been proposed and studie ..."
Abstract
-
Cited by 19 (5 self)
- Add to MetaCart
Abstract—A fundamental challenge in improving file system performance is to design effective block replacement algorithms to minimize buffer cache misses. Despite the well-known interactions between prefetching and caching, almost all buffer cache replacement algorithms have been proposed and studied comparatively, without taking into account file system prefetching, which exists in all modern operating systems. This paper shows that such kernel prefetching can have a significant impact on the relative performance in terms of the number of actual disk I/Os of many well-known replacement algorithms; it can not only narrow the performance gap but also change the relative performance benefits of different algorithms. Moreover, since prefetching can increase the number of blocks clustered for each disk I/O and, hence, the time to complete the I/O, the reduction in the number of disk I/Os may not translate into proportional reduction in the total I/O time. These results demonstrate the importance of buffer caching research taking file system prefetching into consideration and comparing the actual disk I/Os and the execution time under different replacement algorithms. Index Terms—Metrics/measurement, operating systems, file systems management, operating systems performance, measurements, simulation. 1

