Définitions
Il est très compliqué de donner une définition pour l’architecture logicielle. Ci-dessous voici comment des spécialistes du domaine définissent l’archictecture logicielle. D’autres définitions sont disponibles ici
Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.
In most successful software projects, the expert developers working on that project have a shared understanding of the system design. This shared understanding is called “architecture.” This understanding includes how the system is divided into components and how the components interact through interfaces. These components are usually composed of smaller components, but the architecture only includes the components and interfaces that are understood by all the developers . . . Architecture is about the important stuff. Whatever that is.. 1
An architecture is the set of significant decisions about the organization of a software system, the selection of structural elements and their interfaces by which the system is composed, together with their behavior as specified in the collaborations among those elements, the composition of these elements into progressively larger subsystems, and the architectural style that guides this organization – these elements and their interfaces, their collaborations, and their composition.1
Kruchten (2003) The Rational Unified Process: An Introduction ↩︎
Quoi retenir
- Prendre des décisions sur l’organisation du logiciel, ses composants et leurs relations
- Minimiser le coût du changement en écrivant un logiciel flexible
- Les développeurs et les architectes doivent avoir une compréhension commune de comment diviser le système et comment les composants interagissent entre eux. L’architecture n’est pas qu’un concept technique c’est également du social.
The best architecture is the one that fits the business needs, not the one that mimics the tech giants (Google, Netflix, …)