Understanding Semat, getting to grips with what it is and how it is to be realised, can be a challenge. I thought I would try and capture a set of key features that I hope describe Semat in a way that is easily digestible and helpful in getting a clear understanding.
Semat is a community that has come together to address some profound problems in software engineering with an agreed goal of refounding it as a rigorous discipline. It will establish a new platform allowing people to describe their current and future practices, and methods so that they can be composed, compared, evaluated, queried, used, adapted, measured, taught and researched.
Semat’s primary focus is the practitioners: the architects, analysts, developers, testers, and project leads, for example, and by implication the process engineers. Furthermore, in order to be wholly successful Semat focuses on two other important groups: industry and academia.
Semat will provide a kernel that will embody the essential elements of software engineering. One of Semat’s key objectives is to provide the basis for better-shared understanding across practitioners, industry, and academia. It will be scalable, extensible and easy to use, allowing people to describe the essentials of their existing and future methods and practices.
Semat emphasizes the use of method in practice, rather than the definition of method. We understand that the way we work in practice is not always the same as the approach we say we follow. Slavishly following a process can lead to poor results: it cuts out creativity and brings in inefficiency. Successful teams evolve and adapt their ways of working away from their original stated intent; they recognise that the method is there for support and guidance rather than to constrain and restrict. Semat believes that methods should allow teams to use them when needed, help them whatever their current progress, and guide them to their next objective. A method is not just a description of what is expected to be done, but also a description of what is actually done.
Semat is not creating a new method, instead, Semat is making it easier to deliver and access methods. Semat provides a different way of looking at methods, making them a composition of a number of practices. From a Semat perspective a practice can be thought of as systematic and verifiable way of addressing particular aspects of the work at hand. Practices are mini-methods with a clear beginning and end; the intention is that the practice will deliver something of value. Practitioners are free to mix and match the practices they feel are appropriate for their work.
Semat provides a common ground for teaching software engineering. By introducing Semat’s concepts (methods, practices and the kernel) into regular software engineering curriculum, instructors can focus on the fundamental common ground and teach widely accepted practices instead of the particular ideas that form every method or process.
New curricula can be developed by utilizing the basic building blocks from Semat. These curricula provide a way to compare and show students the pros and cons of difference methods and practices they encounter during their course study.
Semat makes research and its results more relevant to industry. Researchers can develop empirical assessment methods to compare software engineering outcome, practices and methods; foster the advancement of formal foundations of software engineering, and sharpen our understanding of software engineering ideas. Research can also provide an infrastructure that serves as a test-bed and fast deployment of new ideas in the community. By tightly coupling with industry, Semat makes research results more relevant with a faster transfer of research results into industry practices.
Semat sets you free. Practitioners will be free to select and compose practices into something useful for their company, team or current endeavour.
Moving forward we need competent people to actively participate in the different task groups. We need people with the following expertise: user experience design to give the language a graphical, intuitive syntax; formal language designers to make sure the concrete syntax is mapped to meaningful semantics; identifying and defining kernel elements (modeling expertise); metrics and measurement experts to help measure the impact of Semat on the external world and to help measure each of its practices; open source tool support for language and kernel; requirement specification of what Semat should do, and more.
Follow me on Twitter @edwaado