115 research outputs found
Symbolic Execution for Runtime Error Detection and Investigation of Refactoring Activities Based on a New Dataset
It is a big challenge in software engineering to produce huge, reliable and robust software systems.
In industry, developers typically have to focus on solving problems quickly.
The importance of code quality in time pressure is frequently secondary.
However, software code quality is very important, because a too complex, hard-to-maintain code results in more bugs, and makes further development more expensive.
The research work behind this thesis is inspired by the wish to develop high quality software systems in industry in a more effective and easier way to make the lives of customers and eventually end-users more comfortable and more effective.
The thesis consists of two main topics: the utilization of symbolic execution for runtime error detection and the investigation of practical refactoring activity.
Both topics address the area of program source code quality.
Symbolic execution is a program analysis technique which explores the possible execution paths of a program by handling the inputs as unknown variables (symbolic variables).
The main usages of symbolic execution are generating inputs of program failure and high-coverage test cases. It is able to expose defects that would be very difficult and timeconsuming to find through manual testing, and would be exponentially more costly to fix if they were not detected until runtime.
In this work, we focus on runtime error detection (such as null pointer dereference, bad array indexing, division by zero, etc.) by discovering critical execution paths in Java programs.
One of the greater challenges in symbolic execution is the very large number of possible execution paths, which increas exponentially.
Our research proposes approaches to handling the aforementioned problem of path explosion by applying symbolic execution at the level of methods.
We also investigated the limitations of this state space together with the development of efficient search heuristics.
To make the detection of runtime errors more accurate, we propose a novel algorithm that keeps track of the conditions above symbolic variables during the analysis.
Source code refactoring is a popular and powerful technique for improving the internal structure of software systems.
The concept of refactoring was introduced by Martin Fowler.
He originally proposed that detecting code smells should be the primary technique for identifying refactoring opportunities in the code.
However, we lack empirical research results on how, when and why refactoring is used in everyday software development, what are its effects on short- and long-term maintainability and costs.
By getting answers to these questions, we could understand how developers refactor code in practice, which would help propose new methods and tools for them that are aligned with their current habits leading to more effective software engineering methodologies in the industry.
To help further empirical investigations of code refactoring, we proposed a publicly available refactoring dataset.
The dataset consists of refactorings and source code metrics of open-source
Java systems.
We subjected the dataset to an analysis of the effects of code refactoring on source code metrics and maintainability, which are primary quality attributes in software development
SUBRANGE DATA TYPE APPLIED TO DEFINITION OF SUCH VIRTUAL COORDINATE SYSTEMS WHERE THE DOMAINS ARE CONSTRAINED BY GEOMETRIC BOUNDARIES OF EACH OBJECT
Modern dynamic program languages such as ADA, PASCAL, MODULA'2 give us further
possibilities to generalize the idea of classical real numbers. There are many applications
in GIS where it is not possible to effectively model the invidual values of attributes neither
with integer data type (N) nor positive integer numbers (Z). For instance an elevation
of object such as attributes could oscillate between lower and upper limits. Those limits
are always determined by the information environment. In case of subrange data type the
declaration may be the following: high-type = 200 ... 700, where 200 is the lower and
700 is the upper limit within a territory
Comparison of Different Standards Based on Computing the Probability of Failure of Flood Protection Dikes
Flood damage poses a major threat to many countries across Europe. One of the most disadvantageous communities is Hungary, especially in view of the fact that 23% of the total area is situated on floodplain. 97% of this region is protected by flood control dikes and the remaining 3% is generally low-value zone. Through the decades different design methods referring to flood protection dikes have been recommended with newer and newer safety factors. In a few areas of geotechnical engineering – with the presence of Eurocode 7 – the reliability based design came to the front. The performance of a certain embankment cannot be compared by considering only the safety factors of the different theories but based on computing the probability of failure values it becomes possible. The article aims to show a method of how to define the input parameters and calculate the probability of failure of a flood protection dike. Hence the reliability of different standards can be compared
The optimization of a symbolic execution engine for detecting runtime errors
In a software system, most of the runtime failures may come to light only during test execution, and this may have a very high cost. To help address this problem, a symbolic execution engine called RTEHunter, which has been developed at the Department of Software Engineering at the University of Szeged, is able to detect runtime errors (such as null pointer dereference, bad array indexing, division by zero) in Java programs without actually running the program in a real-life environment. Applying the theory of symbolic execution, RTEHunter builds a tree, called a symbolic execution tree, composed of all the possible execution paths of the program. RTEHunter detects runtime issues by traversing the symbolic execution tree and if a certain condition is fulfilled the engine reports an issue. However, as the number of execution paths increases exponentially with the number of branching points, the exploration of the whole symbolic execution tree becomes impossible in practice. To overcome this problem, different kinds of constraints can be set up over the tree. E.g. the number of symbolic states, the depth of the execution tree, or the time consumption could be restricted. Our goal in this study is to find the optimal parametrization of RTEHunter in terms of the maximum number of states, maximum depth of the symbolic execution tree and search strategy in order to find more runtime issues in a shorter time. Results on three open-source Java systems demonstrate that more runtime issues can be detected in the 0 to 60 basic block-depth levels than in deeper ones within the same time frame. We also developed two novel search strategies for traversing the tree based on the number of null pointer references in the program and on linear regression that performs better than the default depth-first search strategy
Az Ĺ‘rbottyáni 50 Ă©ves örök rozs Ă©s egyĂ©b műtrágyázási tartamkĂsĂ©rletek tanulságai
A homoktalajok vĂ©delme, javĂtása, termĂ©kenysĂ©gĂĽk megĹ‘rzĂ©se hazánkban kiemelt figyelmet Ă©rdemel,mert a hasznosĂtott mezĹ‘gazdasági terĂĽletĂĽnk 1-5-Ă©t homokos terĂĽletek kĂ©pviselik. Itt terem a zöldsĂ©g, a gyĂĽmölcs, dohány Ă©s egyĂ©b növĂ©nyeink jelentĹ‘s hányada, mely döntĹ‘en befolyásolja a hazai lakosság ellátását, valamint a mezĹ‘gazdaság exportkĂ©pessĂ©gĂ©t. másrĂ©szrĹ‘l a falusi nĂ©pessĂ©g megĂ©lhetĂ©sĂ©nek szinte egyedĂĽli forrását helyenkĂ©nt az e talajon folyĂł gazdálkodás jelenti munkaalkalmat teremtve.
A homok talajok javĂtásával, trágyázásával nyert Ă©vtizedes eredmĂ©nyeket Ă©s javaslatokat fogalmaz meg a termĂ©kenysĂ©g megĹ‘rzĂ©sĂ©t szolgálĂł egyszerű Ă©s környezetkĂmĂ©lĹ‘ eljárásokra a Duna-Tisza közi Ĺ‘rbottyányi örökrozs Ă©s egyĂ©b kĂsĂ©rletek fĂ©lĂ©vszázados eredmĂ©nyeire támaszkodva. a könyv egyaránt ajánlhatĂł a kutatás, az oktatás, szaktanácsadás számára
Runtime exception detection in Java programs using symbolic execution
Most of the runtime failures of a software system can be revealed during test execution only, which has a very high cost. In Java programs, runtime failures are manifested as unhandled runtime exceptions. In this paper we present an approach and tool for detecting runtime exceptions in Java programs without having to execute tests on the software. We use the symbolic execution technique to implement the approach. By executing the methods of the program symbolically we can determine those execution branches that throw exceptions. Our algorithm is able to generate concrete test inputs also that cause the program to fail in runtime. We used the Symbolic PathFinder extension of the Java PathFinder as the symbolic execution engine. Besides small example codes we evaluated our algorithm on three open source systems: jEdit, ArgoUML, and log4j. We found multiple errors in the log4j system that were also reported as real bugs in its bug tracking system
HálĂłzatszennyezĂ©st megszĂĽntetĹ‘ impulzusszĂ©lessĂ©g-moduláciĂłs áramirányĂtĂłk fejlesztĂ©se = Network pollution free solution with pulsewidth-modulated rectifiers.
ElkĂ©szĂĽltek a hálĂłzatbarát átalakĂtĂłk szimuláciĂłs programjai (egy- Ă©s háromfázisĂş betáplálásra, valamint a motor Ă©s a hálĂłzati oldali inverter kĂĽlönbözĹ‘ szabályozási algoritmusokra). Megvizsgáltuk a hálĂłzati Ă©s a motor oldali inverterterek hiszterĂ©zises ISZM áramszabályozását, illetve a vivĹ‘frekvenciás ISZM mĂłdszereket a hajtás mind motoros, mind generátoros ĂĽzemĂ©re. Irodalmi Ă©s kutatási szinten foglalkoztunk a háromszintű invereterek alkalmazásával is. KifejlesztettĂĽnk Ă©s ĂĽzembe helyeztĂĽnk egy hálĂłzatbarát frekvenciaváltĂł berendezĂ©st. A motor oldali inverter mezĹ‘orientált szabályozásĂş, mĂg a hálĂłzat oldali inverter biztosĂtja a közbensĹ‘ egyenfeszĂĽltsĂ©g szabályozását, valamint a hálĂłzati áram közel szinuszos alakját, illetve a hálĂłzati meddĹ‘ teljesĂtmĂ©ny zĂ©rus Ă©rtĂ©kĂ©t. Ăśzembe helyeztĂĽnk egy CEGELEC gyártmányĂş hálĂłzatbarát hajtásvezĂ©rlĹ‘ berendezĂ©st is, amely rĂ©gebben kerĂĽlt a tanszĂ©kre. A hajtás vezĂ©rlĂ©se mikroprocesszoros, kezelĂ©se számĂtĂłgĂ©pes irányĂtásĂş. A szimuláciĂłs programokat Ă©s a berendezĂ©seket felhasználtuk a nappali tagozatos hallgatĂłk gyakorlatainál Ă©s önállĂł laboratĂłriumhoz, valamint tudományos munkához. A mĂ©rĂ©si Ă©s kutatási eredmĂ©nyek több diplomatervben, ill. mĂ©rĂ©si jegyzĹ‘könyvben, illetve 15 cikkben foglaltuk össze. A laboratĂłriumi mĂ©rĂ©si utasĂtás elkĂ©szĂĽlt. JelentĹ‘s elĹ‘relĂ©ptĂĽnk az irodalmi Ă©s elmĂ©leti kutatĂłmunkában az áramgenerátoros táplálásĂş Ă©s ISZM vezĂ©rlĂ©sű hálĂłzati áramirányĂtĂłk terĂĽletĂ©n. Az eredmĂ©nyekrĹ‘l kĂ©t cikkben számoltunk be. | The simulation programs for network pollution free PWM rectifier of ac drives (for single or three phase networks and for several control algorithms of the motor and network side inverters) were worked out. The drives were investigated for both the motor and the generator operation modes as well for current two-point PWM methods and for different carrier-based PWM ones. The PWM methods of three-level inverters were summarized and investigated. A 7 kVA drive with PWM rectifier was developed and put into operation. The flux oriented control is used on motor side inverter while the network side converter controls the dc side voltage and ensures the network nearly sinusoidal current and the reactive power zero value as well. Similar ancient CEGELEC product equipment was also put into operation. This drive has microprocessor system and can be PC controlled. The simulation programs and the test equipments were used for the investigation and the test measurements in the ordinary student laboratory practice, at the preparation for Master and Doctor degrees, and for other scientific efforts as well. The results are presented in more diploma works and test reports as well as in 15 papers. The instruction for student laboratory practice was prepared. The PWM methods of network rectifiers with current source supply were summarizes and investigated. The results are given in two papers
- …