Orienté Objet : erreur historique ou voie à poursuivre ?

Post on 25-May-2015

936 views 1 download

description

Pourquoi ce titre ? - Crise logiciel mythe ou réalité ? - L'orienté objet : quelque*s* définitions. - Du rigide au souple : une histoire accéléré de l'informatique des 30 dernières années.

Transcript of Orienté Objet : erreur historique ou voie à poursuivre ?

L'orienté objet Erreur historique ou voie à poursuivre ?

Frédéric Fadel Aspectize 1

Programme

Pourquoi ce titre ?

Crise logiciel : mythe ou réalité ?

L'orienté objet : quelques définitions.

Du rigide au souple

une histoire accélérée de l'informatique

Frédéric Fadel Aspectize 2

Pourquoi ce titre ?

Frédéric Fadel Aspectize 3

Pourquoi ce titre ?

Frédéric Fadel Aspectize 4

?

?

??

?

?

??

?

?

?

??

?

?

?

… Pourquoi ce titre ?

Frédéric Fadel Aspectize 5

Civilisation

Démocratie

Capitalisme

Monothéisme

Monogamie

L'évolutionAtomisme

Le boson de Higgs

Industrie

Finance

… Pourquoi ce titre ?

Frédéric Fadel Aspectize 6

… Pourquoi ce titre ?

Frédéric Fadel Aspectize 7

Crise logicielMythe ou réalité ? Crise ou Sentiment de crise ?

Frédéric Fadel Aspectize 8

Crise Logiciel

Crise Logiciel : Mythe ?

0 à 300 000 000 000 $ en 30 ans !

Valeur > Coûts !

Comparé à quoi ?

Selon quelles normes ?

Y a-t-il d'autres qui font mieux ?

Frédéric Fadel Aspectize 10

Crise Logiciel : Réalité ?

Estimations optimistes Ergonomie insuffisante Projets ratés

Fox Meyer C3 Copernic Chorus …

Frédéric Fadel Aspectize 12

Sentiment de Crise

Frédéric Fadel Aspectize 13

C'est sim

ple

mais…Présentation

Traite

ments

Données

Sentiment de Crise

Ce dont le Businessa besoin.Avec ses invariants.

Ce que réalise l’IT. Avec ses invariants.

Sentiment de Crise

Frédéric Fadel Aspectize 15

TDDAOP

DDD

DDDD

MDDAOM

ORM MVC

MVVM

OCP

SRP

LSP

ISPDIP …

TFDCQRS

L'orienté objetQuelques définitions

Frédéric Fadel Aspectize 16

Différentes types de définition

Frédéric Fadel Aspectize 17

Quelques définitions…

Frédéric Fadel Aspectize 18

Académique

Historiq

ueAvouable

Vernacula

ire

… Quelques définitions…

Frédéric Fadel Aspectize 19

… Quelques "définitions"…

Frédéric Fadel Aspectize 20

Actually I made up the term "object-oriented", and I can tell you I did not have C++ in mind.  

I'm not against types, but I don't know of any type systems that aren't a complete pain, so I still like dynamic typing.

… Quelques "définitions"…

Frédéric Fadel Aspectize 21

OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.

It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them.

… Quelques "définitions"

Frédéric Fadel Aspectize 22

I'm sorry that I long ago coined the term "objects" for this topic because it gets many people to focus on the lesser idea. The big idea is "messaging"...

The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be.

La définition triviale

Une formule :

Objet = Etat + Comportement

Trois grands principes : Encapsulation

Héritage

Polymorphisme

Frédéric Fadel Aspectize 23

EncapsulationAbsolument nécessaire

Frédéric Fadel Aspectize 24

L'encapsulation

Frédéric Fadel Aspectize 25

L'encapsulation partout

Frédéric Fadel Aspectize 26

… L'encapsulation partout …

Frédéric Fadel Aspectize 27

… L'encapsulation partout …

Frédéric Fadel Aspectize 28

… L'encapsulation partout …

Frédéric Fadel Aspectize 29

L'encapsulation comment ?

Frédéric Fadel Aspectize 30

Architecture

EtudeAnalys

e

Patien

ceExpérience

L'encapsulation comment ? Classe Module Fonction Continuation Closure Assembly Process Application SI

Frédéric Fadel Aspectize 32

L'encapsulation comment ?

Frédéric Fadel Aspectize 33

LANGAG

E

TECHNIQUE

MOT CLÉDESIGN PATTERN

PolymorphismeDétail technique ou nécessaire pour la souplesse ?

Frédéric Fadel Aspectize 34

Polymorphisme partout

Frédéric Fadel Aspectize 35

Polymorphisme partout

Frédéric Fadel Aspectize 36

Polymorphisme partout

Frédéric Fadel Aspectize 37

Polymorphisme partout

