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)

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

More from Eficode (20)

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

Recently uploaded (20)

“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
Edge AI and Vision Alliance
 
Domino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use CasesDomino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use Cases
panagenda
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
Improving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevExImproving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevEx
Justin Reock
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Dancing with AI - A Developer's Journey.pptx
Dancing with AI - A Developer's Journey.pptxDancing with AI - A Developer's Journey.pptx
Dancing with AI - A Developer's Journey.pptx
Elliott Richmond
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Jira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : IntroductionJira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : Introduction
Ravi Teja
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
Introduction to Typescript - GDG On Campus EUE
Introduction to Typescript - GDG On Campus EUEIntroduction to Typescript - GDG On Campus EUE
Introduction to Typescript - GDG On Campus EUE
Google Developer Group On Campus European Universities in Egypt
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
Securiport - A Border Security Company
Securiport  -  A Border Security CompanySecuriport  -  A Border Security Company
Securiport - A Border Security Company
Securiport
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
IntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdfIntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdf
Luiz Carneiro
 
7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf
Minuscule Technologies
 
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyesEnd-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
ThousandEyes
 
Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software DeveloperJeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
Extend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptxExtend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptx
hoang971
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
Edge AI and Vision Alliance
 
Domino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use CasesDomino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use Cases
panagenda
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
Improving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevExImproving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevEx
Justin Reock
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Dancing with AI - A Developer's Journey.pptx
Dancing with AI - A Developer's Journey.pptxDancing with AI - A Developer's Journey.pptx
Dancing with AI - A Developer's Journey.pptx
Elliott Richmond
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Jira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : IntroductionJira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : Introduction
Ravi Teja
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
Securiport - A Border Security Company
Securiport  -  A Border Security CompanySecuriport  -  A Border Security Company
Securiport - A Border Security Company
Securiport
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
IntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdfIntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdf
Luiz Carneiro
 
7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf
Minuscule Technologies
 
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyesEnd-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
ThousandEyes
 
Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software DeveloperJeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
Extend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptxExtend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptx
hoang971
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 
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!