27
Software from Code into the Clouds

Software, from Code into the Clouds

Embed Size (px)

DESCRIPTION

Software, from Code into the Clouds

Citation preview

Page 1: Software, from Code into the Clouds

Softwarefrom Code into the Clouds

Page 2: Software, from Code into the Clouds

Code

a. Code is a system of signals used to send messages

b. Code is a system of symbols used for the purpose of identification or classification

c. Code is a set of conventions governing behaviour

Page 3: Software, from Code into the Clouds

Pre Human Codes

information content in genetic material

Gopal Aggarwal http://gopal1035.blogspot.com

http://commons.wikimedia.org/wiki/File:Genetic_code.svg

body language

pheromones

Page 4: Software, from Code into the Clouds

Pre Computing Era< 1800

... consisted of all the code used in interactions between humans

• Natural language evolved to become an important ingredient of the code used by humans

• Humans learned to translate between different natural languages

http://commons.wikimedia.org/wiki/File:Discussion.jpg

...

Page 5: Software, from Code into the Clouds

... now included all the code used within a computer

• Development of hardware that understands a small code

• Hardware understanding is limited to arithmetic operations

• Humans translate arithmetic tasks into code with crude tools

Proto Computing Era1800 - 1940

...

http://commons.wikimedia.org/wiki/File:Babbage_Difference_Engine_%281%29.jpg

Page 6: Software, from Code into the Clouds

... now included all the code used in interactions between computers and humans

• Humans develop programming languages that borrow heavily from natural language

• Compilers translate into a code that models the hardware

Business Computing Era1970s

...

...

http://commons.wikimedia.org/wiki/File:COBOL.png

http://commons.wikimedia.org/wiki/File:Cpc-wide-700.jpg

Page 7: Software, from Code into the Clouds

... now included all the code used in interactions between computers

• Humans use programming languages to express increasingly sophisticated network protocols

• Focus shifts to computer-computer communication

Network Computing Era1980s

...... ...

http://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Mislanet2003_3.jpg/120px-Mislanet2003_3.jpg

Page 8: Software, from Code into the Clouds

... now consisted of everything that is not hardware

• More and more of the code is expressed in programming languages

• The complexity that comes with scale becomes the big productivity bottleneck

Internet Era1990s

...... .....

.

...

...http://commons.wikimedia.org/wiki/File:Internetanschl%C3%BCsse.PNG

Page 9: Software, from Code into the Clouds

... increasingly included interaction with the web

• The problem of scaling hardware and networks has been solved

• The problem of scaling ... remains

• Making programming languages feel more like natural language doesn’t seem to help

Web Application Era2000s

...

...

...

...

http://commons.wikimedia.org/wiki/File:Mfile.png

Page 10: Software, from Code into the Clouds

http://commons.wikimedia.org/wiki/File:Discussion.jpg

... suffers from the same problems as way back

• when ... was all about exchange between humans

• Increasingly the artefacts exchanged are not hardware

• We are encoding ... in ...

• Hold that thought!

Cloud Era2010s

...

http://commons.wikimedia.org/wiki/File:Cloud_computing_icon.svg

Page 11: Software, from Code into the Clouds

...

... is a container of information that• is created by a specific actor (human or a system)

• is consumed by at least one actor (human or system)

• represents a natural unit of work (for the creating and consuming actors)

• may contain links to other ...

• has a state and a life-cycle

http://commons.wikimedia.org/wiki/File:Photo_with_histogram.JPG

Page 12: Software, from Code into the Clouds

We are encoding ... in ...

• ...

• <=> communication

• <=> information

• <=> programs

• <=> representations

...

Page 13: Software, from Code into the Clouds

Language Artefacts

A language artefact is a non-hardware artefact• information content of pheromones

• information content of body language

• live music

• live speech

• information content in traditional symbolic notations

• program/diagram/hypertext/database content

• information content of recorded sound/pictures/videos

• information content of genetic material

Page 14: Software, from Code into the Clouds

Coding

All language artefacts are expressed in code• Each code adheres to a syntax defined in a meta code

• The producer typically associates a desired intent with a language artefact

• The semantics of a language artefact are determined by the reactions of consumers, not by the producer

• The desired intent and the semantics of a syntaxcan only be aligned through extensive instantiation (by producers) and semantic processing (by consumers) of example language artefacts

http://commons.wikimedia.org/wiki/File:Encoding_communication-1-.jpg

