INT NTION L
A
E
S O
F T W A R E
Intentional Software
Magnus Christerson
Problem: Knowledge  Software
Medical
Applications
Medical
Knowledge
???
Clinical Guidelines
Medical Expert
Patients perform
personalized health
monitoring in home
What is Software?
1. Represents solutions to problems in domains
2. Encoded into a program that (after
compilation) runs on a computer
3. Software means to represent solutions to
problems in programming languages
Why is software complex?
• Complexity of the problem domain (A)
• Complexity of the implementation (B)
• Multiplied together in the coding process. (A*B)
A*B >> A+B
Why is this important?
Software is amazing: 1010 times “better” than human
action, at much lower cost than hardware.
But:
It is hard to create: it is “complex”
Progress toward better software
creation has been slow – this
used to be called “software crisis”
What happened to “soft” in
software?
Hardware Progress
Software progress?
1963
2013
The Key Players
Domain Expert
Programmer
Current Development Process
Maintains
Knowledge
Develops
Explains
Domain Expert
Programmer
Work Products:
Applications,
documents,
instructions,
check lists…
A brief history of software
1950: user, domain expert, programmer
are the same person
1970: programmer writes program,
domain expert, if any, is consultant
2010: domain experts’ contributions is
paramount, but Domain Orientation is
not yet the norm
John von Neumann 1954
- Father of the modern computer
Problem ~1950
FORTRAN, 1954
First Domain Specific Language (DSL)
Insight:
Distinguish and treat separately
Problem (A) from Program (B)
John Backus
Turing Award 1977
From “Preliminary Report: FORTRAN”, IBM, 1954
COBOL, 1957
First “non-programmer” DSL
Rear-Admiral Grace Hopper
Creator of (predecessors to) COBOL
Wrote first compiler
Found first “bug”
From MATH-MATIC and Flow-Matic Manuals, UNIVAC, 1957
LISP, 1959
First DSL language system
John McCarthy
“A programming system called LISP (for LISt
Processor) has been developed for the IBM 704
computer by the Artificial Intelligence group at
M.I.T. The system was designed to facilitate
experiments with a proposed system called the
Advice Taker, whereby a machine could be
instructed to handle declarative as well as
imperative sentences and could exhibit “common
sense” in carrying out its instructions.”
First language system for developing
Domain Specific Languages (DSLs)
MIT  Stanford 1962
Invented (the term) Artificial Intelligence
Invented garbage collection (1959)
Turing Award 1971
From “Recursive Functions of Symbolic Expressions
and Their Computation by Machine, Part I”
- - John McCarthy, MIT, 1960,
Algol, 1960
First DSL for programmers
Peter Naur et al
First DSL for programmers
Developed in committee with
Naur, Backus, McCarthy, et al
Turing Award 2005
“The purpose of the algorithmic language is to
describe computational processes. The basic
concept used for the description of calculating rules
is the well known arithmetic expression containing
as constituents numbers, variables, and functions.
From such expressions are compounded, by
applying rules of arithmetic composition, selfcontained units of the language -- explicit formulae
-- called assignment statements.”
From “Revised Report on the Algorithmic Language Algol 60” (1960)
Implementation of Gier Algol (Naur) – note comments are in Algol
Programming Evolution
© 2005 Intentional Software Corp.
Software progress?
1963
2013
Problem (A) or Program (B)?
Problem and Program are
still intertwined causing
the A*B complexity
How can we separate A
from B?
A and B more useful if
separated
Idea:
Change B to B’ (meta B) so
that we can
Generate: A  B using B’
B’=Kolmogorov complexity
Compilers
Parse
Past
Generate Code
Parse
Tree
Punch Cards
Parse
Present
Program
Generate Code
Parse
Tree
Program
Source Files
Future
Editing
Generate Code (B’)
Parse
Tree
Program
Knowledge Editor (A)
Intentional: Knowledge Separated (A+B)
Healthcare
Banking
Manufacturing
public CodeTable()
{
rgcod = new ArrayList();
}
public ArrayList rgcod;
public void Pass4(XCOD xcod, int i,
NTE nte)
{
Console.WriteLine("P4: " +
xcod.ToString());
this.rgcod.Add(new MICOP(xcod,
i, nte));
}
public MICOP MicopLast()
{
return
(MICOP)this.rgcod[this.rgcod.Count
- 1];
}
public void DeleteLastMicop()
{
Aerospace
Insurance
this.rgcod.RemoveAt(this.rgcod.Coun
t - 1);
}
public void Px()
{
Console.WriteLine("Produced
code");
int i = 0;
foreach (MICOP micop in
this.rgcod)
{
Console.WriteLine("{0,4}\t{1,14}\t{2}\t{3}",
i++,
micop.xcod.ToString(),
micop.i,
micop.nte == null ? " " :
micop.nte.ToString()
A = Intentional Domain Code
B = Program
Code
Intentional Software
• “Make the world’s knowledge more accessible and useful”
• Founded by Dr. Charles Simonyi
–
–
–
–
Developed first WYSIWYG editor at Xerox PARC
Chief Architect of Microsoft Word and Excel
Intentional Programming at Microsoft Research
Stanford University (PhD)
• Startup Company: Bellevue, Washington, USA
– European office in Netherlands
– ~40 employees (doubled in last 12 month)
INT NTION L
A
E
S O
F T W A R E
History – Charles Simonyi
1960’s
 Escape Hungary
 Denmark: Algol
compiler under
Peter Naur
 Berkeley
1970’s
 Xerox PARC
 WYSIWYG
 Xerox STAR
 Stanford
1980’s
 Microsoft:
Word
Multiplan
Excel
1990’s
 Microsoft
Research:
Intentional
Programming
2000’s
 Intentional
Software
Word Processing vs. Knowledge Processing
Records and formats text
Spelling and grammar checks
Human-to-human
Records and structures knowledge
Runs knowledge with checks
Human-to-human/computer
Knowledge Processing
Knowledge Processing
Information Processing
Data Processing
Data, Information, Knowledge
• Data: unprocessed facts and figures
– “The price of crude oil is $80 per barrel.”
• Information: data that has been interpreted
– “The price of crude oil has risen from $70 to $80 per barrel”
• Knowledge: information, experience and insight
– “When crude oil prices go up by $10 per barrel, it’s likely that gas prices will rise by
14¢ per gallon”
Making Sense of Data and Information, Elsevier 2007
Knowledge
“We know now that the source of wealth is something specifically human: knowledge.
If we apply knowledge to tasks we already know how to do, we call it 'productivity'.
If we apply knowledge to tasks that are new and different we call it 'innovation'.
Only knowledge allows us to achieve these two goals.”
- Peter Drucker
Knowledge Processing
Knowledge
Capture
Knowledge
Processor
Knowledge
Applications &
Work Products
Domain Knowledge
Knowledge
Expert
Knowledge Workbench
Work Products:
Applications, Tools,
Reports, Instructions
Knowledge Workbench
A Knowledge Processor:
- Processable representation of Domain Knowledge
• Common definitions of
•
•
knowledge
– Validated knowledge
Rapid implementation of
changes
Adapted to local contexts at
low cost
• Social Collaboration
•
•
– Collaborate on knowledge base
– Change history, audits
– Conflict resolution
Produce multiple accurate
work products from single
knowledge source
Multiple platforms
The Knowledge Workbench
Ideas
Knowledge
Domain
Knowledge
PowerPoint
Word
Excel
Knowledge
Workbench
Knowledge
Experts
Software
Experts
Java/C#/Objective-C
Ruby/Javascript
C/C++
Non-executable
Executable
Computability
1. Medical Knowledge Processing
Medical
Applications
Knowledge
???
Medical Knowledge
Medical Expert
Patients perform
personalized health
monitoring in home
1. Medical Knowledge Processing
Knowledge
Record
Knowledge
Processor
Generate
Medical
Applications
Medical Knowledge
Health Workbench
Medical Expert
Patients perform
personalized health
monitoring in home
2. Legal Knowledge Processing
Knowledge
Record
Capture
Knowledge
Processing
Generate
Legal
Applications
Legal Knowledge
Legal Workbench
Legal Expert
Web application
that automates
SEC filings
3. Financial Knowledge Processing
Knowledge
Record
Capture
Knowledge
Processing
Generate
Financial
Applications
Financial Knowledge
Financial Workbench
Financial Expert
Fund Reports
Intentional Projects
Productivity
Getting Things Done
Whiteboard
• Redefine Personal
Productivity Software
through GTD® and a
better Meta User
Experience
• Next generation document
editing application
Aerospace/Manufacturing
• Radically simpler user
interface that works well on
touch-input devices and
large or small surfaces
Financial
Manufacturing:
• Design-for-Manufacturability
analysis for Technical Data
Packages
• Lay groundwork for the
development of a foundrystyle manufacturing capability.
Intelligence
Space Systems:
• Space Mission Workbench
• High level language describe
spacecraft behavior with
automatic implementation of
modularized satellite
Healthcare
Pension Workbench
• Specification and implementation of
life insurance products.
Intel Workbench (classified)
Healthcare Workbench
• Health assessment and
treatment in the home
• Programmable and updateable
by health-care professionals
Intentional Software
Knowledge Workbench
Processable representation of Domain Knowledge
• Radical new approach to accelerate software innovation
• Software produced from intentions of domain experts
• Programmer is facilitator; builds domain language+compiler
Current Development Process
Maintains
Encoded Knowledge
Develops
Explains
Domain Expert
Programmer
Work Products:
Applications,
documents,
instructions,
check lists…
Intentional Development Process
Encoded Knowledge*
Knowledge Processor
Domain Expert
* in processable form
output
Develops
Maintains
input
Programmer
Work Products:
Applications,
documents,
instructions,
check lists…
Intentional Knowledge Encoding –
Knowledge Workbench
Structured editor
Knowledge
encoded in
domain
languages
Domain Language(s)
Notations to fit domain
References: not just text
Interactive evaluation and test
Generalized Work Product Creation
Knowledge
Capture
Knowledge
Representation
Knowledge
Application & Work
Products
Domain Knowledge
Knowledge
Worker
Knowledge Processor
Work Products:
Applications, Tools,
Reports, Instructions
Breakthrough Productivity
Accurate knowledge representation gives:
Automated feedback early (like
spell checking for knowledge)
Full code generation
from knowledge model
Computable Specifications
Early
testing of
knowledge
Key Benefits of Knowledge Processing
1.
Knowledge experts participate directly in the design and
maintenance of accurate and detailed knowledge
2.
Generation of multiple accurate work products and applications
3.
No inherent limitation on the number of platforms for
generated applications from the same knowledge source
4.
Rapid implementation of changes to domain knowledge e.g.
updates, enhancements and extensions
5.
Customization to different markets/customers at low cost
Demo
Download

Knowledge - Intentional Software