9
votes

Quelle est l'importance de la modélisation des projets logiciels

La modularisation est évidemment importante dans les projets logiciels, mais je souhaite connaître les opinions des gens sur comment important et pour ce que raisons il est important. J'ai évidemment eu mes propres idées depuis que je pose cela, mais je pense à cela comme une "réflexion commune" des raisons pour lesquelles on devrait modulariser ses projets logiciels ...


1 commentaires

devrait être un wiki communautaire


5 Réponses :


2
votes

Mes principales raisons pour mettre le code dans différents modules:

  • Séparation des préoccupations : Je pense qu'il est plus facile de limiter les connaissances sur les internes des classes à différents niveaux ou avec des tâches différentes si elles sont organisées en modules distincts. Il se sent tout simplement plus "sale" de compter sur des internes si elles sont bien cachées.
  • plus facile à maintenir des composants plus petits : Je trouve généralement l'environnement de développement pour être plus réactif si je travaille sur un projet avec moins de fichiers de code, que si le projet contient des centaines et des centaines de fichiers. < / li>
  • Prévention des affrontements d'espace de noms : lorsqu'il est correctement modularisé, par ex. En utilisant des espaces de noms dans Java, vous pouvez avoir le même nom de la fonction pour la même fonctionnalité sans avoir à craindre que la fonction d'impression () dans le composant FOO s'affroidne avec la fonction d'impression () dans le composant à barres.
  • Séparation des préoccupations de sécurité : Il est plus facile de minimiser les dommages potentiels lorsqu'un composant étapes sur les orteils d'un autre composant. En fonction de la technologie utilisée, vous pouvez limiter où chaque module peut jouer en mémoire.

0 commentaires

4
votes

Je pense que l'un des principaux aspects est réutilisé . Lorsque vous construisez des choses de manière modulaire, il y a à peine des choses comme: «Oh, je l'ai déjà fait auparavant, mais pour l'utiliser, je devrai aussi chercher cela et cette fonctionnalité, qui n'a absolument rien à voir avec ma demande».

Aussi, Il est plus facile de comprendre. Je ne peux pas garder des tonnes de choses dans mon esprit en même temps. Lorsque le code est modulaire, il est plus facile d'établir une "zone" de choses qui a du sens en soi. Et une fois que cette zone a tendance à être petite, je peux le comprendre dans l'ensemble plutôt que dans des morceaux.

Enfin, lorsque les choses sont plus petites, il est plus facile de tester et de maintenir. également, vos tests indiquent plus rapidement lorsque l'erreur est, une fois qu'ils ne testeront qu'une petite partie de l'application.


0 commentaires

5
votes

Nous, les humains sont limités lorsqu'il s'agit de saisir des problèmes complexes à la fois. Cependant, nous sommes doués dans la capacité de décomposer un problème complexe dans un nombre (éventuellement très grand) de problèmes individuels qui ne sont pas trop complexes afin de lutter contre le gros problème.

Ceci est fondamentalement ce qui entraîne des réponses comme "réutilisation", "séparation des préoccupations", "maintenance plus facile".

Toutes ces raisons sont vraies s'il s'agit d'une personne qui décompose un problème complexe pour lutter contre la pièce à pièces, ou s'il s'agit d'une équipe de personnes qui le brisent pour répartir la complexité.


2 commentaires

Belle explication de "Diviser et conquérir" ... :) +1


Pour moi, c'est l'importance primordiale de la modularisation (et de l'encapsulation, à cette affaire). C'est la capacité de réduire l'ensemble de travail nécessaire pour apporter des modifications en fonction de la portée dans une partie étroite de la solution, sans avoir à penser (trop) sur le système plus vaste. Avec de grands systèmes, je sais que Je suis pas assez intelligent pour le garder tout dans ma tête!



1
votes

La modularisation et le découplage sont importants pour de nombreuses raisons, certaines sont:

  • Réutilisation: il est beaucoup plus facile de réutiliser des modules logiciels dédiés à des fins spécifiques
  • Gestion de la complexité: travailler sur des modules découplés (code d'écriture, débogage, entretien, etc.) conserve votre objectif sur un certain problème de domaine sans être distrait par d'autres aspects de l'application ou du système logiciel.

0 commentaires

0
votes

Il peut également être considéré comme une activité de base de Architecture d'application qui:

  • prend des spécifications commerciales et fonctionnelles
  • et regroupez les principales fonctions dans les applications tout en identifiant des modules non fonctionnels et un module transversal technique pur

    C'est pourquoi un "calcul du portefeuille financier" sera réellement divisé en:

    • Un module de calcul
    • Un module de répartiteur (car un portefeuille est trop important pour être calculé sur un serveur)
    • un module de lanceur (pour piloter tous les calculs)
    • une interface graphique (pour voir ce qui se passe réellement)

      Plus plusieurs transversales:

      • KPI Logging
      • Gestion des exceptions

        Traiter ce type d'exigence fonctionnelle car un grand module monolithique forcerait le développement à mettre en œuvre toutes les sous-routines de la séquence de tous.
        Alors qu'avec une architecture d'application claire, vous pouvez commencer à travailler sur les modules plus généraux et transversaux tout en affinant les autres modules plus axés sur les entreprises.

        Il vous oblige également à définir plus d'interfaces et à analyser les problèmes inter-communications que vos différents modules devront résoudre (typologie N-TO-N directe? Bus?, ...)


0 commentaires