Skip to content
grammarware edited this page Aug 15, 2012 · 5 revisions

Table of Contents

SoTeSoLa hackathon on re(verse) engineering

Summary

The hackathon aims at exercising the methods and tools for software reverse engineering and re-engineering as they are of interest to the participants. Reverse engineering is meant here in a broad sense to include fact extraction, software visualization, vocabulary mining, analysis of language usage, architecture recovery, etc. Re-engineering is meant here in a broad sense to include, for example, program refactoring, wrapping, dead-code elimination, language migration, database re-engineering, and other forms of software evolution.

The participants apply the methods and tools to the software chrestomathy of the 101companies project. Diverse experiments are enabled by the many contributions of the chrestomathy with its coverage of many software languages and technologies. The chrestomathy is available as a repository of source code and through “data dumps” for extracted facts. The participants select those parts of the chrestomathy that are the most suited for efficiently demonstrating their reverse engineering methods and tools. The expectation is that the hackathon produces a corpus of reverse engineering samples, which may be useful, for example, in teaching re(verse) engineering, or as a benchmark or point of reference in re(verse) engineering research.

Prerequisite

Participants should have some basic understanding of re(verse) engineering and some level of expertise in some technology that can serve as an instrument for reverse engineering. Teamwork may be of help, of course. Bring your methods and tools to reverse-engineer and re-engineer the 101companies chrestomathy!

Deliverables

  • Reverse engineering components for different purposes:
    • Fact extraction
    • Metrics computation
    • Software visualization
    • Vocabulary mining
    • Analysis of language usage
    • Analysis of API usage
    • Architecture recovery
    • Design pattern recovery
  • Re-engineering components for different purposes:
    • Program refactoring
    • Wrapping for backwards compatibility or SOA
    • Code injection for extra functionality or assertions
    • Dead-code detection and elimination
    • Language or API migration
    • Database re-engineering
    • Architectural modifications
    • Modularization or component identification
    • Coupled software transformations

Resources

Relationships

  • The working group on LinkedData may analyze LinkedData-like facts about the 101repo.

Coordination