Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

TDDB84 Course introduction 2017

No description
by

Ola Leifler

on 26 September 2017

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of TDDB84 Course introduction 2017

Design Patterns
TDDB84

Course introduction
Ola Leifler
ola.leifler@liu.se
Software
qualities

Why design?
Design principles
This year
Last year
Goals
Organization
Examination
Lab series
Goals
What did we want to do?
What did we actually do?
How well did we achieve our goals?
Understand design patterns in the wild, understand how design of real applications relates to the use of design patterns
What do we need to improve?
?
!
After the course, students will be able to:
identify and explain design principles and patterns in software
apply design principles and patterns when working with software
describe the purpose with and consequences of design patterns
critically evaluate consequences of design patterns with respect to desired software qualities,
analyze the relationship between design principles, design patterns, and programming language design, application frameworks, or application domains.
Teams with pairs
Design
Analyze
Refactor
Paper 3ECTS, research paper format, based on lab 3 and scientific studies
Laboratory Assignments 3 ECTS
Labs
Seminars
Online lectures
Activities
Resources
Course literature
Tools
Software
Git
Eclipse
Gitlab
WebReg
Java
Software development
Course management
Examination
Open source game
freecol.org
http://www.ida.liu.se/~TDDB84
Weekly
In WebReg groups
Prepared discussions about tasks (exercise, labs, papers)
In Norrköping Fridays, Linköping Mondays
Details, details
Labs
Seminars
Design
Analyze
Modify
Email to assistant

Paper seminars: reading and reviewing papers.

Lab seminars: discussing lab solutions in cross-teams.

Q & A, group discussions and short evaluation
Signup
https://www.ida.liu.se/webreg3/TDDB84-2017-1/
http://gitlab.ida.liu.se
The rest
Maintainability
Reliability
Efficiency
Security
Size
Consortium for IT Software Quality (CISQ)
Design Patterns
?
?
1979
Intent
Applicability
Consequences
[ ... ]
Language
Domain
C++?
Smalltalk?
With or without framework or metaprogramming support?
In any programming paradigm?
Language
Domain
hypothesis:
Enligt Högskolelag (1992:1434) gäller följande för utbildning på avancerad nivå:

9 § Utbildning på avancerad nivå skall väsentligen bygga på de kunskaper som studenterna får inom utbildning på grundnivå eller motsvarande kunskaper.

Utbildning på avancerad nivå skall innebära fördjupning av kunskaper, färdigheter och förmågor i förhållande till utbildning på grundnivå och skall, utöver vad som gäller för utbildning på grundnivå,

- ytterligare utveckla studenternas förmåga att
självständigt integrera och använda kunskaper
,

- utveckla studenternas förmåga att hantera
komplexa företeelser, frågeställningar och situationer
, och

- utveckla studenternas
förutsättningar för yrkesverksamhet som ställer stora krav på självständighet eller för forsknings- och utvecklingsarbete
.

Seminars
Intended result
At home
In class
Listening to lectures
Reading texts
Active
Discussing
questions
Comparing
solutions with others
Working with software
How easily can I make changes to accomodate new demands?
How easily can I test this method?
How easy is it for someone else to understand this?
How easy is it to isolate faults and locate bugs with this design?
External
Internal
Programming paradigms
Programming languages
Application frameworks
Inversion of control
Reusable components
Metaprogramming
?
Extracted from
Implemented in
?
?
Reactive programming
Parallel programming
Replaces Observer?
Source
Subscribers
Events
Language features affect design pattern appearance or necessity
First-class types
First-class methods
Multiple dispatch
Macros
Before/after methods
Metaprogramming
Factories
Strategies
Decorator
Interpreter
Visitor
Shared knowledge, explicit design, reusable solutions
Provides examples
Replaces reading
Provides perspectives
Why do we have lectures?
Example: Observer
Intent
: Define a 1-m dependency between objects so that when one object changes state, all its dependencies are notified and updated automatically.
Implementation:
All mouse listeners, keyboard listeners
Passive
Unity
Spring
Ruby on Rails
Castle Windsor
Some examples
Understand how software design patterns are shaped by their context, and what we have come to understand about them since their inception.
Introduction to design patterns, study of real software and refactoring software
Design exercise, lab assignments and reading/preparing papers
Lab series
Seminars
Good tasks, possible disconnect between final lab and final paper
Valuable for learning, difficult first design task
Lab series
Seminars
Lab 3 allows you to try implementing design patterns in a new environment, in preparation for final papers
More design patterns introduced during first seminar
Code examples in Java
Lab 1
Lab 2 & 3

In framework, it runs you
Master/Worker
Fork/Join
UML
"CheckEmail" by Coupling_loss_graph.svg - File:CheckEmail.png. Licensed under CC BY-SA 3.0 via Commons - https://commons.wikimedia.org/wiki/File:CheckEmail.svg#/media/File:CheckEmail.svg
Sequence Diagram
Class diagrams
"UML State diagram" by Fred the Oyster. Licensed under CC BY-SA 4.0 via Commons - https://commons.wikimedia.org/wiki/File:UML_State_diagram.svg#/media/File:UML_State_diagram.svg
State diagram
Exercise
:

Define the class diagram for a menu structure, where a menu consists of menu items, each of which may also be a menu. It should be possible to click on any item.
Creates new patterns?
Are Design Patterns language deficiencies?

Or simply the canonical way of solving a problem
in a given language?
How about Lisp?
Ruby?
Javascript?
More breadth of design patterns requested
Proxy: Provide a surrogate for another object to control access to it
Mocking/stubbing libraries
Example 1
Example 2
Full transcript