首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 15 毫秒
1.
Program understanding is an essential part of all software maintenance and enhancement activities. As currently practiced, program understanding consists mainly of code reading. The few automated understanding tools that are actually used in industry provide helpful but relatively shallow information, such as the line numbers on which variable names occur or the calling structure possible among system components. These tools rely on analyses driven by the nature of the programming language used. As such, they are adequate to answer questions concerning implementation details, so called what questions. They are severely limited, however, when trying to relate a system to its purpose or requirements, the why questions. Application programs solve real‐world problems. The part of the world with which a particular application is concerned is that application's domain. A model of an application's domain can serve as a supplement to programming‐language‐based analysis methods and tools. A domain model carries knowledge of domain boundaries, terminology, and possible architectures. This knowledge can help an analyst set expectations for program content. Moreover, a domain model can provide information on how domain concepts are related. This article discusses the role of domain knowledge in program understanding. It presents a method by which domain models, together with the results of programming‐language‐based analyses, can be used to answers both what and why questions. Representing the results of domain‐based program understanding is also important, and a variety of representation techniques are discussed. Although domain‐based understanding can be performed manually, automated tool support can guide discovery, reduce effort, improve consistency, and provide a repository of knowledge useful for downstream activities such as documentation, reengineering, and reuse. A tools framework for domain‐based program understanding, a dowser, is presented in which a variety of tools work together to make use of domain information to facilitate understanding. Experience with domain‐based program understanding methods and tools is presented in the form of a collection of case studies. After the case studies are described, our work on domain‐based program understanding is compared with that of other researchers working in this area. The paper concludes with a discussion of the issues raised by domain‐based understanding and directions for future work.  相似文献   

2.
Program understanding is an essential part of all software maintenance and enhancement activities. As currently practiced, program understanding consists mainly of code reading. The few automated understanding tools that are actually used in industry provide helpful but relatively shallow information, such as the line numbers on which variable names occur or the calling structure possible among system components. These tools rely on analyses driven by the nature of the programming language used. As such, they are adequate to answer questions concerning implementation details, so called what questions. They are severely limited, however, when trying to relate a system to its purpose or requirements, the why questions. Application programs solve real‐world problems. The part of the world with which a particular application is concerned is that application's domain. A model of an application's domain can serve as a supplement to programming‐language‐based analysis methods and tools. A domain model carries knowledge of domain boundaries, terminology, and possible architectures. This knowledge can help an analyst set expectations for program content. Moreover, a domain model can provide information on how domain concepts are related. This article discusses the role of domain knowledge in program understanding. It presents a method by which domain models, together with the results of programming‐language‐based analyses, can be used to answers both what and why questions. Representing the results of domain‐based program understanding is also important, and a variety of representation techniques are discussed. Although domain‐based understanding can be performed manually, automated tool support can guide discovery, reduce effort, improve consistency, and provide a repository of knowledge useful for downstream activities such as documentation, reengineering, and reuse. A tools framework for domain‐based program understanding, a dowser, is presented in which a variety of tools work together to make use of domain information to facilitate understanding. Experience with domain‐based program understanding methods and tools is presented in the form of a collection of case studies. After the case studies are described, our work on domain‐based program understanding is compared with that of other researchers working in this area. The paper concludes with a discussion of the issues raised by domain‐based understanding and directions for future work. This revised version was published online in June 2006 with corrections to the Cover Date.  相似文献   

3.
The automated recognition of abstract high-level conceptual information or concepts, which can greatly aid the understanding of programs and therefore support many software maintenance and reengineering activities, is considered. An approach to automated concept recognition and its application to maintenance-related program transformations are described. A unique characteristic of this approach is that transformations of code can be expressed as transformations of abstract concepts. This significantly elevates the level of transformation specifications  相似文献   

