The Development processes theme investigates various aspects of the processes of software development. The theme acts as a special interests group with the aim to provide a forum for new ideas and advances into the area of teaching software development processes. Development processes in general is a very broad theme, and the scope of interest for this theme mainly regards:
Various methods and tools exist to support programming processes. These range from modelling and visualization methods and tools used to complement the programming process to mechanisms directly integrated in modern programming languages themselves. Integrated language support can provide build-in support for e.g. systematic testing, componentisation, and deployment. And this makes the development process activities a central concern of the programming activity and not a separate add-on.
Automation is typically supported throughout the entire development process in various ways. Workflows using continouos integration and continuous deployment has as integral parts the use of automation servers for building, testing and deployment. Activities of testing and test case generation can also be supported by automation to a large extend. E.g. test cases can be generated from formal specifications and also test execution can be highly automated. Property based testing can provide automatic test case generation based on specified properties of the code. Here test cases are automatically generated that attempts to find a case that falsifies the properties. And if such a case is found, the test framework tries to find a minimal test case by reducing the input data. Thus automatically providing a minimal test case for reproduction. Also collaboration and management parts of a development process typically has multiple forms of tool support in the form of monitoring and feedback tools and issue tracking systems.
In requirements engineering an important aspect concerns the validation of requirements. And to support validation, modelling of the requirements is key. Focusing on high-level aspects of a system, one can abstract the system in a formal model and derive properties from, e.g., showing that certain safety-related aspects are observed or certain functional requirements satisfied. In addition formal models can be animated/simulated to support requirements validation.
BSc Software Architecture and Declarative Programming
MSc Software Engineering Principles
MSc Programming Language Paradigms
BEng Software Test
BEng Software Design