Applied Software Engineering

Professor: 

Spring Semester
6 ECTS credits, Advanced level

Objective of the course (expected learning outcomes and competences to be acquired)

While most Information Systems and Computer Science courses traditionally deal with the development of new systems, in practice developers spend the largest part of their time in software life-cycle activities that follow the development phase. The objective of the course is to allow students to read and understand a system’s software elements (code, structure, architecture). Having followed this course, students should be able to intelligently decide on how existing systems will be maintained, setup design and evolution strategies for legacy code, and prescribe the use of refactoring for dealing with architectural mismatches and low-quality code. An innovative aspect of the course involves the use of Open Source Software (OSS) in course examples and exercises. Through the study of OSS students will be able to see how non-trivial applications like the Apache Web server, the Postgres Relational Database Management System, the Jakarta Java servlet container and the Cocoon framework are structured.

Prerequisites

Proficiency in programming and software development

Course contents

Course outline: Course Introduction; Code as Part of the Software Development Process; The Open Source Landscape; Tackling Large Projects; Version Control; Declarative Drawing; Build Management; Code-Reading Tools; General Purpose Tools; Performance Measurement and Management; Inspection and Testing; Coding Standards and Conventions; Documentation; Maintainability.

Recommended reading

Pierre Bourque and Richard E. Fair (editors). Guide to the software engineering body of knowledge. IEEE Computer Society Press, 2014.
Diomidis Spinellis. Code Reading: The Open Source Perspective. Addison-Wesley, 2003.
Diomidis Spinellis. Code Quality: The Open Source Perspective. Addison-Wesley, 2006.
Martin Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 2000.
Michael Feathers. Working Effectively with Legacy Code. Prentice-Hall, Englewood Cliffs, NJ, 2005.

Mode of delivery

Lectures, labwork, and coursework
Assessment methods
Coursework

Language of instruction

Greek & English