Intentional Software Magnus Christerson. Problem: Knowledge Software Medical Knowledge Medical...

42
INT NTIO N L S O F T W A R E E A Intentional Software Magnus Christerson

Transcript of Intentional Software Magnus Christerson. Problem: Knowledge Software Medical Knowledge Medical...

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

Future

Knowledge 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 Code

A = 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 Processing

KnowledgeCapture

Knowledge 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-C

Ruby/Javascript

C/C++

Software

Experts

Knowledge

Experts

Non-executable Executable

Knowledge

Workbench

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 Workbench

Web 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