Adaptivity and adaptability are key characteristics of modern software to cope with sometimes unpredictable changes in the environment including system and user behaviour. Modern cloud-native architectures for instance foresee the case-by-case handling of decisions – e.g. to decide whether using a provider database or hosting one yourself – at the application or workflow level based on knowledge and rules or emergent behaviour. In workflows representing data flows from connected devices, the (self-)adaptivity should be modelled and supported by context-aware systems.
Our work in the Service Prototyping Lab at Zurich University of Applied Sciences consists of applied research, prototype development and conveying knowledge to industry. In this context, we have worked hard over the previous two years to gather educational and hands-on material, including our own contributions, for increasingly valuable tutorials. From single lectures to half-day and eventually full-day tutorials, we aim at both technology enthusiasts and experienced engineers who are open for new ideas and sometimes surprising facts. In this reflective blog post, we report on this week’s experience of giving the full-day tutorial on microservice artefact observation and quality assessment.
The eternal software circle of life continues to pose non-trivial challenges. Developers write code, run tests, push and/or deploy, perhaps leading to more tests, and finally see their software used in production. Eventually, they might see everything working out correctly or rather not, as indicated by log messages, user complaints and other side channels, and even more eventually, when nothing else gets in the way, they might even attempt to fix the problem at any code location which might have a probability of contributing to the issue.
Bachelor students of computer science at Zurich University of Applied Sciences focus a lot on software development. Software is never developed in the blue; rather, software needs a concrete environment to function and to deliver value. In ‘Programming’ (1st/2nd semester) and ‘Software Development’ (3rd/4th semester), you learn some basic skills. In ‘Systems-oriented Programming’ (2nd semester), you apply these skills to predefined systems with some constraints. In ‘Web Development’ (3rd semester), you apply these skills to another environment in which there is a lot of pace through new technologies. In ‘Game Development’ (5th semester), you develop for specific interactive scenarios, and in ‘Mobile Applications’ (5th semester, you develop user-facing apps for common mobile platforms.
One of the most fascinating and economically important areas is the development of applications which run in the cloud. You may access them with web or mobile devices, but you still cannot see them! Still, they are very powerful, scalable to millions of users, and interconnected across cloud providers and with various backend systems such as databases, message queues and key-value stores. This is why we offer SCAD, a new elective module on Serverless and Cloud-native Application Development.