Question

Développement de composants-Driven terme commence à se habituer largement, esp. en liaison avec inversion de configuration.

  1. Qu'est-ce?
  2. Quels problèmes faut-il résoudre?
  3. Quand est-il approprié et quand ne pas?
Était-ce utile?

La solution

  

Qu'est-ce?

Je pense que la définition dans votre réponse à cette question couvre bien. Bien, je me demande pourquoi la définition comprend qu'un composant doit définir explicitement ses dépendances. Un exemple canonique d'un composant est un contrôle ActiveX - ont-ils besoin de définir explicitement leurs dépendances

  

Quels problèmes faut-il résoudre?

Gestion de la complexité. Il vise à répondre à cela en vous permettant de ne jamais penser à la mise en œuvre du composant. Il faut seulement besoin de composants auteur, on devrait pas d'avoir à réfléchir à la façon de combiner ou de les gérer. Cela se fait par un cadre ou de l'infrastructure externe au composant, et sans importance à l'auteur composant.

  

Quand est-il approprié et quand ne pas?

Pas nécessairement appropriée dans une application trival ou jeter après. La mauvaise odeur dans une architecture des composants, est que si vous passez du temps à penser ou de travailler sur l'infrastructure pour gérer et combiner des composants, plutôt que les composants eux-mêmes.

Autres conseils

Je ne suis pas sûr qu'il est une terminologie « répandue », mais dans VCS (Version Control System), je sais que deux façons de gérer un ensemble de fichiers nécessaires pour construire un programme:

  • , où le tout ensemble a une vie commune le cycle et doit être étiqueté comme tous
  • approche à base de composants, où ensemble individuel de fichiers ont leur propre cycle de vie, et où une des références méta-étiquette toutes les étiquettes des composants pour désigner le système tout par la composition et les dépendances entre les composants.

architecture applicative permet d'identifier les composants:

  • domaine fonctionnel et applications
  • bibliothèques tiers
  • cadres

