Stratégies de conception de logiciels

La conception logicielle est un processus permettant de conceptualiser les exigences logicielles en implémentation logicielle. La conception de logiciels prend les exigences des utilisateurs comme des défis et tente de trouver une solution optimale. Pendant la conceptualisation du logiciel, un plan est élaboré pour trouver la meilleure conception possible pour mettre en œuvre la solution prévue.

Il existe plusieurs variantes de conception de logiciels. Étudions-les brièvement:

Conception structurée

La conception structurée est une conceptualisation du problème en plusieurs éléments de solution bien organisés. Il s'agit essentiellement de la conception de la solution. L'avantage de la conception structurée est qu'elle permet de mieux comprendre comment le problème est résolu. La conception structurée permet également au concepteur de se concentrer plus précisément sur le problème.

La conception structurée est principalement basée sur la stratégie de «diviser pour vaincre» où un problème est divisé en plusieurs petits problèmes et chaque petit problème est résolu individuellement jusqu'à ce que tout le problème soit résolu.

Les petits problèmes sont résolus au moyen de modules de solution. La conception structurée met l'accent sur le fait que ces modules soient bien organisés afin de parvenir à une solution précise.

Ces modules sont organisés en hiérarchie. Ils communiquent entre eux. Une bonne conception structurée suit toujours certaines règles de communication entre plusieurs modules, à savoir -

Cohesion - regroupement de tous les éléments fonctionnellement liés.

Coupling - communication entre différents modules.

Une bonne conception structurée a une cohésion élevée et de faibles agencements de couplage.

Conception orientée fonction

Dans la conception orientée fonction, le système est composé de nombreux sous-systèmes plus petits appelés fonctions. Ces fonctions sont capables d'exécuter des tâches importantes dans le système. Le système est considéré comme une vue de dessus de toutes les fonctions.

La conception orientée fonction hérite de certaines propriétés de la conception structurée où la méthodologie de division et de conquête est utilisée.

Ce mécanisme de conception divise l'ensemble du système en fonctions plus petites, ce qui fournit des moyens d'abstraction en dissimulant les informations et leur fonctionnement. Ces modules fonctionnels peuvent partager des informations entre eux au moyen d'informations passant et utilisant les informations disponibles dans le monde entier.

Une autre caractéristique des fonctions est que lorsqu'un programme appelle une fonction, la fonction change l'état du programme, ce qui n'est parfois pas acceptable par d'autres modules. La conception orientée fonction fonctionne bien là où l'état du système n'a pas d'importance et le programme / les fonctions fonctionnent en entrée plutôt qu'en état.

Procédé de design

  • L'ensemble du système est considéré comme la manière dont les données circulent dans le système au moyen d'un diagramme de flux de données.
  • DFD décrit comment les fonctions modifient les données et l'état de l'ensemble du système.
  • L'ensemble du système est logiquement décomposé en unités plus petites appelées fonctions sur la base de leur fonctionnement dans le système.
  • Chaque fonction est ensuite décrite dans son ensemble.

Conception orientée objet

La conception orientée objet fonctionne autour des entités et de leurs caractéristiques au lieu des fonctions impliquées dans le système logiciel. Cette stratégie de conception se concentre sur les entités et ses caractéristiques. Tout le concept de solution logicielle tourne autour des entités engagées.

Voyons les concepts importants de la conception orientée objet:

  • Objects - Toutes les entités impliquées dans la conception de la solution sont appelées objets. Par exemple, la personne, les banques, l'entreprise et les clients sont traités comme des objets. Chaque entité a des attributs qui lui sont associés et a des méthodes à exécuter sur les attributs.
  • Classes - Une classe est une description généralisée d'un objet. Un objet est une instance d'une classe. La classe définit tous les attributs qu'un objet peut avoir et les méthodes qui définissent la fonctionnalité de l'objet.

    Dans la conception de la solution, les attributs sont stockés sous forme de variables et les fonctionnalités sont définies au moyen de méthodes ou de procédures.

  • Encapsulation - En OOD, les attributs (variables de données) et les méthodes (opération sur les données) sont regroupés ensemble s'appelle l'encapsulation. L'encapsulation regroupe non seulement les informations importantes d'un objet, mais restreint également l'accès aux données et aux méthodes du monde extérieur. C'est ce qu'on appelle la dissimulation d'informations.
  • Inheritance - OOD permet à des classes similaires de s'empiler de manière hiérarchique où les classes inférieures ou les sous-classes peuvent importer, implémenter et réutiliser des variables et des méthodes autorisées à partir de leurs super-classes immédiates. Cette propriété d'OOD est connue sous le nom d'héritage. Cela facilite la définition d'une classe spécifique et la création de classes généralisées à partir de classes spécifiques.
  • Polymorphism - Les langages OOD fournissent un mécanisme dans lequel les méthodes exécutant des tâches similaires mais dont les arguments varient peuvent se voir attribuer le même nom. C'est ce qu'on appelle le polymorphisme, qui permet à une seule interface d'effectuer des tâches pour différents types. En fonction de la façon dont la fonction est appelée, la partie respective du code est exécutée.

Procédé de design

Le processus de conception de logiciel peut être perçu comme une série d'étapes bien définies. Bien que cela varie en fonction de l'approche de conception (orientée fonction ou orientée objet, il peut cependant comporter les étapes suivantes:

  • Une conception de solution est créée à partir des exigences ou du diagramme de séquence du système et / ou du système précédemment utilisé.
  • Les objets sont identifiés et regroupés en classes au nom de la similitude des caractéristiques d'attribut.
  • La hiérarchie des classes et la relation entre elles sont définies.
  • Le cadre d'application est défini.

Approches de conception logicielle

Voici deux approches génériques pour la conception de logiciels:

Conception descendante

Nous savons qu'un système est composé de plus d'un sous-système et qu'il contient un certain nombre de composants. En outre, ces sous-systèmes et composants peuvent avoir leur ensemble unique de sous-systèmes et de composants et créent une structure hiérarchique dans le système.

La conception descendante prend l'ensemble du système logiciel comme une seule entité, puis le décompose pour obtenir plus d'un sous-système ou composant en fonction de certaines caractéristiques. Chaque sous-système ou composant est ensuite traité comme un système et décomposé davantage. Ce processus continue à s'exécuter jusqu'à ce que le niveau le plus bas du système dans la hiérarchie descendante soit atteint.

La conception descendante commence par un modèle généralisé de système et continue de définir la partie la plus spécifique de celui-ci. Lorsque tous les composants sont composés, tout le système prend naissance.

La conception descendante est plus appropriée lorsque la solution logicielle doit être conçue à partir de zéro et que des détails spécifiques sont inconnus.

Conception ascendante

Le modèle de conception ascendant commence par les composants les plus spécifiques et de base. Il procède à la composition de composants de niveau supérieur en utilisant des composants de base ou de niveau inférieur. Il continue de créer des composants de niveau supérieur jusqu'à ce que le système souhaité ne soit pas développé comme un seul composant. Avec chaque niveau supérieur, la quantité d'abstraction est augmentée.

La stratégie ascendante est plus appropriée lorsqu'un système doit être créé à partir d'un système existant, où les primitives de base peuvent être utilisées dans le système plus récent.

Les approches descendantes et ascendantes ne sont pas réalisables individuellement. Au lieu de cela, une bonne combinaison des deux est utilisée.