rabbit-slide-giosakti-201711-patterns-software-engineering 2017.11.21.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5266d7366c422cffe54bc00585262c92f6f522a6
4
+ data.tar.gz: b85da1be39d8d486d97fd457dead2d70d5de18f4
5
+ SHA512:
6
+ metadata.gz: 8f00c0df83f541f2e69bd9618b85e803fa03a3650ee3b80fdbabe0314d7c1e0f841bcf0b8b4f25d2cd11260abb009c23499b21250f62bbccd87157391ef6583a
7
+ data.tar.gz: 40f2a07f2f6baa70812b996c4586689143135071b81e54b1ca91de5dc13d14b66b18b704b94679644368e9f5b8233857544bf30f7aa195d3ae4cd9e5ede9664d
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ patterns-software-engineering.rab
@@ -0,0 +1,35 @@
1
+ # Patterns in Software Engineering
2
+ This talk gives intro about patterns in software engineering
3
+
4
+ ## License
5
+
6
+ ### Slide
7
+
8
+ MIT
9
+
10
+ Use the followings for notation of the author:
11
+
12
+ * Giovanni Sakti
13
+
14
+ ## For author
15
+
16
+ ### Show
17
+
18
+ rake
19
+
20
+ ### Publish
21
+
22
+ rake publish
23
+
24
+ # or for rubygems only
25
+ rake publish:rubygems
26
+
27
+ ## For viewers
28
+
29
+ ### Install
30
+
31
+ gem install rabbit-slide-giosakti-201711-patterns-software-engineering
32
+
33
+ ### Show
34
+
35
+ rabbit rabbit-slide-giosakti-201711-patterns-software-engineering.gem
@@ -0,0 +1,21 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ spec.files += Dir.glob("images/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+
11
+ # You may include other themes here
12
+ # spec.add_runtime_dependency("rabbit-theme-nyankosakana")
13
+ spec.add_runtime_dependency("rabbit-theme-starqle")
14
+ # spec.add_runtime_dependency("rabbit-theme-yart")
15
+ end
16
+
17
+ desc "Tag #{spec.version}"
18
+ task :tag do
19
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
20
+ sh("git", "push", "--tags")
21
+ end
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: 201711-patterns-software-engineering
3
+ base_name: 201711-patterns-software-engineering
4
+ tags:
5
+ - rabbit
6
+ - patterns
7
+ - design patterns
8
+ - architectural patterns
9
+ presentation_date: 2017-11-23
10
+ version: 2017.11.21.1
11
+ licenses:
12
+ - MIT
13
+ slideshare_id:
14
+ speaker_deck_id:
15
+ ustream_id:
16
+ vimeo_id:
17
+ youtube_id:
18
+ author:
19
+ markup_language: :rd
20
+ name: Giovanni Sakti
21
+ email: giosakti@gmail.com
22
+ rubygems_user: giosakti
23
+ slideshare_user:
24
+ speaker_deck_user: giosakti
Binary file
@@ -0,0 +1,605 @@
1
+ = Patterns
2
+
3
+ : subtitle
4
+ in Software Engineering
5
+ : author
6
+ Giovanni Sakti
7
+ : institution
8
+ Starqle
9
+ % : content-source
10
+ % id_ruby
11
+ % : date
12
+ % 2017-11-01
13
+ : theme
14
+ starqle
15
+
16
+ = Patterns
17
+
18
+ (('tag:center'))What is Patterns?
19
+
20
+ == properties
21
+ : hide-title
22
+ true
23
+
24
+ = Patterns
25
+
26
+ # blockquote
27
+ # title = Christopher Alexander
28
+ Patterns describes a problem, which occurs over and over again in our environment and then desribes the core of the solution to that problem...
29
+
30
+ = Patterns
31
+
32
+ # blockquote
33
+ # title = Christopher Alexander
34
+ ...in such a way that you can use this solution a million times over without ever doing it the same way twice.
35
+
36
+ = Patterns
37
+
38
+ (('tag:center'))Okay, but who is Christopher Alexander?
39
+
40
+ == properties
41
+ : hide-title
42
+ true
43
+
44
+ = Patterns
45
+
46
+ # image
47
+ # src = images/christopher_alexander.jpg
48
+ # keep_ratio = true
49
+ # width = 300
50
+ (('tag:center'))Christopher Alexander is an ((*Architect*))
51
+
52
+ == properties
53
+ : hide-title
54
+ true
55
+
56
+ = Patterns
57
+
58
+ (('tag:center'))He authored widely-influential book in 1977.
59
+
60
+ == properties
61
+ : hide-title
62
+ true
63
+
64
+ = Patterns
65
+
66
+ # image
67
+ # src = images/a_pattern_language.jpg
68
+ # keep_ratio = true
69
+ # height = 400
70
+
71
+ == properties
72
+ : hide-title
73
+ true
74
+
75
+ = Patterns
76
+
77
+ (('tag:center'))The book influences multiple disciplines including software engineering.
78
+
79
+ == properties
80
+ : hide-title
81
+ true
82
+
83
+ = Patterns
84
+
85
+ (('tag:center'))So, what is patterns from the viewpoint of software engineering?
86
+
87
+ == properties
88
+ : hide-title
89
+ true
90
+
91
+ = Patterns
92
+
93
+ (('tag:center'))Patterns are ((*distilled commonalities*)) that you find in software.
94
+
95
+ = Patterns
96
+
97
+ (('tag:center'))It allows us to deconstruct a large complex structure and build using the pattern itself.
98
+
99
+ = Patterns
100
+
101
+ (('tag:center'))Patterns contain solution that have ((*developed*)) and ((*evolved*)) over time.
102
+
103
+ = Patterns
104
+
105
+ (('tag:center'))It is rarely designs that people tend to get initially.
106
+
107
+ = Reusability
108
+
109
+ (('tag:center'))We know that designing software is ((*hard*)).
110
+
111
+ == properties
112
+ : hide-title
113
+ true
114
+
115
+ = Reusability
116
+
117
+ (('tag:center'))Designing software with reusable components are even ((*harder*)).
118
+
119
+ == properties
120
+ : hide-title
121
+ true
122
+
123
+ = Reusability
124
+
125
+ (('tag:center'))Your design should be ((*specific*)) to the problem at hand, but ((*general enough*)) to address future problems and requirements.
126
+
127
+ == properties
128
+ : hide-title
129
+ true
130
+
131
+ = Reusability
132
+
133
+ (('tag:center'))Reusable & flexible design is ((*difficult*)), if not ((*impossible*)), to get "right" the first time.\n\n Even for experienced designer.
134
+
135
+ == properties
136
+ : hide-title
137
+ true
138
+
139
+ = Reusability
140
+
141
+ (('tag:center'))Instead, experienced designer won't try to solve every problem from scratch.
142
+
143
+ = Reusability
144
+
145
+ (('tag:center'))They will try to ((*reuse*)) existing solution instead.
146
+
147
+ = Reusability
148
+
149
+ (('tag:center'))So, patterns help designer gets a design "right" ((*faster*)).
150
+
151
+ = Expectations
152
+
153
+ (('tag:center'))What can learning patterns help you?
154
+
155
+ == properties
156
+ : hide-title
157
+ true
158
+
159
+ = Expectations
160
+
161
+ (('tag:center'))Common design vocabulary
162
+
163
+ = Expectations
164
+
165
+ (('tag:center'))Documentation and learning aid
166
+ # help in understanding complex system
167
+
168
+ = Expectations
169
+
170
+ (('tag:center'))An adjunct to existing methods
171
+ # adjunct == supplementary
172
+
173
+ = Expectations
174
+
175
+ (('tag:center'))A target for refactoring
176
+
177
+ = Expectations
178
+
179
+ * Common design vocabulary
180
+ * Documentation and learning aid
181
+ * An adjunct to existing methods
182
+ * A target for refactoring
183
+
184
+ = Patterns Essential Elements
185
+
186
+ (('tag:center'))Patterns Essential Elements
187
+
188
+ == properties
189
+ : hide-title
190
+ true
191
+
192
+ = Patterns Essential Elements
193
+
194
+ (('tag:center'))An excellently documented patterns will have several elements attached to it.
195
+
196
+ = Patterns Essential Elements
197
+
198
+ (('tag:center'))Which you can use to learn more about them.
199
+
200
+ = Patterns Essential Elements
201
+
202
+ * Name
203
+ * Intent
204
+ * Sketch
205
+
206
+ = Patterns Essential Elements (cont'd)
207
+
208
+ * Problem
209
+ * Solution
210
+ * Consequence(s)
211
+
212
+ = Patterns Essential Elements (cont'd)
213
+
214
+ * When to Use It
215
+ * Example(s)
216
+
217
+ = Patterns Categories
218
+
219
+ (('tag:center'))Patterns Categories
220
+
221
+ == properties
222
+ : hide-title
223
+ true
224
+
225
+ = Patterns Categories
226
+
227
+ (('tag:center'))There are several categories of patterns, based on the ((*level*)) in which they reside.
228
+
229
+ = Patterns Categories
230
+
231
+ From "lowest" level to "highest" level\n
232
+
233
+ * Programming Paradigms
234
+ * Design Patterns
235
+ * Architectural Patterns
236
+
237
+ = Patterns Categories
238
+
239
+ (('tag:center'))We'll try to discuss it one-by-one.
240
+
241
+ = Programming Paradigms
242
+
243
+ (('tag:center'))Programming paradigms
244
+
245
+ == properties
246
+ : hide-title
247
+ true
248
+
249
+ = Programming Paradigms
250
+
251
+ (('tag:center'))Programming paradigms((-Such as: OO, Functional or Procedural-)), in a way, is a pattern.
252
+
253
+ = Programming Paradigms
254
+
255
+ (('tag:center'))To be precise, programming paradigms is the ((*smallest*)) and ((*lowest*)) level of patterns possible.
256
+
257
+ = Programming Paradigms
258
+
259
+ (('tag:center'))Programming paradigms are most likely to ((*influence*)) patterns that reside above it.
260
+
261
+ = Programming Paradigms
262
+
263
+ (('tag:center'))And because programming paradigms are ((*tightly coupled*)) to programming language..
264
+
265
+ = Programming Paradigms
266
+
267
+ (('tag:center'))..our pick of programming language may ((*influence*)) the way we design our software.
268
+
269
+ = Design Patterns
270
+
271
+ (('tag:center'))Design Patterns
272
+
273
+ == properties
274
+ : hide-title
275
+ true
276
+
277
+ = Design Patterns
278
+
279
+ (('tag:center'))Design patterns are code-level commonalities.
280
+
281
+ = Design Patterns
282
+
283
+ (('tag:center'))Providing schemes for refining & building smaller subsystems.
284
+
285
+ = Design Patterns
286
+
287
+ (('tag:center'))Design patterns are ((*medium-scale tactics*)) that flesh out some of the structure & behaviour of entities and their relationships.
288
+
289
+ = Design Patterns
290
+
291
+ (('tag:center'))As we discuss previously, design patterns may be ((*influenced*)) by programming paradigms.
292
+
293
+ = Design Patterns
294
+
295
+ (('tag:center'))Some design patterns can be very ((*important*)) or pale to ((*insignificance*)) due to language that we use.
296
+
297
+ = Design Patterns
298
+
299
+ (('tag:center'))Design patterns can be categorized further.
300
+
301
+ = Design Patterns
302
+
303
+ (('tag:center'))But first let us discuss about the last category of pattern.
304
+
305
+ == properties
306
+ : hide-title
307
+ true
308
+
309
+ = Architectural Patterns
310
+
311
+ (('tag:center'))Architectural Patterns
312
+
313
+ == properties
314
+ : hide-title
315
+ true
316
+
317
+ = Architectural Patterns
318
+
319
+ (('tag:center'))Architectural patterns on the other hand, are commonalities at ((*higher level*)) than design patterns.
320
+
321
+ = Architectural Patterns
322
+
323
+ (('tag:center'))Architectural patterns are ((*high level strategies*)).
324
+
325
+ = Architectural Patterns
326
+
327
+ Architectural patterns concerns:
328
+
329
+ * Large-scale components
330
+ * Global properties
331
+ * Mechanism of a system
332
+
333
+ = Architectural Patterns
334
+
335
+ (('tag:center'))One of the most well-known architectural pattern is the ((*MVC architecture*)).
336
+
337
+ = MVC Architecture
338
+
339
+ (('tag:center'))MVC intents are to promote efficient code reuse and parallel development.
340
+
341
+ = MVC Architecture
342
+
343
+ # image
344
+ # src = images/mvc_sketch.png
345
+ # keep_ratio = true
346
+ # width = 550
347
+
348
+ = MVC Architecture
349
+
350
+ (('tag:center'))It tries to solve the problem of tightly-coupled relation between UI codes and logic that hinders reusability.
351
+
352
+ = MVC Architecture
353
+
354
+ (('tag:center'))It does so by separating codes into ((*three concerns*)): models, views and controllers.
355
+
356
+ = MVC Architecture
357
+
358
+ (('tag:center'))Notice that we already discuss about the name, intent, sketch, problem and solution provided by a pattern.
359
+
360
+ = Design Patterns Categories
361
+
362
+ (('tag:center'))Design Patterns Categories
363
+
364
+ == properties
365
+ : hide-title
366
+ true
367
+
368
+ = Design Patterns Categories
369
+
370
+ (('tag:center'))In arguably the most influential book on design patterns (The ((*GoF book*))),
371
+
372
+ = Design Patterns Categories
373
+
374
+ # image
375
+ # src = images/design_patterns_gof.jpg
376
+ # keep_ratio = true
377
+ # height = 400
378
+
379
+ = Design Patterns Categories
380
+
381
+ the authors categorize design patterns into three categories\n
382
+
383
+ * Creational
384
+ * Structural
385
+ * Behavioural
386
+
387
+ = Creational Patterns
388
+
389
+ (('tag:center'))Creational Patterns
390
+
391
+ == properties
392
+ : hide-title
393
+ true
394
+
395
+ = Creational Patterns
396
+
397
+ (('tag:center'))Creational patterns concern about object creation.
398
+
399
+ = Creational Patterns
400
+
401
+ (('tag:center'))It ((*abstract*)) the ((*instantiation*)) process.
402
+
403
+ = Creational Patterns
404
+
405
+ (('tag:center'))They help make a system ((*independent*)) on how its objects are created, composed and represented.
406
+
407
+ = Creational Patterns
408
+
409
+ (('tag:center'))Useful when creating objects with particular behaviour ((*requires more*)) than simply instantiation a class.
410
+
411
+ = Creational Patterns
412
+
413
+ (('tag:center'))Favour system that prefer to use ((*object composition*)) instead of class inheritance.
414
+
415
+ = Creational Patterns
416
+
417
+ (('tag:center'))Example: Abstract Factory
418
+
419
+ = Abstract Factory
420
+
421
+ (('tag:center'))Provide an interface for creating families of related or dependent objects without specifying their concrete class.
422
+
423
+ = Abstract Factory
424
+
425
+ # image
426
+ # src = images/abstract_factory.png
427
+ # keep_ratio = true
428
+ # width = 640
429
+
430
+ == properties
431
+ : hide-title
432
+ true
433
+
434
+ = Structural Patterns
435
+
436
+ (('tag:center'))Structural Patterns
437
+
438
+ == properties
439
+ : hide-title
440
+ true
441
+
442
+ = Structural Patterns
443
+
444
+ (('tag:center'))Structural patterns deal with the ((*compositions*)) of classes or objects to ((*form larger structures*)).
445
+
446
+ = Structural Patterns
447
+
448
+ (('tag:center'))Example: Adapter
449
+
450
+ = Adapter
451
+
452
+ (('tag:center'))((*Convert the interface*)) of a class into another interface clients expect.
453
+
454
+ = Adapter
455
+
456
+ (('tag:center'))Adapter lets classes ((*work together*)) that ((*couldn't otherwise*)) because of incompatible interfaces.
457
+
458
+ = Adapter
459
+
460
+ # image
461
+ # src = images/adapter_pattern.png
462
+ # keep_ratio = true
463
+ # width = 550
464
+
465
+ == properties
466
+ : hide-title
467
+ true
468
+
469
+ = Behavioural Patterns
470
+
471
+ (('tag:center'))Behavioural Patterns
472
+
473
+ == properties
474
+ : hide-title
475
+ true
476
+
477
+ = Behavioural Patterns
478
+
479
+ (('tag:center'))Behavioural patterns characterize the way in which classes or objects ((*interact*)) and ((*distribute responsibility*)).
480
+
481
+ = Behavioural Patterns
482
+
483
+ (('tag:center'))Not just patterns of classes and objects but also the patterns of ((*communication*)) between them.
484
+
485
+ = Behavioural Patterns
486
+
487
+ (('tag:center'))Example: Observer or Pub-Sub
488
+
489
+ = Observer
490
+
491
+ (('tag:center'))Define ((*one-to-many dependency*)) between objects.
492
+
493
+ = Observer
494
+
495
+ (('tag:center'))When one object change state, all its ((*dependents are notified*)) and updated automatically.
496
+
497
+ = Observer
498
+
499
+ # image
500
+ # src = images/observer_pattern.png
501
+ # keep_ratio = true
502
+ # width = 720
503
+
504
+ == properties
505
+ : hide-title
506
+ true
507
+
508
+ = Design Patterns Categories
509
+
510
+ (('tag:center'))There are no limits in defining design pattern categories, what we just discussed is just a (famous) example.
511
+
512
+ = Utilizing Patterns
513
+
514
+ (('tag:center'))How to Utilize Patterns Properly?
515
+
516
+ == properties
517
+ : hide-title
518
+ true
519
+
520
+ = Utilizing Patterns
521
+
522
+ (('tag:center'))Consider how patterns solve the problems
523
+
524
+ = Utilizing Patterns
525
+
526
+ (('tag:center'))Scan intent and sketch sections
527
+
528
+ = Utilizing Patterns
529
+
530
+ (('tag:center'))Study how patterns relate with each other
531
+
532
+ = Utilizing Patterns
533
+
534
+ (('tag:center'))Study patterns of like purpose
535
+
536
+ = Utilizing Patterns
537
+
538
+ (('tag:center'))Examine a cause of redesign
539
+
540
+ = Utilizing Patterns
541
+
542
+ (('tag:center'))Consider what should be variable in your design
543
+
544
+ = Anti-patterns
545
+
546
+ (('tag:center'))Anti-patterns
547
+
548
+ == properties
549
+ : hide-title
550
+ true
551
+
552
+ = Anti-patterns
553
+
554
+ (('tag:center'))There are also patterns that have negative consequences when it is present in our software
555
+
556
+ = Anti-patterns
557
+
558
+ (('tag:center'))It is called the ((*anti-patterns*))
559
+
560
+ = Anti-patterns
561
+
562
+ (('tag:center'))Anti-patterns are common response to a recurring problem that is usually ((*ineffective*)) and risks being highly ((*counterproductive*)).
563
+
564
+ = Anti-patterns
565
+
566
+ (('tag:center'))Example: Big ball of mud
567
+
568
+ = Big ball of mud
569
+
570
+ (('tag:center'))Software system that ((*lacks*)) a perceivable ((*architecture*)).
571
+
572
+ = Big ball of mud
573
+
574
+ (('tag:center'))Although undesirable from a software engineering PoV, such systems are common in practice.
575
+
576
+ = Big ball of mud
577
+
578
+ (('tag:center'))Due to business pressure, developers turnover and code entropy.
579
+
580
+ = Thanks
581
+
582
+ (('tag:center'))Thanks!
583
+
584
+ == properties
585
+ : hide-title
586
+ true
587
+
588
+ # Some extra notes
589
+
590
+ # Art of creating patterns
591
+ # To divide up many pieces of advice into relatively independent chunks so that you can refer to them and discuss them more or less separately
592
+
593
+ # Some common causes of redesign:
594
+ # - Creating an object by specifying a class explicitly
595
+ # - Dependence on specific operations
596
+ # - Dependence on hardware or software platform
597
+ # - Dependence on object representations or implementations
598
+ # - Algorithmic dependencies
599
+ # - Tight coupling
600
+ # - Extending functionality by subclassing
601
+ # - Inability to alter class conveniently
602
+
603
+ # Patterns are sometimes embedded in framework:
604
+ # - People who know the patterns gain insight into framework faster
605
+ # - People who don't know get benefit from patterns that was enforced by the framework
@@ -0,0 +1,24 @@
1
+ @margin_left = screen_x(1)
2
+ @margin_right = screen_x(1)
3
+
4
+ # @title_slide_title_font_size = @large_font_size
5
+ # @title_slide_subtitle_font_size = @small_font_size
6
+
7
+ match(Slide, HeadLine) do |headlines|
8
+ headlines.horizontal_centering = true
9
+
10
+ # This code below already available as default theme
11
+ # I put it here to show on how to style specific slide
12
+ # headlines.each do |headline|
13
+ # slide = headline.slide
14
+ # headline.hide if slide["hide-title"] == true
15
+ # end
16
+ end
17
+
18
+ match(Slide, Body) do |bodies|
19
+ bodies.vertical_centering = true
20
+ end
21
+
22
+ include_theme("default")
23
+ # include_theme("rabbit-theme-nyankosakana")
24
+ # include_theme("rabbit-theme-yart")
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-giosakti-201711-patterns-software-engineering
3
+ version: !ruby/object:Gem::Version
4
+ version: 2017.11.21.1
5
+ platform: ruby
6
+ authors:
7
+ - Giovanni Sakti
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-11-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: rabbit-theme-starqle
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: ''
42
+ email:
43
+ - giosakti@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".rabbit"
49
+ - README.md
50
+ - Rakefile
51
+ - config.yaml
52
+ - images/a_pattern_language.jpg
53
+ - images/abstract_factory.png
54
+ - images/adapter_pattern.png
55
+ - images/christopher_alexander.jpg
56
+ - images/design_patterns_gof.jpg
57
+ - images/mvc_sketch.png
58
+ - images/observer_pattern.png
59
+ - patterns-software-engineering.rab
60
+ - pdf/201711-patterns-software-engineering-201711-patterns-software-engineering.pdf
61
+ - theme.rb
62
+ homepage: http://slide.rabbit-shocker.org/authors/giosakti/201711-patterns-software-engineering/
63
+ licenses:
64
+ - MIT
65
+ metadata: {}
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubyforge_project:
82
+ rubygems_version: 2.6.13
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: Patterns in Software Engineering This talk gives intro about patterns in
86
+ software engineering
87
+ test_files: []