Master Seminar (SS 2008)

Automated Software Engineering

General Information

  • You find a general course description at the corresponding pages from the WIAI module guide
  • You find  administrative information at UnivIS.
  • Participants should sign up for the course in the virtual campus.
  • This course is open for master and diploma students.
  • Prerequisites: some basic knowledge of declarative programming languages (e.g. Haskell, Prolog) as taught in "Nichtprozedurale Programmierung" (Prof. Mendler).
  • This course will be held as a blockseminar. We agree on a date in the first session.
  • First Session: Thursday, 17th April 2008; 16:00 - 18:00; F303

What is ASE?

Software engineering is concerned with the development and evolution of large and complex software-intensive systems. It covers theories, methods and tools for the specification, architecture, design, testing, and maintenance of software systems. Today’s software systems are significantly large, complex and critical, that only through the use of automated approaches can such systems be developed and evolve in an economic and timely manner.

Automated software engineering applies computation to software engineering activities. The goal is to partially or fully automate these activities, thereby significantly increasing both quality and productivity. This includes the study of techniques for constructing, understanding, adapting and modelling both software artefacts and processes. Automatic and collaborative systems are both important areas of automated software engineering, as are computational models of human software engineering activities. Knowledge representations and artificial intelligence techniques applicable in this field are of particular interest, as are formal techniques that support or provide theoretical foundations.

Automated software engineering approaches have been applied in many areas of software engineering. These include requirements definition, specification, architecture, design and synthesis, implementation, modelling, testing and quality assurance, verification and validation, maintenance and evolution, configuration management, deployment, reengineering, reuse and visualisation. Automated software engineering techniques have also been used in a wide range of domains and application areas including industrial software, embedded and real-time systems, aerospace, automotive and medical systems, Web-based systems and computer games.

(see the introductory article in  ERCIM News No. 58, July 2004; Special Issue: Automated Software Engineering, pp. 12)

Possible Topics:

  • Inductive/Deductive Program Synthesis
  • Automated Debugging
  • Program Transformation
  • Automated Program Improvement and Refinement
  • Software Evolution
  • Generative Programming
  • ...

Links:

Talks:

  • Thomas Hieber: "Learning to Program Recursive Functions" (term paper, talk slides)
  • Christian Maier: "Induktive Programmierung" (term paper, talk slides)

[SS 05] [SS 06]