Architecture logicielle : Introduction
1. The Big Picture
Software architecture
Software architecture is the high level structure of a
software system, the discipline of creating such structures,
and the documentation of these structures. It is the set of
structures needed to reason about the software system, and
comprises the software elements, the relations between
them, and the properties of both elements and relations.
Source : http://en.wikipedia.org
Architectural pattern
An architectural pattern is a general, reusable solution to a
commonly occurring problem in software architecture
within a given context. Architectural patterns are similar to
software design patterns but have a broader scope.
Source : http://en.wikipedia.org
Framework
A software framework is a universal, reusable software
environment that provides particular functionality as part of
a larger software platform to facilitate development of
software applications, products and solutions.
Source : http://en.wikipedia.org
Software architecture & team (1)
Software architect is a computer manager or expert who
makes high-level design choices and dictates technical
standards, including software coding standards, tools, and
platforms.
Source : http://en.wikipedia.org
Software architecture & team (2)
Product manager Software architect
Engineering manager Programmer
Lead engineer
Stakeholders
Software architecture & team (3)
*K€ brut/an – Source Urban Linker pour l’IDF
2. Student to Architect
Etape 1 : Amateur
Comment créer un site internet ?
Comment apprendre à programmer ?
CMS / Dreamweaver /Website builder /
Korben / Codecademy
Etape 2 : Initié
Comment écrire du code qui marche ?
Comment travailler à plusieurs ?
HTML / CSS / PHP / MYSQL
Open Classroom /W3School
Etape 3 : Padawan
Comment augmenter la qualité de mon code ?
Comment mettre en production mon application ?
OOP / GIT / PHP / Framework / UML
developpez.com / Alsacréation / Blogs FR
Step 4 : Chevalier Jedi
Comment produire du code réutilisable ?
Comment m’assurer que mon code ne régresse pas ?
Comment limiter les bugs liés à l'environnement ?
Fullstack /TDD / Continuous integration / API
Stack Overflow / Github
Step 5 : Maitre Jedi
You have only begun to discover your power …
Multi langage / Design Pattern / Open Source
Hacker News / Books / Podcast
3. Architecture logicielle & Gestion de projet
1912
Diagramme de Gantt
-
1970
Modèle en cascade
-
1957
Cycle enV
Une histoire de la gestion de projet informatique (1)
1999
eXtreme Programming
-
2001
Le manifeste agile
-
2001
Scrum
-
2003
Lean / Kanban
-
2009
DevOps
Une histoire de la gestion de projet informatique (2)
2.1 Organisation du projet
2.1 Méthodes linéaires
Axiomes et Prémisses (1)
On ne peut pas construire la toiture avant les
fondations.
Les conséquences d'une modification en amont du
cycle ont un impact majeur sur les coûts en aval.
Axiomes et Prémisses (2)
Il est possible de totalement détacher la phase de
conception d'un projet de sa phase de réalisation
Pour une bonne communication entre les différents
partenaires du projet, il est nécessaire d'établir des
documents de référence.
Modèle en cascade
Recueil des besoins
Spécifications
Conception
Réalisation
Tests
Livraison
Cycle en V
Analyse des besoins
Spécifications
Conception
architecturale
Conception
détaillée
Codage
Tests unitaires
Tests d’intégrations
Tests de validation
Recette
Functional Work Teams
Design Development Operations
Head of design Head of development Head of Operations
Méthode d’architecture
Big Design
Up Front
2.2 Méthodes itératives
Les individus et leurs interactions plus que les processus et les outils
-

Des logiciels opérationnels plus qu’une documentation exhaustive
-

La collaboration avec les clients plus que la négociation contractuelle
-

L’adaptation au changement plus que le suivi d’un plan
Manifeste pour le développement Agile de logiciels - Valeurs
Axiomes et Prémisses
Les utilisateurs ne savent ce qu’ils veulent qu’après
avoir vu une première version du logiciel.
Les besoins changent souvent durant le processus
de développement du logiciel.
Spécifier intégralement un système interactif est
impossible.
Modèle agile
Recueil des besoins
Réalisation Spécifications
Conception
Cross-functional & self-directed Teams
Feature 1 Feature 2 Feature 3
Méthode d’architecture
Emergent
Design
To be continued …

