SlideShare une entreprise Scribd logo
1  sur  97
Programo, luego
existo
- René Descartes
¿Quién va a desarrollar las Apps del
futuro?
Jordi Cabot
@softmodeling / @ingdesoftware – jordicabot.com June 2017
About
2 niñas
1 libro
0 árboles
180 artículos
3.5 M financiación
4 países
1 startup (A/B testing WP)
Muy pocas LOCs
Unos cuantos años
Flickr/FlazingoPhotos
SOM Research Lab
Software runs the world. Models run the software
Nuestra misión
Interested in the broad
area of systems and
software engineering,
especially promoting the
rigorous use of software
models and engineering
principles in all software
engineering tasks.
Flickr/clement127
Disclaimer
Modelas y punto!!!Cualquier parecido con la (futura)
realidad es pura coincidencia
“As a writer, my job is to change your
perspective and make you think
outside the box.” - Mary Sage Nguyen
Verdades absolutas
Más programadores NO es la solución
SW
Eng
Developer: Creates
working software
Programmer: Writes code
0
10
20
30
40
50
60
Programmers (in M)
Estimated number of programmers (EEUU)
Potential amateur programmers self-declared amateur programmers PROs
Shallow work:
non-cognitively demanding,
logistic style task, often
performed while distracted
¿Programación = shallow work?
Escribir código es la manera
menos eficiente de produir SW
Solución 1: Más productividad y
menos bugs
Ingeniería de Software
(Dirigida por Modelos)
• Grady Booch – history of softwre engineering
The entire history of software engineering is that of
the rise in levels of abstraction
- Grady Booch
OBJETIVO: Escribir cada
vez menos código
Algo que todos hacen
IDM (MDE en inglés) es la formalización/culminación de este proceso
Model
Rapid prototyping
Static analysis
Code generation
Automated testing
Refactoring/
Transformation
Documentation
[Illustration by Bernhard Rumpe]
IDM = Modelos como parte central de la
Ingeniería del Software
La equación IDM:
Models +
Transformations =
Software
Original
model
1st
refinement
nth
refinement
Model-to-model
Transformation
Model-to-text
Transformation
...
Requirements
Use Case
Class Diagram
Java Project
Un modelo
26
Ciudad de Nantes = “system” a
modelar
Un mapa es de hecho un modelo
del sistema
La leyenda del mapa es la
gramática / metamodelo
Existen diferentes tipos mapas:
transporte, alcantarillado,…
que dan “vistas” diferentes de
la ciudad
Muy parecido al mundo de la
programación
MDE Grammarware
MOF
(metametamodel)
UML
(metamodel)
ABank.uml
EBNF.g
Java.g
MyProgram.java
(common-sense) code generation
Beneficios MDE
(bien hecho)
+productividad +calidad +Mantenimiento ….
2X – 8X 1.2X – 4X 80%
Y sí, se puede ser ágil y modelar
PERO lo lleva
diciendo desde
1985
Adopción MDE
• Asterix view : resistentes al modelado
To model, or not to model, this is the WRONG
question
- Shakespeare
La buena pregunta:
qué modelos, cuantos,
Depende del proyecto:
•Objetivo
•Tecnología
•Equipo
•Tamaño
•Dominio
Depende, de qué depende…
http://matt.might.net/articles/phd-school-in-pictures
Me prohibieron utilizar mis
500+ slides de “introducción
a la IDM” 
Solución 2: Saquemos el máximo
provecho de la comunidad
Tenemos que ser un poco
de «letras»
Your community is the
KEY
Code
Community
How to
help your
OSS
succeed
Governing
OptimizingOnboarding
Ponerlo en pràctica: Software Analysis
No se trata
de hacer
anàlisis
estático del
código
Optimizing:
Community Health
Undertanding Community = Graph Analysis
• Many types of graphs (e.g. Bipartite graphs)
• Many types of properties
– Micro-view (local properties)
– Macro-view (global properties)
– Meso-level (emerging properties)
• Analysis at different levels
Build the right
graph
for yourpurpose
Size doesn’t matter
Bus Factor
“Number of key developers who would need to be
incapacitated (hit by a bus), to send the project into
disarray that it would not be able to proceed”
64.43%
12.58%
Betweenness & cia
Useful to identify
subcommunities
and increase
commnication
Gitana: Integrated analysis in SQL
Coding platform
Issue trackers Commun. channels
Code review tools
Attracting contributors
(and keeping them)
Facilitateon boarding: Importance of first
impressions
Gamificationon top of GitHub
What kidney
exchange
programs can
teach us about
OSS?
© www.forbes.com
OSS = matching market
(mercados donde el dinero
no es el factor principal)
© Apple Records
Governing:
Power to the people
La governanza de
los proyectos tiene
que ser
transparente
Benevolent
Dictator for Life<-
Why???
Los proyectos
OSS deberían
ser más
democráticos
(y no, forking
no es una
buena opción)
******
Project myProject {
Roles: Committers
Deadlines:
myDeadline : 7 days
Rules:
myMajorityRule :
Majority {
applied to Task
when TaskReview
people Committers
range Present
minVotes 3
deadline myDeadline
}
}
All the proposals for new development tasks will be
accepted or rejected in 7 days by the committers of the
project.
Verbalization
Solución 3: Un usuario = un
desarrollador (ocasional)
Todo usuario
esconde un
programador en
su interior
Citizen developers
Citizen developers = End-User programming 2.0
¿Ahora
sí?
Demanda
PlataformasCognification
“the goal of the project is to
make the promise of
open data a reality by
giving non-technical
users tools they can use
to find and compose the
information they need”
?
API Discovery: What APIs / open data sources?
?
S1
S2
S1 S2
¿Y cómo los puedo combinar?
JSON Discoverer – Extracting implicit
models in JSON documents
JSON Discoverer
Open Data for All
Solución 4: Hacer outsourcing del
trabajo a una inteligencia externa
Cognification
Cognification:
The application of knowledge
to boost the performance
and impact of a process
Durante la revolución
industrial todo se
electrificó.
En la próxima todo se
“cognificará” con acceso
barato una AI especializada
El mejor
jugador de
ajedrez del
mundo
Cognification
ML
Crowdsourcing
Ontologies
Big Data
…
Cognifying Software Development: 5 Examples
• Estimar productividad de los programadores
• Predecir componentes que van a fallar
• Bot que facilite el modelado sugiriendo buenas prácticas y
posibles fallos en el dominio
• Model inferencer para descubrir modelos implícitos en datos
semi-estructurados
• Generador de código que pase el “test de Turing de IDM”
La ACM ha propuesto 7
principios para la
transparencia y
responsabilidad de los
algoritmos
RESPONSABILIDAD
Las instituciones son responsables de las decisiones tomadas por sus algoritmos,
aunque no sean capaces de explicar el cómo se ha llegado a esas decisiones
Conclusión
El “10x
programmer”
existe
… pero no es
un programador
Cualquiera de
vosotros puede serlo
con las herramientas
adecuadas
http://modeling-languages.com
http://ingenieriadesoftware.es
Para cualquier
cosa:
jordi.cabot@
icrea.cat
@softmodeling
@ingdesoftware

