02 Abstraction and Specification

It's been said that computer science is the study of abstractions, but what is an abstraction?

ab·strac·tion (from middle french & late latin)

verb: abstract

noun

When creating abstractions, one important part is writing specifications for them.

spec·i·fi·ca·tion (unknown etymology)

noun

verb: specify

Audiences of specifications

The different audiences have different specifications

Clients

Implementers

Benifits of specifications

Satisfaction

An implementation satisfies a specification if it provides the described behavior.

Many implementations can satisfy the same specification

(everyone should act in good faith)

Ambiguity

These factors may create ambiguity, which decrases satisfaction

These can all lead to ambiguity in a specification.

How do we avoid this?