Software engineering project

Goals

The objective of this project is to illustrate some aspects of software engineering through the development of a large application. The main points are: compliance with requirements, software design, validation and verification techniques, quality process. The software, which is to be developed in Java, is a compiler for a subset of an advanced language. This theme has been chosen firstly because the requirements can be understood quickly, and secondly because it allows a deeper understanding of the underlying concepts of programming languages.


Content

The project starts with a 15 hours period dedicated to the study of the requirements (definition of the language, static and dynamic semantics, target machine), to the presentation of technical aspects and expected documentation and process. Follow-up tutorials take place on various aspects: software architecture, testing techniques, code delivery. These sessions allow the students to be helped on technical aspects as well as planning and organization.


Prerequisites

  • Compiler course (Compilers and languages 1)
  • good knowledge of a high level programming language (Java)
  • knowledge of an assembly language
  • programming practice


Results

At the end of the project we were able to present a working compiler that could take objects oriented objects in entry and provide the x86 Assembly code corresponding. For the ARM option it was much more limited and could only compile non-object code, but we think that with one more week we could have finish completely the implementation of this option. The tests represented half of this project and we were satisfied with our test coverage and so were our teachers.

Programming Skills

Java

95%

Assembly code

80%

ARM

75%

Bash script

95%

Git

80%

Tools

Eclipse
GitHub

Skills

This project allowed me to develop the following skills :

  • Agile development
  • Software development
  • Software testing
  • Project management

1

Months

5

Team