Ignatios S. Deligiannis

Learn More
The study presented in this paper is a controlled experiment, aiming at investigating the impact of a design heuristic, dealing with the Ôgod class' problem, on the maintainability of object-oriented designs. In other words, we wish to better understand to what extent a specific design heuristic contributes to the quality of designs developed. The(More)
In recent years there has been a growing interest in empirically investigating object-oriented technology (OOT). Much of this empirical work has been experimental in nature. This paper reviews the published output of such experiments — eighteen in total — with the twin aims of, first, assessing what has been learnt about OOT and, second, what has been(More)
The goal of this study is the development of a probabilistic model for the evaluation of flexibility of an object-oriented design. In particular, the model estimates the probability that a certain class of the system will be affected when new functionality is added or when existing functionality is modified. It is obvious that when a system exhibits a large(More)
Design patterns have become a widely acknowledged software engineering practice and therefore have been incorporated in the curricula of most computer science departments. This paper presents an observational study on students' ability to understand and apply design patterns. Within the context of a postgraduate software engineering course, students had to(More)
In this paper we discuss a framework for teaching software testing to undergraduate students' volunteers. The framework uses open source software development methodology and was implemented in the " Introduction to Software Engineering " course at the department of Informatics, Aristotle University, Greece. The framework is in three phases, each describing(More)
Component-Based Software Engineering (CBSE) focuses on the development of reusable components in order to enable their reuse in more systems, rather than only to be used to the original ones for which they have been implemented in the first place (i.e. development for reuse) and the development of new systems with reusable components (i.e. development with(More)