Frédéric Fadel Aspectize 38

Polymorphisme partout

Frédéric Fadel Aspectize 39

Polymorphisme

Favorise la réutilisation

Diminue le couplage

Augmente la souplesse

Nécessite des abstractions

immuables Pas forcément facile

Frédéric Fadel Aspectize 41

Polymorphisme comment ? Ce n'est qu'un moyen de retarder le choix de la

fonction à appeler, de la dynamiser !

Interface

Événement

Lambda

Closure

Generic

Langages de script

Réflexion…Frédéric Fadel Aspectize 42

Polymorphisme comment ?

Frédéric Fadel Aspectize 43

Mét

hode

s vi

rtue

lles Classes abstraites

HéritageErreur historique totale

Frédéric Fadel Aspectize 44

Héritage

Frédéric Fadel Aspectize 45

Classificationa priori

Héritage : le mammifère n'existe pas !

Frédéric Fadel Aspectize 46

L'existence précède l'essence

Frédéric Fadel Aspectize 47

Classificationa posteriori

Héritage : la relation 'est un'

Frédéric Fadel Aspectize 48

John Bonachon

Père de famille

Cycliste

Client d'Amazon

Myope

Auteur de SF

Héritage (en informatique)

Frédéric Fadel Aspectize 49

Syntaxiquement

simple !

Conceptuellement

dépourvu de sens !Favorise le

couplage fort ! Tout ou rien !

Technique fragile, qui vieillit mal.

Héritage : l'absent de l'industrie

Frédéric Fadel Aspectize 50

Automobile

Electronique

Electroménager…

Urbanisme

Pratiquent tous

l'assemblage

Du rigide au souple

Une histoire accélérée des technologies et approches de développement des 30 dernières années

Frédéric Fadel Aspectize 51

du rigide au souple…

Frédéric Fadel Aspectize 52

… Evolution…

Frédéric Fadel Aspectize 53

Rigide Souple

Physique Logique

Statique Dynamique

Les années 1980Les années "objet"

Frédéric Fadel Aspectize 54

L'informatique rigide

Frédéric Fadel Aspectize 55

Allouer tôt libér

er tard S'occuper des détails

Les années C++

Frédéric Fadel Aspectize 56

Les années 1990Les années "composant"

Frédéric Fadel Aspectize 57

Un peu plus souple

Une formule :

Composant = Interface + Implémentation Interface : Partie publique -> immuable -> déclarative

Implémentation : Partie privée -> évolutive ->

impérative

Deux Technologies compliquées : COM

CORBAFrédéric Fadel Aspectize 58

Les années composants

Frédéric Fadel Aspectize 59

+ Encapsulation + Polymorphisme

Héritage abandonné

+ Modularité Distribution

AOP

MTS

Multi-langage

Web

Frédéric Fadel Aspectize 60

Les années 2000Les années "service"

Frédéric Fadel Aspectize 61

L'informatique souple

Frédéric Fadel Aspectize 62

Allouer

tard libérer tôt S'occup

er du métier

Objet serveur sans état

Durée de vie courte

La notion d'instance et d'identité "perd"

de son importance

Services de Données

Services de Traitements

CRUD abandonné ? (historisation)

JSON (état client)Frédéric Fadel Aspectize 63

Objet technique

Frédéric Fadel Aspectize 64

Oui c'est un objet

Objet métier

Frédéric Fadel Aspectize 65

objet

données

Objet métier

Frédéric Fadel Aspectize 66

Un clientDonnée

Un serviceTraitement

objet

objet

Les années 2010 ?Les années "cloud"

Frédéric Fadel Aspectize 67

Le futur ?

Frédéric Fadel Aspectize 68

Impérative (1937)Déclarative (1936)

Le futur ?

Frédéric Fadel Aspectize 69

Abandon des variables ?Abandon de la Pile ?

Abandon des boucles ?

Abandon des références ?

5 slides pour conclure !Erreur historique ? Ou voie à poursuivre ?

Frédéric Fadel Aspectize 70

Langages

Frédéric Fadel Aspectize 71

Assembleur

C++

C# 1

C# 4

F#

Javascript

Technologies

Frédéric Fadel Aspectize 72

Objet ComposantService

IHM

Frédéric Fadel Aspectize 73

API Windows

MFC VB

Winforms

WPF

Silverlight

HTML

HTML 5CSSCSS 3

XAML

Mémoire - Machines

Frédéric Fadel Aspectize 74

Phys

ique

Mémoi

re

Virtue

lle

Machin

e

Virtuell

e

Garbage Collection

Cloud

Resource

Colle

ction

Avant-Après

Frédéric Fadel Aspectize 75

.netClasses

paramétrées

Ajax Http

Alors…

Frédéric Fadel Aspectize 76

Erreur Historique ?ou

Voie à poursuivre ?