4.
A model for BPEL-like languages   总被引:3,自引:0,他引:3  
Web service is increasingly being applied in solving many universal interoperability problems. Business Process Execution Language (BPEL) is a de facto standard for specifying the behavior of business processes. It contains several interesting features, including scope-based compensation, fault handling and shared-labels for synchronization. In this paper we explore an observation-oriented model for BPEL-like languages, which can be used to study program equivalence. The execution states of a program are divided into five types: completed state, waiting state and divergent state, as well as error state and undo state. The last two states are especially for dealing with compensation and fault handling. Based on the formalized model, a set of algebraic laws is investigated, including traditional laws and BPEL featured laws. The concept of guarded choice is also introduced in this model, which can be used to support the transformation of a parallel program into the form of guarded choice. Two special scopes are introduced: canonical structure and compensation structure, which are used to eliminate undo and compensation construct from finite processes.  相似文献   

5.
Smalltalk程序理解辅助系统BDCom-ST   总被引:2,自引:0,他引:2  
Smalktalk语言的概念和语法结构简洁,程序易于理解,但它的某些特性(如动态绑定、动态类型)仍然对Smalltalk程序的理解构成障碍,而且随着应用系统复杂性增大以及类库的增长,对Smalltalk程序理解的难度也随之增大,对此,作者介绍了一个Smalltakl程序辅助理解系统BDCom-ST,它在分析Smalltalk程序的基础上,利用类型推导技术来解决动态行为的理解问题,该系统可从源程序逆  相似文献   

6.
This note presents a new signal-flow graph method for obtaining all canonical realizations of any single-input, single-output transfer function. The canonical realizations are represented by integer codes which can be generated with a simple computer program.  相似文献   

7.
The development of a computerized system for the assistance of a nutritional support service (NSS) is described. A cooperative program exists between the NSS and the Department of Laboratory Medicine, whose computer system is used to support the activities of the NSS. A record is maintained on each patient followed by the NSS (15-20 patients per day). Demographic and anthropometric data, nutritional disorder(s), laboratory data, nutritional support therapy, patient response criteria, and concomitant drug therapy are components of the computer program. Computer reports are provided to the NSS for daily rounds. An automated nutritional assessment program has also been developed. Computer assistance has proven to be a valuable tool to support the patient care, education and research program of the NSS.  相似文献   

8.
Novice programmers struggle to understand introductory programming concepts and this difficulty, associated with learning to program, contributes mainly to the lack of interest in the field of Computer Science at tertiary level. Programming assistance tools have been used to assist novice programmers extensively at education institutions. A programming assistance tool (PAT) is a software program that can be used by novice programmers to learn how to program and/or improve their understanding of programming concepts.This research proposes that novice programmers, specifically Information Technology (IT) scholars in South African secondary schools, could be supported by PATs. The main objective of this research was to determine whether the use of a PAT impacted IT scholars' understanding of programming concepts and their motivation towards programming in general. Criteria for the selection of PATs were derived from the programming difficulties identified in literature and from surveys to IT teachers and scholars. The selection criteria were grouped into programming knowledge and programming skills categories. Existing PATs were evaluated using the selection criteria and three PATs, namely, RoboMind, Scratch and B#, were selected for evaluation in this research study. A convenience sample of schools participated in the study. The three PATs provided different approaches while being able to support the Delphi programming language used in schools that participated in the study.The findings of this research indicated that, although scholars perceived the PATs to be useful in the explanation of certain of the programming concepts, there was no conclusive evidence that IT scholars who used a PAT had a significantly better understanding of programming concepts and motivation towards programming than scholars who did not use a PAT. Participant feedback was used to identify the strengths and shortcomings of the three PATs and to provide recommendations for the development of future PATs specifically designed to support IT scholars.  相似文献   

9.
程序切片是一种传统的程序分析方法:通过去掉无关代码,获取可能影响某行代码的子集。程序切片在程序理解、软件测试和程序调试等众多领域有着广泛的应用。随着互联网技术的发展,JavaScript语言得到广泛应用,但针对该语言的切片工具非常有限。本文针对JavaScript语言的特殊性,提出一种基于程序依赖图的JavaScript程序切片算法,并基于WALA程序分析框架实现了该切片算法。试验结果表明,本文的切片算法可以得到较为理想的切片结果。试验中切片平均大小约为原程序代码的70%,较手工切片仅有约19%冗余。  相似文献   

