Faits: Faits: A. A.a A._ SA (ci-après: A._) est une société spécialisée dans la fabrication et la diffusion de logiciels bancaires. Elle est administrée et animée par les époux AA._. D._ BV (ci-après: D._) était une société de droit néerlandais faisant partie du groupe informatique O._. La société de droit suisse P._ SA (ci-après: P._) était une filiale de D._. Par contrats des 26 décembre 1991 et 17 juin 1993, D._ avait acquis de la société N._ B.V. l'intégralité des droits de propriété intellectuelle sur un logiciel dénommé Y._ (anciennement: Z._) et destiné aux établissements financiers de gestion de patrimoine et de fortune (private banking). De son côté, A._, qui s'était vu concéder le droit d'utiliser le code source de Z._, avait développé, dès 1991, un nouveau logiciel dénommé X._ VO et destiné aux banques privées. Sur la base de ce logiciel, elle en avait créé, à grands frais, un nouveau, appelé X._ VA. Contrairement à X._ VO, X._ VA a pour caractéristique de ne pouvoir fonctionner qu'avec le logiciel Y._, sur lequel il vient se greffer. Y._, en revanche, peut fonctionner de manière autonome. Les deux logiciels sont complémentaires. Y._ couvre les fonctions de "back office", alors que X._ VA couvre celles de gestion avancée. Ces deux logiciels contiennent un module de performance. Le module de performance de Y._ est toutefois moins évolué que celui de X._ VA, dans la mesure où il fonctionne sur un mode statique, en stockant des données à certaines dates, alors que celui de X._ VA fonctionne sur un mode dynamique, qui lui permet de remonter dans le temps, à d'autres dates que celles des stockages, pour analyser la performance. A.b A._ et D._ sont entrées en négociations en vue de compléter le logiciel Y._ par un autre logiciel coordonné qui comprendrait certaines fonctionnalités que le logiciel de D._ ne possédait pas. Les deux sociétés sont convenues de l'intégration de X._ VA dans Y._ et de la distribution par D._ du premier logiciel intégré dans le second. D._ était ainsi en mesure de proposer un logiciel plus performant à ses clients. Au terme de ces négociations, A._ et D._ ont signé, le 3 août 1993, un contrat intitulé "Accord de distribution". Par ce contrat, D._ se voyait accorder le droit exclusif de distribuer X._ VA dans plusieurs pays, dont la Suisse, contre paiement de redevances. A cet effet, A._ lui octroyait un certain nombre de licences, pour son usage interne et pour la distribution, et s'engageait à lui transmettre, pour chacune d'elles, une clé d'accès permanente. Ces licences portaient sur le "Produit", terme désignant les logiciels concédés sous licence, la documentation et les mises à jour. Aucun titre ni droit de propriété sur le "Produit" n'était transféré à D._ par ce contrat. L'accord de distribution réglait encore la procédure à suivre pour la révision et la mise à jour du "Produit". Y figuraient aussi des clauses de protection, de confidentialité et de non-concurrence. La cession de l'accord ou des droits et obligations en découlant n'était possible, pour D._, qu'en faveur de P._ ou de l'une de ses filiales. L'accord pouvait être résilié, entre autres hypothèses, si l'une des parties estimait que le "Produit" ne convenait plus pour une distribution par D._, ceci moyennant un préavis écrit de neuf mois. Enfin, le contrat prévoyait l'application du droit suisse et instituait la compétence locale des tribunaux du canton de Genève. A.c D._, qui s'était réservé cette faculté, a confié à P._ le soin d'exécuter l'accord du 3 août 1993. Elle a désigné BB._ et CC._ comme "interlocuteur privilégié", respectivement "product manager". Ces deux personnes étaient chargées d'assurer, la première, la liaison entre les cocontractants, la seconde la promotion du "Produit". Dans un premier temps, six licences ont été accordées, moyennant un prix forfaitaire de 100'000 fr., pour la distribution de X._ VA par P._ aux clients de D._, au nombre desquels figurait la Q._ (ci-après: la banque Q._). D'autres licences ont été accordées par la suite, notamment pour la Banque S._ SA (ci-après: la banque S._). Des redevances ont été payées par D._ à A._ pour tous les clients chez lesquels Y._ et X._ VA ont été installés. L'installation de X._ VA chez les clients se faisait par A._. Cette société s'est engagée à mettre à disposition de P._, dans les locaux de cette dernière, une personne chargée de la correction des anomalies et de la gestion du code source de X._ VA. Nommé à ce poste, DD._ procédait également aux révisions de X._ en cas de modifications de Y._. Les parties ont en outre conclu une convention de séquestre, le 3 décembre 1993, avec l'Agence pour la protection des programmes. Le code source de X._ VA, qui contient le savoir-faire et les secrets de A._, devait être déposé auprès de ladite agence et ne pourrait être remis à D._ qu'à certaines conditions. D._ n'a jamais eu d'accès direct au code source de X._ VA. A l'usage, des dysfonctionnements sont apparus dans X._ VA, qui ont empêché l'utilisation correcte du logiciel, ce qui a poussé P._ à limiter la prospection de nouveaux clients. De surcroît, un problème de blocage de X._ VA et de ses fonctions est survenu à la fin de l'année 1994, notamment dans les banques S._ et Q._. Selon A._, ce blocage provenait de l'incompatibilité entre X._ VA et la nouvelle version 1.8-2 de Y._, tandis que, pour D._, le problème était dû uniquement au fait que A._ avait installé une clé d'accès qui n'était pas permanente, contrairement à l'engagement pris par elle dans l'accord du 3 août 1993. Aucune amélioration, sur le plan technique en particulier, n'étant intervenue, D._ a informé A._, le 16 janvier 1995, qu'elle résiliait l'accord du 3 août 1993 avec un préavis de neuf mois. A._ n'a pas contesté la validité de cette résiliation. Le 14 mars 1995, D._ a déposé une requête de mesures provisionnelles afin d'être autorisée à accéder au code source de X._ VA. Par ordonnance du 21 mars 1995, le Tribunal de première instance du canton de Genève a rejeté cette requête, compte tenu des risques liés à la remise du code source à la requérante et du fait que, selon lui, les problèmes rencontrés provenaient de la nouvelle version 1.8-2 de Y._ et du non-respect de la procédure. de révision. En raison de la persistance des difficultés et de l'absence de toute réaction de A._ depuis le début du mois de février 1995, P._ a indiqué à cette dernière, le 2 mai 1995, qu'elle avait dû trouver des solutions de remplacement pour ses clients. Elle précisait, par ailleurs, qu'elle estimait ne plus être liée par les dispositions de l'accord du 3 août 1993. A.d En juillet 1994, le groupe O._ a créé la société L._ SA (ci-après: L._), ayant pour but le développement, l'achat, la vente, l'installation et l'entretien de logiciels d'application pour le secteur bancaire. Cette société a repris les activités et le personnel du Département "Private Banking" de P._, soit la division chargée de la mise en oeuvre de l'accord de distribution du 3 août 1993. BB._, désigné comme "interlocuteur privilégié" dans la gestion dudit accord, était administrateur et président de L._. Le 7 octobre 1994, en exécution d'un contrat cadre et d'accords particuliers, D._ a cédé le capital-actions de L._, ainsi que le personnel de cette société, à la société américaine J._ Inc. (ci-après: J._). Elle a, d'autre part, vendu la totalité des droits de propriété intellectuelle sur le logiciel Y._ à une filiale de J._. Il était précisé que le terme Y._ ne comprenait pas X._, propriété de A._. L._ a mis au point les nouvelles versions de Y._ (1.8-2 et 1.8-3). En raison des difficultés rencontrées avec X._ VA, les parties au contrat cadre précité sont convenues, le 15 mai 1995, de remplacer ce logiciel par un autre. Dans ce but, un logiciel U._ a été acquis en août 1995 d'une société belge. Son code source a été acheté pour être intégré à Y._. Le produit a ensuite été renommé V._. Le logiciel U._/V._ ne contenait pas de module de performance. Destiné à remplacer d'autres fonctionnalités de X._, il a été installé à partir du début de l'été 1996 auprès des clients qui auraient dû utiliser X._ VA, telle la banque Q._. En raison des difficultés rencontrées avec X._ VA, les parties au contrat cadre précité sont convenues, le 15 mai 1995, de remplacer ce logiciel par un autre. Dans ce but, un logiciel U._ a été acquis en août 1995 d'une société belge. Son code source a été acheté pour être intégré à Y._. Le produit a ensuite été renommé V._. Le logiciel U._/V._ ne contenait pas de module de performance. Destiné à remplacer d'autres fonctionnalités de X._, il a été installé à partir du début de l'été 1996 auprès des clients qui auraient dû utiliser X._ VA, telle la banque Q._. B. Le 23 février 1995, A._ a ouvert action contre D._, P._, J._ et L._. Dans ses dernières conclusions, elle a demandé à la Cour de justice genevoise de: - constater le caractère illicite des actes de concurrence déloyale et d'atteinte au droit d'auteur commis par les défenderesses; - ordonner la publication du dispositif de l'arrêt aux frais des défenderesses dans les trois journaux; - ordonner la confiscation, aux frais des défenderesses, du module concurrentiel à X._ VA intégré dans Y._, y compris les copies en mains des défenderesses et de toute personne et/ou société tierce détentrice d'une licence d'utilisation; - faire interdiction aux défenderesses, sous menace des peines prévues à l'art. 292 CP, d'utiliser ou d'exploiter de manière quelconque ses secrets de fabrication et/ou d'affaires; - condamner les défenderesses, conjointement et solidairement, à des dommages-intérêts de 5'000'000 fr. avec intérêts à 5% dès le 23 février 1995, ainsi qu'à un montant fixé par la Cour en application de l'art. 42 al. 2 CO. A l'appui desdites conclusions, la demanderesse alléguait, en substance, que, grâce au montage mis en place par D._, sa concurrente J._ avait eu accès à toutes les informations confidentielles relatives à X._ VA, notamment au code source de ce logiciel, en violation de l'accord de distribution du 3 août 1993. De plus, L._ avait développé, à l'insu de A._ et sans respecter la procédure de révision contractuelle, la version 1.8-2 de Y._ qui ajoutait à ce logiciel une fonctionnalité "performance", propre à X._ VA, et qui intégrait par ailleurs, pour le marché suisse, les exigences liées à l'introduction de la TVA au 1er janvier 1995. Ce produit, la documentation et les mises à jour successives avaient en outre été livrés aux clients sans mention du copyright de A._. Les défenderesses avaient ainsi mis au point un produit destiné à remplacer X._ VA sur le marché suisse et à rendre celui-ci inutilisable, puisqu'il ne comportait pas la fonctionnalité TVA. Elles avaient également dénigré A._ auprès de certains clients. En droit, la demanderesse reprochait aux défenderesses d'avoir violé plusieurs clauses de l'accord de distribution, d'avoir commis des actes illicites, d'avoir porté atteinte à ses droits d'auteur et de lui avoir fait une concurrence déloyale. Il en était résulté, selon elle, un grave préjudice consistant notamment dans la perte des sommes investies pour développer X._ VA et dans son manque à gagner. Contestant l'intégralité des griefs formulés par la demanderesse, les défenderesses ont conclu au rejet de la demande. En cours de procédure, les qualités des sociétés défenderesses ont changé à diverses reprises: D._ est devenue C._ BV; P._ est devenue G._ AG, puis F._ GmbH; L._ est devenue M._ SA, puis à nouveau L._ et, finalement, K._ SA; J._ est devenue I._ Inc. L'instruction de la cause a été suspendue du 18 mai 2001 au 22 octobre 2002 en raison d'une procédure pénale pour faux témoignage ouverte contre DD._. Cette procédure pénale a été classée par le Ministère public, faute de prévention suffisante. La procédure probatoire a consisté dans la production de pièces et l'audition de témoins. Aucune des parties n'a requis une expertise technique des logiciels. Statuant par arrêt du 10 octobre 2003, la Chambre civile de la Cour de justice du canton de Genève a débouté la demanderesse de toutes ses conclusions. Les motifs sur lesquels elle a fondé le rejet intégral de la demande seront exposés plus loin dans la mesure utile. Statuant par arrêt du 10 octobre 2003, la Chambre civile de la Cour de justice du canton de Genève a débouté la demanderesse de toutes ses conclusions. Les motifs sur lesquels elle a fondé le rejet intégral de la demande seront exposés plus loin dans la mesure utile. C. Parallèlement à un recours de droit public, qui a été rejeté, dans la mesure où il était recevable, par arrêt séparé de ce jour, la demanderesse interjette un recours en réforme dans lequel elle reprend les conclusions qu'elle avait soumises à la Cour de justice. Le Tribunal fédéral est également invité par la demanderesse à rectifier les qualités des défenderesses représentées par Me Edmond Tavernier. Agissant conjointement par le truchement de cet avocat, D._ et P._ concluent principalement à l'irrecevabilité du recours et, subsidiairement, à son rejet tout en sollicitant la rectification de leurs qualités. J._ et L._, représentées toutes deux par Me Patrick Blaser, concluent elles aussi, dans des mémoires de réponse distincts, principalement à l'irrecevabilité du recours et, subsidiairement, à son rejet.