9 research outputs found

    Formal methods for legacy systems.

    Get PDF
    Paper dated January 6, 1995A method is described for obtaining useful information from legacy code. The approach uses formal proven program transformations, which preserve for refine the semantics of a construct while changing its form. The applicability of a transformation in a particular syntactic context is checked before application. By using an appropriate sequence of transformations, the extracted representation is guaranteed to be equivalent to the code. In this paper, we focus on the results of using this approach in the reverse engineering of medium scale, industrial software, written mostly in languages such as assembler and JOVIAL. Results from both benchmark algorithms and heavily modified, geriatric software are summarised. It is concluded that the approach is viable, for self-contained code, and that useful design information may be extracted from legacy systems at economic cost. We conclude that formal methods have an important practical role in the reverse engineering process.Partly funded bu Alvey project SE-088, partly through a DTI/SERC and IBM UK Ltd. funded IEATP grant "From assembler to Z using formal transformations" and partly by SERC (Science and Engineering Research Council) project "A proof theory for program refinement and equivalence: extensions"

    A Method For Rewriting Legacy Systems Using Business Process Management Technology

    Get PDF
    Legacy systems are systems which execute useful tasks for the organization. Unfortunately, to maintain a legacy system running is a complex and costly task. Thus, in recent years several approaches were suggested to rewrite legacy systems using contemporary technologies. In this paper we present a method for rewriting legacy systems based on Business Process Management (BPM). The use of BPM for migrating legacy systems facilitates the monitoring and continuous improvement of the information systems existing in the organization

    Reengenharia de software: o que, por quê e como

    Get PDF
    Este artigo tem como objetivo fornecer um embasamento sobre o processo demanuten¸c˜ao de software, mais especificamente sobre reengenharia e engenharia reversa,sendo destinado basicamente para apoio did´atico a essa parte da Engenharia de Software.Devido a isso, s˜ao apresentadas as defini¸c˜oes - o “o que” s˜ao essas modalidades de manuten¸c˜ao,os casos em que se aplicam − o “por que” utiliz´a-las e a forma de adot´a-las − o “como”realiz´a-las

    A method for re-modularising legacy code

    Get PDF
    This thesis proposes a method for the re-modularisation of legacy COBOL. Legacy code often performs a number of functions that if split, would improve software maintainability. For instance, program comprehension would benefit from a reduction in the size of the code modules. The method aims to identify potential reuse candidates from the functions re-modularised, and to ensure clear interfaces are present between the new modules. Furthermore, functionality is often replicated across applications and so the re-modularisation process can also seek to reduce commonality and hence the overall amount of a company's code requiring maintenance. A 10 step method is devised which assembles a number of new and existing techniques into an approach suitable for use by staff not having significant reengineering experience. Three main approaches are used throughout the method; that is the analysis of the PERFORM structure, the analysis of the data, and the use of graphical representations. Both top-down and bottom-up strategies to program comprehension are incorporated within the method as are automatable, and user controlled processes to reuse candidate selection. Three industrial case studies are used to demonstrate and evaluate the method. The case studies range in size to gain an indication of the scalability of the method. The case studies are used to evaluate the method on a step by step basis; both strong points and deficiencies are identified, as well as potential solutions to the deficiencies. A review is also presented to assesses the three main approaches of the methods; the analysis of the PERFORM and data structures, and the use of graphical representations. The review uses the process of software evolution for its evaluation using successive versions of COBOL software. The method is retrospectively applied to the earliest version and the known changes identified from the following versions are used to evaluate the re-modularisations. Within the evaluation chapters a new link within the dominance tree is proposed as is an approach for dealing with multiple dominance trees. The results show that «ach approach provides an important contribution to the method as well as giving a useful insight (in the form of graphical representations) of the process of software evolution

    Avaliação de softwares legados com base em métricas : em um órgão público federal

    Get PDF
    Monografia (graduação)—Universidade de Brasília, Faculdade UnB Gama, Curso de Engenharia de Software, 2015.A contratação de serviços de Tecnologia da Informação (TI) é uma prática comum em órgãos públicos. A terceirização envolve um elevado consumo de recursos públicos e uma alta complexidade de gestão. No cenário público federal brasileiro, o serviço de manutenção de software é terceirizado. Softwares legados são sistemas já desenvolvidos e que executam tarefas importantes para a organização em que eles estão inseridos. Para que os softwares legados se mantenham alinhados às expectativas da organização é necessário que sejam constantemente modificados, o que acarreta esforço e custo com atividades de manutenção e por isso é necessário que a organização tenha uma visão clara sobre o atual estado de seus sistemas legados. A falta de conhecimento sobre aspectos dos sistemas legados motiva uma análise aprofundada dos sistemas. Dessa forma esse trabalho visa aplicar métricas nos softwares legados a partir da utilização do método GQM (goal question metric) para caracterizar três aspectos principais dos softwares legados que são: qualidade interna do código, documentação e registros de manutenção corretiva. Essa caracterização visa identificar as fraquezas e proporcionar dados quantitativos e quantitativos, que possibilitem uma maior visão do gestor de TI sobre seus softwares legados.Hiring of Information Technology (IT) services is a common practice in public agencies. Outsourcing involves a high consumption of public resources and a highly complex management. In the Brazilian federal public arena, the software maintenance service is outsourced. Legacy software systems are already developed and performing important tasks for the organization in which they are inserted. For legacy software remain aligned with the organization's expectations they must be constantly modified, resulting effort and cost of maintenance activities and therefore it is necessary that the organization has a clear view about the current state of their legacy systems. The lack of knowledge about aspects of legacy systems motivates a thorough examination of the systems. Thus this work aims to apply metrics in legacy software from using the GQM method (goal question metric) to characterize three main aspects of legacy software that are internal code quality, documentation and corrective maintenance records. This characterization is to identify weaknesses and provide quantitative and quantitative data that enable greater insight into the IT manager about your legacy software

    A wide spectrum type system for transformation theory

    Get PDF
    One of the most difficult tasks a programmer can be confronted with is the migration of a legacy system. Usually, these systems are unstructured, poorly documented and contain complex program logic. The reason for this, in most cases, is an emphasis on raw performance rather than on clean and structured code as well as a long period of applying quick fixes and enhancements rather than doing a proper software reengineering process including a full redesign during major enhancements. Nowadays, the old programming paradigms are becoming an increasingly serious problem. It has been identified that 90% of the costs of a typical software system arise in the maintenance phase. Many companies are simply too afraid of changing their software infrastructure and prefer to continue with principles like "never touch a running system". These companies experience growing pressure to migrate their legacy systems onto newer platforms because the maintenance of such systems is expensive and dangerous as the risk of losing vital parts of sources code or its documentation increases drastically over time. The FermaT transformation system has shown the ability to automatically or semi-automatically restructure and abstract legacy code within a special intermediate language called WSL (Wide Spectrum Language). Unfortunately, the current transformation process only supports the migration of assembler as WSL lacks the ability to handle data types properly. The data structures in assembler are currently directly translated into C data types which involves many assumptional “hard coded” conversions. The absence of an adequate type system for WSL caused several flaws for the whole transformation process and limits its abilities significantly. The main aim of the presented research is to tackle these problems by investigating and formulating how a type system can contribute to a safe and reliable migration of legacy systems. The described research includes the definition of key aspects of type related problems in the FermaT migration process and how to solve them with a suitable type system approach. Since software migration often includes a change in programming language the type system for WSL has to be able to support various type system approaches including the representation of all relevant details to avoid assumptions. This is especially difficult as most programming languages are designed for a special purpose which means that their possible programming constructs and data types differ significantly. This ranges from languages with simple type systems whose program sare prone to unintended side-effects, to languages with strict type systems which are constrained n their flexibility. It is important to include as many type related details as necessary to avoid making assumptions during language to language translation. The result of the investigation is a novel multi layered type system specifically designed to satisfy the needs of WSL for a sophisticated solution without imposing too many limitations on its abilities. The type system has an adjustable expressiveness, able to represent a wide spectrum of typing approaches ranging from weak typing which allows direct memory access and down casting, via very strict typing with a high diversity of data types to object oriented typing which supports encapsulation and data hiding. Looking at the majority of commercial relevant statically typed programming languages, two fundamental properties of type strictness and safety can be identified. A type system can be either weakly or strongly typed and may or may not allow unsafe features such as direct memory access. Each layer of the Wide Spectrum Type System has a different combination of these properties. The approach also includes special Type System Transformations which can be used to move a given WSL program among these layers. Other emphasised key features are explicit typing and scalability. The whole approach is based on a sound mathematical foundation which assures correctness and integrates seamlessly into the present mathematical definition of WSL. The type system is formally introduced to WSL by constructing an attribute grammar for the language. Type checking and type inference are used to annotate the Abstract Syntax Tree of a given WSL program with type derivations which can be used to reveal and indicate possible typing errors or to infer types if the program did not feature explicit type declarations in the first place. Notable in this approach is also the fact that object orientation is introduced to a procedural programming language without the introduction of new semantics. It is shown that object orientation can be introduced just by adjusting type checking rules and adding some syntactical notations. The approach was implemented and tested on two case studies. The thesis describes and discusses both cases in detail and shows how a migration which ignores type systems could accidentally introduce errors due to assumptions during translation. Both case studies use all important aspects of the approach, Including type transformations and object identification. The thesis finalises by summarising the whole work, identifying limitations, presenting future perspectives and drawing conclusion

    Formal Methods for Legacy Systems

    No full text
    A method is described for obtaining useful information from legacy code. The approach uses formal proven program transformations, which preserve or refine the semantics of a construct while changing its form. The applicability of a transformation in a particular syntactic context is checked before application. By using an appropriate sequence of transformations, the extracted representation is guaranteed to be equivalent to the code. In this paper, we focus on the results of using this approach in the reverse engineering of medium scale, industrial software, written mostly in languages such as assembler and JOVIAL. Results from both benchmark algorithms and heavily modified, geriatric software are summarised. It is concluded that the approach is viable, for self contained code, and that useful design information may be extracted from legacy systems at economic cost. We conclude that formal methods have an important practical role in the reverse engineering process.
    corecore