3 research outputs found
The Extreme Software Development Series: An Open Curricular Framework for Applied Capstone Courses
We describe an open, flexible curricular framework for offering a collection of advanced undergraduate and graduate courses in software development. The courses offered within this framework are further unified by combining solid foundations with current technology and play the role of capstone courses in a modern software development track. Our initiative has been very successful with all stakeholders involved
Automatic code generation: from process algebraic architectural descriptions to multithreaded java programs
Process algebraic architectural description languages provide a formal
means for modeling software systems and assessing their properties.
In order to bridge the gap between system modeling and system im-
plementation, in this thesis an approach is proposed for automatically
generating multithreaded object-oriented code from process algebraic
architectural descriptions, in a way that preserves – under certain
assumptions – the properties proved at the architectural level.
The approach is divided into three phases, which are illustrated
by means of a running example based on an audio processing
system. First, we develop an architecture-driven technique for
thread coordination management, which is completely automated
through a suitable package. Second, we address the translation
of the algebraically-specified behavior of the individual software
units into thread templates, which will have to be filled in by
the software developer according to certain guidelines. Third, we
discuss performance issues related to the suitability of synthesizing
monitors rather than threads from software unit descriptions that
satisfy specific constraints.
In addition to the running example, we present two case studies about
a video animation repainting system and the implementation of a
leader election algorithm, in order to summarize the whole approach.
The outcome of this thesis is the implementation of the proposed
approach in a translator called PADL2Java and its integration in the
architecture-centric verification tool TwoTowers
Implementation and performance aspects of Kahn process networks : an investigation of problem modeling, implementation techniques, and scheduling strategies
For å spare strøm og redusere oppheting kjører moderne prosessorer på lavere frekvens enn de tidligere prosessorene. Produsentene kompenserer performansetapet ved å innpakke flere kjerner i en brikke som da kan kjøre flere programmer samtidig. Selv om prosessorer med flere kjerner har større total regnekraft enn de tidligere prosessorer, kjører likevel de fleste eksisterende programmer tregere enn på de eldre prosessorer. Dette skjer fordi programmer flest er skrevet på en måte som tillater dem å utnytte kun en av flere kjerner. For at et program skal kunne utnytte flere kjerner, må det omskrives nesten fra bunnen av, som er tidskrevende og dyrt. Ikke minst, utivklerne må lære en helt ny tankemåte. I dette arbeidet, som ble utført i perioden 2005-2009 ved Institutt for informatikk og Simula, har vi undersøkt hvordan vi kan gjøre det lettere å utvikle parallelle programmer som bruker flere kjerner. Vi tok utgangspunktet i det matematiske rammeverket av ”Kahn process networks”, som stammer fra 1970-tallet, og implementerte et bibliotek som gjør det mulig at eksisterende programmer kan lett utvides til å bruke flere kjerner. Med bruk av vårt bibliotek vil programmer automatisk kunne bruke alle tilgjengelige kjerner i en datamaskin, uten noen endringer. Våre eksperimenter har også vist at tilpasning av eksisterende programmer til vårt bibliotek krever minimale endringer i eksisterende kode