architecture logicielle #1 : introduction
TRANSCRIPT
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 / MYSQLOpen Classroom / W3School
Etape 3 : Padawan
Comment augmenter la qualité de mon code ?Comment mettre en production mon application ?
OOP / GIT / PHP / Framework / UMLdeveloppez.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 / APIStack Overflow / Github
Step 5 : Maitre Jedi
You have only begun to discover your power …
Multi langage / Design Pattern / Open SourceHacker News / Books / Podcast
3. Architecture logicielle & Gestion de projet
1912 Diagramme de Gantt
-
1970 Modèle en cascade
-
1957Cycle en V
Une histoire de la gestion de projet informatique (1)
1999eXtreme Programming
-
2001Le manifeste agile
-
2001Scrum
-
2003Lean / Kanban
-
2009DevOps
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 …