univ of va intentional introduction 2013 01-31
TRANSCRIPT
INT NTION LS O F T W A R E
E A
Intentional Software
Magnus Christerson
Problem: Knowledge Software
MedicalKnowledge
Medical Applications
Medical Expert
Clinical Guidelines
Patients perform personalized health monitoring in home
???
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
What is Software?
• 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 software complex?
Software is amazing: 1010 times “better” than human action, at much lower cost than hardware.
Why is this important?
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?
19632013
The Key Players
Domain Expert Programmer
Current Development Process
Programmer
Develops
Maintains
Knowledge
Explains
Domain ExpertWork 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
Insight: Distinguish and treat separately Problem (A) from Program (B)
FORTRAN, 1954First Domain Specific Language
(DSL)
John Backus
From “Preliminary Report: FORTRAN”, IBM, 1954
Turing Award 1977
COBOL, 1957First “non-programmer” DSL
Rear-Admiral Grace Hopper Creator of (predecessors to)
COBOL Wrote first compiler
From MATH-MATIC and Flow-Matic Manuals, UNIVAC, 1957
Found first “bug”
“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.”
LISP, 1959First DSL language system
John McCarthy
From “Recursive Functions of Symbolic Expressionsand Their Computation by Machine, Part I”
- - John McCarthy, MIT, 1960,
First language system for developing Domain Specific
Languages (DSLs)MIT Stanford 1962
Invented (the term) Artificial Intelligence
Invented garbage collection (1959)
Turing Award 1971
“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, self-contained units of the language -- explicit formulae -- called assignment statements.”
Algol, 1960First DSL for programmers
Peter Naur et al
From “Revised Report on the Algorithmic Language Algol 60” (1960)First DSL for programmers
Developed in committee with Naur, Backus,
McCarthy, et alTuring Award 2005
Implementation of Gier Algol (Naur) – note comments are in Algol
© 2005 Intentional Software Corp.
Programming Evolution
Software progress?
19632013
Problem and Program are still intertwined causing the A*B complexityHow can we separate A from B?
A and B more useful if separated
Idea: Change B to B’ (meta B) so that we canGenerate: A B using B’B’=Kolmogorov complexity
Problem (A) or Program (B)?
Compilers
Parse Tree
Parse Generate Code
ProgramPunch Cards
Past
Parse Generate Code
ProgramSource Files
Present
Editing Generate Code (B’)
Program
FutureKnowledge Editor (A)
Parse Tree
Parse Tree
Intentional: Knowledge Separated (A+B)
Insurance
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(){ this.rgcod.RemoveAt(this.rgcod.Count - 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()
B = Program CodeA = Intentional Domain Code
Banking Manufacturing
Aerospace
Healthcare
• “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)
Intentional Software
INT NTION LS O F T W A R E
E A
History – Charles Simonyi
1960’s 1970’s 1980’s 1990’s 2000’s
Escape Hungary
Denmark: Algol compiler under Peter Naur
Berkeley
Xerox PARCWYSIWYGXerox STARStanford
Microsoft: Word Multiplan Excel
Microsoft Research: Intentional Programming
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 checksHuman-to-human/computer
Knowledge Processing
Information Processing
Data Processing
Knowledge 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 ProcessingKnowledge
CaptureKnowledge Processor
Knowledge Applications
& Work Products
Knowledge Expert
Domain Knowledge
Knowledge Workbench Work Products: Applications, Tools,
Reports, Instructions
Knowledge Workbench
A Knowledge Processor: - Processable representation of Domain
Knowledge• Social Collaboration
– Collaborate on knowledge base
– Change history, audits– Conflict resolution
• Produce multiple accurate work products from single knowledge source
• Multiple platforms
• Common definitions of knowledge– Validated knowledge
• Rapid implementation of changes
• Adapted to local contexts at low cost
The Knowledge Workbench
Computability
KnowledgeDomain
PowerPoint
ExcelWord
Java/C#/Objective-CRuby/Javascript
C/C++
SoftwareExperts
Knowledge Experts
Non-executable Executable
KnowledgeWorkbench
IdeasKnowledge
1. Medical Knowledge Processing
Knowledge Medical Applications
Medical Expert
Medical Knowledge
Patients perform personalized health monitoring in home
???
1. Medical Knowledge Processing
Knowledge Knowledge Processor
Medical ApplicationsRecord Generate
Medical Expert
Medical Knowledge
Health Workbench Patients perform personalized health monitoring in home
2. Legal Knowledge Processing
KnowledgeCapture
Knowledge Processing
LegalApplicationsRecord Generate
Legal Expert
Legal Knowledge
Legal WorkbenchWeb application that automates
SEC filings
3. Financial Knowledge Processing
KnowledgeCapture
Knowledge Processing
Financial ApplicationsRecord Generate
Financial Expert
Financial Knowledge
Financial Workbench Fund Reports
Manufacturing:• Design-for-
Manufacturability analysis for Technical Data Packages
• Lay groundwork for the development of a foundry-style manufacturing capability.
Intentional Projects
Getting Things Done• Redefine Personal
Productivity Software through GTD® and a better Meta User Experience
Space Systems:• Space Mission
Workbench• High level language
describe spacecraft behavior with automatic implementation of modularized satellite
Healthcare Workbench• Health assessment and
treatment in the home• Programmable and
updateable by health-care professionals
Whiteboard• Next generation
document editing application
• Radically simpler user interface that works well on touch-input devices and large or small surfaces
Productivity
Healthcare
FinancialPension Workbench• Specification and
implementation of life insurance products.
Aerospace/Manufacturing
Intelligence
Intel Workbench (classified)
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
Intentional Software
Current Development Process
Programmer
Develops
Maintains
Encoded Knowledge
Explains
Domain ExpertWork Products: Applications, documents, instructions, check lists…
Intentional Development Process
Dev
elop
s
Maintains
Knowledge Processor
•input
•output
Work Products: Applications, documents, instructions, check lists…
Domain Expert
Encoded Knowledge*
Programmer
* in processable form
Intentional Knowledge Encoding – Knowledge Workbench
Domain Language(s)
Structured editor
References: not just text
Notations to fit domain
Interactive evaluation and test
Knowledge encoded in domain languages
Generalized Work Product Creation
KnowledgeCapture
Knowledge Representation
Knowledge Application & Work Products
Knowledge Worker
Domain Knowledge
Knowledge Processor Work Products: Applications, Tools,
Reports, Instructions
Accurate knowledge representation gives:
Breakthrough Productivity
Automated feedback early (like spell checking for knowledge)
Early testing of knowledge
Computable Specifications
Full code generation from knowledge model
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
Key Benefits of Knowledge Processing
Demo