10.
程序理解是一种需要高度智力活动的过程,其效率取决于所理解的程序、理解人员的领域经验和所采用的辅助机制。为了保证该活动的准确性和高效性,理解工具的半自动化支持是关键的。着重探讨和研究基于文法高级概念化抽象的程序理解,从不同层次不同方面来得到源程序的设计意图,实现语言平台的无关性。  相似文献   

11.
《Computers & Education》1988,12(1):163-168
Critical thinking involves a process of understanding data, analysis and criticism. Two computer programs, SEEN and ORGANIZE, illustrate how such a complex process can be modelled without making it reductively simple. Both programs build on the notion that simply asking good questions may be valuable to a learner in critical thinking. Open-ended questions are individualized according to the student's interest and task; the model is flexible, allowing movement and a choice of activities. Instead of providing predetermined answers, the programs encourage people to serve as models and responders and support the learner's growing ability to criticise herself and edit her work.ORGANIZE is a pre-writing program that asks the writer to define Basic Terms that are then inserted in segments on Development, on Audience Analysis to anticipate audience needs, on Argument, and on Approaches.SEEN is a program to help students learn actively: seeing more in what they observe and read, forming hypotheses based on their personal response, and then sharing those ideas with other students for comment and review. The original program helps students analyze a character in literature, but a shell program allows a teacher to load other tutorials (for example, reviewing historical cause and effect, or analyzing stylistic characteristics of an art work) or create their own.  相似文献   

12.
We describe our use of contradictions, a concept central to a popular formulation of activity theory, to derive requirements of a new technical system to support an administrative system. Contradictions are the underlying causes of disturbances in the free operation of workplace activities. We argue and demonstrate that the resolution of such contradictions can be used as the basis for the (user-centred) design of a new system. We conclude that contradictions are both conceptually valuable in understanding the design of systems and are of considerable practical use.  相似文献   

13.
The purpose of this paper is to study how Intelligent Agents (IAs) can be used to facilitate electronic trading. An IA is a software program designed for performing a specific task based on its own knowledge and the message it received. Given the increased complexity of Internet services, many IAs are useful to make electronic markets more effective.In the paper, activities and structures of electronic markets are reviewed and discussed with respect to the coordination mechanism and primitive activities. This is followed by an analysis of IAs useful for electronic commerce (EC). A three-layer architecture for organizing IAs for EC is developed. Finally, application of the framework to support EC and related issues are presented. The findings are useful for implementing a more effective environment for EC.  相似文献   

14.
ContextMetamodels are cornerstones of various metamodeling activities. Such activities consist of, for instance, transforming models into code or comparing metamodels. These activities thus require a good understanding of a metamodel and/or its parts. Current metamodel editing tools are based on standard interactive visualization features, such as physical zooms.ObjectiveHowever, as soon as metamodels become large, navigating through large metamodels becomes a tedious task that hinders their understanding. So, a real need to support metamodel comprehension appears.MethodIn this work we promote the use of model slicing techniques to build interactive visualization tools for metamodels. Model slicing is a model comprehension technique inspired by program slicing. We show how the use of Kompren, a domain-specific language for defining model slicers, can ease the development of such interactive visualization features.ResultsWe specifically make four main contributions. First, the proposed interactive visualization techniques permit users to focus on metamodel elements of interest, which aims at improving the understandability. Second, these proposed techniques are developed based on model slicing, a model comprehension technique that involves extracting a subset of model elements of interest. Third, we develop a metamodel visualizer, called Explen, embedding the proposed interactive visualization techniques. Fourth, we conducted experiments. showing that Explen significantly outperforms EcoreTools, in terms of time, correctness, and navigation effort, on metamodeling tasks.ConclusionThe results of the experiments, in favor of Explen, show that improving metamodel understanding can be done using slicing-based interactive navigation features.  相似文献   

15.
In this paper we explore the relationship between social learning environments and the technological ecologies that practitioners, learners, and researchers develop to sustain them. Through an examination of ethnographic research conducted at an urban after-school learning program we show how social, technological and power infrastructures influence learning and interaction in this setting. Adopting a holistic approach we examine how technologies are integrated into activities in this program to support the learning of the after-school youth. We emphasize both positive and negative infrastructures that contribute to the learning environment and discuss how identifying these infrastructures are one of the first steps towards understanding and informing technology design in informal learning settings.  相似文献   

