SEApr 4, 2019
DevOps and its Philosophy : Education Matters!Evgeny Bobrov, Antonio Bucchiarone, Alfredo Capozucca et al.
DevOps processes comply with principles and offer practices with main objective to support efficiently the evolution of IT systems. To be efficient a DevOps process relies on a set of integrated tools. DevOps is the first required competency together with Agile Method required by the industry. DevOps processes are sharing many aspects with microservices approaches especially the modularity and flexibility which enables continuous change and delivery. As a new approach it is necessary to developp and offer to the academy and to the industry training programs to prepare our engineers in the best possible way. In this chapter we present the main aspects of the educational effort made in the recent years to educate to the concepts and values of the DevOps philosophy. This includes principles, practices, tools and architectures, primarily the Microservice architectural style. Two experiences have been made, one at academic level as a master program course and the other, as an industrial training. Based on those two experiences, we provide a comparative analysis and some proposals in order to develop and improve DevOps education for the future.
SEJul 4, 2018
Teaching DevOps in Corporate Environments: An experience reportManuel Mazzara, Alexandr Naumchev, Larisa Safina et al.
This paper describes our experience of training a team of developers of an East-European phone service provider. The training experience was structured in two sessions of two days each conducted in different weeks with a gap of about fifteen days. The first session was dedicated to the Continuous Integration Delivery Pipeline, and the second on Agile methods. We summarize the activity, its preparation and delivery and draw some conclusions out of it on our mistakes and how future session should be addressed.
SESep 29, 2017
Domain Objects and Microservices for Systems Development: a roadmapKizilov Mikhail, Antonio Bucchiarone, Manuel Mazzara et al.
This paper discusses a roadmap to investigate Domain Objects being an adequate formalism to capture the peculiarity of microservice architecture, and to support Software development since the early stages. It provides a survey of both Microservices and Domain Objects, and it discusses plans and reflections on how to investigate whether a modeling approach suited to adaptable service-based components can also be applied with success to the microservice scenario.
SEJun 22, 2017
Microservices Science and EngineeringManuel Mazzara, Kevin Khanda, Ruslan Mustafin et al.
In this paper we offer an overview on the topic of Microservices Science and Engineering (MSE) and we provide a collection of bibliographic references and links relevant to understand an emerging field. We try to clarify some misunderstandings related to microservices and Service-Oriented Architectures, and we also describe projects and applications our team have been working on in the recent past, both regarding programming languages construction and intelligent buildings.
PLMar 15, 2017
Verified type checker for Jolie programming languageEvgenii Akentev, Alexander Tchitchigin, Larisa Safina et al.
Jolie is a service-oriented programming language which comes with the formal specification of its type system. However, there is no tool to ensure that programs in Jolie are well-typed. In this paper we provide the results of building a type checker for Jolie as a part of its syntax and semantics formal model. We express the type checker as a program with dependent types in Agda proof assistant which helps to ascertain that the type checker is correct.
SEFeb 23, 2017
Microservices: How To Make Your Application ScaleNicola Dragoni, Ivan Lanese, Stephan Thordal Larsen et al.
The microservice architecture is a style inspired by service-oriented computing that has recently started gaining popularity and that promises to change the way in which software is perceived, conceived and designed. In this paper, we describe the main features of microservices and highlight how these features improve scalability.
SEFeb 23, 2017
Jolie Static Type Checker: a prototypeDaniel de Carvalho, Manuel Mazzara, Bogdan Mingela et al.
Static verification of a program source code correctness is an important element of software reliability. Formal verification of software programs involves proving that a program satisfies a formal specification of its behavior. Many languages use both static and dynamic type checking. With such approach, the static type checker verifies everything possible at compile time, and dynamic checks the remaining. The current state of the Jolie programming language includes a dynamic type system. Consequently, it allows avoidable run-time errors. A static type system for the language has been formally defined on paper but lacks an implementation yet. In this paper, we describe a prototype of Jolie Static Type Checker (JSTC), which employs a technique based on a SMT solver. We describe the theory behind and the implementation, and the process of static analysis.
SEOct 6, 2016
Towards Microservices and Beyond: An incoming Paradigm Shift in Distributed ComputingManuel Mazzara, Ruslan Mustafin, Larisa Safina et al.
The microservice architecture is a style inspired by service-oriented computing that has recently started gaining popularity and that promises to change the way in which software is perceived, conceived and designed. In this paper we offer a short overview intended as a collection of bibliographic references and links in the field of Microservices Science and Engineering (MSE).
AIJul 27, 2016
Neuromorphic Robot DreamAlexander Tchitchigin, Max Talanov, Larisa Safina et al.
In this paper we present the next step in our approach to neurobiologically plausible implementation of emotional reactions and behaviors for real-time autonomous robotic systems. The working metaphor we use is the "day" and the "night" phases of mammalian life. During the "day phase" a robotic system stores the inbound information and is controlled by a light-weight rule-based system in real time. In contrast to that, during the "night phase" information that has been stored is transferred to a supercomputing system to update the realistic neural network: emotional and behavioral strategies.
SEJun 13, 2016
Microservices: yesterday, today, and tomorrowNicola Dragoni, Saverio Giallorenzo, Alberto Lluch Lafuente et al.
Microservices is an architectural style inspired by service-oriented computing that has recently started gaining popularity. Before presenting the current state-of-the-art in the field, this chapter reviews the history of software architecture, the reasons that led to the diffusion of objects and services first, and microservices later. Finally, open problems and future challenges are introduced. This survey primarily addresses newcomers to the discipline, while offering an academic viewpoint on the topic. In addition, we investigate some practical issues and point out some potential solutions.
ROMar 9, 2016
Robot DreamAlexander Tchitchigin, Max Talanov, Larisa Safina et al.
In this position paper we present a novel approach to neurobiologically plausible implementation of emotional reactions and behaviors for real-time autonomous robotic systems. The working metaphor we use is the "day" and "night" phases of mammalian life. During the "day" phase a robotic system stores the inbound information and is controlled by a light-weight rule-based system in real time. In contrast to that, during the "night" phase the stored information is been transferred to the supercomputing system to update the realistic neural network: emotional and behavioral strategies.
SEFeb 22, 2016
Refinement types in JolieAlexander Tchitchigin, Larisa Safina, Manuel Mazzara et al.
Jolie is the first language for microservices and it is currently dynamically type checked. This paper considers the opportunity to integrate dynamic and static type checking with the introduction of refinement types, verified via SMT solver. The integration of the two aspects allows a scenario where the static verification of internal services and the dynamic verification of (potentially malicious) external services cooperates in order to reduce testing effort and enhancing security.