One of the key foci of the SEMAT Call for Action is to agree “a kernel of widely-agreed elements, extensible for specific uses”. In this discussion we will explore the idea of a kernel. The goal is to gather requirements related to the kernel. Please join the debate by commenting on this entry.
What is the Kernel
An important step in fulfilling the promise of the SEMAT initiative to “refound software engineering” is to establish a framework for thinking about software development.
This framework must be concrete representations of the acts & artifacts of software development, representations that are applicable no matter the size or scale of the software under development, nor the size, scale or style of the team involved in the development.
We call this framework the “kernel” as it captures the set of elements that are inherent to all software development efforts. In essence , it provides a practice independent framework for thinking and reasoning about the practices we have and the practices we need.
The goal of the kernel is to establish a shared understanding of what is at the heart of software development. We must discover the set of elements that are essential to all software development efforts, a shared body of knowledge for academics, researchers & practitioners.
The kernel will allow us to think about software development in a number of different styles. It might comprise:
A list of the key elements that always need to be addressed, in all projects;
A map of the practice territory so that we understand how to build from the kernel
An understanding of the skills needed to build teams and software
A framework for using the kernel, both to develop extensions to the practice and to develop software
A set of definitions to be shared by all practices
The kernel is the core of the underlying theory for software development. What rigor is important, it is also usable; that is, it can be taught, measured and put into practice in real projects. To academics, the kernel might be seen as a language to describe practices. To the developer the kernel underlies what he does every day.
It’s important to remember that SEMAT is focused on building theory that allows different practices to work together – not defining new or “best” practices. As Leonardo da Vinci once said, “He who loves practice without theory is like the sailor who boards a ship without a rudder and compass and never knows where he may cast.”
So what are the key components of such a kernel? What is extraneous, or unnecessary in all descriptions of practice? What are the right starting points in existing research or practice?
– Ivar, Bertrand and Richard