C'est là IoC arrive, car il est à la base de tout cadre. Le problème qu'il résout est vous permettre de mieux identifier la partie de votre demande:
Supposons que vous créez une application PLR (profits et pertes), en charge de calculer le gain et les pertes (position) d'un commerçant.
Vous rendrez vite compte qu'il n'est pas une seule application, mais une composition de plusieurs:

  • GUI
  • lance
  • répartiteur (pour envoyer le calcul sur plusieurs serveurs, car on n'aurait pas assez de mémoire pour calculer tous!)
  • et ainsi de suite

Vous pouvez ensuite définir un cadre de calcul (Ioc) qui vous permettra de plug-ins vos modules différents, qui sont ensuite appelés au bon moment par votre cadre.

Vous pouvez également identifier les cadres techniques purement (KPI, les journaux, les directions d'exception), qui peut ensuite être utilisé par l'un des votre autre fonctionnel composants.

En terme de gestion de projet, qui vous permet également de développer chaque partie indépendamment, tout en assurant une coordination globale par le VCS.

Le développement à base de composants est rien de vraiment nouveau. Je ne sais pas du développement des composants entraînés, mais je vais supposer que c'est la CDB. Il est comment Unix est conçu, tas de petits programmes substituable chacun faisant une chose très bien. Dans l'arène de bureau, VCL de Delphi a réussi à utiliser des composants avec des composants riches et réutilisables marché tiers comme aucun autre. Nous voyons maintenant la renaissance de la CDB que certaines technologies mûrissent. Par exemple simples applications Web évoluent vers SOA et RESTful WS. Tous les types Java est parlé de modularité et IoC.

La réponse que vous recherchez sera probablement disponible dans Pourquoi et que de l'inversion de contrôle par Ke Jin.

  

Par ailleurs, le naturel impératif de   ces langages de programmation OO classique   ont tendance à manquer la forêt (haut niveau   architectures pour la / structures)   les arbres (faible niveau logique de commande   code de procédure). Développement et   Les ingénieurs de maintenance sur une prise   application existante doivent compter sur   son de conception / architecture date   documents et code de bas niveau   commentaires / motifs.

     

Le développement à base de composants (CDB)   paradigme aborde les deux questions ci-dessus   par décalage logique de plomberie en   cadres qui manipulent les composants   et mettre en place des applications basées sur   utilisateurs / développeurs fournis déclarative   descriptions. Contrairement à la commune   confusion, comme déclarative   les descriptions ne sont pas destinés à être   scripts de configuration de l'application. Plutôt,   leur intention fondamentale est de   explicitement demande expresse   architectures / structures sans   rendant obligatoire leur plomberie impératif   procédures (à savoir décrire le quoi   au lieu de la faire). L'objectif de la CDB   paradigme est de soutenir efficacement et   Les compositions d'application souples par   ces cadres et ayant   Les développeurs d'applications se concentrent sur   la logique métier et les questions de domaine   sans concernant la plomberie à faible niveau   complexité.

     

cadres de la CDB qui combinent la   description de l'application déclaratives   et la technique IoC sont appelés   comme cadres IoC. Contrairement à leur   prédécesseurs, les cadres sont IoC    non invasive et utiliser la    dépendance / injection de configuration / scénario de réglage .

Selon Wikipedia, le développement à base de composants est un alias pour génie logiciel à base de composants (CBSE ) .

  

[Il] est une branche du logiciel   l'ingénierie, dont la priorité est de    séparation des préoccupations en ce qui concerne   de la fonctionnalité large   disponible dans un logiciel donné   système.

est un peu vague, si nous regardons plus de détails.

  

Un composant individuel est un logiciel   paquet, ou d'un module, qui   encapsule un ensemble de connexes   fonctions (ou de données).

     

Tous les processus du système sont placés dans   composants séparés de telle sorte que la totalité de la   les données et les fonctions à l'intérieur de chaque   composant sont sémantiquement liés   (Tout comme le contenu de   Des classes). En raison de ce principe,   on dit souvent que les composants sont    modulaire et cohésion .

Ainsi, selon cette définition, un composant peut être tout aussi longtemps qu'il fait une chose vraiment bien et qu'une seule chose.

  

En ce qui concerne l'ensemble du système   coordination, composants communiquent   les uns avec les autres via des interfaces . [...]   Il en résulte des composants principaux appelés encapsulées .

Donc, ce sonne de plus en plus comme ce que nous pensons de bonne API ou SOA devrait ressembler.

fourni interfaces sont représentés par une sucette et requis interfaces sont represented par un symbole de douille ouverte fixée au bord externe du composant en UML.


(source: wikimedia. org )

  

Un autre attribut important de   composants est qu'ils sont    substituable , de sorte qu'un composant   pourrait être remplacé par un autre (à   temps de conception ou d'exécution), si le   les exigences du composant initial   (Exprimée par les interfaces) sont remplies   par le composant successeur.

     

réutilisabilité est un important   caractéristique d'une haute qualité   composant logiciel. Un logiciel   composant doit être conçu et   mis en œuvre pour qu'il puisse être réutilisé   dans de nombreux programmes différents.

substituabilité et réutilisabilité est ce qui fait un composant un composant. Alors, quelle est la différence entre cela et la programmation orientée objet?

  

L'idée orientée objet   programmation (POO) est que le logiciel   doit être écrite selon un   modèle mental du réel ou imaginé   des objets qu'elle représente. [...]

     

ingénierie logicielle à base de composants,   en revanche, ne fait pas de telles   hypothèses et les États plutôt que   logiciel doit être mis au point par collage   éléments préfabriqués ensemble beaucoup   comme dans le domaine de l'électronique ou   la mécanique.

Voici ma définition après avoir fait quelques recherches.

Component-Driven Development est une approche dans le développement logiciel dans lequel le code est fragmenté en composants réutilisables et testables qui sont combinés pour former la fondation d'application pour fournir des fonctionnalités d'entreprise. La combinaison et la gestion des composants est généralement déléguée à href="http://abdullin.com/wiki/inversion-of-control-ioc.html" de de Inversion de contrôle des conteneurs.

Un composant lui-même est une classe qui met en œuvre un certain contrat de service et définit explicitement les dépendances dont il a besoin pour remplir ce contrat. la mise en œuvre réelle est cachée à tout le monde en dehors du composant.

Liens connexes:

Je considère à base de composants génie logiciel comme une approche pour le développement de systèmes logiciels grâce à l'utilisation de composants connectables; avec un composant étant « une unité de composition avec des interfaces et du contexte explicite stipulés par contrat de dépendance uniquement », où « peut être déployée indépendamment et est soumise à composition tiers . » (Clemens Szyperski, " composants logiciels: au-delà de la programmation orientée objet ")

CBSE facilite la réutilisation de code et un montage rapide des systèmes logiciels flexibles / adaptables.

Il y a une recherche importante qui a été porté sur ce sujet depuis des années. L'événement phare ( ACM Symposium sur SIGSOFT Software Engineering Component Based) est la 14e année maintenant et il y a assez peu de nouvelles tendances.

En outre, si vous voulez un bon exemple de composants réutilisables, connectables et extensibles, très utilisés par l'industrie aujourd'hui, jetez un oeil à MS Enterprise Library .

Si vous êtes intéressés à combiner des composants (ou d'autres actifs réutilisables) dans des applications, vous devriez aussi jeter un oeil à la page noreferrer lignes de produits logiciels méthodologie .

Dans une gamme de produits logiciels les dépendances entre les composants (ou éléments de code de niveau inférieur) sont explicitement gérés en dehors de ces composants. Cela se fait généralement à l'aide d'un modèle de fonction qui contient des règles telles que

  • Ces deux composants ne doivent pas être utilisés ensemble (exclusivité mutuelle)
  • Si ce composant est utilisé alors cet autre composant doit être utilisé ou (interdépendances)
  • Toute combinaison d'un certain ensemble de composants spécifié peut être utilisé (optionalité)

D'autres règles plus complexes sont possibles en fonction de la complexité des dépendances que vous souhaitez modéliser.

Une autre approche qui est parfois utilisé à la place de la modélisation de la caractéristique est d'utiliser un générateur de code pour configurer les différents composants qui doivent être assemblées dans l'application finale. Il est également possible de combiner la modélisation de la fonction avec la génération de code.

En dehors de la génération de code, d'autres termes que vous pourriez rechercher que la modélisation spécifique au domaine, le développement de logiciels à base de modèles, la famille de logiciel.

Vous ne comprendrez jamais ce qui est vraiment le développement dirigé par des composants, jusqu'à ce que vous essayez d'utiliser Unity 3D. Il n'est pas ActiveX ou tout ce que vous jamais vu, ce que vous avez vu avant a une autre signification du composant.

Le développement de composants-Driven, au sujet de tout le monde parle ces derniers temps, les moyens, vous avez 2 choses:

  1. Objet - ce qui est tout comme un objet dans la programmation orientée objet ou d'un objet du monde réel
  2. .
  3. Composante Objets -. Qui ressemble à une partie de la fonctionnalité de l'objet ou l'un de ses capacités

Ainsi: Component - n'est pas un objet. Il est -. La fonctionnalité d'un objet

Ainsi, dans la programmation standard POO, lorsque vous avez besoin d'étendre l'objet de base avec de nouvelles fonctionnalités, vous devez faire un nouvel objet dérivé par objet Héritant de base.

Dans le développement dirigé par des composants, lorsque vous avez besoin objet étendu, vous venez de créer un objet vide et il remplit avec des composants différents, sans héritage. Dans le développement dirigé par des composants il n'y a pas de cours, il est Préfabriqués au lieu -. Qui est des objets prédéfinis avec des composants prédéfinis, avec les objets enfants

Comme je l'ai dit, vous ne comprendrez jamais jusqu'à ce que vous essayez. Avec le développement drived composants que vous ne devez pas utiliser toujours la programmation, vous pouvez utiliser des éditeurs graphiques à la place, et aussi vous libère de l'héritage Enfer de la POO typique. Les composants se programmés avec la programmation habituelle, mais le système de niveau supérieur, y compris les objets, la plupart du temps seulement besoin d'utiliser et de combiner des composants dans l'éditeur et de recevoir le comportement des objets personnalisés.

Ainsi: Component-Driven Development vous donne:

  1. Grande puissance pour créer la logique de votre programm, en utilisant simplement un éditeur, sans programmation.
  2. Libère votre esprit de l'héritage POO Enfer. Rend le développement plus simple et rapide.
  3. rend votre programm hautement personnalisable et évolutive sans même toucher le code. Moins d'erreurs et bugs.
  4. plus facile de maintenir le code de votre programm, simplement des composants spécifiques reprogrammation, sans beaucoup de repos effectuer système.
  5. etc ...

Je veux aussi ajouter que à base de composants (moteur) programmation n'est pas pour remplacer la programmation POO, il est au-dessus de la POO ou la programmation habituelle. la programmation habituelle encore utilisée dans CBP pour la mise en œuvre de composants à faible niveau de. Je pense que cet article ont aussi bien et brève explication du CBP: http: //acmantwerp.acm.org/wp-content/uploads/2010/10/componentbasedprogramming.pdf

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top