Results 1 - 10
of
16
Program Slicing: Methods and Applications
, 2001
"... Program slicing is a viable method to restrict the focus of a task to specific sub-components of a program. Examples of applications include debugging, testing, program comprehension, restructuring, downsizing, and parallelization. This paper discusses different statement deletion based slicing meth ..."
Abstract
-
Cited by 37 (0 self)
- Add to MetaCart
Program slicing is a viable method to restrict the focus of a task to specific sub-components of a program. Examples of applications include debugging, testing, program comprehension, restructuring, downsizing, and parallelization. This paper discusses different statement deletion based slicing methods, together with algorithms and applications to software engineering.
Slicing Concurrent Java Programs
- In Proceedings of the 7th IEEE International Workshop on Program Comprehension
, 1999
"... Although many slicing algorithms have been proposed for object-oriented programs, no slicing algorithm has been proposed which can be used to handle the problem of slicing concurrent Java programs correctly. In this paper, we propose a slicing algorithm for concurrent Java programs. To slice concurr ..."
Abstract
-
Cited by 31 (6 self)
- Add to MetaCart
Although many slicing algorithms have been proposed for object-oriented programs, no slicing algorithm has been proposed which can be used to handle the problem of slicing concurrent Java programs correctly. In this paper, we propose a slicing algorithm for concurrent Java programs. To slice concurrent Java programs, we present a dependence-based representation called multithreaded dependence graph, which extends previous dependence graphs, to represent concurrent Java programs. We also show how static slices of a concurrent Java program can be computed efficiently based on its multithreaded dependence graph. 1 Introduction Java is a new object-oriented programming language and has achieved widespread acceptance because it emphasizes portability. Java has multithreading capabilities for concurrent programming. To provide synchronization between asynchronously running threads, the Java language and runtime system uses monitors. Because of the nondeterministic behaviors of concurrent J...
Applying Slicing Technique to Software Architectures
- In Proc. of 4th IEEE International Conferencei on Engineering of Complex Computer Systems
, 1998
"... Software architecture is receiving increasingly attention as a critical design level for software systems. As software architecture design resources (in the form of architectural specifications) are going to be accumulated, the development of techniques and tools to support architectural understandi ..."
Abstract
-
Cited by 19 (5 self)
- Add to MetaCart
Software architecture is receiving increasingly attention as a critical design level for software systems. As software architecture design resources (in the form of architectural specifications) are going to be accumulated, the development of techniques and tools to support architectural understanding, testing, reengineering, maintenance, and reuse will become an important issue. This paper introduces a new form of slicing, named architectural slicing, to aid architectural understanding and reuse. In contrast to traditional slicing, architectural slicing is designed to operate on the architectural specification of a software system, rather than the source code of a program. Architectural slicing provides knowledge about the high-level structure of a software system, rather than the low-level implementation details of a program. In order to compute an architectural slice, we present the architecture information flow graph which can be used to represent information flows in a software ar...
Slicing aspect-oriented software
- In Proceedings of the 10th IEEE International Workshop on Programming Comprehension
, 2002
"... Program slicing has many applications in software engineering activities including program comprehension, debugging, testing, maintenance, and model checking. In this paper, we propose an approach to slicing aspect-oriented software. To solve this problem, we present a dependencebased representation ..."
Abstract
-
Cited by 19 (1 self)
- Add to MetaCart
Program slicing has many applications in software engineering activities including program comprehension, debugging, testing, maintenance, and model checking. In this paper, we propose an approach to slicing aspect-oriented software. To solve this problem, we present a dependencebased representation called aspect-oriented system dependence graph (ASDG), which extends previous dependence graphs, to represent aspect-oriented software. The ASDG of an aspect-oriented program consists of three parts: a system dependence graph for non-aspect code, a group of dependence graphs for aspect code, and some additional dependence arcs used to connect the system dependence graph to the dependence graphs for aspect code. After that, we show how to compute a static slice of an aspect-oriented program based on the ASDG. 1.
Using Dependence Analysis to Support Software Architecture Understanding
- NEW TECHNOLOGIES ON COMPUTER SOFTWARE
, 1997
"... Software architecture is receiving increasingly attention as a critical design level for software systems. As software architecture design resources (in the form of architectural descriptions) are going to be accumulated, the development of techniques and tools to support architectural understanding ..."
Abstract
-
Cited by 17 (5 self)
- Add to MetaCart
Software architecture is receiving increasingly attention as a critical design level for software systems. As software architecture design resources (in the form of architectural descriptions) are going to be accumulated, the development of techniques and tools to support architectural understanding, testing, reengineering, maintaining, and reusing will become an important issue. In this paper we introduce a new dependence analysis technique, named architectural dependence analysis to support software architecture development. In contrast to traditional dependence analysis, architectural dependence analysis is designed to operate on an architectural description of a software system, rather than the source code of a conventional program. Architectural dependence analysis provides knowledge of dependences for the high-level architecture of a software system, rather than the low-level implementation details of a conventional program.
Dynamic feature traces: Finding features in unfamiliar code
- In Proceedings of the 21st IEEE International Conference on Software Maintenance. 337
"... as conforming ..."
A Slicing-Based Approach to Extracting Reusable Software Architectures
- In Proc. of the 4th European Conference on Software Maintenance and Reengineering
, 2000
"... An alternative approach to developing reusable components from scratch is to recover them from existing systems. Although numerous techniques have been proposed to recover reusable components from existing systems, most have focused on implementation code, rather than software architecture. In this ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
An alternative approach to developing reusable components from scratch is to recover them from existing systems. Although numerous techniques have been proposed to recover reusable components from existing systems, most have focused on implementation code, rather than software architecture. In this paper, we apply architectural slicing to extract reusable architectural elements (i.e., components and connectors) from the existing architectural specification of a software system. Unlike traditional program slicing, which operates on the source code of a program to provide the low-level implementation details of the program, architectural slicing directly operates on the architectural specification of a software system, and therefore can provide useful knowledge about the high-level architecture of the system. 1 Introduction Software reusability is widely accepted as the key to improving both the quality of software and the productivity of software engineers. Software reuse can take man...
Slicing Software Architectures
, 1997
"... This paper introduces a new form of slicing, named architectural slicing, to aid architectural understanding and reuse. In contrast to traditional slicing, architectural slicing is designed to operate on the architectural description of a software system, rather than the source code of a program. Ar ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
This paper introduces a new form of slicing, named architectural slicing, to aid architectural understanding and reuse. In contrast to traditional slicing, architectural slicing is designed to operate on the architectural description of a software system, rather than the source code of a program. Architectural slicing provides knowledge about the high-level architecture of a software system, rather than the low-level implementation details of a program. 1 Introduction Software architecture is receiving increasingly attention as a critical design level for software systems [16]. The software architecture of a system defines its highlevel structure, exposing its gross organization as a collection of interacting components. A well-defined architecture allows an engineer to reason about system properties at a high level of abstraction. Architectural description languages (ADLs) are formal languages that can be used to represent the architecture of a software system. They focus on the hig...
Describing Dependencies in Component Access Points
- Procs of the 23rd Intern. Conf. on Software Engineering, ICSE’01
, 2001
"... Developing component-based systems is problematical without understanding potential component dependencies. A significant underlying challenge is making available ways to determine and represent those dependencies and mechanisms to deal with them. This paper discusses issues related to component dep ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
Developing component-based systems is problematical without understanding potential component dependencies. A significant underlying challenge is making available ways to determine and represent those dependencies and mechanisms to deal with them. This paper discusses issues related to component dependencies and introduces an approach to describe what can happen (in term of actions/dependencies) after a particular component's access points (services) are called.
Improved Verification of Hardware Designs through Antecedent Conditioned Slicing
- International Journal on Software Tools for Technology Transfer (STTT
, 2005
"... Static slicing has shown itself to be a valuable tool, facilitating the verification of hardware designs. In this paper, we present a sharpened notion, antecedent conditioned slicing that provides a more effective abstraction for reducing the size of the state space. In antecedent conditioned slicin ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
Static slicing has shown itself to be a valuable tool, facilitating the verification of hardware designs. In this paper, we present a sharpened notion, antecedent conditioned slicing that provides a more effective abstraction for reducing the size of the state space. In antecedent conditioned slicing, extra information from the antecedent is used to permit greater pruning of the state space. In a previous version of this paper, we applied antecedent conditioned slicing to safety properties written in propositional logic, of the form G(antecedent = ⇒ consequent). In this paper, we use antecedent conditioned slicing to handle safety and bounded liveness property specifications written in temporal logic. We present a theoretical justification of our technique. We provide experimental results on a Verilog RTL implementation of the USB 2.0 functional core, which is a large design with about 1100 state elements (10 331 states). The results demonstrate that the technique provides significant performance benefits over static program slicing using state-of-the-art model checkers.

