Architecture logicielle #1 : introduction

Preview:

Citation preview

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 …

Recommended