architecture logicielle #1 : introduction

32
Architecture logicielle : Introduction

Upload: jean-michel

Post on 15-Jul-2015

217 views

Category:

Software


9 download

TRANSCRIPT

Page 1: Architecture logicielle #1 : introduction

Architecture logicielle : Introduction

Page 2: Architecture logicielle #1 : introduction

1. The Big Picture

Page 3: Architecture logicielle #1 : introduction

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

Page 4: Architecture logicielle #1 : introduction

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

Page 5: Architecture logicielle #1 : introduction

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

Page 6: Architecture logicielle #1 : introduction

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

Page 7: Architecture logicielle #1 : introduction

Software architecture & team (2)

Product manager Software architect

Engineering manager Programmer

Lead engineer

Stakeholders

Page 8: Architecture logicielle #1 : introduction

Software architecture & team (3)

*K€ brut/an – Source Urban Linker pour l’IDF

Page 9: Architecture logicielle #1 : introduction

2. Student to Architect

Page 10: Architecture logicielle #1 : introduction

Etape 1 : Amateur

Comment créer un site internet ?Comment apprendre à programmer ?

CMS / Dreamweaver / Website builder / Korben / Codecademy

Page 11: Architecture logicielle #1 : introduction

Etape 2 : Initié

Comment écrire du code qui marche ?Comment travailler à plusieurs ?

HTML / CSS / PHP / MYSQLOpen Classroom / W3School

Page 12: Architecture logicielle #1 : introduction

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

Page 13: Architecture logicielle #1 : introduction

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

Page 14: Architecture logicielle #1 : introduction

Step 5 : Maitre Jedi

You have only begun to discover your power …

Multi langage / Design Pattern / Open SourceHacker News / Books / Podcast

Page 15: Architecture logicielle #1 : introduction

3. Architecture logicielle & Gestion de projet

Page 16: Architecture logicielle #1 : introduction

1912 Diagramme de Gantt

-

1970 Modèle en cascade

-

1957Cycle en V

Une histoire de la gestion de projet informatique (1)

Page 17: Architecture logicielle #1 : introduction

1999eXtreme Programming

-

2001Le manifeste agile

-

2001Scrum

-

2003Lean / Kanban

-

2009DevOps

Une histoire de la gestion de projet informatique (2)

Page 18: Architecture logicielle #1 : introduction

2.1 Organisation du projet

Page 19: Architecture logicielle #1 : introduction

2.1 Méthodes linéaires

Page 20: Architecture logicielle #1 : introduction

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.

Page 21: Architecture logicielle #1 : introduction

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.

Page 22: Architecture logicielle #1 : introduction

Modèle en cascade

Recueil des besoins

Spécifications

Conception

Réalisation

Tests

Livraison

Page 23: Architecture logicielle #1 : introduction

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

Page 24: Architecture logicielle #1 : introduction

Functional Work Teams

Design Development Operations

Head of design Head of development Head of Operations

Page 25: Architecture logicielle #1 : introduction

Méthode d’architecture

Big Design Up Front

Page 26: Architecture logicielle #1 : introduction

2.2 Méthodes itératives

Page 27: Architecture logicielle #1 : introduction

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

Page 28: Architecture logicielle #1 : introduction

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.

Page 29: Architecture logicielle #1 : introduction

Modèle agile

Recueil des besoins

Réalisation Spécifications

Conception

Page 30: Architecture logicielle #1 : introduction

Cross-functional & self-directed Teams

Feature 1 Feature 2 Feature 3

Page 31: Architecture logicielle #1 : introduction

Méthode d’architecture

Emergent Design

Page 32: Architecture logicielle #1 : introduction

To be continued …