Advanced

Designing a generic fieldbus framework and refactoring legacy code for multiple platforms

Hillbom, Simon LU and Lindberg, Robin (2015) EEM820 20151
Department of Biomedical Engineering
Abstract
When working with large programming projects, one of the major problems is to write the code so it can be maintained. If you write code that is easy to maintain it is also easier to extend, change and fix bugs in the code.

In this project two large, similar projects were investigated to find similarities in the code. If the similarities could be brought together in a generic solution, the code would be easier to maintain, understand and develop. The two projects are separate projects for communication with field buses, running different fieldbus protocols on different hardware platforms. The common factors in these projects are that both need to communicate over a fieldbus, somehow store the information received and then be able to... (More)
When working with large programming projects, one of the major problems is to write the code so it can be maintained. If you write code that is easy to maintain it is also easier to extend, change and fix bugs in the code.

In this project two large, similar projects were investigated to find similarities in the code. If the similarities could be brought together in a generic solution, the code would be easier to maintain, understand and develop. The two projects are separate projects for communication with field buses, running different fieldbus protocols on different hardware platforms. The common factors in these projects are that both need to communicate over a fieldbus, somehow store the information received and then be able to communicate with a PC to send the gathered data or receive commands to send on the fieldbus.

By adapting modern refactoring methods to an older programming standard, code written in C (C89) can be refactored to a more modular and extensible code standard. (Less)
Abstract (Swedish)
När man jobbar med stora pogrammeringsprojekt är ett av de stora problemen att skriva koden så den går att underhålla. Skriver man kod som är lätt att underhålla är det också enklare att göra tillägg, ändringar och åtgärda problem.

I detta projekt har två stora, liknande projekt undersökts för hitta likheter i koden. Om likheterna kan sammanföras till en generisk lösning kommer koden att vara lättare att underhålla, förstå och utveckla. De två projekten är två olika projekt för att kommunicera med fältbussar, som kör olika fältbussprotokoll på olika platformar. De gemensamma faktorerna i projekten är att båda måste kommunicera över en fältbuss, på något vis lagra informationen och därefter kunna kommunicera med en PC för att skicka över... (More)
När man jobbar med stora pogrammeringsprojekt är ett av de stora problemen att skriva koden så den går att underhålla. Skriver man kod som är lätt att underhålla är det också enklare att göra tillägg, ändringar och åtgärda problem.

I detta projekt har två stora, liknande projekt undersökts för hitta likheter i koden. Om likheterna kan sammanföras till en generisk lösning kommer koden att vara lättare att underhålla, förstå och utveckla. De två projekten är två olika projekt för att kommunicera med fältbussar, som kör olika fältbussprotokoll på olika platformar. De gemensamma faktorerna i projekten är att båda måste kommunicera över en fältbuss, på något vis lagra informationen och därefter kunna kommunicera med en PC för att skicka över fältbussdata eller ta emot kommandon för att skicka data ut på fältbussen.

Genom att anpassa moderna refaktoriseringsmetoder till en äldre programmeringstandard kan även kod skriven i C (C89) refaktoriseras till en mer modern modulär och förändringsbar kodstandard. (Less)
Popular Abstract (Swedish)
Skriv inte samma kod flera gånger

Kod måste inte bara fungera, den skall också vara hanterbar. Att skriva kod som förstås av både människa och maskin kan vara mycket svårt. Hoppar man in i ett äldre projekt är det inte alltid det finns någon som kan förklara. Kan inte koden förklara sig själv blir det mycket svårt att göra ändringar utan att något blir fel. Vi har arbetat med att utveckla särskilda metoder för att enkelt ändra klurig kod till mer lättläst kod. Metoderna applicerades på två projekt i ett försök att sammanfoga dem på samma bas.

Beijer Electronics har flera olika moduler för att hantera fältbusskommunikation. Dessa moduler gör på vissa vis samma sak, de översätter fältbuss till något en dator kan förstå. Tyvärr kör de... (More)
Skriv inte samma kod flera gånger

Kod måste inte bara fungera, den skall också vara hanterbar. Att skriva kod som förstås av både människa och maskin kan vara mycket svårt. Hoppar man in i ett äldre projekt är det inte alltid det finns någon som kan förklara. Kan inte koden förklara sig själv blir det mycket svårt att göra ändringar utan att något blir fel. Vi har arbetat med att utveckla särskilda metoder för att enkelt ändra klurig kod till mer lättläst kod. Metoderna applicerades på två projekt i ett försök att sammanfoga dem på samma bas.

Beijer Electronics har flera olika moduler för att hantera fältbusskommunikation. Dessa moduler gör på vissa vis samma sak, de översätter fältbuss till något en dator kan förstå. Tyvärr kör de liknande modulerna helt olika mjukvaruprojekt och olika hårdvara. Det blev då intressant att undersöka om man på något vis kan köra liknande eller samma program på flera plattformar. Vårt första problem var alltså en undersökning om hurvida det var möjligt att sammanfoga dessa två kodbaser.

Efter en ordentlig undersökning visade det sig att verkade möjligt att göra en generisk lösning. Vi ville dessutom lösa problemet på ett sådant vis att den nya koden blir lättare att förstå. Delar man exempelvis upp all kod i små bitar, där varje bit har sitt lilla ansvarsområde, slipper man mycket huvudbry. Man kan dessutom rätta mindre problem utan att vara orolig för att hela kalaset havererar, då en ändring bara påverkar en liten bit av systemet!

Genom lösa detta problem och bygga en gemensam kodbas skulle man lösa många svårigheter. Utvecklare i olika länder skulle lättare kunna samarbete då liknande problem blir lösta på samma sätt. Programmerarna skulle dessutom slippa skriva samma kod till flera plattformar om ny funktionalitet ska läggas in. Överlag blir alltså den stora skillnaden att framtida arbete går snabbare!

Våra undersökningar visar att det är möjligt för Beijer Electronics att med lite mer tid konstruera en delvis generisk mjukvara för att kommunicera med fältbussar! Vi hade dessutom tid att skriva ett demoprogram som visar hur man kan programmera för att göra det enklare i framtiden. (Less)
Please use this url to cite or link to this publication:
author
Hillbom, Simon LU and Lindberg, Robin
supervisor
organization
course
EEM820 20151
year
type
H2 - Master's Degree (Two Years)
subject
keywords
Fieldbus, programming, refactoring
language
English
additional info
2015-11
id
7363173
date added to LUP
2015-06-25 16:14:39
date last changed
2015-06-25 16:14:39
@misc{7363173,
  abstract     = {When working with large programming projects, one of the major problems is to write the code so it can be maintained. If you write code that is easy to maintain it is also easier to extend, change and fix bugs in the code.

In this project two large, similar projects were investigated to find similarities in the code. If the similarities could be brought together in a generic solution, the code would be easier to maintain, understand and develop. The two projects are separate projects for communication with field buses, running different fieldbus protocols on different hardware platforms. The common factors in these projects are that both need to communicate over a fieldbus, somehow store the information received and then be able to communicate with a PC to send the gathered data or receive commands to send on the fieldbus.

By adapting modern refactoring methods to an older programming standard, code written in C (C89) can be refactored to a more modular and extensible code standard.},
  author       = {Hillbom, Simon and Lindberg, Robin},
  keyword      = {Fieldbus,programming,refactoring},
  language     = {eng},
  note         = {Student Paper},
  title        = {Designing a generic fieldbus framework and refactoring legacy code for multiple platforms},
  year         = {2015},
}