Modern hardware architectures provide parallel computing power from the low end segment with multi-CPU boards and multi-core CPUs up to massively parallel systems, clusters and grids with thousands of processors. Traditional software development has been based mainly on assumptions of non-concurrent processing. The theoretical basics of parallel processing are researched and well understood since the 1960-ies. Theory and practice show there is no silver bullet, no solution that fits all circumstances.
On the other hand today’s software architectures such as Web Applications and Service Oriented Architectures as well as ever growing demands to the solutions of complex domain problems require software systems to leverage the power that is provided by the hardware. Software developers have to learn how to use the potential of parallel processing. System developers have to provide the necessary support by frameworks and tools. For quick adoption such frameworks and tools should not be grass-root new but be implemented in technologies already in use. A good part of software systems in production written in Smalltalk fall into the categories mentioned and would benefit from being able to resort to standard architectures, frameworks and tools.
This project shall examine the various approaches to concurrent processing and their implications on the applications in terms of performance, scalability, robustness and security. The solutions shall be based on multiple virtual machines and images communicating among each others. The Actor model and Data Centric Computing are examples of the architectures to be considered. The students will develop Smalltalk reference models on the basis of the assumption that the virtual machines are a given and not changeable. An important part of the project is to provide tools to examine and further develop the frameworks. From the point of view of the application developer the frameworks need to be intuitively to use and leave the application code easy to maintain. Any frameworks and tools developed shall be implemented under the Smalltalk principles of Simplicity, Power, Genericity and Ease of Use.
Benefits to the Student
The students will learn about the aspects of parallel computing which is vital for all future software architectures. They will learn how to implement reference models and frameworks for everyday use by application developers. Last but not least they will learn about the importance of tooling around any such basic technology to ensure reaching the goals.
Benefits to the Community
The whole Smalltalk community - the academic users, the open source community, the vendors and the commercial and non-commercial users - will benefit from being able to resort to standard architectures, frameworks and tools as a basis for their specific needs. Not only existing projects will be able to enhance their systems in operation but also new ideas will be more easily realized by being able to start from well examined sound ground.