Contenu connexe

Similaire à ¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)

No más "programación copy&paste". Generación automática de código con MOSKitt
No más "programación copy&paste". Generación automática de código con MOSKittNo más "programación copy&paste". Generación automática de código con MOSKitt
No más "programación copy&paste". Generación automática de código con MOSKittJavier Muñoz
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modularguestb97266b9
 
Blockchain zero administration with python
Blockchain zero administration with pythonBlockchain zero administration with python
Blockchain zero administration with pythonJulio Castro
 
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)Jordi Cabot
 
Taller Android seedrocket
Taller Android seedrocketTaller Android seedrocket
Taller Android seedrocketIsrael Camacho
 
Diseña tus aplicaciones multiplataforma
Diseña tus aplicaciones multiplataformaDiseña tus aplicaciones multiplataforma
Diseña tus aplicaciones multiplataformaPlain Concepts
 
Diapositivas Robotica!
Diapositivas Robotica!Diapositivas Robotica!
Diapositivas Robotica!Plan24
 
PulpoCon23 Los Datos que no sabes que tienes y como usarlos
PulpoCon23 Los Datos que no sabes que tienes y como usarlosPulpoCon23 Los Datos que no sabes que tienes y como usarlos
PulpoCon23 Los Datos que no sabes que tienes y como usarlosNino Dafonte
 