Architecture logicielle #1 : introduction

  • 1.
  • 2.
    1. The BigPicture
  • 3.
    Software architecture Software architectureis the high level structure of a software system, the discipline of creating such structures, and the documentation of these structures. It is the set of structures needed to reason about the software system, and comprises the software elements, the relations between them, and the properties of both elements and relations. Source : http://en.wikipedia.org
  • 4.
    Architectural pattern An architecturalpattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design patterns but have a broader scope. Source : http://en.wikipedia.org
  • 5.
    Framework A software frameworkis a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions. Source : http://en.wikipedia.org
  • 6.
    Software architecture &team (1) Software architect is a computer manager or expert who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms. Source : http://en.wikipedia.org
  • 7.
    Software architecture &team (2) Product manager Software architect Engineering manager Programmer Lead engineer Stakeholders
  • 8.
    Software architecture &team (3) *K€ brut/an – Source Urban Linker pour l’IDF
  • 9.
    2. Student toArchitect
  • 10.
    Etape 1 :Amateur Comment créer un site internet ? Comment apprendre à programmer ? CMS / Dreamweaver /Website builder / Korben / Codecademy
  • 11.
    Etape 2 :Initié Comment écrire du code qui marche ? Comment travailler à plusieurs ? HTML / CSS / PHP / MYSQL Open Classroom /W3School
  • 12.
    Etape 3 :Padawan Comment augmenter la qualité de mon code ? Comment mettre en production mon application ? OOP / GIT / PHP / Framework / UML developpez.com / Alsacréation / Blogs FR
  • 13.
    Step 4 :Chevalier Jedi Comment produire du code réutilisable ? Comment m’assurer que mon code ne régresse pas ? Comment limiter les bugs liés à l'environnement ? Fullstack /TDD / Continuous integration / API Stack Overflow / Github
  • 14.
    Step 5 :Maitre Jedi You have only begun to discover your power … Multi langage / Design Pattern / Open Source Hacker News / Books / Podcast
  • 15.
    3. Architecture logicielle& Gestion de projet
  • 16.
    1912 Diagramme de Gantt - 1970 Modèleen cascade - 1957 Cycle enV Une histoire de la gestion de projet informatique (1)
  • 17.
    1999 eXtreme Programming - 2001 Le manifesteagile - 2001 Scrum - 2003 Lean / Kanban - 2009 DevOps Une histoire de la gestion de projet informatique (2)
  • 18.
  • 19.
  • 20.
    Axiomes et Prémisses(1) On ne peut pas construire la toiture avant les fondations. Les conséquences d'une modification en amont du cycle ont un impact majeur sur les coûts en aval.
  • 21.
    Axiomes et Prémisses(2) Il est possible de totalement détacher la phase de conception d'un projet de sa phase de réalisation Pour une bonne communication entre les différents partenaires du projet, il est nécessaire d'établir des documents de référence.
  • 22.
    Modèle en cascade Recueildes besoins Spécifications Conception Réalisation Tests Livraison
  • 23.
    Cycle en V Analysedes besoins Spécifications Conception architecturale Conception détaillée Codage Tests unitaires Tests d’intégrations Tests de validation Recette
  • 24.
    Functional Work Teams DesignDevelopment Operations Head of design Head of development Head of Operations
  • 25.
  • 26.
  • 27.
    Les individus etleurs interactions plus que les processus et les outils -
 Des logiciels opérationnels plus qu’une documentation exhaustive -
 La collaboration avec les clients plus que la négociation contractuelle -
 L’adaptation au changement plus que le suivi d’un plan Manifeste pour le développement Agile de logiciels - Valeurs
  • 28.
    Axiomes et Prémisses Lesutilisateurs ne savent ce qu’ils veulent qu’après avoir vu une première version du logiciel. Les besoins changent souvent durant le processus de développement du logiciel. Spécifier intégralement un système interactif est impossible.
  • 29.
    Modèle agile Recueil desbesoins Réalisation Spécifications Conception
  • 30.
    Cross-functional & self-directedTeams Feature 1 Feature 2 Feature 3
  • 31.
  • 32.