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