Conclusion
The miniaturization of devices and
the prolific interconnectedness of
these devices over high-speed wireless networks are completely changing
how commerce is conducted. These
changes (a.k.a. digital) will profoundly
change how enterprises operate. Software is at the heart of this digital world,
but the software toolsets and languages were conceived for the host-based
era. The issues that already plague
software practice (such as high defects,
poor software productivity, information vulnerability, and poor software
project success rates) will be more
profound with such an approach. It is
time for software to be made simpler,
secure, and reliable.
Moving software from its computing foundation to a communication foundation will ensure the
promise and benefits of digital are
more widely shared.
Related articles
on queue.acm.org
A Guided Tour through Datacenter
Networking
Dennis Abts and Bob Felderman
http://queue.acm.org/detail.cfm?id=2208919
You Don’t Know Jack about Network
Performance
Kevin Fall and Steve McCanne
http://queue.acm.org/detail.cfm?id=1066069
The Network’s NEW Role
Taf Anthias and Krishna Sankar
http://queue.acm.org/detail.cfm?id=1142069
References
1. Backus, J. Can programming be liberated from the von
Neumann style? A functional style and its algebra of
programs. Commun. ACM 21, 8 (Aug. 1978), 613–641;
http://dl.acm.org/citation.cfm?doid=359576.359579.
2. Fielding, R. T. Architectural styles and the design of
network-based software architectures. Ph.D. dissertation,
2000, University of California, Irvine; https://www.ics.uci.
edu/~fielding/pubs/dissertation/ top.htm.
3. Futures and promises. The Boost C++ Libraries;
http://theboostcpplibraries.com/boost.thread-futures-and-promises.
4. Kernighan, B., Ritchie, D.M. The C Programming
Language. Prentice Hall, 1978.
5. MasterKube Software Development Manual. 2014
6. Milner, R. Communicating and Mobile Systems: The
Pi-Calculus. Cambridge University Press, 1999.
7. Milner, R. Elements of Interaction. Commun. ACM
36 1 (Jan. 1993), 78–89; http://dl.acm.org/citation.
cfm?id=1283948.
8. ReactiveX; http://reactivex.io/intro.html.
9. Tanenbaum, A.S., van Renesse, R. Distributed
operating systems. ACM Computing Surveys 17, 4
(1985), 419–470.
Antony Alappatt ( antony.alappatt@masterkube.com)
is the founder of MasterKube, whose goal is to provide
path-breaking software technology and services to serve
the new digital era.
Copyright held by author.
Publication rights licensed to ACM. $15.00.
Figure 10. Agent definition.
<Agent>
<AgentName>AddContactAgent</AgentName>
<Sequence>
<!--Triggers the contact agent when add action is pressed -->
<AgentCommand> <AgentName>ContactAgent</AgentName>
<Ask><action><actionName>Add</actionName></action></Ask>
</AgentCommand>
<!-- Because this agent is in a sequence operation,
the same agent is called recursively -->
<AgentCommand> <AgentName>AddContactAgent</AgentName> </AgentCommand>
</Sequence>
</Agent>
The ContactAgent accepts the FirstName, LastName, MobileNumber, and EmailId. It
activates the EditContactAgent. The AvatarName, which is how the agent is identified, is the
LastName.
<Agent>
<AgentName>ContactAgent</AgentName>
<ProcessName>Contacts</ProcessName>
<AvatarName>LastName</AvatarName>
<Element>FirstName</Element> <Element>LastName</
Element><Element>MobileNumber</Element><Element>EmailId</Element>
<!-- Repeatedly show the edit contact agent till the user presses Delete
-->
<AgentCommand><AgentName>EditContactAgent</AgentName></AgentCommand>
</Compose>
</Agent>
The EditContactAgent shows the different actions shown by the contact. The different actions
that are enabled for each contact are Edit, Delete, and View. These actions are shown in a
choice, as only one action can be taken. Upon interacting with one option, the other actions go away.
<Agent>
<AgentName>EditContactAgent</AgentName>
<Compose>
<!--Two choices are presented. One is to Edit and the other is to De-
lete-->
<Choice> <ChoiceOption>
<Ask><action><actionName>Edit</actionName></action></Ask>
<OptionAction>
<Compose>
<!--When edit is interacted with the same agent
is repeated to show persistence -->
<AgentCommand> <AgentName>EditContactAgent</AgentName> </AgentCommand>
</Compose> </OptionAction>
</ChoiceOption>
<ChoiceOption>
<Ask><action><actionName>Delete</actionName></action></Ask>
<OptionAction> <!--When delete is interacted with no further
observations are exposed so this contact disappears. --> </OptionAc-
tion>
</ChoiceOption>
<ChoiceOption>
<Tell><action><actionName>View</actionName></action></Tell>
<OptionAction>
<!--When View is interacted with
the same agent is repeated to show persistence -->
<//ChoiceOption></Choice>
</Compose>
</Agent>