77,258 research outputs found
Software reverse engineering education
Software Reverse Engineering (SRE) is the practice of analyzing a software system, either in whole or in part, to extract design and implementation information. A typical SRE scenario would involve a software module that has worked for years and carries several rules of a business in its lines of code. Unfortunately the source code of the application has been lost; what remains is “native ” or “binary ” code. Reverse engineering skills are also used to detect and neutralize viruses and malware as well as to protect intellectual property. It became frighteningly apparent during the Y2K crisis that reverse engineering skills were not commonly held amongst programmers. Since that time, much research has been undertaken to formalize the types of activities that fall into the category of reverse engineering so that these skills can be taught to computer programmers and testers. To help address the lack of software reverse engineering education, several peer-reviewed articles on software reverse engineering, re-engineering, reuse, maintenance, evolution, and security were gathered with the objective of developing relevant, practical exercises for instructional purposes. The research revealed that SRE is fairly well described and most of the related activities fall into one of tw
Modular Moose: A new generation software reverse engineering environment
Advanced reverse engineering tools are required to cope with the complexity
of software systems and the specific requirements of numerous different tasks
(re-architecturing, migration, evolution). Consequently, reverse engineering
tools should adapt to a wide range of situations. Yet, because they require a
large infrastructure investment, being able to reuse these tools is key. Moose
is a reverse engineering environment answering these requirements. While Moose
started as a research project 20 years ago, it is also used in industrial
projects, exposing itself to all these difficulties. In this paper we present
ModMoose, the new version of Moose. ModMoose revolves around a new meta-model,
modular and extensible; a new toolset of generic tools (query module,
visualization engine, ...); and an open architecture supporting the
synchronization and interaction of tools per task. With ModMoose, tool
developers can develop specific meta-models by reusing existing elementary
concepts, and dedicated reverse engineering tools that can interact with the
existing ones
The use of non-formal information in reverse engineering and software reuse
This thesis was submitted for the degree of Doctor of Philosophy and awarded by Brunel University.Within the field of software maintenance, both reverse engineering and software reuse have been suggested as ways of salvaging some of the investment made in software that is now out of date. One goal that is shared by both reverse engineering and reuse is a desire to be able to redescribe source code, that is to produce higher level descriptions of existing code.
The fundamental theme of this thesis is that from a maintenance perspective, source code should be considered primarily as a text. This emphasizes its role as a medium for communication between humans rather than as a medium for human-computer communication. Characteristic of this view is the need to incorporate the analysis of non-formal information, such as comments and identifier names, when developing tools to redescribe code. Many existing tools fail to do this. To justify this text-based view of source code, an investigation into the possible use of non-formal information to index pieces of source code was undertaken. This involved attempting to assign descriptors that represent the code's function to pieces of source code from IBM's CICS project. The results of this investigation support the view that the use of nonformal information can be of practical value in redescribing source code. However, the results fail to suggest that using non-formal information will overcome any of the major difficulties associated with developing tools to redescribe code. This is used to suggest future directions for research
Reverse Engineering Encapsulated Components from Object-Oriented Legacy Code
Current component-directed reverse engineering approaches extract ADL-based components from legacy systems. ADL-based components need to be configured atcode level for reuse, they cannot provide re-deposition after composition for future reuse and they cannot provide flexible re-usability as one has to bind all the ports in order to compose them. This paper proposes a solution to these issues by extracting X-MAN components from legacy systems. In this paper, we explain our component model and mapping from object-oriented code to X-MAN clusters using basic scenarios of our rule base
Identifying reusable abstract data types in code
The basic aim of this thesis is to analyse the state of the art in the field of the software reuse Software reuse is widely regarded as offering the opportunity for improving the software production process. It is expected that a massive increase in software reuse is the most promising way of overcoming the software crisis. It can lead to substantial increases in productivity and also to software systems which are more robust and more reliable. A Reuse Re-engineering process together with techniques from reverse engineering represent a method to achieve software reuse. A reference paradigm is established to implement the Reuse Re-engineering process. The reference paradigm is composed of five sequential phases, each characterised by the object it produces. This thesis deals mainly with the first phase of the reference paradigm. This phase is called Candidature and it is concerned with the analysis of the source code for the identification of sets of software components that can be candidate to make up a reusable component. Various methods involved in this phase exist in the literature. Each of them has different characteristic and different qualities. One of these approaches is analysed and it is extended in the new method to give a more precise set of reusable abstract data types. In this thesis the new method is presented. A formalisation followed by implementation of it and an evaluation of its quality through quality attributes is given
Search-based amorphous slicing
Amorphous slicing is an automated source code extraction technique with applications in many areas of software engineering, including comprehension, reuse, testing and reverse engineering. Algorithms for syntax-preserving slicing are well established, but amorphous slicing is harder because it requires arbitrary transformation; finding good general purpose amorphous slicing algorithms therefore remains as hard as general program transformation. In this paper we show how amorphous slices can be computed using search techniques. The paper presents results from a set of experiments designed to explore the application of genetic algorithms, hill climbing, random search and systematic search to a set of six subject programs. As a benchmark, the results are compared to those from an existing analytical algorithm for amorphous slicing, which was written specifically to perform well with the sorts of program under consideration. The results, while tentative at this stage, do give grounds for optimism. The search techniques proved able to reduce the size of the programs under consideration in all cases, sometimes equaling the performance of the specifically-tailored analytic algorithm. In one case, the search techniques performed better, highlighting a fault in the existing algorith
Reuseable Objects Software Environment (ROSE): Introduction to Air Force Software Reuse Workshop
The Reusable Objects Software Environment (ROSE) is a common, consistent, consolidated implementation of software functionality using modern object oriented software engineering including designed-in reuse and adaptable requirements. ROSE is designed to minimize abstraction and reduce complexity. A planning model for the reverse engineering of selected objects through object oriented analysis is depicted. Dynamic and functional modeling are used to develop a system design, the object design, the language, and a database management system. The return on investment for a ROSE pilot program and timelines are charted
Frankenstein's Toolkit: Prototyping Electronics Using Consumer Products
In our practice as educators, researchers and designers we have found that
centering reverse engineering and reuse has pedagogical, environmental, and
economic benefits. Design decisions in the development of new hardware
tool-kits should consider how we can use e-waste at hand as integral components
of electronics prototyping. Dissection, extraction and modification can give
insights into how things are made at scale. Simultaneously, it can enable
prototypes that have greater fidelity or functionality than would otherwise be
cost-effective to produce
Simultaneous minimisation of water and energy within a water and membrane network superstructure
A dissertation submitted to the Faculty of Engineering and the Built Environment, University of the Witwatersrand, Johannesburg, in fulfilment of the requirements for the degree of Master of Science in Engineering, 2015The scarcity of water and strict environmental regulations have made sustainable engineering a prime concern in the process and manufacturing industries. Water minimisation involves the reduction of freshwater use and effluent discharge in chemical plants. This is achieved through water reuse, water recycle and water regeneration. Optimisation of the water network (WN) superstructure considers all possible interconnections between water sources, water sinks and regenerator units (membrane systems). In most published works, membrane systems have been represented using the “black-box” approach, which uses a simplified linear model to represent the membrane systems. This approach does not give an accurate representation of the energy consumption and associated costs of the membrane systems.
The work presented in this dissertation therefore looks at the incorporation of a detailed reverse osmosis network (RON) superstructure within a water network superstructure in order to simultaneously minimise water, energy, operating and capital costs. The WN consists of water sources, water sinks and reverse osmosis (RO) units for the partial treatment of the contaminated water. An overall mixed-integer nonlinear programming (MINLP) framework is developed, that simultaneously evaluates both water recycle/reuse and regeneration reuse/recycle opportunities. The solution obtained from optimisation provides the optimal connections between various units in the network arrangement, size and number of RO units, booster pumps as well as energy recovery turbines. The work looks at four cases in order to highlight the importance of including a detailed regeneration network within the water network instead of the traditional “black-box’’ model. The importance of using a variable removal ratio in the model is also highlighted by applying the work to a literature case study, which leads to a 28% reduction in freshwater consumption and 80% reduction in wastewater generation.GR201
- …