Page 15: Software, from Code into the Clouds

Meta Code

Syntax definitions• molecular structure

• postures, gestures

• instrument-specific sound production rules

• pronunciation rules

• grammars (for natural languages, mathematics, music, ...)

• grammars (for human/computer languages)

• audio formats, image formats, video formats

• genetic code

Meta code is a subset of code (recursion!)

http://geekandpoke.typepad.com/geekandpoke/2010/04/meta.html

Page 16: Software, from Code into the Clouds

Modularity

Familiar language artefact modules• molecules

• posture, gestures

• beats, phrases, songs

• words, sentences

• paragraphs, chapters, books, terms, equations

• program/diagram/hypertext/database files

• audio/image/video files

• nucleotides, genes

low

high

expressivepower

Page 17: Software, from Code into the Clouds

Scalability

Modules preserve simplicity• molecules

• posture, gestures

• beats, phrases, songs

• words, sentences

• paragraphs, chapters, books, terms, equations

• program/diagram/hypertext/database files

• audio/image/video files

• nucleotides, genes

low

high

informationcontent

http://commons.wikimedia.org/wiki/File:Modular_origami.jpg

Page 18: Software, from Code into the Clouds

Pain Point

Dependency graphs must also be modularised• molecules

• posture, gestures

• beats, phrases, songs

• words, sentences

• paragraphs, chapters, books, terms, equations

• program/diagram/hypertext/database files

• audio/image/video files

• nucleotides, genes

low

high

number of semantic links

between modules

http://commons.wikimedia.org/wiki/File:Ann_dependency_graph.png

Page 19: Software, from Code into the Clouds

Why Do We Need Google Search?The file system abstraction does not scale• In conflict with human cognitive limitations

• The folder structure does not allow for multiple view points

• The number of semantic dependencies between files really hurts

• When it gets complex, humans draw pictures/diagrams,

• and tap into the power of collaboration & multi-brainstorming,

• and tap into multi-channel/media communication

Page 20: Software, from Code into the Clouds

Software

Software is an arbitrary set of language artefacts

Page 21: Software, from Code into the Clouds

Models

Models are language artefacts that represent

the desired intent associated with a system

in a human-friendly syntax

Class : Mammal

dateOfBirth

Class : Dog

isPoliceDog

Class : Cat

Dog : Jack{1/5/03, yes}

Dog : Susie{1/2/00, no}

Cat : Coco{4/3/07}

Cat : Peter{10/9/98}

[*]

[2]

[*]

[2]

Page 22: Software, from Code into the Clouds

Software

Software increasingly consists of models

Page 23: Software, from Code into the Clouds

Modelling is about Clarity

All models are code• a system of symbols used for

• identification

• classification in the sense of grouping

• a system of signals used to send messages

• a set of conventions governing behaviour

Modelling is meta coding

to improve clarity of code

Page 24: Software, from Code into the Clouds

Communication Costs

Not all code is a model• a system of signals that includes a

translation of messages to deal with someone else’s syntax

• a system of symbols used for classification in the sense of obfuscation or encryption

http://commons.wikimedia.org/wiki/File:Encryption_-_decryption.svg

Page 25: Software, from Code into the Clouds

Modelling Language Design

Modelling language design is a balancing act between simplicity and not compromising the desired intent• Focus is on the view point of human cognitive ability

• Modelling languages often make use of multiple syntax elements (visual containers, visual symbols, text, mathematical expressions)

• Syntax elements are either borrowed from existing language artefacts, or are designed and incrementally refined in close collaboration with the user community

http://commons.wikimedia.org/wiki/File:Human_Cognition.jpg

Page 26: Software, from Code into the Clouds

Evolution

Software continuously evolves, whether we like it or not

Software shapes us and we attempt to shape software

A dynamic system with increasingly fast feedback loops

Page 27: Software, from Code into the Clouds

Thank youJorn Bettin

Software is Models

The Role of Artefacts tiny.cc/artefacts

From Muddling to Modelling tiny.cc/muddleToModel

Model Oriented Domain Analysis tiny.cc/domainanalysis

Multi-Level Modelling tiny.cc/gmodel

Perspective on SEMATtiny.cc/sematpos_jbe, tiny.cc/sematslides_jbe

Denotational Semantics tiny.cc/densem

More Information

jbe @ sofismo.ch www.sofismo.ch