Qu'est-ce que le développement de composants-Driven?
-
06-09-2019 - |
Question
Développement de composants-Driven terme commence à se habituer largement, esp. en liaison avec inversion de configuration.
- Qu'est-ce?
- Quels problèmes faut-il résoudre?
- Quand est-il approprié et quand ne pas?
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:
- Objet - ce qui est tout comme un objet dans la programmation orientée objet ou d'un objet du monde réel .
- 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:
- Grande puissance pour créer la logique de votre programm, en utilisant simplement un éditeur, sans programmation.
- Libère votre esprit de l'héritage POO Enfer. Rend le développement plus simple et rapide.
- rend votre programm hautement personnalisable et évolutive sans même toucher le code. Moins d'erreurs et bugs.
- plus facile de maintenir le code de votre programm, simplement des composants spécifiques reprogrammation, sans beaucoup de repos effectuer système.
- 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