16.
SAPHIRE (Semantic and Probabilistic Heuristic Information Retrieval Environment) is an experimental computer program designed to test new techniques in automated information retrieval in the biomedical domain. A main feature of the program is a concept-finding algorithm that processes free text to find canonical concepts. The algorithm is designed to handle a wide variety of synonyms and convert them to canonical form. This allows natural language to be used for query input and also serves as the basis for a new approach to automatic indexing based on a combination of probabilistic and linguistic methods.  相似文献   

17.
Object-oriented languages are widely used in software development to help the developer in using dynamic data structures which evolve during program execution. However, the task of program comprehension and performance analysis necessitates the understanding of data structures used in a program. Particularly, in understanding which application programming interface (API) objects are used during runtime of a program. The objective of this work is to give a compact view of the complete program code information at a single glance and to provide the user with an interactive environment to explore details of a given program. This work presents a novel interactive visualization tool for collection framework usage, in a Java program, based on hierarchical treemap. A given program is instrumented during execution time and data recorded into a log file. The log file is then converted to extensible markup language (XML)-based tree format which proceeds to the visualization component. The visualization provides a global view to the usage of collection API objects at different locations during program execution. We conduct an empirical study to evaluate the impact of the proposed visualization in program comprehension. The experimental group (having the proposed tool support), on average, completes the tasks in 45% less time as compared to the control group (not provided with the proposed tool). Results show that the proposed tool enables to comprehend more information with less effort and time. We have also evaluated the performance of the proposed tool using 20 benchmark software tools. The proposed tool is anticipated to help the developer in understanding Java programs and assist in program comprehension and maintenance by identifying APIs usage and their patterns.  相似文献   

18.
This paper concerns redundancies in representation of linear genetic programming (GP). We identify the causes of redundancies in linear GP and propose a canonical transformation that converts original linear representations into a canonical form in which structural redundancies are removed. In canonical form, we can easily verify whether two representations represent an identical program. We then discuss exploitation of the proposed canonical transformation, and demonstrate a way to improve search performance of linear GP by avoiding redundant individuals. Experiments were conducted with an image feature synthesis problem. Firstly, we have verified that there are really a lot of redundancies in conventional linear GP. We then investigate the effect of avoiding redundant individuals. The results yield that linear GP with avoidance of redundant individuals obviously outperforms conventional linear GP.  相似文献   

19.
《Computers & Education》2004,42(3):289-314
Collaborative learning is widely used in elementary classrooms. However, when working without technological support, some problems can be detected. We describe how weaknesses in coordination, communication, organization of materials, negotiation, interactivity and lack of mobility can be solved with a mobile computer supported collaborative learning environment with Handhelds interconnected by a wireless network. The collaborative activities, analyzed with and without technological support, are math and language activities for 6- and 7-year old children. The results of our work identify an effective way of using handheld computers to support collaborative learning activities that address the above mentioned weaknesses.  相似文献   

20.
Program understanding can be assisted by tools that match patterns in the program source. Lexical pattern matchers provide excellent performance and ease of use, but have a limited vocabulary. Syntactic matchers provide more precision, but may sacrifice performance, robustness, or power. To achieve more of the benefits of both models, we extend the pattern syntax of AWK to support matching of abstract syntax trees, as demonstrated in a tool called TAWK. Its pattern syntax is language‐independent, based on abstract tree patterns. As in AWK, patterns can have associated actions, which in TAWK are written in C for generality, familiarity, and performance. The use of C is simplified by high‐level libraries and dynamic linking. To allow processing of program files containing non‐syntactic constructs such as textual macros, mechanisms have been designed that allow matching of ‘language‐like’ macros in a syntactic fashion. We survey and apply prototypical approaches to concretely demonstrate the tradeoffs in program processing. Our results indicate that TAWK can be used to quickly and easily perform a variety of common software engineering tasks, and the extensions to accommodate non‐syntactic features significantly extend the generality of syntactic matchers. Copyright © 2005 John Wiley & Sons, Ltd.  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号