Similaire à ¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores) (20)

Presentación Proyecto con salida a la comunidad Android
Presentación Proyecto con salida a la comunidad AndroidPresentación Proyecto con salida a la comunidad Android
Presentación Proyecto con salida a la comunidad Android
 
Presentación Proyecto con salida a la comunidad Android
Presentación Proyecto con salida a la comunidad AndroidPresentación Proyecto con salida a la comunidad Android
Presentación Proyecto con salida a la comunidad Android
 
Fin
FinFin
Fin
 
Silabo prog-movil-sis
Silabo prog-movil-sisSilabo prog-movil-sis
Silabo prog-movil-sis
 
No más "programación copy&paste". Generación automática de código con MOSKitt
No más "programación copy&paste". Generación automática de código con MOSKittNo más "programación copy&paste". Generación automática de código con MOSKitt
No más "programación copy&paste". Generación automática de código con MOSKitt
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Blockchain zero administration with python
Blockchain zero administration with pythonBlockchain zero administration with python
Blockchain zero administration with python
 
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Taller Android seedrocket
Taller Android seedrocketTaller Android seedrocket
Taller Android seedrocket
 
Manual robotica
Manual roboticaManual robotica
Manual robotica
 
Diseña tus aplicaciones multiplataforma
Diseña tus aplicaciones multiplataformaDiseña tus aplicaciones multiplataforma
Diseña tus aplicaciones multiplataforma
 
Actividad 3
Actividad 3Actividad 3
Actividad 3
 
GSoC en la UNI
GSoC en la UNIGSoC en la UNI
GSoC en la UNI
 
Diapositivas Robotica!
Diapositivas Robotica!Diapositivas Robotica!
Diapositivas Robotica!
 
Gvpontis - Generalitat valenciana
Gvpontis - Generalitat valencianaGvpontis - Generalitat valenciana
Gvpontis - Generalitat valenciana
 
PulpoCon23 Los Datos que no sabes que tienes y como usarlos
PulpoCon23 Los Datos que no sabes que tienes y como usarlosPulpoCon23 Los Datos que no sabes que tienes y como usarlos
PulpoCon23 Los Datos que no sabes que tienes y como usarlos
 
P informatica
P informaticaP informatica
P informatica
 
Evolucion del software crisis y mitos
Evolucion del software crisis y mitosEvolucion del software crisis y mitos
Evolucion del software crisis y mitos
 

Plus de Jordi Cabot

AI and Software consultants: friends or foes?
AI and Software consultants: friends or foes?AI and Software consultants: friends or foes?
AI and Software consultants: friends or foes?Jordi Cabot
 
Model-driven engineering for Industrial IoT architectures
Model-driven engineering for Industrial IoT architecturesModel-driven engineering for Industrial IoT architectures
Model-driven engineering for Industrial IoT architecturesJordi Cabot
 
Smart modeling of smart software
Smart modeling of smart softwareSmart modeling of smart software
Smart modeling of smart softwareJordi Cabot
 
Modeling should be an independent scientific discipline
Modeling should be an independent scientific disciplineModeling should be an independent scientific discipline
Modeling should be an independent scientific disciplineJordi Cabot
 
How to sustain a tool building community-driven effort
How to sustain a tool building community-driven effortHow to sustain a tool building community-driven effort
How to sustain a tool building community-driven effortJordi Cabot
 
All Researchers Should Become Entrepreneurs
All Researchers Should Become EntrepreneursAll Researchers Should Become Entrepreneurs
All Researchers Should Become EntrepreneursJordi Cabot
 
