design patterns web frameworks part 1
play

Design Patterns & Web Frameworks (Part 1) VU (707.020) - PowerPoint PPT Presentation

Multimedia Information Systems Design Patterns & Web Frameworks (Part 1) VU (707.020) Christoph Trattner Know-Center @Know-Center, TUG, Austria 16.11.2015 TU Graz . Christoph Trattner 1 Todays plan! PART 1: First partial exam


  1. Multimedia Information Systems Design Patterns & Web Frameworks (Part 1) VU (707.020) Christoph Trattner Know-Center @Know-Center, TUG, Austria 16.11.2015 – TU Graz . Christoph Trattner 1

  2. Today‘s plan! PART 1: First partial exam (30mins) PART 2: Lecture (~30-45mins)  Separation of Concerns Design Principle  Model-View-Controller Design Pattern  A Spoiler for a Master Project or Master Thesis 16.11.2015 – TU Graz . Christoph Trattner 2

  3. PARTIAL EXAM How will we do this?  2 groups  3 questions (English & German)  Time: 30 mins  No „ supporting material“ allowed (just a pen)  ONLY use the examination sheet to answer the 3 questions!!!  No additional papers accepted or needed  If you are done : Come in front & show your student ID 16.11.2015 – TU Graz . Christoph Trattner 3

  4. Today‘s plan! PART 1: First partial exam (30mins) PART 2: Lecture (~30-45mins)  Separation of Concerns Design Principle  Model-View-Controller Design Pattern  A Spoiler for a Master Project or Master Thesis 16.11.2015 – TU Graz . Christoph Trattner 4

  5. Goal of this Lecture  Learn about design principles on the Web  In particular you will learn about  Seperation of Concerns  The Model View Controller Design Pattern  And why this is an super important pattern, when designing Web-based applications 16.11.2015 – TU Graz . Christoph Trattner 5

  6. Seperation of Concerns 16.11.2015 – TU Graz . Christoph Trattner 6

  7. Seperation of Concerns  Core design principle of all software engineering  Definition by Edsger Dijkstra  1974 essay : „On the role of scientific thought “  Dutch Computer Scientist (1930-2002) We know that a program must be correct and we can study it from that viewpoint only; we also know that is should be efficient and we can study its efficiency [...] But nothing is gained - on the contrary - by tackling these various aspects simultaneously. It is what I sometimes have called "the separation of concerns" [...] 16.11.2015 – TU Graz . Christoph Trattner 7

  8. SOC – What do you want to achieve with that design principle? 16.11.2015 – TU Graz . Christoph Trattner 8

  9. Seperation of Concerns You want to isolate different aspects of a software application from each other  At a single moment you work only on a single aspect (e.g., not distracted with other aspects)  You work on each aspect in detail  You are consistent within each aspect  Basis for team work in software development (different teams work on different aspects) 16.11.2015 – TU Graz . Christoph Trattner 9

  10. SOC – How can we achieve that? 16.11.2015 – TU Graz . Christoph Trattner 10

  11. Seperation of Concerns VIA Object-Oriented programming  Modularity and encapsulation (classes and objects isolate aspects)  Clearly defined interfaces: work on different aspects in isolation VIA Aspect-Oriented programming: use generic operations across classes  Concerns affecting most other concerns in a modular software system (e.g. logging) 16.11.2015 – TU Graz . Christoph Trattner 11

  12. Seperation of Concerns VIA Architectural patterns They are more general than (software) design patterns, e.g., Layered Design  Layers cleanly separate responsibilities  Presentation layer,  business logic layer,  data access layer (e.g. a Web-based information system) VIA Design Patterns  separate software in blocks (=modules) of functionality with no overlap,  e.g., Authentication module, workflow engine, messaging subsystem etc. 16.11.2015 – TU Graz . Christoph Trattner 12

  13. Seperation of Concerns Why is it useful? 16.11.2015 – TU Graz . Christoph Trattner 13

  14. Seperation of Concerns Why is it useful?  Reduces complexity (clear interfaces, minimized overlap, etc.)  Simplifies integration of aspects and components  Possibility of their reuse or exchange  Easier adaptibility, customization  Improved comprehension of the application  Reduces/Improves Maintanance 16.11.2015 – TU Graz . Christoph Trattner 14

  15. Example: Web Application with UI & DB 16.11.2015 – TU Graz . Christoph Trattner 15

  16. Example: Web Application with UI & DB In the process logic you have a Student class  Student class has getter and setter methods  getName(), getStudyField(), etc. The UI script (e.g., a PHP script) retrieves a list of Student objects (from process logic) PHP script  iterate through the list  use the getters to read information  write info in a HTML table Class student getName() getStudyField() 16.11.2015 – TU Graz . Christoph Trattner 17

  17. Example: Web Application with UI & DB Now what happens, if we need to extend such an application? New DB Contains: Student addr. 16.11.2015 – TU Graz . Christoph Trattner 18

  18. Example: Web Application with UI & DB Customer tells you, that there is another external student database to be used!  Requirement: include students ’ e-mail addresses in the list  Contains contact info: addresses, e-mails, etc.  (Lazy) developer wants to accomplish this fast 16.11.2015 – TU Graz . Christoph Trattner 19

  19. Code retrieving all data New DB Contains: Student addr. 16.11.2015 – TU Graz . Christoph Trattner 20

  20. Example: Web Application with UI & DB What happens if the costumer also wants to change the interface? 16.11.2015 – TU Graz . Christoph Trattner 21

  21. Example: Web Application with UI & DB Problem: mixing UI and data management  Consequences of such ” architecture ” can be tremendous  For each change (data access) different UI scripts must be updated  Maintainance a nightmare , if applied throughout a large application 16.11.2015 – TU Graz . Christoph Trattner 22

  22. How to do it properly? 16.11.2015 – TU Graz . Christoph Trattner 23

  23. Example: Web Application with UI & DB New DB Contains: Class student_extended Student addr. getEmail() setEmail() 16.11.2015 – TU Graz . Christoph Trattner 24

  24. Example: Web Application with UI & DB Proper way of implementing such changes  Extend student class in process logic: get/setEMail() methods  Data Management module:  connect to the external database  populate student objects with setEMail() Pros:  New info available everywhere (UI scripts)  Data access code modifications only at a single place 16.11.2015 – TU Graz . Christoph Trattner 25

  25. Example: Web Application with UI & DB SOC supported by OO languages , e.g. Java but not enforced  Developers need to take care about this (design)! Scripting languages are very vulnerable, e.g. PHP  You do not need compiling, it is extremely fast to make such changes!  Inviting to a bad programming style But, Java is also vulnerable (JSP) - you need to take care!  Would need a module system preventing the UI from ” seeing ” DM functionality (planed) 16.11.2015 – TU Graz . Christoph Trattner 26

  26. How can we improve the situation? 16.11.2015 – TU Graz . Christoph Trattner 27

  27. Example: Web Application with UI & DB How can we improve the situation?  One way to improve the situation: a layered architecture  The UI communicates only with the Progam Logic  However, hard to enforce this  You can only hope that developers will follow the principle! 16.11.2015 – TU Graz . Christoph Trattner 28

  28. 16.11.2015 – TU Graz . Christoph Trattner 29

  29. The Model View Controller Design Pattern 16.11.2015 – TU Graz . Christoph Trattner 30

  30. MVC What is the Model View Controller (MVC) Design Pattern?  A: It is a particular design pattern that supports Seperation of Concerns  Invented in the early days of GUIs  invented by Trygve Reenskaug  at Xerox Parc in 1979  Still in widest application (Java, .NET, JS frameworks)  MVC is also implemented in many new frameworks!  Examples: Angular JS 16.11.2015 – TU Graz . Christoph Trattner 31

  31. MVC CORE Principle: Decouple the UI from data & logic Compatible with principles of OOP  Fist show-up in Smalltalk-80 (One of the first OO languages) 16.11.2015 – TU Graz . Christoph Trattner 32

  32. MVC 16.11.2015 – TU Graz . Christoph Trattner 33

  33. MVC What does the Controller do?  ”Brain” of the UI (e.g. implements the workflows and the logic within the UI)  Handles user input (e.g., mouse clicks, keyboard,...)  Updates the model  Instructs the view to redraw itself 16.11.2015 – TU Graz . Christoph Trattner 34

  34. MVC What does the View do?  Presents the model in a specific way  Manages the display and rendering of information to the user  Note: different views for the same model are possible  Very important: not only ” rich ” GUIs but also in Web applications (e.g., XHTML, PDF, etc.) 16.11.2015 – TU Graz . Christoph Trattner 35

  35. MVC What does the Model do?  Contains the data and application logic on the data  Manages the behavior and data of the application  Responds to:  Requests for information about its state/data  Instructions to change state/modify data 16.11.2015 – TU Graz . Christoph Trattner 36

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend