2010-09-26 10 views
1

Je cherche des outils qui m'aident à évaluer les performances d'une architecture logicielle. Pour ce projet spécifique, j'ai besoin de modéliser un système [distribué] d'une taille modeste comparable au middleware orienté message (MOM). Basé sur un modèle, je voudrais mesurer la performance du système dans certaines circonstances. De plus, le ou les outils devraient m'aider à prendre des décisions sur la façon dont une modification de l'architecture affecterait les performances du système.Évaluation des performances d'une architecture logicielle?

Voici un exemple de question (rester avec l'analogie MOM) que je voudrais être en mesure de répondre:
Comment le débit (mesuré dans les messages/s) de l'ensemble changement de système si la couche de persistance était changé d'un backend SQL à un nouveau back-end NoSQL avec une cohérence éventuelle? Dans un modèle [simplifié], le composant qui doit rendre quelque chose de persistant (c'est-à-dire écrire dans la base de données) a une opération qui est retardée de X ms jusqu'à ce que le fournisseur de persistance le reconnaisse. Si le back-end de persistance est modifié et que l'acquittement est instantané, alors ledit retard tombera à Y ms. Comment la diminution de ce délai affecterait-elle le débit du système? Notez que je m'intéresse principalement à des produits logiciels ou à des techniques de modélisation prêts à l'emploi plutôt qu'à du matériel de recherche, mais je n'hésite pas à mentionner des ressources académiques remarquables.

+0

Vous pourriez envisager de modifier la question plutôt que d'ajouter un certain nombre de réponses qui ne sont en fait que des clarifications de la question. –

+0

@Mike Dunlavey: ce ne sont * pas * des éclaircissements à la question mais plutôt des réponses * possibles * que j'ai trouvées (j'ai "fait mes devoirs" en faisant quelques recherches avant de demander). D'ailleurs, je ne voulais pas brouiller la question, c'est déjà assez compliqué. Si l'une des réponses (pas nécessairement la mienne) s'avère intéressante, je poserai des questions de suivi spécifiques. – paprika

+1

Afin de produire quelque chose de significatif, je suppose que vous avez besoin de temps de réponse par information de débit pour vos modèles de trafic spécifiques. Vos résultats de simulation peuvent être loin si vous devinez ceci. – Bernd

Répondre

0

Bien que principalement destiné à la recherche en réseau, le ns-3 simulator pourrait être utilisé pour modéliser et simuler votre application. Cela dépend probablement de la façon dont votre application est centrée sur le réseau. ns-3 a une classe Application dans le cadre de son modèle objet qui est destiné à être utilisé pour modéliser tout ce qui est au-dessus de TCP/UDP. Vous pouvez écrire une version très simplifiée de votre logique d'application qui envoie seulement du charabia sur le réseau et introduit des retards ici et là pour des opérations spécifiques. ns-3 offre une bonne traçabilité.

0

Une structure de simulateur telle que SimPy pourrait être utile pour modéliser et simuler le comportement du système. Contrairement à quelque chose comme ns-3 vous n'avez pas de pièces prêtes à l'emploi disponibles, mais vous n'êtes pas limité à la simulation centrée sur le réseau. Avec cette approche vous avez toute la liberté du monde pour la modélisation, mais changer des parties dans votre modèle pourrait prendre beaucoup de temps si vous ne commencez pas avec un bon modèle d'objet: c'est probablement une bonne idée d'utiliser des concepts génériques comme des "canaux" pour la communication entre les composants plutôt que de connecter directement/explicitement des composants. Les concepts OO et les meilleures pratiques s'appliquent.

0

This master thesis évalue plusieurs Architecture description languages (ADLs) et leur applicabilité pour évaluer les performances d'une architecture. Il conclut que les ADL actuelles ne supportent pas l'évaluation des attributs non fonctionnels en termes de prédictions de performance. La thèse introduit également un logiciel appelé SAPE (Software Architecture Performance Evaluation), qui - comme son nom l'indique déjà - est destiné à aider à l'évaluation des aspects de performance d'une architecture logicielle. Il semble que ce logiciel n'est pas disponible n'importe où en ligne.

0

This paper fournit un aperçu de plusieurs approches pour dériver des modèles de performance à partir des spécifications de l'architecture logicielle [formelle]. Le langage de spécification utilisé dans la plupart des méthodologies est UML, les modèles de performance [quote:] incluent les réseaux de files d'attente (QN) et leurs extensions appelées Extended Queuing Networks (EQN) et Layered Queuing Networks (LQN), Stochastic Timed Petri nets (STPN), Algèbres de processus stochastiques (SPA) et modèles de simulation.

1

L'exemple que vous donnez est plus un changement dans la conception et la mise en œuvre - pas l'architecture.Bien sûr, la mise en œuvre NoSQL pourrait être plus rapide et augmenter globalement le débit, mais c'est la performance d'implémentation que vous mesureriez. Je suggérerais que la performance d'une architecture est basée plus sur le nombre de composants impliqués et comment ils sont arrangés - et cela dépend où vous tracez la ligne entre "architecture" et "design" (et implelentation détail).

Roger Sessions a passé beaucoup de temps à regarder le impact of complexity dans les systèmes informatiques (architecture orientée services en particulier). Personnellement, je soupçonne que l'idée qu'une architecture plus complexe pourrait ne pas être aussi efficace et donc pas aussi rapide a du mérite. Je ne suis pas sûr que vous pouvez vraiment tester la "performance" d'une architecture - du point de vue qu'elle existe seulement "sur papier". Les avions qui semblent parfaits sur le papier ont été connus pour tuer les pilotes d'essai.

En termes de logiciels, je sais que divers systèmes de modélisation ont des fonctionnalités qui vous permettent de parcourir un processus et de localiser les goulots d'étranglement; Le seul que je connaisse est ProVision (mais il y en a probablement d'autres).

0

Probablement OMNeT++ est ce qui se rapproche le plus de ce que j'avais à l'esprit:

OMNeT ++ est une simulation d'événements discrets environnement . Son application principale zone est la simulation de réseaux de communication, mais à cause de son architecture générique et flexible, est utilisé avec succès dans d'autres domaines comme la simulation de l'informatique systèmes complexes, faire la queue des réseaux ou des architectures matérielles ainsi.

Questions connexes