How do we develop long-term systems that
keep maintenance costs low and reward us with time to innovate with limited development resources?
For researchers developing software expected to exist for long-term science projects, there is one software development practice coding practice, that if employed and mastered, can lead to sustainable, flexible, software that can organically grow as your research needs evolve over time. This practice is called loose coupling.
-------------------------------------
Imagine yourself a farm boy...
By farm boy, I mean, systems engineer...
Your systems are old, outdated...
They require more and more maintenance...
When what you really need to be doing is innovating.
Making you less a systems engineer and more a systems caretaker.
How do reclaim our role of systems engineer? Loose coupling.
-------------------------------------
How do we decide what to loosely couple?
1. Volatile code - code with a likelihood to change over its lifespan
2. Code splatter - similar business logic that exists in more than one place
How do we sustainably innovate with web technologies?
Pick technologies that leverage what *works* about the web architecture
-------------------------------------
Invited Oral Presentation at the AGU Fall Meeting 2013.
14. the
BILLION DOLLAR
QUESTION
How do we develop long-term systems that
keep maintenance costs low
and reward us with time
with limited development resources ?
18. Loose Coupling in Software
System A
data = getData();
System B
function getData()
{ /* send some data */ }
Forms of Loose Coupling:
• Wrappers
(Functions, OOP Interfaces)
• APIs, Libraries (Web Services, Hibernate, etc.)
20. Tight Coupling in Software
SystemA.getData(SystemB)
{
SystemB.getData(
• System B
exposes its
database
“SELECT *
FROM
WHERE
AND
);
}
datasets d,
parameter p
p.dataset = d.id
d.id = ?”
• System A
dependent on
System B
not changing
22. How do we loosely couple?
1. Identify code candidates
§ volatility
§ splatter
2. Prioritize
§ future impact
§ Abstraction: for better or for worse ?
23.
24. Likely Candidate
USE CASE: “We want to start recording
research themes”
Translation: “We want to change the DB schema”
•
•
•
•
Volatility:
Splatter:
Future impact:
Better/Worse:
HIGH
LOW
HIGH
BETTER
30. How do we innovate?
Select time-tested, successful mechanisms
Successful means:
community adoption
readily accessible tools
31. The Oscar goes to…
• Human Users
– Structured content
– Content display
– Interactive content
HTML
CSS
JS
• Machine Users
– Syndicated content
– Data exchange
– Semantic data exchange
RSS
JSON
???
32. JSON-LD *
• JSON APIs become fully REST compliant
• Not disruptive to existing JSON
• Works with pre-existing parsers
• Not leveraging human platform
- RDFa, microformats
• Google added JSON-LD support
– Embedded HTML, Gmail actions
33. Going to the Bank
Metadata System
DAO
RDF
JSON
JSON-LD
34. Sustainability is a choice you make
every day.
1. Loosely couple the critical, at-risk code
2. Innovate with what works about the Web
37. Resources
Programmable Web, An Unfinished Work
by
Aaron Schwartz
http://www.morganclaypool.com/doi/pdf/10.2200/S00481ED1V01Y201302WBE005
TWC Semantic Web Methodology
by Peter Fox and Deborah McGuinness
http://tw.rpi.edu/web/doc/TWC_SemanticWebMethodology
BCO-DMO
http://www.bco-dmo.org