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

Univ of va intentional introduction 2013 01-31

Embed Size (px)

Citation preview

Page 1: Univ of va intentional introduction 2013 01-31

INT NTION LS O F T W A R E

E A

Intentional Software

Magnus Christerson

Page 2: Univ of va intentional introduction 2013 01-31

Problem: Knowledge Software

MedicalKnowledge

Medical Applications

Medical Expert

Clinical Guidelines

Patients perform personalized health monitoring in home

???

Page 3: Univ of va intentional introduction 2013 01-31

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?

Page 4: Univ of va intentional introduction 2013 01-31

• 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?

Page 5: Univ of va intentional introduction 2013 01-31

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

Page 6: Univ of va intentional introduction 2013 01-31

Software progress?

19632013

Page 7: Univ of va intentional introduction 2013 01-31

The Key Players

Domain Expert Programmer

Page 8: Univ of va intentional introduction 2013 01-31

Current Development Process

Programmer

Develops

Maintains

Knowledge

Explains

Domain ExpertWork Products: Applications, documents, instructions, check lists…

Page 9: Univ of va intentional introduction 2013 01-31

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

Page 10: Univ of va intentional introduction 2013 01-31

John von Neumann 1954- Father of the modern computer

Page 11: Univ of va intentional introduction 2013 01-31

Problem ~1950

Page 12: Univ of va intentional introduction 2013 01-31

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

Page 13: Univ of va intentional introduction 2013 01-31

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”

Page 14: Univ of va intentional introduction 2013 01-31

“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

Page 15: Univ of va intentional introduction 2013 01-31

“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

Page 16: Univ of va intentional introduction 2013 01-31

© 2005 Intentional Software Corp.

Programming Evolution

Page 17: Univ of va intentional introduction 2013 01-31

Software progress?

19632013

Page 18: Univ of va intentional introduction 2013 01-31

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)?

Page 19: Univ of va intentional introduction 2013 01-31

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

Page 20: Univ of va intentional introduction 2013 01-31

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

Page 21: Univ of va intentional introduction 2013 01-31

• “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

Page 22: Univ of va intentional introduction 2013 01-31

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

Page 23: Univ of va intentional introduction 2013 01-31

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

Page 24: Univ of va intentional introduction 2013 01-31

Knowledge Processing

Information Processing

Data Processing

Knowledge Processing

Page 25: Univ of va intentional introduction 2013 01-31

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

Page 26: Univ of va intentional introduction 2013 01-31

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

Page 27: Univ of va intentional introduction 2013 01-31

Knowledge ProcessingKnowledge

CaptureKnowledge Processor

Knowledge Applications

& Work Products

Knowledge Expert

Domain Knowledge

Knowledge Workbench Work Products: Applications, Tools,

Reports, Instructions

Page 28: Univ of va intentional introduction 2013 01-31

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

Page 29: Univ of va intentional introduction 2013 01-31

The Knowledge Workbench

Computability

KnowledgeDomain

PowerPoint

ExcelWord

Java/C#/Objective-CRuby/Javascript

C/C++

SoftwareExperts

Knowledge Experts

Non-executable Executable

KnowledgeWorkbench

IdeasKnowledge

Page 30: Univ of va intentional introduction 2013 01-31

1. Medical Knowledge Processing

Knowledge Medical Applications

Medical Expert

Medical Knowledge

Patients perform personalized health monitoring in home

???

Page 31: Univ of va intentional introduction 2013 01-31

1. Medical Knowledge Processing

Knowledge Knowledge Processor

Medical ApplicationsRecord Generate

Medical Expert

Medical Knowledge

Health Workbench Patients perform personalized health monitoring in home

Page 32: Univ of va intentional introduction 2013 01-31

2. Legal Knowledge Processing

KnowledgeCapture

Knowledge Processing

LegalApplicationsRecord Generate

Legal Expert

Legal Knowledge

Legal WorkbenchWeb application that automates

SEC filings

Page 33: Univ of va intentional introduction 2013 01-31

3. Financial Knowledge Processing

KnowledgeCapture

Knowledge Processing

Financial ApplicationsRecord Generate

Financial Expert

Financial Knowledge

Financial Workbench Fund Reports

Page 34: Univ of va intentional introduction 2013 01-31

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)

Page 35: Univ of va intentional introduction 2013 01-31

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

Page 36: Univ of va intentional introduction 2013 01-31

Current Development Process

Programmer

Develops

Maintains

Encoded Knowledge

Explains

Domain ExpertWork Products: Applications, documents, instructions, check lists…

Page 37: Univ of va intentional introduction 2013 01-31

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

Page 38: Univ of va intentional introduction 2013 01-31

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

Page 39: Univ of va intentional introduction 2013 01-31

Generalized Work Product Creation

KnowledgeCapture

Knowledge Representation

Knowledge Application & Work Products

Knowledge Worker

Domain Knowledge

Knowledge Processor Work Products: Applications, Tools,

Reports, Instructions

Page 40: Univ of va intentional introduction 2013 01-31

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

Page 41: Univ of va intentional introduction 2013 01-31

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

Page 42: Univ of va intentional introduction 2013 01-31

Demo