![Page 1: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/1.jpg)
Ports, Protocols, andProcesses:
a Programming Paradigm?
Peter GrogonoComputer Science and Software Engineering
Concordia University
22 November 2007
1/50
![Page 2: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/2.jpg)
The Erasmus Project
Desiderius Erasmus of Rotterdam (1466-1536)
2/50
![Page 3: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/3.jpg)
Dramatis Person�
Brian Shearing
Peter Grogono
Rana Issa
Nima Jafroodi
Nurudeen Lameed
3/50
![Page 4: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/4.jpg)
Inspiring Thoughts
``The fox has many tricks. The hedgehog has but one.But that is the best of all.''
Erasmus, c. 1500
``It is better to have 100 functions operate on one datastructure than 10 functions on 10 data structures.''
Perlis, 1982
``One thing [language designers] should not do is to includeuntried ideas of their own. Their task is consolidation,not innovation.''
Hoare, 1974
4/50
![Page 5: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/5.jpg)
Road Map
Programmingwhat we've done
Principleswhy we've done it
Reasoninghow we know it works
Developmenthow we fit it together
For and againstwhy we bother
5/50
![Page 6: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/6.jpg)
Main
Cell
Main = ();
Main();
6/50
![Page 7: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/7.jpg)
Main
Cell
prot = [ ];
Main = ();
Main();
6a/50
![Page 8: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/8.jpg)
serverProc
Process
clientCell
Main
prot
prot = [ ];
serverProc = { p +: prot | };
clientCell = ( p -: prot | );
Main = ( p :: prot; serverProc(p); clientCell(p) );
Main();
6b/50
![Page 9: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/9.jpg)
prot = [ start; *( query: Text; ^reply: Integer ); stop ];
serverProc = { p +: prot |
p.start;
loopselect
|| input: Text := p.query; p.reply := 0
|| p.stop; exit
end
};
clientCell = ( p -: prot | );
Main = ( p :: prot; serverProc(p); clientCell(p) );
Main();
7/50
![Page 10: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/10.jpg)
serverProc
clientCell
clientProcess
Main
prot
clientProc = { p -: prot | };
clientCell = ( p -: prot | clientProc(p) );
8/50
![Page 11: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/11.jpg)
Protocols
query = [ question; ^answer ]
sequence = [
first: Integer;
second: Text;
third: Float ]
method1 = [ *( arg1; arg2; ...; ^result ) ]
method2 = [ *( arg1; arg2; ...; ^res1; ^res2 ) ]
class = [ *( M1 | M2 | ... | Mn ) ]
9/50
![Page 12: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/12.jpg)
Statements
select
|| p.red; ...
|| p.yellow; ...
|| p.green; ...
end
select
|stored < 10| buff[i] := p.x; ...
|stored > 0| q.y := buff[j]; ...
end
select fair ...
select ordered ...
select random ...
10/50
![Page 13: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/13.jpg)
Processes
prot = [ *( arg: Integer ) ];
filter = { p +: prot |
prime: Integer := p.arg;
sys.out := text prime + ’ ’;
q -: prot;
filter(q);
loop
n: Integer := p.arg;
if n % prime != 0
then q.arg := n
end
end
};
11/50
![Page 14: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/14.jpg)
filter
p q
filter
p q
filter
p q
filter
p q
filter
p q
filter
p q
filter
pq
filter
pqfilter
pqfilterpqfilterpqfilterpq
12/50
![Page 15: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/15.jpg)
filter
12a/50
![Page 16: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/16.jpg)
Semantics vs. Deployment
square
squareCell
client
clientCell
main
p pch
13/50
![Page 17: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/17.jpg)
Code
sqProt = [ *( query: Float; ^reply: Text ) ];
square = { p +: sqProt |
loop
q: Float := p.query;
p.reply := text(q * q);
end
};
squareCell = ( port +: sqProt | square(port) );
client = { p -: sqProt |
p.query := 2;
sys.out := p.reply + "\n";
};
clientCell = ( port -: sqProt | client(port) );
main = ( ch :: sqProt; squareCell(ch); clientCell(ch) );
main();
14/50
![Page 18: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/18.jpg)
Metacode
<Mapping>
<Processor> alpha.encs.concordia.ca
<Port> 5555 </Port>
<Cell> squareCell </Cell>
<Cell> clientCell1 </Cell>
</Processor>
<Processor> beta.encs.concordia.ca
<Port> 5555 </Port>
<Cell> squareCell1 </Cell>
<Cell> clientCell </Cell>
</Processor>
</Mapping>
15/50
![Page 19: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/19.jpg)
Road Map
Programmingwhat we've done
Principleswhy we've done it
Reasoninghow we know it works
Developmenthow we fit it together
For and againstwhy we bother
16/50
![Page 20: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/20.jpg)
Cells
Programs consist of cells
Cells may contain variables, processes, and cells
Cells can be of any sizeprograms are ``fractal''
Cells are ``first-class citizens''
Control flow never crosses a cell boundary
Cells are explicitly provided with all needed resources
Cells may exchange messages
Processes within a cell behave as co-routines
17/50
![Page 21: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/21.jpg)
18/50
![Page 22: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/22.jpg)
Processes
A process is always inside a cell
Processes may contain variables, processes, and cells
Processes are ``first-class citizens''
All actions are performed within processes
Control flow never crosses a process boundary
A process may access variables within its cell
Processes communicate by exchanging messages
A process relinquishes control when it communicatesno race conditions
19/50
![Page 23: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/23.jpg)
C1
#
C2
#
P1
P2
P3V1 V2
One program counter per cell
20/50
![Page 24: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/24.jpg)
Shared Variables
proc = { p +: prot; sv: Float |
... sv ...
sys.out := sv;
p.val := ...
sys.out := sv;
}
21/50
![Page 25: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/25.jpg)
Shared Variables
proc = { p +: prot; sv: Float |
... sv ...
sys.out := sv;
p.val := sv;
sys.out := sv;
}
21a/50
![Page 26: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/26.jpg)
Shared Variables
proc =
{ ... |
atomic
{
...
open
{
p.val := ...
}
...
}
}
21b/50
![Page 27: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/27.jpg)
Protocols
Protocols define interfaces
Protocols specify communication patterns
Protocols consist of typed messages and signals
Protocols define sequence, choice, and repetition
There is a ``satisfaction'' relation on protocolsdetails later
22/50
![Page 28: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/28.jpg)
Messages
A ``sent'' message is an lvalue:
p.result := 42;
A ``received'' message is an rvalue:
sum := p.val + ...;
Signals synchronize:
p.stop
23/50
![Page 29: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/29.jpg)
Messages
A ``sent'' message is an lvalue:
p.result := 42;
A ``received'' message is an rvalue:
sum := p.val + q.val;
Signals synchronize:
p.stop
23a/50
![Page 30: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/30.jpg)
Separation of Concern
Cells define structure ∼ Processes define action
Code defines meanings ∼ Metacode defines deployment
Protocols specify processes ∼ Protocols ensure satisfaction
24/50
![Page 31: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/31.jpg)
Road Map
Programmingwhat we've done
Principleswhy we've done it
Reasoninghow we know it works
Developmenthow we fit it together
For and againstwhy we bother
25/50
![Page 32: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/32.jpg)
26/50
![Page 33: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/33.jpg)
Labelled Transition System (LTS):
Q = { q0, q1, q2, q3 } ,
L = {α } ,
T = { (q0, α, q0), (q1, α, q2), (q2, α, q3) } .
q0
q1 q2 q3
α
α α
27/50
![Page 34: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/34.jpg)
Strong Simulation: S ⊆ Q × Q
If (p, q) ∈ S and pα−→ p′ then
there exists q ′ ∈ Q such that (p′, q′) ∈ S and qα−→ q′.
p′ q′
qp
S
α
S
α
28/50
![Page 35: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/35.jpg)
q0
q1 q2 q3
α
α α
S = { (q1, q0), (q2, q0), (q3, q0) }
is a strong simulation.
29/50
![Page 36: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/36.jpg)
If
· (Q, L, T ) is a LTS
· A ⊆ Q
· B ⊆ Q
· S ⊆ A × B is a strong simulation
then
A v B (A is simulated by B)
B w A (B simulates A)
w is reflexive, transitive, computable.
30/50
![Page 37: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/37.jpg)
Protocol P :
α; ( β | γ ); δ
LTS L(P ):
A B C Dα
β
γ
δ
31/50
![Page 38: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/38.jpg)
Code C:
p.alpha;
select
|| p.beta; ...
|| p.gamma; ...
end;
p.delta
LTS L(C):
A B C Dα
β
γ
δ
32/50
![Page 39: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/39.jpg)
Server Client
SPS PC
C
L(S) w L(Ps) w L(Pc) w L(C)
33/50
![Page 40: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/40.jpg)
q0
q1 q2 q3
α
α α
Server:loop
p.alpha := ...
end
Protocol:[ *( alpha ) ]
Client:x := p.alpha;
y := p.alpha
34/50
![Page 41: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/41.jpg)
Hennessy-Milner Logic
Syntax:
F = X (states satisfying X)| tt (all states)| ff (no states)| F1 ∧ F2 (intersection)| F1 ∨ F2 (union)| 〈α〉F (some α-trans −→ F )| [α]F (all α-trans −→ F )
35/50
![Page 42: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/42.jpg)
Semantics (with respect to an LTS (Q, L, T )):
[[·]] : Σ → P(Q) → P(Q)
[[X ]](S) = S
[[ tt ]](S) = Q
[[ ff ]](S) = ∅[[F1 ∧ F2 ]](S) = [[F1 ]](S) ∩ [[F2 ]](S)
[[F1 ∨ F2 ]](S) = [[F1 ]](S) ∪ [[F2 ]](S)
[[ 〈α〉 ]](S) = { p | ∃p′ ∈ S . pα−→ p′ }
[[ [α] ]](S) = { p | ∀p′ . p α−→ p′ ⇒ p′ ∈ S }
36/50
![Page 43: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/43.jpg)
Reasoning - Summary
Code
Procotols
−→ LTS −→
w (simulates)
HM Logic
Also:
FSP / LTSA (Magee & Kramer)Finite State Processes / Labelled Transition System Analyzer
TLA+ (Lamport)Temporal Logic of Actions Plus
37/50
![Page 44: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/44.jpg)
Road Map
Programmingwhat we've done
Principleswhy we've done it
Reasoninghow we know it works
Developmenthow we fit it together
For and againstwhy we bother
38/50
![Page 45: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/45.jpg)
39/50
![Page 46: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/46.jpg)
Requirements
Specification
Design
PL
machine code
40/50
![Page 47: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/47.jpg)
Change moves upwards in the funnel:
spaghetti ??−→ waterfall
structured code −→ SADTStructured Analysis & Design Technique
object-oriented languages −→ OOADObject-Oriented Analysis & Design
aspect-oriented languages −→ AOSDAspect-Oriented Software Development
process-oriented languages ??−→ POMDDProcess-Oriented Model-Driven Design
41/50
![Page 48: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/48.jpg)
Therefore:
To effect change in the
software development process,
we must change the
programming paradigm.
42/50
![Page 49: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/49.jpg)
Hypothesis
POMDD will succeed because:
real world ∼= concurrent processes
concurrent processes ⇒ multiprocessors
multiprocessors ⇒ concurrent software
concurrent software ⇒ models real world
cells/processes ⇒ lower coupling
lower coupling ⇒ refactoring
43/50
![Page 50: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/50.jpg)
Road Map
Programmingwhat we've done
Principleswhy we've done it
Reasoninghow we know it works
Developmenthow we fit it together
For and againstwhy we bother
44/50
![Page 51: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/51.jpg)
The case against
45/50
![Page 52: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/52.jpg)
The case against
Programming languages are not the problem
45a/50
![Page 53: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/53.jpg)
The case against
Programming languages are not the problem
Object-oriented programming is good enough
45b/50
![Page 54: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/54.jpg)
The case against
Programming languages are not the problem
Aspect-oriented programming is good enough
45c/50
![Page 55: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/55.jpg)
The case against
Programming languages are not the problem
Aspect-oriented programming is good enough
We've hidden the hard bitsCICS, J2EE, CORBA, ...
45d/50
![Page 56: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/56.jpg)
The case against
Programming languages are not the problem
Aspect-oriented programming is good enough
We've hidden the hard bitsCICS, J2EE, CORBA, ...
Introducing a new paradigm is no longer feasible
45e/50
![Page 57: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/57.jpg)
The case for
46/50
![Page 58: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/58.jpg)
The case for
Many distributed applications
46a/50
![Page 59: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/59.jpg)
The case for
Many distributed applications
Multicore processors
46b/50
![Page 60: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/60.jpg)
The case for
Many distributed applications
Multicore processors
Process-oriented programming is ... good
46c/50
![Page 61: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/61.jpg)
The case forMany distributed applications
Multicore processors
Process-oriented programming is ... good
We need software
development
maintenance
growth
adaptation
evolution
refactoring
46d/50
![Page 62: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/62.jpg)
Competition
ABCL/1 Joyce
Ada Mozart/Oz
Cilk Occam-π
Concurrent Pascal SALSA
Erlang SR
47/50
![Page 63: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/63.jpg)
Wrap Up
Objects ... Aspects ... Threads ... Locks ... ×
Hidden guru code ... ×
Modular concurrency ...√
48/50
![Page 64: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/64.jpg)
Erasmus provides ...
safe concurrency
modularity
scalability
modelling capability
weak coupling
testing
49/50
![Page 65: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/65.jpg)
Erasmus provides ...
safe concurrency
modularity
scalability
modelling capability
weak coupling
testing
... we hope!
49a/50
![Page 66: Ports, Protocols, and Processesusers.encs.concordia.ca/home/g/grogono/Erasmus/ppp-slides.pdf · a Programming Paradigm? Peter Grogono Computer Science and Software Engineering Concordia](https://reader033.vdocuments.mx/reader033/viewer/2022050607/5fae6fe882a8b4543f2b504f/html5/thumbnails/66.jpg)
The End
50/50