Michael Hahsler

Home Teaching Research Publications Talks Software Lab CV

Research on Software Engineering with Patterns

Ein Pattern ist die Abstraktion von Expertenwissen über die Lösung eines gewissen Problems, das immer wieder in leichten Abwandlungen vorkommt. Patterns konzentrieren sich auf die Gemeinsamkeiten einer Gruppe von Problemen und den Kern der Lösung. Durch diese Abstraktion können gut durchdachte Patterns wieder und wieder angewendet werden.
A Pattern represents the abstraction of expert knowledge about the solution of a certain problem, which occures often. Patterns describe what similar problems have in common and what the essence of the solutions for these problems are. This abstraction makes well-constructed patterns useful over and over again.



[1] Michael Hahsler. A quantitative study of the adoption of design patterns by open source software developers. In S. Koch, editor, Free/Open Source Software Development, pages 103--123. Idea Group Publishing, 2005. [ bib | at the publisher | .pdf ]
Several successful projects (Linux, Free-BSD, BIND, Apache, etc.) showed that the collaborative and self-organizing process of developing open source software produces reliable, high quality software. Without doubt, the open source software development process differs in many ways from the traditional development process in a commercial environment. An interesting research question is how these differences influence the adoption of traditional software engineering practices. In this chapter we investigate how design patterns, a widely accepted software engineering practice, are adopted by open source developers for documenting changes. We analyze the development process of almost 1,000 open source software projects using version control information and explore differences in pattern adoption using characteristics of projects and developers. By analyzing these differences we provide evidence that design patterns are an important practice in open source projects and that there exist significant differences between developers who use design patterns and who do not.

[2] Michael Hahsler and Stefan Koch. Discussion of a large-scale open source data collection methodology. In 38th Annual Hawaii International Conference on System Sciences (HICSS'05), January 3--6, 2005 Hilton Waikoloa Village, Big Island, Hawaii. IEEE Computer Society Press, 2005. [ bib | at the publisher | .pdf ]
In this paper we discusses in detail a possible methodology for collecting repository data on a large number of open source software projects from a single project hosting and community site. The process of data retrieval is described along with the possible metrics that can be computed and which can be used for further analyses. Example research areas to be addressed with the available data and first results are given. Then, both advantages and disadvantages of the proposed methodology are discussed together with implications for future approaches.

[3] Michael Hahsler and Stefan Koch. Cooperation and disruptive behaviour - learning from a multi-player internet gaming community. In Piet Kommers, Pedro Isaias, and Miguel Baptista Nunes, editors, IADIS International Conference Web Based Communities 2004, Lisbon, Portugal, 24--26 March 2004, pages 35--42. International Association for Development of the Information Society (IADIS), 2004. [ bib | .pdf ]
In this paper we report possibilities and experiences from employing Counter-Strike, a popular multi-player Internet computer game and its resulting online community in research on cooperative behaviour. Advantages from using this game include easy availability of rich data, the emphasis on team-playing, as well as numerous possibilities to change the experiment settings. We use descriptive game theory and statistical methods to explore cooperation within the game as well as the way the player community deals with disruptive behaviour. After a quick introduction to the basic rules of Counter-Strike, we describe the setup of the Internet game server used. We then present empirical results from the game server logs where cooperation within the game is analyzed from a game theoretic perspective. Finally we discuss the applications of our results to other online communities, including cooperation and self-regulation in open source teams.

[4] Andreas Geyer-Schulz and Michael Hahsler. Software reuse with analysis patterns. In Proceedings of the 8th AMCIS, pages 1156--1165, Dallas, TX, August 2002. Association for Information Systems. [ bib | .pdf ]
The purpose of this article is to promote reuse of domain knowledge by introducing patterns already in the analysis phase of the software life-cycle. We propose an outline template for analysis patterns that strongly supports the whole analysis process from the requirements analysis to the analysis model and further on to its transformation into a flexible and reusable design and implementation. As an example we develop a family of analysis patterns in this paper that deal with a series of pressing problems in cooperative work, collaborative information filtering and sharing, and knowledge management. We evaluate the reuse potential of these patterns by analyzing several components of an information system, that was developed for the Virtual University project of the Vienna University of Economics and Business Administration. The findings of this analysis suggest that using patterns in the analysis phase has the potential to reducing development time significantly by introducing reuse already at the analysis stage and by improving the interface between analysis and design phase.

[5] Michael Hahsler. Analyse Patterns im Softwareentwicklungsprozeß mit Beispielen für Informationsmanagement und deren Anwendungen für die Virtuellen Universität der Wirtschaftsuniversität Wien. Dissertation, Wirtschaftsuniversität Wien, Augasse 2--6, A 1090 Wien, Österreich, January 2001. [ bib | at the publisher | .pdf ]
Diese Arbeit beschäftigt sich mit Analyse Patterns, der Anwendung von Patterns in der Analysephase der Softwareentwicklung. In der Designphase werden Patterns seit einigen Jahren eingesetzt, um Expertenwissen und Wiederverwendbarkeit in den Designprozeß einfließen zu lassen. Es existiert bereits eine Fülle an solchen Design Patterns. Die Analysephase ist ein neuer Anwendungsbereich für Patterns, der bisher in der Literatur noch nicht ausreichend behandelt wurde. In dieser Arbeit wird die Anwendung des Pattern-Ansatzes in der Analysephase aufgearbeitet und konkretisiert. Analyse Patterns unterstützen den gesamten Softwareentwicklungsprozeß und helfen bekannte Probleme während der Analysephase zu lösen. Dadurch können Zeit und Kosten bei der Entwicklung neuer Softwaresysteme eingespart werden. Diese Eigenschaften von Analyse Patterns werden anhand konkreter Beispiele in einer Case Study nachgewiesen. Diese Case Study beschreibt den Einsatz von in dieser Arbeit entwickelten Analyse Pattern für Informationsmanagement anhand des Projekts Virtuelle Universität der Wirtschaftsuniversität Wien, in dem ein Internet-Informationsbroker zur Unterstützung von Lehre und Forschung realisiert wird. Die Erfahrungen aus diesem Projekt werden untersucht, und die Auswirkungen der Analyse Patterns auf Wiederverwendung bei der Softwareentwicklung und auf die Akzeptanz des resultierenden Systems werden präsentiert.

[6] Michael Hahsler. Software Patterns: Pinwände. Diplomarbeit, Wirtschaftsuniversität Wien, Augasse 2--6, A 1090 Wien, Österreich, November 1997. [ bib | .pdf ]
Diese Arbeit beschäftigt sich mit dem Pattern-Ansatz für die Architektur von Software. Nach einer kurzen Darstellung des Ansatzes werden das Pinwand-Pattern und seine Varianten beschrieben. Pinwände werden verwendet, um Informationen zu sammeln und Interessierten zur Verfügung zu stellen. Sie finden unter anderem in den folgenden Bereichen Anwendung: Groupware-Anwendungen, Conferencing Systeme, Diskussionsforen und Virtuelle Bibliotheken.

© Michael Hahsler, modified by