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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: []