« Fatal Abstraction »
The ability to abstract, and to reason in abstract terms, is one of the key achievements of the human mind. Without abstraction, there would not be language, and without language, there would not be software. As software people, we deal with abstractions all the time — in a computer there are no “real things,” only abstractions, and if we are not good with abstractions, we had better choose a different profession.
And yet, the use of abstraction is not without problems — problems solved or decisions made at an abstract level are useless unless they carry over to the concrete, where they are challenged by the details being abstracted from. One such detail may suffice to void an abstraction and everything built on it. With details out of sight, such failures come as surprises, and the higher the towers of abstraction, the greater the risk of failure.
In this talk, I look at the pitfalls of abstraction from three different perspectives: programming, software engineering, and management. I conclude that in all three disciplines, making abstractions safe is so difficult that it may very well defeat its benefits, that is, that one might be better off dealing with the details from start to end.
Link to the companion paper (published at Onwards! 2018)
« Engineering of Software Factories for High-tech Industry – Experience and Challenges »
Modern software factories automate many aspects of software production and contribute to the overall increase in productivity of engineering processes. In the scope of its Model-Driven Engineering (MDE) set of solutions, Altran Netherlands advocates using Domain-Specific Languages (DSL) for implementing software factories. Although the current state-of-the-art MDE tools support many engineering tasks, the development of the required complex and highly-integrated language ecosystems is still a challenge. In this talk we share the experience of Altran in developing and managing DSL-based software factories in the high-tech industry. Furthermore, we take a critical look at the current state of practice and tools in DSL engineering and identify areas of improvement. We address the question if the process of DSL development itself enjoys the same level of automation and abstraction that it tries to bring to the DSL users. The talk concludes with an outline of potential research areas and a discussion on achieving a better alignment between the academic research and industry.