SlideShare a Scribd company logo
Model-Based Methods
and
Automation of Software Production
Jussi Rintanen
Department of Computer Science, Aalto University
December 13, 2018
The Problem
• Massive programmer shortage:
• Finland: 7000+
• USA: 200000+
• Programmer productivity too low
• Programming is a craft industry
Completely new kind of solutions are needed!
How do we program computers?
mov ax,@data
mov ds,ax
mov bx,si_ze
dec bx
xx:
mov cx,bx
mov si,0
yy:
mov al,a[si]
inc si
cmp al,a[si]
jb zz
xchg al,a[si]
mov a[si-1],al
zz:
loop yy
dec bx
jnz xx
How do we program computers?
40 N = N - 1
70 ISCAN = 1
IOK = 1
ISTOP = N
IF(ISTART - ISTOP) 50, 110, 110
50 IF(NUMS(ISCAN) - NUMS(ISCAN+1)) 90,90,60
60 J = NUMS(ISCAN)
NUMS(ISCAN) = NUMS(ISCAN+1)
NUMS(ISCAN+1) = J
IOK = 0
90 IF(ISCAN - (ISTOP - 1)) 80,100,100
80 ISCAN = ISCAN + 1
GOTO 50
100 IF(IOK) 105,105,110
105 ISTOP = ISTOP - 1
GOTO 70
110 DO 120 I=1, N
120 PRINT 130, NUMS(I)
130 FORMAT(I10)
STOP
END
How do we program computers?
for (c = 0; c < n; c++)
scanf("%d", &array[c]);
for (c = 0 ; c < n - 1; c++)
{
for (d = 0 ; d < n - c - 1; d++)
{
if (array[d] > array[d+1]) /* For decreasing order use < */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
What are programs good for?
• Easy to compile to machine code
• Easy to execute
• Easy to understand what it really does, in terms of
machine code
What are programs not so good for?
• Difficult to prove correct
• Difficult to analyze and reason about
• Difficult to use for other purposes than execute
(This is why testing beats correctness proofs)
• Difficult to understand (by programmer, other people)
Model-Based Approach to Software
SW for managing electricity networks
Model of a network:
• power lines
(topology)
• switches
• protection devices
• transformers
• customer
connections
Functionalities:
• Monitoring and diagnosis
• Control and reconfiguration
• Management of maintenance
crews
• Medium and long-term planning
of network maintenance,
modifications, extensions
Model-Based Approach to Software
SW for data-intensive applications
Model of an application:
• Data model
• Rules governing change of data
• Permissions to access, modify
(who? when?)
Functionalities:
• Analyze the model
• Implement the model
(code)
• Automate tasks (A.I.)
Our Goals
• Make (some of) SW development engineering
• Systematic process to develop SW specifications
• “AI” to do (almost) all of the routine coding
• Lift the abstraction level of code written by programmers
• Shift focus from code to business/organizational processes
• Result:
• Decreased development effort
• Easier testing and validation
• More modifiable and extendible SW
• Independence from execution environment (PL, OS, DBMS, UI)
Our Goals: Longer Term
• Intelligent agents (A.I.) supporting (and replacing) humans
in organizational roles
• Networks of interacting and inter-operating SW systems
• Fully automated companies, agencies, services, ...
• Integration with physical assets and infrastructure
• management of primary industries, energy, manufacturing,
transportation and logistics, services, ...
EIAI / aitocode: Software Production
users
HTML/HTTP
mobile apps
email/messaging
SW
DBMS
cloud storage
external SW
How Is Software Produced?
1 Precisely specify what the software is to do
2 Analyze software specification (automatic)
3 Choose:
• Programming language
• Database system(s)
• Operating system / execution environment
4 Synthesize software system (automatic)
5 Deploy software system (automatic)
Abstract View of Software
1 A university employee can establish a new
course in a given faculty, if the employee is
the director of education of the faculty.
2 A university employee can change the
responsible teacher of a course, if the
employee is the director of education for the
faculty responsible for the course.
3 A university employee can change the
requirements for a B.Sc. degree granted by a
given faculty, if the employee is the director
of education of the faculty.
4 A student can be granted a B.Sc. degree, if
the student has passed all courses required
for the degree.
5 A student can register for a course, if the
student has the right to study at the
university, and the course is part of the
studies for a degree the student is studying
for.
6 A student can register for an exam, if the
student is registered for the course.
7 A university employee can record the exam
grade for a student, if the student was
registered for the exam, and the exam is for a
course for which the employee is the
responsible teacher.
8 A student is recorded as having passed a
course, if the student has passed an exam for
the course and fulfilled other requirements
(for example, done obligatory home
assignments and a course project.)
9 A university employee can mark a course as
passed for a student, if the employee is the
responsible teacher of the course, and the
student was enrolled on the course.
Rules of an Application
Each of the informal rules can formalized as three parts:
• Inputs
• What does the user supply when performing the action?
• Each input has a type (int, string, set, list, ...)
• Condition
• What condition has to hold for the action to be possible?
• Boolean combination of atomic conditions (and, or, not, ...)
• Also limits the possible inputs!
• Effect
• How does the action modify the data (in the DB)
• One or more pieces of “code”
Rules of an Application
Each of the informal rules can formalized as three parts:
• Inputs
• What does the user supply when performing the action?
• Each input has a type (int, string, set, list, ...)
• Condition
• What condition has to hold for the action to be possible?
• Boolean combination of atomic conditions (and, or, not, ...)
• Also limits the possible inputs!
• Effect
• How does the action modify the data (in the DB)
• One or more pieces of “code”
Rules of an Application
Each of the informal rules can formalized as three parts:
• Inputs
• What does the user supply when performing the action?
• Each input has a type (int, string, set, list, ...)
• Condition
• What condition has to hold for the action to be possible?
• Boolean combination of atomic conditions (and, or, not, ...)
• Also limits the possible inputs!
• Effect
• How does the action modify the data (in the DB)
• One or more pieces of “code”
Example
A Facebook-style social media application
Who can post on a wall?
• The owner of the wall
• Friends of the wall owner
Result: Post appears on the
wall and in all relevant feeds.
action post(p : feedData, wallOwner : user) {
wallOwner == currentuser
or currentuser in wallOwner.friends
==>
new ent : feedEntry [ t = now,
entry = p,
comments = [],
auth = currentuser.auth,
owner = currentuser ];
wallOwner.wall = concat(wallOwner.wall,[ent]);
currentuser.posts = concat(wallOwner.wall,[ent]);
forall (u in currentuser.friends)
u.feed = concat(u.feed,[ent]);
}
Example
Peer-reviewing for an academic journal
Some articles can be published
as a new volume if
• the current user is the editor
of the journal,
• the articles are unpublished
and belong to the journal,
• the set of articles is
non-empty.
action createNewVolume( p : article set,
j : journal ) {
currentuser == j.editor
and subseteq(p,j.unpublishedarticles)
and card(p) > 0
==>
j.lastvolumenumber = j.lastvolumenumber + 1;
j.unpublishedarticles = j.unpublishedarticles  p;
new v : volume [ volumenumber = j.lastvolumenumber,
publicationtime = now,
articles = p ];
j.publishedvolumes = j.publishedvolumes U { v };
forall (a in p) a.volume = v;
}
How Is A Rule Implemented?
1 Is current user able to take the action? (UI menus etc.)
• Can precondition be true, for some inputs?
• Conceptually, must go through all possible input values
2 What input options to offer user? (UI input forms)
• Which input combinations can make precondition true?
• Conceptually, must produce all input combinations
3 Execute the rule
• Is precondition (with inputs) true? (easy)
• Execute the “Effects” part (easy)
• Implemented as a DBMS transaction
First two are both NP-hard (or harder)!
How Is A Rule Implemented?
1 Is current user able to take the action? (UI menus etc.)
• Can precondition be true, for some inputs?
• Conceptually, must go through all possible input values
2 What input options to offer user? (UI input forms)
• Which input combinations can make precondition true?
• Conceptually, must produce all input combinations
3 Execute the rule
• Is precondition (with inputs) true? (easy)
• Execute the “Effects” part (easy)
• Implemented as a DBMS transaction
First two are both NP-hard (or harder)!
How Is A Rule Implemented?
1 Is current user able to take the action? (UI menus etc.)
• Can precondition be true, for some inputs?
• Conceptually, must go through all possible input values
2 What input options to offer user? (UI input forms)
• Which input combinations can make precondition true?
• Conceptually, must produce all input combinations
3 Execute the rule
• Is precondition (with inputs) true? (easy)
• Execute the “Effects” part (easy)
• Implemented as a DBMS transaction
First two are both NP-hard (or harder)!
EIAI / aitocode: What We Have Now
Project since 2016, with 2018 funding from Business Finland
• Core technology completed
• Prototype implementation works
• Demo applications running
• peer-reviewing and publication for academic journals (10 rules)
• university course management (5 rules)
• social media (“Facebook”) (7 rules)
• blogging website (3 rules)
• web chat (2 rules)
• Other applications under development
EIAI / aitocode: Next Steps
• IDE integration (Q3/2019)
• Alternative PL, OS, DBMS, UI (Q3/2019)
• Mobile apps (2020)
• Verification/validation (2020)
• correctness proofs (w.r.t. stated properties)
• spec anomalies: unreachable and redundant actions & data
• Intelligence (2021)
• optimal data input (w.r.t. evaluation of a condition)
• suggest actions to human users (w.r.t. users’ goals)
• take action sequences autonomously
• minimization of a cost measure, maximization of a reward measure
Interested?
We are looking for collaboration partners:
• Companies to participate in technology trials
• Software developers willing to try out
• Everything else to transfer the technology to real use
Conclusion
• Automation of software production
• data and knowledge-intensive information systems
• web applications
• et cetera
• Future:
• Increased intelligence (automated embedding of “AI” in SW)
• Highly automated analytics and validation
Code is not interesting, systems and their features are!
Jussi.Rintanen@aalto.fi (technology)
Mika.Parikka@aalto.fi (business)
aitocode.com

More Related Content

Similar to Model-based programming and AI-assisted software development (20)

PDF
Functional solid
Matt Stine
 
PPT
Programming Paradigms
Janeve George
 
PPT
Programming Paradigms
Directi Group
 
PDF
Undergrad Thesis | Information Science and Engineering
Priyanka Pandit
 
PPTX
Overview of Software Engineering Principles - SCPS311.pptx
BypassFrp
 
PPTX
CQRS: Command/Query Responsibility Segregation
Brian Ritchie
 
PDF
Concepts Techniques And Models Of Computer Programming Peter Vanroy Seif Hari...
oktayabdili
 
PDF
Inventing The Next Business Programming Language
Richard Green
 
PDF
Programming Logic And Design Comprehensive 7th Edition Joyce Farrell
goldauokome3
 
PDF
Structured Software Design
Giorgio Zoppi
 
PDF
M256 Unit 1 - Software Development with Java
Yaseen
 
PPT
Decision table
jeebala
 
PDF
ASE02.ppt
Ptidej Team
 
PPTX
Solid OOPS
Toshish Jawale
 
PDF
Functional Programming Patterns (BuildStuff '14)
Scott Wlaschin
 
PPTX
Object Oriented Programming I
raven_rainagi
 
PDF
IN4308 1
Eelco Visser
 
PPTX
Software engineering.pptx
JAGADEESWARIS6
 
PPT
Software engineering
Fahe Em
 
PPT
Software engineering
Fahe Em
 
Functional solid
Matt Stine
 
Programming Paradigms
Janeve George
 
Programming Paradigms
Directi Group
 
Undergrad Thesis | Information Science and Engineering
Priyanka Pandit
 
Overview of Software Engineering Principles - SCPS311.pptx
BypassFrp
 
CQRS: Command/Query Responsibility Segregation
Brian Ritchie
 
Concepts Techniques And Models Of Computer Programming Peter Vanroy Seif Hari...
oktayabdili
 
Inventing The Next Business Programming Language
Richard Green
 
Programming Logic And Design Comprehensive 7th Edition Joyce Farrell
goldauokome3
 
Structured Software Design
Giorgio Zoppi
 
M256 Unit 1 - Software Development with Java
Yaseen
 
Decision table
jeebala
 
ASE02.ppt
Ptidej Team
 
Solid OOPS
Toshish Jawale
 
Functional Programming Patterns (BuildStuff '14)
Scott Wlaschin
 
Object Oriented Programming I
raven_rainagi
 
IN4308 1
Eelco Visser
 
Software engineering.pptx
JAGADEESWARIS6
 
Software engineering
Fahe Em
 
Software engineering
Fahe Em
 

More from Eficode (20)

PPTX
Saving money with Consolidations
Eficode
 
PDF
DevOps Automation with Puppet Bolt & Puppet Enterprise
Eficode
 
PDF
Scaling DevOps: Pitfalls to avoid
Eficode
 
PDF
Microservices, IoT, DevOps: A Case Study
Eficode
 
PPTX
Building a Knowledge Graph at Zalando
Eficode
 
PPTX
How to build the Cloud Native applications the way you want – not the way the...
Eficode
 
PPTX
The Future of Enterprise Applications is Serverless
Eficode
 
PPTX
Why Serverless is scary without DevSecOps and Observability
Eficode
 
PPTX
Securing Modern Applications: The Data Behind DevSecOps
Eficode
 
PDF
Secure your Azure and DevOps in a smart way
Eficode
 
PDF
Can I Contain This?
Eficode
 
PDF
The Mono-repo – a contradiction with Microservices
Eficode
 
PDF
Using Go in DevOps
Eficode
 
PDF
Why Should You Be Thinking About DesignOps?
Eficode
 
PDF
A beginners guide to scaling DevOps
Eficode
 
PPTX
From Zero to SAFe
Eficode
 
PPTX
Bringing value to the business and for your customer through DevOps
Eficode
 
PPTX
Disconnected Pipelines: The Missing Link
Eficode
 
PDF
The Best & Worst Uses of AI in Software Testing
Eficode
 
PDF
2018 State Of DevOps Report Key Findings
Eficode
 
Saving money with Consolidations
Eficode
 
DevOps Automation with Puppet Bolt & Puppet Enterprise
Eficode
 
Scaling DevOps: Pitfalls to avoid
Eficode
 
Microservices, IoT, DevOps: A Case Study
Eficode
 
Building a Knowledge Graph at Zalando
Eficode
 
How to build the Cloud Native applications the way you want – not the way the...
Eficode
 
The Future of Enterprise Applications is Serverless
Eficode
 
Why Serverless is scary without DevSecOps and Observability
Eficode
 
Securing Modern Applications: The Data Behind DevSecOps
Eficode
 
Secure your Azure and DevOps in a smart way
Eficode
 
Can I Contain This?
Eficode
 
The Mono-repo – a contradiction with Microservices
Eficode
 
Using Go in DevOps
Eficode
 
Why Should You Be Thinking About DesignOps?
Eficode
 
A beginners guide to scaling DevOps
Eficode
 
From Zero to SAFe
Eficode
 
Bringing value to the business and for your customer through DevOps
Eficode
 
Disconnected Pipelines: The Missing Link
Eficode
 
The Best & Worst Uses of AI in Software Testing
Eficode
 
2018 State Of DevOps Report Key Findings
Eficode
 
Ad

Recently uploaded (20)

PDF
How to Visualize the ​Spatio-Temporal Data Using CesiumJS​
SANGHEE SHIN
 
PDF
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
Earley Information Science
 
PPTX
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
PDF
Optimizing the trajectory of a wheel loader working in short loading cycles
Reno Filla
 
PDF
Enhancing Environmental Monitoring with Real-Time Data Integration: Leveragin...
Safe Software
 
DOCX
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
PDF
Darley - FIRST Copenhagen Lightning Talk (2025-06-26) Epochalypse 2038 - Time...
treyka
 
PDF
Automating the Geo-Referencing of Historic Aerial Photography in Flanders
Safe Software
 
PPTX
MARTSIA: A Tool for Confidential Data Exchange via Public Blockchain - Pitch ...
Michele Kryston
 
PDF
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Priyanka Aash
 
PPTX
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
PDF
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
 
PDF
5 Things to Consider When Deploying AI in Your Enterprise
Safe Software
 
PDF
Python Conference Singapore - 19 Jun 2025
ninefyi
 
PPTX
Enabling the Digital Artisan – keynote at ICOCI 2025
Alan Dix
 
PDF
Redefining Work in the Age of AI - What to expect? How to prepare? Why it mat...
Malinda Kapuruge
 
PPTX
Practical Applications of AI in Local Government
OnBoard
 
PDF
Unlocking FME Flow’s Potential: Architecture Design for Modern Enterprises
Safe Software
 
PDF
Kubernetes - Architecture & Components.pdf
geethak285
 
PDF
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
yosra Saidani
 
How to Visualize the ​Spatio-Temporal Data Using CesiumJS​
SANGHEE SHIN
 
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
Earley Information Science
 
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
Optimizing the trajectory of a wheel loader working in short loading cycles
Reno Filla
 
Enhancing Environmental Monitoring with Real-Time Data Integration: Leveragin...
Safe Software
 
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
Darley - FIRST Copenhagen Lightning Talk (2025-06-26) Epochalypse 2038 - Time...
treyka
 
Automating the Geo-Referencing of Historic Aerial Photography in Flanders
Safe Software
 
MARTSIA: A Tool for Confidential Data Exchange via Public Blockchain - Pitch ...
Michele Kryston
 
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Priyanka Aash
 
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
 
5 Things to Consider When Deploying AI in Your Enterprise
Safe Software
 
Python Conference Singapore - 19 Jun 2025
ninefyi
 
Enabling the Digital Artisan – keynote at ICOCI 2025
Alan Dix
 
Redefining Work in the Age of AI - What to expect? How to prepare? Why it mat...
Malinda Kapuruge
 
Practical Applications of AI in Local Government
OnBoard
 
Unlocking FME Flow’s Potential: Architecture Design for Modern Enterprises
Safe Software
 
Kubernetes - Architecture & Components.pdf
geethak285
 
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
yosra Saidani
 
Ad

Model-based programming and AI-assisted software development

  • 1. Model-Based Methods and Automation of Software Production Jussi Rintanen Department of Computer Science, Aalto University December 13, 2018
  • 2. The Problem • Massive programmer shortage: • Finland: 7000+ • USA: 200000+ • Programmer productivity too low • Programming is a craft industry Completely new kind of solutions are needed!
  • 3. How do we program computers? mov ax,@data mov ds,ax mov bx,si_ze dec bx xx: mov cx,bx mov si,0 yy: mov al,a[si] inc si cmp al,a[si] jb zz xchg al,a[si] mov a[si-1],al zz: loop yy dec bx jnz xx
  • 4. How do we program computers? 40 N = N - 1 70 ISCAN = 1 IOK = 1 ISTOP = N IF(ISTART - ISTOP) 50, 110, 110 50 IF(NUMS(ISCAN) - NUMS(ISCAN+1)) 90,90,60 60 J = NUMS(ISCAN) NUMS(ISCAN) = NUMS(ISCAN+1) NUMS(ISCAN+1) = J IOK = 0 90 IF(ISCAN - (ISTOP - 1)) 80,100,100 80 ISCAN = ISCAN + 1 GOTO 50 100 IF(IOK) 105,105,110 105 ISTOP = ISTOP - 1 GOTO 70 110 DO 120 I=1, N 120 PRINT 130, NUMS(I) 130 FORMAT(I10) STOP END
  • 5. How do we program computers? for (c = 0; c < n; c++) scanf("%d", &array[c]); for (c = 0 ; c < n - 1; c++) { for (d = 0 ; d < n - c - 1; d++) { if (array[d] > array[d+1]) /* For decreasing order use < */ { swap = array[d]; array[d] = array[d+1]; array[d+1] = swap; } } }
  • 6. What are programs good for? • Easy to compile to machine code • Easy to execute • Easy to understand what it really does, in terms of machine code
  • 7. What are programs not so good for? • Difficult to prove correct • Difficult to analyze and reason about • Difficult to use for other purposes than execute (This is why testing beats correctness proofs) • Difficult to understand (by programmer, other people)
  • 8. Model-Based Approach to Software SW for managing electricity networks Model of a network: • power lines (topology) • switches • protection devices • transformers • customer connections Functionalities: • Monitoring and diagnosis • Control and reconfiguration • Management of maintenance crews • Medium and long-term planning of network maintenance, modifications, extensions
  • 9. Model-Based Approach to Software SW for data-intensive applications Model of an application: • Data model • Rules governing change of data • Permissions to access, modify (who? when?) Functionalities: • Analyze the model • Implement the model (code) • Automate tasks (A.I.)
  • 10. Our Goals • Make (some of) SW development engineering • Systematic process to develop SW specifications • “AI” to do (almost) all of the routine coding • Lift the abstraction level of code written by programmers • Shift focus from code to business/organizational processes • Result: • Decreased development effort • Easier testing and validation • More modifiable and extendible SW • Independence from execution environment (PL, OS, DBMS, UI)
  • 11. Our Goals: Longer Term • Intelligent agents (A.I.) supporting (and replacing) humans in organizational roles • Networks of interacting and inter-operating SW systems • Fully automated companies, agencies, services, ... • Integration with physical assets and infrastructure • management of primary industries, energy, manufacturing, transportation and logistics, services, ...
  • 12. EIAI / aitocode: Software Production users HTML/HTTP mobile apps email/messaging SW DBMS cloud storage external SW
  • 13. How Is Software Produced? 1 Precisely specify what the software is to do 2 Analyze software specification (automatic) 3 Choose: • Programming language • Database system(s) • Operating system / execution environment 4 Synthesize software system (automatic) 5 Deploy software system (automatic)
  • 14. Abstract View of Software 1 A university employee can establish a new course in a given faculty, if the employee is the director of education of the faculty. 2 A university employee can change the responsible teacher of a course, if the employee is the director of education for the faculty responsible for the course. 3 A university employee can change the requirements for a B.Sc. degree granted by a given faculty, if the employee is the director of education of the faculty. 4 A student can be granted a B.Sc. degree, if the student has passed all courses required for the degree. 5 A student can register for a course, if the student has the right to study at the university, and the course is part of the studies for a degree the student is studying for. 6 A student can register for an exam, if the student is registered for the course. 7 A university employee can record the exam grade for a student, if the student was registered for the exam, and the exam is for a course for which the employee is the responsible teacher. 8 A student is recorded as having passed a course, if the student has passed an exam for the course and fulfilled other requirements (for example, done obligatory home assignments and a course project.) 9 A university employee can mark a course as passed for a student, if the employee is the responsible teacher of the course, and the student was enrolled on the course.
  • 15. Rules of an Application Each of the informal rules can formalized as three parts: • Inputs • What does the user supply when performing the action? • Each input has a type (int, string, set, list, ...) • Condition • What condition has to hold for the action to be possible? • Boolean combination of atomic conditions (and, or, not, ...) • Also limits the possible inputs! • Effect • How does the action modify the data (in the DB) • One or more pieces of “code”
  • 16. Rules of an Application Each of the informal rules can formalized as three parts: • Inputs • What does the user supply when performing the action? • Each input has a type (int, string, set, list, ...) • Condition • What condition has to hold for the action to be possible? • Boolean combination of atomic conditions (and, or, not, ...) • Also limits the possible inputs! • Effect • How does the action modify the data (in the DB) • One or more pieces of “code”
  • 17. Rules of an Application Each of the informal rules can formalized as three parts: • Inputs • What does the user supply when performing the action? • Each input has a type (int, string, set, list, ...) • Condition • What condition has to hold for the action to be possible? • Boolean combination of atomic conditions (and, or, not, ...) • Also limits the possible inputs! • Effect • How does the action modify the data (in the DB) • One or more pieces of “code”
  • 18. Example A Facebook-style social media application Who can post on a wall? • The owner of the wall • Friends of the wall owner Result: Post appears on the wall and in all relevant feeds. action post(p : feedData, wallOwner : user) { wallOwner == currentuser or currentuser in wallOwner.friends ==> new ent : feedEntry [ t = now, entry = p, comments = [], auth = currentuser.auth, owner = currentuser ]; wallOwner.wall = concat(wallOwner.wall,[ent]); currentuser.posts = concat(wallOwner.wall,[ent]); forall (u in currentuser.friends) u.feed = concat(u.feed,[ent]); }
  • 19. Example Peer-reviewing for an academic journal Some articles can be published as a new volume if • the current user is the editor of the journal, • the articles are unpublished and belong to the journal, • the set of articles is non-empty. action createNewVolume( p : article set, j : journal ) { currentuser == j.editor and subseteq(p,j.unpublishedarticles) and card(p) > 0 ==> j.lastvolumenumber = j.lastvolumenumber + 1; j.unpublishedarticles = j.unpublishedarticles p; new v : volume [ volumenumber = j.lastvolumenumber, publicationtime = now, articles = p ]; j.publishedvolumes = j.publishedvolumes U { v }; forall (a in p) a.volume = v; }
  • 20. How Is A Rule Implemented? 1 Is current user able to take the action? (UI menus etc.) • Can precondition be true, for some inputs? • Conceptually, must go through all possible input values 2 What input options to offer user? (UI input forms) • Which input combinations can make precondition true? • Conceptually, must produce all input combinations 3 Execute the rule • Is precondition (with inputs) true? (easy) • Execute the “Effects” part (easy) • Implemented as a DBMS transaction First two are both NP-hard (or harder)!
  • 21. How Is A Rule Implemented? 1 Is current user able to take the action? (UI menus etc.) • Can precondition be true, for some inputs? • Conceptually, must go through all possible input values 2 What input options to offer user? (UI input forms) • Which input combinations can make precondition true? • Conceptually, must produce all input combinations 3 Execute the rule • Is precondition (with inputs) true? (easy) • Execute the “Effects” part (easy) • Implemented as a DBMS transaction First two are both NP-hard (or harder)!
  • 22. How Is A Rule Implemented? 1 Is current user able to take the action? (UI menus etc.) • Can precondition be true, for some inputs? • Conceptually, must go through all possible input values 2 What input options to offer user? (UI input forms) • Which input combinations can make precondition true? • Conceptually, must produce all input combinations 3 Execute the rule • Is precondition (with inputs) true? (easy) • Execute the “Effects” part (easy) • Implemented as a DBMS transaction First two are both NP-hard (or harder)!
  • 23. EIAI / aitocode: What We Have Now Project since 2016, with 2018 funding from Business Finland • Core technology completed • Prototype implementation works • Demo applications running • peer-reviewing and publication for academic journals (10 rules) • university course management (5 rules) • social media (“Facebook”) (7 rules) • blogging website (3 rules) • web chat (2 rules) • Other applications under development
  • 24. EIAI / aitocode: Next Steps • IDE integration (Q3/2019) • Alternative PL, OS, DBMS, UI (Q3/2019) • Mobile apps (2020) • Verification/validation (2020) • correctness proofs (w.r.t. stated properties) • spec anomalies: unreachable and redundant actions & data • Intelligence (2021) • optimal data input (w.r.t. evaluation of a condition) • suggest actions to human users (w.r.t. users’ goals) • take action sequences autonomously • minimization of a cost measure, maximization of a reward measure
  • 25. Interested? We are looking for collaboration partners: • Companies to participate in technology trials • Software developers willing to try out • Everything else to transfer the technology to real use
  • 26. Conclusion • Automation of software production • data and knowledge-intensive information systems • web applications • et cetera • Future: • Increased intelligence (automated embedding of “AI” in SW) • Highly automated analytics and validation Code is not interesting, systems and their features are!