Abstraction is a communication tool

32
Abstraction Is A Communication Tool [email protected]

Transcript of Abstraction is a communication tool

Abstraction Is A Communication Tool

[email protected]

Who Am I

2

• I am Terry Yin• Work for Odd-e• Experienced in software development• Focus on technical coaching• Love programming• A father

Me

3

How do you put an elephant into a refrigerator?

4

5

6

David Wheeler: ”All problems in computer science can be solved by another level of indirection";

Kevlin Henney: "...except for the problem of too

many layers of indirection."

FTSE (The Fundamental Theorem of Software Engineering)

Does Abstraction Solve Problems?

7

When there are too many customer tickets

8

Create a new role called Customer Tickets Manager

9

Do you know the OSI 7-layer model?

10

7-layer is too old…

But where is the religious layer?

11

12

Object-Oriented

13

Parent

Child

X

Model Driven Architecture

14

Component Team vs. Feature Team

15http://less.works

Abstraction in Contract Negotiation

16

Communication Tool

17

The key is working software

18

Ways Of Communication

•Reading code•Documentation•Discussion•Design workshop•Requirement workshop•Product review•Bug reporting•…

19

Abstraction In Code

20

Information Hiding and Encapsulation

21

22

Sometimes, a little smartness might help the communication, especially when it becomes a convention.

It will become a disaster if over used.

Single Layer Abstraction Principle

23

Communication With Code

24

Hey! I’m changing the method that conflicts with your changes!

Roger!

... done and committed!

Ok! I’ll update and check the merged changes!

... Looks good!Great!

Documentation

25

Can you give me an example?

26

Requirement

27

Technical Activity

Workflow

RuleClarity

Stability

Specification

Users can understand

AutomationTechnical

Cucumber vs. Robot Framework

28

29

30

31

"Being abstract is something profoundly different from being vague … The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise."

Edsger W. Dijkstra

You’ve reached the end

32

Thanks!