Software, from Code into the CloudsPresentation Transcript
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
Pre Human Codes
pheromones
Gopal Aggarwal http://gopal1035.blogspot.com
body language
http://commons.wikimedia.org/wiki/File:Genetic_code.svg
information content in genetic material
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 http://commons.wikimedia.org/wiki/
File:Discussion.jpg
• Humans learned to translate
between different natural
languages
...
Proto Computing Era
1800 - 1940
... now included all
the code used
within a computer
• Development of hardware that http://commons.wikimedia.org/wiki/
File:Babbage_Difference_Engine_%281%29.jpg
understands a small code
• Hardware understanding is
limited to arithmetic operations
• Humans translate arithmetic
...
tasks into code with crude tools
Business Computing Era
1970s
... now included all
the code used in
interactions between
computers and http://commons.wikimedia.org/wiki/
...
File:COBOL.png
humans
• Humans develop programming ...
languages that borrow heavily
from natural language
• Compilers translate into a code
that models the hardware
http://commons.wikimedia.org/wiki/File:Cpc-wide-700.jpg
Network Computing Era
1980s
... now included all
the code used in
interactions between
computers
http://upload.wikimedia.org/wikipedia/commons/thumb/
4/41/Mislanet2003_3.jpg/120px-Mislanet2003_3.jpg
• Humans use programming
languages to express
increasingly sophisticated
network protocols
• Focus shifts to computer-
computer communication ... ... ...
Internet Era
1990s
... now consisted of
everything that is http://commons.wikimedia.org/wiki/
not hardware
File:Internetanschl%C3%BCsse.PNG
• More and more of the code is ...
expressed in programming
languages
• The complexity that comes with
...
...
scale becomes the big
productivity bottleneck
... ... ...
Web Application Era
2000s
... increasingly
included interaction
with the web http://commons.wikimedia.org/wiki/File:Mfile.png
• 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
...
Cloud Era
2010s
... suffers from the
same problems as http://commons.wikimedia.org/wiki/
way back File:Cloud_computing_icon.svg
• when ... was all about exchange
between humans
• Increasingly the artefacts
exchanged are not hardware http://commons.wikimedia.org/wiki/
File:Discussion.jpg
• We are encoding ... in ...
• Hold that thought! ...
...
... is a container of information that http://commons.wikimedia.org/wiki/
File:Photo_with_histogram.JPG
• 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
...
We are encoding ... in ...
• ...
• <=> communication
• <=> information
• <=> programs
• <=> representations
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
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 syntax
can 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
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
Pain Point
http://commons.wikimedia.org/wiki/
File:Ann_dependency_graph.png
Dependency graphs must also be modularised
• molecules
• posture, gestures
low
• beats, phrases, songs number of
semantic links
• words, sentences between modules
• paragraphs, chapters, books, terms, equations
• program/diagram/hypertext/database files
• audio/image/video files
high
• nucleotides, genes
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
Software
Software is an arbitrary
set of language artefacts
Models
Class : Mammal
dateOfBirth
Models are
language artefacts
that represent Class : Dog Class : Cat
isPoliceDog [2] [2]
the desired intent [*] [*]
associated with a system
Dog : Jack Cat : Coco
{1/5/03, yes} {4/3/07}
in a human-friendly Dog : Susie
{1/2/00, no}
Cat : Peter
{10/9/98}
syntax
Software
Software increasingly
consists of models
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
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
Modelling
Language
Design http://commons.wikimedia.org/wiki/File:Human_Cognition.jpg
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
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
More Information
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
tiny.cc/sematpos_jbe,
Perspective on SEMAT
tiny.cc/sematslides_jbe
Denotational Semantics tiny.cc/densem
Thank you
Jorn Bettin jbe @ sofismo.ch
Software is Models www.sofismo.ch