2009-10-08 6 views
0

Une conception stricte OOD/Interface/orientée aspect est-elle souhaitable en cas de développement d'une application logicielle? Ou, est-il souhaitable de mélanger tous pour faciliter le codage?Conception d'applications logicielles

Est-ce que toutes les applications logicielles réussies et hautement maintenables sont strictement orientées objet, ou sont-elles strictement orientées Interface, ou strictement orientées Aspect, ou un mélange d'entre elles?

Si elles sont si strictes, quelle méthodologie dois-je suivre pour éviter la paralysie de l'analyse tout en réalisant un design extrêmement puissant dans le cas de ces trois? Si vous pensez que la programmation basée sur l'interface et l'AOP ne sont que les extensions de la POO, alors pensez-y, comment les logiciels ont-ils été conçus avant l'arrivée des concepts de programmation basée sur l'interface et d'AOP?

Et aussi AOP peut avoir besoin d'un conteneur AOP.

+0

Cela est tout à fait déroutant, car L'interface et la conception AOP sont généralement considérées comme des variantes de la conception orientée objet. Pouvez-vous clarifier votre question en expliquant ce que vous entendez par «strict» et «mixte»? –

+0

Un conteneur AOP? Une telle chose n'existe pas - je suppose que vous avez entendu parler d'une chose appelée «conteneur IoC». S'il vous plaît, ne jetez pas des mots à la mode juste pour le plaisir - cela rendra votre programmation bien pire que de simplement les ignorer. –

Répondre

1

-ce que tous réussis et très applications logicielles maintenables strictement orienté objet, ou, strictement interface orientée, ou, aspect strictement orienté, ou un mélange d'entre eux?

Certaines applications sont réussies, d'autres sont hautement maintenables. Un exemple auquel je peux penser est Artisan Studio, un outil SysML qui a été adopté par les débutants, mais qui est apparu comme ayant une très faible maintenabilité quand je suis allé en entrevue. Sa conception est le style de composant OO C++ - une base de données OO distribuée et utilisant COM pour permettre l'ajout de fonctionnalités en tant que composants; mais ils ont admis avoir beaucoup de mal à travailler sur un grand code de base. Je soupçonne que maintenant l'outil Enterprise Architect UML beaucoup moins cher et plus agile a une offre SysML que le succès va éroder. Je n'ai pas parlé aux concepteurs d'EA, mais EA est construit sur une base de données SQL, et l'API d'automatisation n'est évidemment pas une pure solution OO - par exemple, vous devez mettre à jour différentes parties de la même propriété d'un UML objet utilisant différentes API (un package UML est représenté à la fois par un objet Package et un élément Element, et si vous changez le nom du package dans une API, vous devez vous souvenir de le changer dans l'autre ou il aura un nom différent dans l'arborescence et sur n'importe quel diagramme).Étant donné le taux d'ajout de fonctionnalités à EA, et la qualité générale de la sensation de l'application, je pense qu'il est plus agile que le «meilleur OO» qu'Artisan a adopté, mais qu'il ne peut pas facilement refactoriser.

Je ne trouve pas de lien fort entre la maintenabilité et le succès, ou la stricte OO et le succès. Faire ce qui est nécessaire et la capacité de refactoriser un logiciel est probablement plus important pour le succès. Ça et un bon département marketing.

(refactoring quelque chose est le contraire de maintenir quelque chose - dans refactoring vous changez l'architecture, mais l'ensemble des fonctionnalités est statique, la maintenance consiste à ajouter de nouvelles fonctionnalités ou la suppression des bugs d'une architecture existante)

0

Un mélange, et peut-être pas du tout. Tout ce qui est basé sur un langage non-OO (par exemple C) aura des difficultés à remplir les critères imposés par une définition OO.

Les projets dans les langages fonctionnels n'adhéreront à aucun des éléments ci-dessus.

Toutes ces méthodologies de conception «orientées» ne sont que cela. Orientations. Vous devriez être capable de reconnaître les avantages et les inconvénients de chaque approche, et d'apprendre à mélanger et correspondre le cas échéant, en fonction de la pertinence, la complexité, le budget, les délais, la maintenabilité, etc

1

Votre question confond les objectifs d'un projet logiciel avec les moyens de les atteindre. Choses/Buzzwords comme Conception basée sur l'interface ou AOP peut être très bénéfique (ne vous méprenez pas: je les aime vraiment), mais ils peuvent aussi conduire à des résultats catastrophiques, s'ils sont utilisés là où ils ne sont pas approprié.

Si vous avez un clou, utilisez un marteau. Si vous avez une vis, utilisez un tournevis. S'il n'y a aucun d'entre eux, alors qu'aucun des deux outils seront utiles ...