Master Theme Software Construction
Software construction is one of the possible themes (specializations) in the
Computer Science Master Programme at the University of Nijmegen. In this theme
we focus on the construction of high quality software. Hence it fits very well
in the central research theme of the NIII:
Quality of software.
This theme relates to the research carried out in the software technology research group.
There are very many aspects of software quality and at least
as many ways to improve or verify the quality of constructed software. The
techniques and tools covered by the Bachelor program appear to be insufficient
for the software constructor who wants to produce high quality systems
effectively. This theme focuses on the following topics:
- Abstraction
is a central technique to support quality. Details that are not coded in
programs cannot be wrong. We cover the use as well as the implementation
of abstraction in programming languages.
- Analysis
is another heavily used technique to improve the quality. We focus on the
static analysis of programs by a compiler and the (automatic) analysis of
specified properties of specific applications.
- Reuse
can also contribute significantly to the quality of constructed software.
Reuse decreases the development time and the amount of code that has to be
written, and hence the amount of errors. Moreover, it pays to put extra
effort in software that will be reused. This theme covers the use of
libraries, middle ware, as well as language constructs like generic
programming.
Although the functional programming language Clean is developed by our research group
with these topics in mind, this theme is not rooted on Clean or functional
programming. Abstraction, analysis and reuse are import in any software
construction project. This theme covers imperative, object-oriented as well as
functional programming. This theme consists of the following courses in the
specialization phase of the Master's Programme:
- Reliability
of Software Systems (Marko
van Eekelen and Sjaak Smetsers)
This course focuses on the use and realisation of programming language
concepts and constructs to support quality in the program development
phase. Formal deduction techniques can be used to derive properties with
respect to typing, correctness, time and space use of programs.
(Automatic) program transformations convert clear but inefficient programs
into efficient equivalents. This course covers functional programming
languages as well as some aspects of imperative and object oriented
languages.
- Advanced
programming (Peter
Achten and Rinus Plasmeijer)
In this course the use of advanced language constructs and programming
concepts to increase abstraction, reuse and quality are introduced.
Typical examples are combinator libraries, monads, generic programming,
and dynamics. These modern techniques really support the productivity of
software developers and the quality of their code. Any professional
software developer should have knowledge of these techniques.
- Development
of large Software systems (Marko
van Eekelen and Rinus Plasmeijer)
This course covers the theory and practice of middleware. Since the
introduction of .net by Microsoft this way to connect program
fragments written in various languages and distributed over a network has
become a mainstream topic in modern software construction. Every software
constructor should know when and how to use middleware.
- Testing
techniques (Jan Tretmans
and Pieter Koopman)
This course focuses on techniques to make the software construction
process suited for testing the quality of the systems produced, the specification
of software and the (automatic) testing of systems based on these
specifications. Although it appears very hard to test quality of software
effective and efficient, software testing is still the most used technique
to control and verify quality of software systems. This course introduces
techniques, methods and tools to test software systems effective.
Last change made on 8/10/03 by Pieter Koopman.