Avez-vous des applications héritées que vous devez documenter et conserver?
Avez-vous hérité d’une grande base de code que vous avez simplement besoin de comprendre?
Dans ce webinaire, nous vous montrerons comment:
Exemple Modèle: | city-loop-legacy-application-model.eap |
J’ai utilisé Enterprise Architect 12.1, Build 1229, bien que de nombreuses versions antérieures supportent l’ingénierie inverse du code. Le Profiler a été introduit dans la version 8 et le support pour le débogage et l’enregistrement des applications natives Windows a été introduit avec Enterprise Architect 7.
Des améliorations significatives ont été apportées à ces outils dans des versions plus récentes d’Enterprise Architect.
Les éditions professionnelles et supérieures permettent tous les outils pertinents. (J’ai utilisé Ultimate édition pour cette présentation). Vous pouvez comparer les fonctionnalités disponibles à chaque édition d’Enterprise Architect sur Compare Editions web page.
Oui. Nos ingénieurs utilisent régulièrement Visual Execution Analyzer sous Linux lors du développement d’Enterprise Architect lui-même.
Nous avons fourni le code source dans la section ressources de cette page. Vous pouvez également trouver le code source sous votre dossier d’installation d’Enterprise Architect. Recherchez le sous-dossier\Code Samples\VEA.
Enterprise Architect ne fixe aucune limite. Les limites pratiques dépendront des spécifications de votre machine. Si vous utilisez un RDBMS dédié pour héberger votre modèle, votre serveur de base de données et la vitesse réseau entre votre machine et le serveur peuvent également imposer des contraintes sur la taille maximale possible de votre projet.
Cela dit, chez Sparx, nous travaillons systématiquement sur un modèle partagé avec plus de 100 000 éléments et relations qui sont contenus dans des milliers de différents packages et diagrammes. Dans le contexte de l’ingénierie de code, nous avons trouvé Enterprise Architect fonctionne bien, même avec des bases de code extrêmement grand.
Bien que nous fournissions des webinaires courts et des démonstrations vidéo qui vous montrent comment appliquer divers outils dans Enterprise Architect, nous ne considérons pas cette formation formelle de produit. La formation professionnelle est assurée par nos partenaires de service. Pour trouver un partenaire autorisé de Sparx Systems Training près de chez vous, veuillez consulter notre Trainers web page.
Pas actuellement.
Alors que l’exemple City Loop a été écrit spécifiquement comme un exemple Visual C ++ MFC, nous fournissons également d’autres exemples pour C # et Java. Ces derniers sont fournis avec l’installation d’Enterprise Architect. Pour accéder à ces exemples:
I selected a package in Enterprise Architect's Project Browser. Then I right-clicked it and chose the menu Code Engineering | Import Source Directory. You can see this demonstrated in the presentation video from 2:40 minutes onwards.
Enterprise Architect supports 15 programming languages out of the box, some of which are not object-oriented languages. For a complete list, see the Help topic Importing Source Code.
SQL, in the form of DDL files, is not supported by Enterprise Architect's code engineering tools. Instead, you reverse engineer database schemas using Enterprise Architect's Database Builder, which connects to a live database via ODBC to extract the schema and create a corresponding UML model. For a demonstration, see our previous Database Engineering webinar.
Enterprise Architect does not currently provide integrations with ETL (Extract, Transform and Load) tools out of the box.
We've used Enterprise Architect to successfully reverse engineer large-scale applications, including our own extremely large C++ code base. Enterprise Architect's advanced reverse engineering capability combined with a highly scalable database-driven model repository allows users to import very large code bases, while retaining a responsive, high-performance modeling environment.
L’ingénierie inverse de la structure statique de votre code doit être la même que pour les autres bases de code d’application. Toutefois, lorsque vous utilisez les outils VEA pour analyser l’application en cours, gardez à l’esprit que le Profiler, l’Enregistreur et le Débogueur ne peuvent attacher qu’une instance de votre code d’exécution. Cela peut limiter votre analyse si votre application distribuée implique plusieurs instances de votre application s’exécutant sur différents serveurs/processeurs.
Générally, Enterprise Architect does not store the source code. It retains a path to the imported code, which can refer to your local machine or a shared resource.
When your model is used in a shared environment, or in a scenario where the copies of the code base reside on different machines for different model editors, Enterprise Architect's Local Paths feature is helpful. It allows you to represent the first part of the source code path as a symbol. This may represent the drive or server name and the initial part of the folder path on that device. Each model author can resolve that symbol, Local Path ID, to a different location on their machine. And you can later change the location of the code on your machine, simply updating Local Path value so that Enterprise Architect can continue to trace from model to code.
Non, actuellement Enterprise Architect ne prend pas en charge l’ingénierie inverse de COBOL.
Pas actuellement..
You can import code bases from multiple languages into a single Enterprise Architect model. You do not, however, import from multiple languages at the same time. Using the Import Source Directory dialog, you can only choose one target language, or source type. That source type may have multiple associated file extensions, but they are still all for the same language.
Also note: Enterprise Architect does not currently support code engineering for JSP.
Non.
Currently there are no plans for implementing support for OpenEdge ABL. There exists the possibility for users to construct custom code reverse engineering grammars for Enterprise Architect to import unsupported programming languages, however this requires a considerable investment of time to complete. For details, see the Help Guide topic Grammar Framework.
Il n’y a pas de plans immédiats pour prendre en charge NoSQL dans le Générateur de bases de données.
Nous avons publié de nombreuses mises à jour du support d’Enterprise Architect pour l’importation de code C ++ et C #, y compris les améliorations qui acceptent les nouvelles constructions de langage. Pour plus de détails sur les mises à jour spécifiques, vous pouvez rechercher l’historique des versions d’Enterprise Architect: Dans le menu Aide menu dans Enterprise Architect, choose the Read Me option.
Note: les versions les plus récentes de C # et C ++ introduisent la syntaxe que Enterprise Architect 12.1 ne supporte pas. Nous nous attendons à ce que la prochaine version majeure d’Enterprise Architect apporte un support pour ces deux langues à jour.
Oui. For instructions, see the Help topic Language Macros.
Not directly from the UML Class model, because it represents the application's static structure. You generate sequence diagrams using Enterprise Architect's Visual Execution Analyzer tools, such as the Profiler and Recorder. These tools generate sequence diagrams based on your application's run-time behavior.
Non, this is not supported. You might, however, apply the SysML block stereotype as a post-processing step after importing your code.
Si vous avez essayé d’importer du code Delphi et que celui-ci a échoué, je vous recommande d’envoyer un e-mail à notre support technique ([email protected]) with a sample of your code.
Currently there are no plans for implementing support for Objective-C or Swift.
Actuellement, il n’existe aucun projet de mise en œuvre de la prise en charge de JavaScript ou de TypeScript.
Assuming the linking you require is a set of dependencies between the UML Packages that were created as part of the code import: There currently is no feature built into Enterprise Architec to do this automatically.
Cela dépend de la nature de la référence. Dans la plupart des cas, la référence sera maintenue sous la forme d’un nom de type, sans classificateur sous-jacent. Par exemple, considérons une classe A, avec une variable membre (attribut UML) v1, de type B, qui est une classe externe, non définie dans le code source importé. Ce scénario est illustré comme suit:
Notez le type d’attribut UML pour A.v1 est B. Le nom de type, B, peut être résolu à un autre classificateur après une importation de code ultérieure qui contient la définition de classe B.
De même, pour les relations parent-enfant non résolues, le nom de la classe de base (parent) sera tenu comme une chaîne. Comme illustré ici, la classe B a une référence externe à sa classe parente C.
Le nom de la classe de base peut être résolu plus tard dans une classe spécifique du modèle si la définition de code correspondante est importée. À ce moment, la chaîne de nom simple représentant le nom de la classe de base sera remplacée par une relation d’héritage UML tirée de la classe enfant à la classe de base.
Lorsque vous reverse engineering code C ++, seul le code basé sur la classe est importé, qui inclut structs et typedefs. Il existe également un support pour l’importation de code C qui utilise des fichiers d’en-tête et le mappage vers un modèle de classe UML. Toutefois, vous ne pouvez pas importer le code comme cible C pur et comme cible C ++ en même temps.
Il est exact que Enterprise Architect importe uniquement le code PHP orienté objet, qui peut être mappé à un modèle UML.
Vous pouvez effectuer un reverse engineering et un débogage des applications Java, comme décrit dans la rubrique d’aide The Android Debugger. Reverse engineering of iOS applications is not currently supported.
Yes, you can tell Enterprise Architect not to delete attributes and methods when updating the model during code synchronization:
Cette figure est répertoriée en regard de chaque fonction dans le résumé du Profiler. Il représente le pourcentage d’échantillons où le Profiler a trouvé que la fonction était en cours d’exécution, y compris lorsque l’échantillon impliquait d’autres fonctions qui ont été invoquées dans le cadre de l’exécution de cette fonction. (En termes de pile d’appels, les hits inclusifs pour une fonction donnée incluent toutes les fonctions ci-dessous).
Notez également: Le chiffre de hits inclusif pour chaque fonction représente les invocations combinées de cette fonction (et d’autres elle invoque) sur tous les threads engendrés par le processus profilé.
For more information on how hit counts relate to call stacks, see the Help topic Profilage.
Oui, si l’application est exécutée depuis votre machine locale.
Yes, as long as the application or service is run from your local machine.
Le Profiler n’est pas conçu pour les sites Web de profil. Il peut, cependant, profil d’une application Web exécutée localement.
No. Filtering such functions in the Profiler, would have the potential of actually making the report misleading, if not fallacious. Remember, the Profile's reports and its generated diagrams, rely on statistical analysis of the samples taken from the call stack. Contrast this with the Recorder and its generated diagrams, where you can effectively 'zoom out' of the program's execution by filtering low-level functions.
Non, the Profiler does not support programs built with GCC. The Recorder and Debugger, however, both support GCC-compiled applications. In that scenario, you would select GDB as the debugger in your analyzer script.
Non.
Non. The Profiler does not attach to remote applications, but you can profile a web application, daemon or service on your local machine.
Also note: Unlike the Profiler, the Recorder and Debugger are both able to target either a local or remote application.
Yes. You can export the data to an XML file as described in the Help topic Generate, Save and Load Profile Reports.
We will consider producing a short video showing the Profiler working on a Java example. In the meantime, you can explore the Java example we provide with the Enterprise Architect installation. For instructions, see the earlier question about C# and Java code examples.
Actuellement, il n’y a aucun support de profilage pour le logiciel incorporé. Nous envisageons d’ajouter le support de notre Analyseur d’Exécution Visuel (VEA) pour le logiciel incorporé dans l’avenir.
We do find the Profiler and other VEA tools useful in a cross-compiled scenario where, for example, a Windows application is run and profiled on Linux. (Enterprise Architect and its VEA tools work well on Linux using WINE). Unfortunately Profilage an application running on an embedded system is not yet supported.
Modules cannot be discriminated. You do not, however, have to import any source code to use the Profiler.
The VEA tools cannot deal with JavaScript in browsers / apps. When we investigated this previously, we found the debugging API is browser-dependent (so different for Chrome, Opera, Firefox and Internet Explorer) and not published. The exception was Internet Explorer, though Microsoft is withdrawing support for their process debug manager 'scripting', which allowed you to intercept the script engine in any process.
Yes. These formats are all supported. For more information see the Help topic Report Generation.
You might also be interested in the following webinars:
Premièrement, vous définissez une state machine sous une classe particulière. Enterprise Architect peut alors relater cette state machine à une classe particulière dans la base de code.
En outre, chaque state dans la state machine contient des contraintes avec des références aux variables membres définies dans le code de cette classe. Les contraintes stipulent quelles valeurs les variables doivent avoir pour être dans cet state et permettre la transition vers le state suivant. (Dans le modèle fourni, vous pouvez voir ces contraintes en ouvrant les propriétés d’un élément State et en regardant sous l’onglet Constraints. La state machine et son diagramme sont définis dans la classe CTrain.)
Pendant l’enregistrement, l’Enregistreur comparera vos valeurs modelées pour les variables de classe contre les valeurs réelles utilisées dans le code d’exécution, l’accentuation n’importe quels changements illégaux de le state (selon la state machine. Pour plus de détails voir le sujet d’Aide Reporting a State Machine.
As mentioned in the previous response, the state machine is modeled under a particular UML class in your model - effectively binding the state machine to that class in code as well. Enterprise Architect can then compare variable values in that class against the values specified in the state element's constraints. For more details see the Help topic Reporting a State Machine.
Please see our earlier webinar on the Visual Execution Analyzer, which featured an example C# application: Using the Visual Execution Analyzer in Enterprise Architect.
On considère le profilage et l’enregistrement de logiciel incorporé pour une sortie future. Aussi des systèmes en temps réel d’exploitation ne sont pas actuellement supportés par l’ensemble d’outils VEA d’Enterprise Architect.
Oui. Pour plus de détails voir le sujet d’Aide Analyseur d’Exécution Visuel.
Ces cadres ne sont pas supportés par les outils VEA. Vous pouvez cependant étudier par ingénierie inverse le code Delphi, qui doit fonctionner indépendamment du framework Delphi utilisé par votre application.