Description:
Software design patterns represent proven solutions to recurring software design problems. They capture the knowledge of software experts in an easy to learn fashion. Upon learning, they help freshers and the experts to produce high quality software designs with desired properties. Ability to use design patterns is an essentially required skill of any software engineer and represents maturity.
Design patterns are language independent and hence can be used with any programming language (C, C++, C#, Java, PHP,...). They are used in all sorts of software systems (stand-alone, distributed multi-tier, dynamic web applications,...), frameworks, tools, drivers and libraries.
This training introduces all the concepts behind software design patterns and distinguishes design patterns from architectural patterns and idioms. A number of design patterns are discussed with an abundance of examples from many software systems, frameworks, tools and libraries.
Training Objectives:
At the end of the training, participants will be able to
- Immediately start applying the patterns learnt to solve new design problems and improve existing designs.
- Define the value of design patterns to software engineers and software engineering.
- Define the meanings and purposes of Object Oriented Programming (OOP) fundamentals with sound clarity and apply them correctly.
- Distinguish design patterns from architectural patterns and idioms.
- Distill new design solutions found by them in their work and document such solutions to share the knowledge or for future use.
Target Groups:
- Experienced and fresh software developers who wants to get a firm grasp of design patterns.
- New job seekers with software related academic/programming background interested in gaining professional knowledge of software systems designing (Design pattern knowledge is surely to add marks in job interviews).
- Read this page if you are interested, but need help to determine whether you should participate or not.
Prerequisites:
- Basic familiarity with an object oriented programming language (Like Java, C++, C# or PHP with OOP) is essentially required. But you may or may not know about how OOP concepts are used in practical world.
Communication Language:
English
Duration:
3 Days (24 hours)
Facilitator:
Kamal Wickramanayake (Profile)
Training Content:
-
Introduction
- What are design patterns?
- Why patterns are important?
- Example design pattern
-
Essentials/Concepts
- Elements of a pattern
- Pattern documentation
- Anti-patterns
-
Pattern Classification
- Pattern systems and pattern languages
- POSA classification scheme
- Gang-of-Four classification scheme
-
POSA Patterns
- Architectural patterns
- Design patterns
- Idioms
-
OOP Fundamentals (Pragmatic Nature And Clearing Confusions)
- Abstraction
- Encapsulation
- Inheritance
- Polymorphism
-
Gang-of-Four Design Patterns
- Creational patterns
- Structural patterns
- Behavioral patterns
-
Detailed Case Study - 1
- Internals of JUnit regression testing framework
-
Detailed Case Study - 2
- Moving towards architectural patterns in multi-tier systems