Paradigms & Patterns in Software Engineering
- Dr. Vadim Zaytsev aka @grammarware
2015
Paradigms & Patterns in Software Engineering Dr. Vadim Zaytsev - - PowerPoint PPT Presentation
Paradigms & Patterns in Software Engineering Dr. Vadim Zaytsev aka @grammarware 2015 Questions * 51 (or 55) students * 47 reactions * 76 questions Questions/Student 30 24 18 12 6 0 0 1 2 3 4 Questions [1/3] * What is a UML
2015
* 51 (or 55) students * 47 reactions * 76 questions
6 12 18 24 30 1 2 3 4
* What is a UML diagram? * Types of patterns (milli/nano/micro) * What is an antipattern? * Design patterns in FP or non-OO PLs?
Abstraction
Implementation implementedOp() Refined Abstraction
Refined Implementation
implementedOp()
https://docs.kde.org/trunk4/en/kdesdk/umbrello/uml-elements.html
https://docs.kde.org/trunk4/en/kdesdk/umbrello/uml-elements.html
https://docs.kde.org/trunk4/en/kdesdk/umbrello/uml-elements.html
https://docs.kde.org/trunk4/en/kdesdk/umbrello/uml-elements.html
https://docs.kde.org/trunk4/en/kdesdk/umbrello/uml-elements.html
https://docs.kde.org/trunk4/en/kdesdk/umbrello/uml-elements.html
* What is a UML diagram? * Types of patterns (milli/nano/micro) * What is an antipattern? * Design patterns in FP or non-OO PLs?
* When which paradigms are used? * Which DPs are used the most in SE? * Patterns vs antipatterns * how to see if good or bad * how common they are * How to choose the right DP * How to learn (to recognise) patterns?
* MVC * Singleton * Observer * Façade * Iterator * Interpreter (& Visitor)
http://programmers.stackexchange.com/questions/7055/what-is-the-most-frequently-used-design-pattern
http://homepages.cwi.nl/~storm/publications/visitor.pdf
A Case of Visitor versus Interpreter Pattern
Mark Hills1,2, Paul Klint1,2, Tijs van der Storm1, and Jurgen Vinju1,2 1 Centrum Wiskunde & Informatica, Amsterdam, The Netherlands 2 INRIA Lille Nord Europe, France1 Introduction
Design patterns [7] provide reusable, named solutions for problems that arise when designing object-oriented systems. While in some cases it is clear which pattern should be used, in others multiple patterns could apply. When this happens, the designer has to carefully weigh the pros and cons (“consequences” [7]) of each option as applied both to the current design and to plans for future evolution of the system. In this paper we describe one of these choices in the context of an interpreter for the Rascal1 programming language [13], namely: the choice between structuring an abstract syntax tree-based language interpreter according to either the Visitor or the Interpreter* When which paradigms are used? * Which DPs are used the most in SE? * Patterns vs antipatterns * how to see if good or bad * how common they are * How to choose the right DP * How to learn (to recognise) patterns?
* FP = bad performance? * When to optimise? * How to avoid smells?
* Practical functional programming * Automated clone detection * Search-based software engineering * Software language engineering * Testing and quality control * Reverse engineering * Metaprogramming & program analysis * Language X / framework Y