The Software Challenges of Building Smart Chatbots - ICSE'21
The Software Challenges of Building Smart Chatbots - ICSE'21The Software Challenges of Building Smart Chatbots - ICSE'21
The Software Challenges of Building Smart Chatbots - ICSE'21Jordi Cabot
 
Low-code vs Model-Driven Engineering
Low-code vs Model-Driven EngineeringLow-code vs Model-Driven Engineering
Low-code vs Model-Driven EngineeringJordi Cabot
 
Lessons learned from building a commercial bot development platform
Lessons learned from building a commercial bot development platformLessons learned from building a commercial bot development platform
Lessons learned from building a commercial bot development platformJordi Cabot
 
Future Trends on Software and Systems Modeling
Future Trends on Software and Systems ModelingFuture Trends on Software and Systems Modeling
Future Trends on Software and Systems ModelingJordi Cabot
 
Chatbot Tutorial - Create your first bot with Xatkit
Chatbot Tutorial - Create your first bot with Xatkit Chatbot Tutorial - Create your first bot with Xatkit
Chatbot Tutorial - Create your first bot with Xatkit Jordi Cabot
 
Création facile de chatbots - Créez votre chatbot en 20 minutes avec une plat...
Création facile de chatbots - Créez votre chatbot en 20 minutes avec une plat...Création facile de chatbots - Créez votre chatbot en 20 minutes avec une plat...
Création facile de chatbots - Créez votre chatbot en 20 minutes avec une plat...Jordi Cabot
 
An LSTM-Based Neural Network Architecture for Model Transformations
An LSTM-Based Neural Network Architecture for Model TransformationsAn LSTM-Based Neural Network Architecture for Model Transformations
An LSTM-Based Neural Network Architecture for Model TransformationsJordi Cabot
 
WAPIml: Towards a Modeling Infrastructure for Web APIs
WAPIml: Towards a Modeling Infrastructure for Web APIsWAPIml: Towards a Modeling Infrastructure for Web APIs
WAPIml: Towards a Modeling Infrastructure for Web APIsJordi Cabot
 
Is there a future for Model Transformation Languages?
Is there a future for Model Transformation Languages?Is there a future for Model Transformation Languages?
Is there a future for Model Transformation Languages?Jordi Cabot
 
Software Modeling and Artificial Intelligence: friends or foes?
Software Modeling and Artificial Intelligence: friends or foes?Software Modeling and Artificial Intelligence: friends or foes?
Software Modeling and Artificial Intelligence: friends or foes?Jordi Cabot
 
Temporal EMF: A temporal metamodeling platform
Temporal EMF: A temporal metamodeling platformTemporal EMF: A temporal metamodeling platform
Temporal EMF: A temporal metamodeling platformJordi Cabot
 
UMLtoNoSQL : From UML domain models to NoSQL Databases
UMLtoNoSQL : From UML domain models to NoSQL DatabasesUMLtoNoSQL : From UML domain models to NoSQL Databases
UMLtoNoSQL : From UML domain models to NoSQL DatabasesJordi Cabot
 
Multi-Platform Chatbot Modeling and Deployment with the Xatkit Framework
Multi-Platform Chatbot Modeling and Deployment with the Xatkit FrameworkMulti-Platform Chatbot Modeling and Deployment with the Xatkit Framework
Multi-Platform Chatbot Modeling and Deployment with the Xatkit FrameworkJordi Cabot
 
Model-driven Round-trip Engineering of REST APIs
Model-driven Round-trip Engineering of REST APIsModel-driven Round-trip Engineering of REST APIs
Model-driven Round-trip Engineering of REST APIsJordi Cabot
 

Plus de Jordi Cabot (20)

AI and Software consultants: friends or foes?
AI and Software consultants: friends or foes?AI and Software consultants: friends or foes?
AI and Software consultants: friends or foes?
 
Model-driven engineering for Industrial IoT architectures
Model-driven engineering for Industrial IoT architecturesModel-driven engineering for Industrial IoT architectures
Model-driven engineering for Industrial IoT architectures
 
