SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie Model-based programming and AI-assisted software development

Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Fwdays
 
Transferring Software Testing Tools to Practice
Transferring Software Testing Tools to PracticeTransferring Software Testing Tools to Practice
Transferring Software Testing Tools to PracticeTao Xie
 
Lab management
Lab managementLab management
Lab managementlogumca
 
Scalable and Cost-Effective Model-Based Software Verification and Testing
Scalable and Cost-Effective Model-Based Software Verification and TestingScalable and Cost-Effective Model-Based Software Verification and Testing
Scalable and Cost-Effective Model-Based Software Verification and TestingLionel Briand
 
Book store automation system
Book store automation systemBook store automation system
Book store automation systemUpendra Sengar
 
Algorithms and Data Structures
Algorithms and Data StructuresAlgorithms and Data Structures
Algorithms and Data Structuressonykhan3
 
Performance Testing Java Applications
Performance Testing Java ApplicationsPerformance Testing Java Applications
Performance Testing Java ApplicationsC4Media
 
Using Metrics for Fun, Developing with the KV Store + Javascript & News from ...
Using Metrics for Fun, Developing with the KV Store + Javascript & News from ...Using Metrics for Fun, Developing with the KV Store + Javascript & News from ...
Using Metrics for Fun, Developing with the KV Store + Javascript & News from ...Harry McLaren
 

Ähnlich wie Model-based programming and AI-assisted software development (20)

SE Unit-1.pptx
SE Unit-1.pptxSE Unit-1.pptx
SE Unit-1.pptx
 
HR management system
HR management systemHR management system
HR management system
 
Tictac
TictacTictac
Tictac
 
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
 
algo 1.ppt
algo 1.pptalgo 1.ppt
algo 1.ppt
 
Transferring Software Testing Tools to Practice
Transferring Software Testing Tools to PracticeTransferring Software Testing Tools to Practice
Transferring Software Testing Tools to Practice
 
Seminar on Project Management by Rj
Seminar on Project Management by RjSeminar on Project Management by Rj
Seminar on Project Management by Rj
 
Tic tac toe game code
Tic tac toe game codeTic tac toe game code
Tic tac toe game code
 
Tic tac toe
Tic tac toeTic tac toe
Tic tac toe
 
Lab management
Lab managementLab management
Lab management
 
22-REQUIREMENT.ppt
22-REQUIREMENT.ppt22-REQUIREMENT.ppt
22-REQUIREMENT.ppt
 
DITEC - Software Engineering
DITEC - Software EngineeringDITEC - Software Engineering
DITEC - Software Engineering
 
Chapter6
Chapter6Chapter6
Chapter6
 
Scalable and Cost-Effective Model-Based Software Verification and Testing
Scalable and Cost-Effective Model-Based Software Verification and TestingScalable and Cost-Effective Model-Based Software Verification and Testing
Scalable and Cost-Effective Model-Based Software Verification and Testing
 
Book store automation system
Book store automation systemBook store automation system
Book store automation system
 
data structure
data structuredata structure
data structure
 
Algorithms and Data Structures
Algorithms and Data StructuresAlgorithms and Data Structures
Algorithms and Data Structures
 
Performance Testing Java Applications
Performance Testing Java ApplicationsPerformance Testing Java Applications
Performance Testing Java Applications
 
Ch01
Ch01Ch01
Ch01
 
Using Metrics for Fun, Developing with the KV Store + Javascript & News from ...
Using Metrics for Fun, Developing with the KV Store + Javascript & News from ...Using Metrics for Fun, Developing with the KV Store + Javascript & News from ...
Using Metrics for Fun, Developing with the KV Store + Javascript & News from ...
 

Mehr von Eficode

Saving money with Consolidations
Saving money with ConsolidationsSaving money with Consolidations
Saving money with ConsolidationsEficode
 
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 EnterpriseEficode
 
Scaling DevOps: Pitfalls to avoid
Scaling DevOps: Pitfalls to avoidScaling DevOps: Pitfalls to avoid
Scaling DevOps: Pitfalls to avoidEficode
 
Microservices, IoT, DevOps: A Case Study
Microservices, IoT, DevOps: A Case StudyMicroservices, IoT, DevOps: A Case Study
Microservices, IoT, DevOps: A Case StudyEficode
 
Building a Knowledge Graph at Zalando
Building a Knowledge Graph at ZalandoBuilding a Knowledge Graph at Zalando
Building a Knowledge Graph at ZalandoEficode
 
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 ServerlessEficode
 
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 ObservabilityEficode
 
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 DevSecOpsEficode
 
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 wayEficode
 
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 MicroservicesEficode
 
Using Go in DevOps
Using Go in DevOpsUsing Go in DevOps
Using Go in DevOpsEficode
 
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 DevOpsEficode
 
From Zero to SAFe
From Zero to SAFeFrom Zero to SAFe
From Zero to SAFeEficode
 
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 DevOpsEficode
 
Disconnected Pipelines: The Missing Link
Disconnected Pipelines: The Missing LinkDisconnected Pipelines: The Missing Link
Disconnected Pipelines: The Missing LinkEficode
 
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 TestingEficode
 
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 FindingsEficode
 

Mehr von Eficode (20)

Saving money with Consolidations
Saving money with ConsolidationsSaving money with Consolidations
Saving money with Consolidations
 
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
 
Scaling DevOps: Pitfalls to avoid
Scaling DevOps: Pitfalls to avoidScaling DevOps: Pitfalls to avoid
Scaling DevOps: Pitfalls to avoid
 
Microservices, IoT, DevOps: A Case Study
Microservices, IoT, DevOps: A Case StudyMicroservices, IoT, DevOps: A Case Study
Microservices, IoT, DevOps: A Case Study
 
Building a Knowledge Graph at Zalando
Building a Knowledge Graph at ZalandoBuilding a Knowledge Graph at Zalando
Building a Knowledge Graph at Zalando
 
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...
 
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
 
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
 
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
 
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
 
Can I Contain This?
Can I Contain This?Can I Contain This?
Can I Contain This?
 
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
 
Using Go in DevOps
Using Go in DevOpsUsing Go in DevOps
Using Go in DevOps
 
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?
 
A beginners guide to scaling DevOps
A beginners guide to scaling DevOpsA beginners guide to scaling DevOps
A beginners guide to scaling DevOps
 
From Zero to SAFe
From Zero to SAFeFrom Zero to SAFe
From Zero to SAFe
 
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
 
Disconnected Pipelines: The Missing Link
Disconnected Pipelines: The Missing LinkDisconnected Pipelines: The Missing Link
Disconnected Pipelines: The Missing Link
 
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
 
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
 

Kürzlich hochgeladen

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

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!