Smart modeling of smart software
Smart modeling of smart softwareSmart modeling of smart software
Smart modeling of smart software
 
Modeling should be an independent scientific discipline
Modeling should be an independent scientific disciplineModeling should be an independent scientific discipline
Modeling should be an independent scientific discipline
 
How to sustain a tool building community-driven effort
How to sustain a tool building community-driven effortHow to sustain a tool building community-driven effort
How to sustain a tool building community-driven effort
 
All Researchers Should Become Entrepreneurs
All Researchers Should Become EntrepreneursAll Researchers Should Become Entrepreneurs
All Researchers Should Become Entrepreneurs
 
The Software Challenges of Building Smart Chatbots - ICSE'21
The Software Challenges of Building Smart Chatbots - ICSE'21The Software Challenges of Building Smart Chatbots - ICSE'21
The Software Challenges of Building Smart Chatbots - ICSE'21
 
Low-code vs Model-Driven Engineering
Low-code vs Model-Driven EngineeringLow-code vs Model-Driven Engineering
Low-code vs Model-Driven Engineering
 
Lessons learned from building a commercial bot development platform
Lessons learned from building a commercial bot development platformLessons learned from building a commercial bot development platform
Lessons learned from building a commercial bot development platform
 
Future Trends on Software and Systems Modeling
Future Trends on Software and Systems ModelingFuture Trends on Software and Systems Modeling
Future Trends on Software and Systems Modeling
 
Chatbot Tutorial - Create your first bot with Xatkit
Chatbot Tutorial - Create your first bot with Xatkit Chatbot Tutorial - Create your first bot with Xatkit
Chatbot Tutorial - Create your first bot with Xatkit
 
Création facile de chatbots - Créez votre chatbot en 20 minutes avec une plat...
Création facile de chatbots - Créez votre chatbot en 20 minutes avec une plat...Création facile de chatbots - Créez votre chatbot en 20 minutes avec une plat...
Création facile de chatbots - Créez votre chatbot en 20 minutes avec une plat...
 
An LSTM-Based Neural Network Architecture for Model Transformations
An LSTM-Based Neural Network Architecture for Model TransformationsAn LSTM-Based Neural Network Architecture for Model Transformations
An LSTM-Based Neural Network Architecture for Model Transformations
 
WAPIml: Towards a Modeling Infrastructure for Web APIs
WAPIml: Towards a Modeling Infrastructure for Web APIsWAPIml: Towards a Modeling Infrastructure for Web APIs
WAPIml: Towards a Modeling Infrastructure for Web APIs
 
Is there a future for Model Transformation Languages?
Is there a future for Model Transformation Languages?Is there a future for Model Transformation Languages?
Is there a future for Model Transformation Languages?
 
Software Modeling and Artificial Intelligence: friends or foes?
Software Modeling and Artificial Intelligence: friends or foes?Software Modeling and Artificial Intelligence: friends or foes?
Software Modeling and Artificial Intelligence: friends or foes?
 
Temporal EMF: A temporal metamodeling platform
Temporal EMF: A temporal metamodeling platformTemporal EMF: A temporal metamodeling platform
Temporal EMF: A temporal metamodeling platform
 
UMLtoNoSQL : From UML domain models to NoSQL Databases
UMLtoNoSQL : From UML domain models to NoSQL DatabasesUMLtoNoSQL : From UML domain models to NoSQL Databases
UMLtoNoSQL : From UML domain models to NoSQL Databases
 
Multi-Platform Chatbot Modeling and Deployment with the Xatkit Framework
Multi-Platform Chatbot Modeling and Deployment with the Xatkit FrameworkMulti-Platform Chatbot Modeling and Deployment with the Xatkit Framework
Multi-Platform Chatbot Modeling and Deployment with the Xatkit Framework
 
Model-driven Round-trip Engineering of REST APIs
Model-driven Round-trip Engineering of REST APIsModel-driven Round-trip Engineering of REST APIs
Model-driven Round-trip Engineering of REST APIs
 

¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)