Welcome to GDPro Release 2.2.3! Release 2.2.3 is a patch to Release 2.2.0 that includes a new Merge System function, and has corrections to a number of bugs in earlier Versions. DOCUMENT CONTENTS ================= 1.0 - New features and bug fixes on Release 2.2.3 2.0 - General Release 2.2 Information 3.0 - System Requirements =============================================== 1.0 NEW FEATURES AND BUG FIXES IN RELEASE 2.2.3 =============================================== UML System Merge ---------------- System Merge allows you to update one system with the contents of another. Its primary use is to permit updating a system with new versions of classes created by reverse engineering from newer versions of source code. The System Merge operates on the Class Diagram and Implementation Diagram of the systems. This function is only available in the UML methodology. When the same class is defined in both the source and destination systems, System Merge adds the new operations and attributes found in the class in the new system. When operations and attributes appear for the class in both systems, the source attributes and operations redefine those in the target system. New classes from the source system are added to a new view created by System Merge in the target system. Classes in the target system that are not in the source system are unaffected. System merge requires that both the source and target systems be open. The "target" system is the active system when running System Merge. You specify the name of the source system through the interface. The System Merge function is available under the "Tools" menu in the toolbar. Bug Fixes in Release 2.2.3 -------------------------- Bugs fixed in Release 2.2.3 Statement of problem... The current installations (both NT and Unix) do not support merging new GDPro versions and easily preserving the existing data. The installations now need to be adapted to upgrade from one version of GDPro to another. Actions taken... The GDPro upgrade installations now ensure all existing systems are preserved and registered. =================================================================== Statement of problem... We have had a few complaints on how difficult it is to connect to the "dot" of the TreeGeneralizationLink in UML. The techniques need to be better documented. Actions taken... Complete instructions with illustrations are included in both the UML tutorial and the online reference =================================================================== Statement of problem... The methodologies use attributes for transient, control information. Usually this is found during CodeGen or RevEng. The problem is, doing so causes: a) unnecessary stores ( extremely bad ) b) unnecessary layouts ( bad, but avoidable with more code ) c) larger than necessary attribute structures ( creation and storage take time). A mechanism is required to provide the methodologist with unlimited, user Defined control attributes that can replace the persistent data. Actions taken... The get/set transient data method is now used instead of 'code regenerated.' =================================================================== Statement of problem... Operations do not show up in code generation. I would have expected them in the source file, along with the operation name that does show up there. Actions taken... This has been placed in the Code Generation script. =================================================================== Statement of problem... Region selection usually requires that the entire object be enclosed in order to select it. The exception is when a link label or link text is included in the select box. When that happens, the entire link is included in the selection. This is inconsistent with the "entire object" containment behavior. Actions taken... Fixed routine QueryRegionContained to not select an object if the entire object is not contained. =================================================================== Statement of problem... In local mode, Went into a view, turned autosave to off, made changes, closed view, said no do not want to save changes, view still locked. Went into a view, turned autosave to off, made changes, closed view, said yes do want to save changes, view still locked. Now if go into "locked" view and do not make any changes, still asks if you want to save changes. In collaborative mode, Person 1 goes into view, turned autosave to off, making changes. Person 2 goes into view at same time. Unable to edit anything. Person 1 closes view, says no do not want to save changes. (Actually does not matter what the answer to the save question is) Person 2 still cannot edit anything. Actions taken... Fixed =================================================================== Statement of problem... Created a new view, turned autosave off, drew diagram, closed view, said no do not want to save changes. In systems and view window, right clicked on view, said delete, core. Actions taken... Fixed =================================================================== Statement of problem... LayoutManager seems to be detecting symbols with the same stacking position as it tries to resolve stacking order for a new relation. This causes LayoutManager to enter an infinite loop. I can make a simple workaround, but it does not solve the problem of why 2 symbols have the same stacking position Actions taken... Fixed =================================================================== Statement of Problem... We should not automatically relayout after hiding/showing attributes/operations. We should change the perl script to ask the user before layout. Actions taken... Added the question to ask if the user would like to relayout or not. =================================================================== Statement of problem... Draw a large package (1/4 page) now draw some small class object. If you relayout the system uses the package as the minimum distance between objects. My class objects go flying off onto other pages! Actions taken... Fixed =================================================================== Statement of problem... With Autosave off, results of diagram relayout and turning attributes on/off from right clicking on the background, going to Utilities, and selecting "turn attributes on or off," (which also does a diagram relayout), the changes are saved to the database. This is probably due to the earlier requirement that reverse engineering reverse in local mode and automatically switch to shared mode. It seems that this save is also happening in relayout. This is Urgent because the user thinks his system won't be changed, but it is anyway Actions taken... Fixed =================================================================== Statement of problem... After a message is associated with an object link in the collaboration diagram, any adjustment will cause the relationship to be lost. This makes it extremely difficult to do any fine tuning to the diagram layout, which almost everyone who uses the diagram wants to do. Actions taken... Fixed. Now, the only way to break a relationship with a link label is to delete the link label or the link. =================================================================== Statement of problem... When doing link placement after double clicking on the link icon to get into multiple link draw mode, it is very easy to create very short links by accident. When trying to select the links, core dumps often result. One way this was encountered was to try to select the link by single-clicking, often with some movement of the mouse. Actions taken... I've change the line/multiline logic to not allow a line with a length of < 10. This seems to solve the "I accidentally created a link" problem. As for the core I could not duplicate on a UNIX platform. The documentation might want to mention that there is a minimum line length. =================================================================== Statement of problem... Reshaping the object lifeline in the UML Sequence diagram squishes the process control focus/blocks, etc. on the lifeline. It should leave them exactly where they are placed along the line. Currently, it requires a lot of object relocation that should not be necessary. Actions taken... Implemented SQL_ObjectLifeLine symbol as not moving subordinates. This can cause different problems, but is allows the user to stretch the link without affecting subordinates. =================================================================== Statement of problem... Clicking in the scrolling region only scrolls down a little not by page. This occurs in the main screen, the attribute editor and child dialogs in the attribute editor. Actions taken... Fixed =================================================================== Statement of problem... In a Rumbaugh class diagram, the class symbol gets drawn with bluish pinstripes. Actions taken... Fixed. =================================================================== Statement of problem... I drew a multipoint link, in this case an OMT Data Flow Diagram, Data Flow. It had two points and went down and then to the right. I labeled it and moved the label and we crashed. The label was quite far from the link ( I imagine due to the link shape). Actions taken... Fixed. =================================================================== Statement of problem... I ran in collaborative, had Autosave On, I switched it to Off, drew some objects and put it back On. It asked if I wanted to save and I said yes. I then drew several more objects and closed the view. On close, it asked if I wanted to save Modified Views. Since Autosave was on and I had already save when I re-enabled it, it shouldn't ask me this. Yes? Actions taken... Fixed] =================================================================== Statement of problem... When printing some diagrams sometimes one attribute will print in a very large font. Actions taken... Fixed =================================================================== Statement of problem... In collaborative only, sometimes proximity attributes become unmovable, and the symbols become permanently locked. Actions taken... What was happening was this: Moving a prox. attr. uses a transient drawobject, an object that should never be stored. However, in collaborative, we tried to lock it, and of course, failed. That is error number 1. Then, when this error condition arose, ProximityAttributeManager was not cleaning up correctly. That is error number 2. fixed. =================================================================== Statement of problem... Server mode only.... Go into a diagram, turn autosave off, try to move a link label.... Label moves, but message box appears every time....."Some objects could not be deselected. Object could not be unlocked." Actions taken... Fixed. =================================================================== Statement of problem... Screen size is not correct on pc. Actions taken... Fixed =================================================================== Statement of problem... The Unix platform installations include the ability to upgrade existing database installation. The problem is that the user may have damaged the environment by deleting some of the required files, and the update process does not detect the fact that the environment is incomplete and deal with those conditions. Actions taken... Modified the client and server installation scripts to make them ensure all files are created when the process completes. =================================================================== Statement of problem... RE gets confused from filenames containing "-" My code some where has an include directive like #include "gcc_api-imtc1_0.h" When GDPro is parsing this line, an error is generated (see log below) WARNING: End CPP warnings for file: "E:\T12x\t127\arm\armapi.h" ERROR: Compile/transform errors in file "E:\T12x\t127\arm\armapi.h": ERROR: TXL ERROR : Syntax error on line 71 of D:\PROGRAMS\GDPRO\temp/armapi170.C++.proc, at or near: ERROR: #LINK "D:\PROGRAMS\DevStudio\VC\include\windows.h" #include < gccapi>> - <<< imtc1_0 . h #LINK ERROR: End compile/transform errors for file: "E:\T12x\t127\arm\armapi.h" Actions taken... Fixed for 2.2.3. =================================================================== Statement of problem... 1) Create two classes in Rumbaugh class diagram 2) Code gen 3) Code gen again 4) Notice the header file for the first class now includes the class definition of both classes If you continue this process the file will grow exponentially. Actions taken... Added the line newtxt = "" to clear out the buffer. =================================================================== Statement of problem... Draw a UML class. Draw a primitive line into the class. IT SNAPS!!!!!!!! Obviously is should not do this. Actions taken... Fixed. =================================================================== Statement of problem... GDPro 2.2 does not support disk compression because of limitations in Poet 3.0. We should put a message in the self-extracting zip initial message that informs the user that disk compression is not supported. This problem seems to be abigger issue in Europe. Actions taken... A message box has been added to the setup.rul file. This message box will be displayed at the beginning of the install. =================================================================== Statement of problem... When Code Gen is run on the following system GDPro locks up (i.e. nothing seems to happen for a least 10 minutes, the processor is pegged at around 98%). Actions taken... Jennifer and I fixed this - got rid of a perl 'break' statement. =================================================================== Statement of problem... I created a system and closed GDPro. Now when I try to reopen the system I find that I core in GDKView::EIFGetPageSetup because we dereference NULL. I haven't been able to repeat. Actions taken... Fixed =================================================================== Statement of problem... It is possible that we can create attributes and they will not get stored. The reason for the attributes not to get stored is because there is no view associated with the attribute. This can only happen when we the associated symbol has not been locked. This seems to happen a lot when running scripts. This means that we have a large hole in our logic that allows the perl interface to get hold of and modify a symbol and attributes that have not been locked. Since we no longer store any change made it is highly likely that changes made by any scripts to attributes will never be stored. Actions taken... Fixed. =================================================================== Statement of problem... When you have a system with links that span pages, if you scroll/pan the diagram, links may not draw correctly, i.e., the region needing refreshing remains blank where the link should be. To see the problem, create a view with two vertical pages, draw a class symbol in page one and a class symbol in page two. Connect them with an association link and begin scrolling down from the first page to the second.( Cam ) Actions taken... Fixed. =================================================================== Statement of problem... 1) Open the system, view Requirements Cycle. 2) Create another new view, Class Diagram type 3) Tile both views. 4) Zoom out the Requirements Cycle view to see the whole page and do a Ctl-A, select all 5) Ctl-C copy 6) Click in your new view and ctl-V paste. Notice that the stacking order of all the objects is completely mixed up. Actions taken... Rixed. =================================================================== Statement of problem... We have discovered that some objects are remaining in memory after a view has been closed ( not the system ). This is must be corrected. Actions taken... Fixed. =================================================================== Statement of problem... Create a class. Copy it. Paste it by ref on the same view. Create an association with the start of the link in the first drawobject. Move the second version of the class to the end to create a pseudo-reflexive association. Reshape the endpoint of the link away from the second class. Try to move the startpoint of the link away from the first class. CORE. What is happening: Spawn is using a false assumption to build the new relation. No relation Gets built. The mals do not get reset, causing them to point to a relation that is about to be deleted by ProcessSideAffects. Actions taken... Fixed. =================================================================== Statement of problem... 1- Create a view, I created Use Case 2- Start print function 3- Change the number of copies to 2 or more 4- Click Print Notice : The application closes and error "Segmentation Fault" appears in the Terminal window. Actions taken... Rixed. =================================================================== Statement of problem... We need to provide a warning at startup advising users that the Windows 95 platform is not a supported platform, and that, while most functions work, there are a number of failures that are not problems on the supported NT and Unix platforms. They should proceed with that understanding. Actions taken... A message was added to the Windows installation when Windows 95 is detected. The warning also appears when running GDPro on the 95 platform. =================================================================== Statement of problem... 1- Create a Use Case view. 2- Insert three actor objects. 3- link two actor objects with Actor Link. 4- Click Autosave On and select Autosave Off. 5- Select the Actor Link and move the arrow to the third Actor. 6- Close the view without saving it when prompted, hoping to keep the old arrow as it was. 7- Open the view again. Notice : The system saved the changes. Actions taken... Fixed. =================================================================== Statement of problem... The UML Compsition link should have a filled diamond on the end. The current link has an unfilled diamond, making it indistinguishable from the aggregation symbol. Actions taken... This was a display problem on the Windows platform. It is fixed. ================================ 2.0 GENERAL RELEASE INFORMATION ================================ IF YOU ARE UPDATING YOUR GDPRO INSTALLATION: -------------------------------------------- UPGRADE PROCESS: Unix - you can install the new version of GDPro over an existing version. This will preserve the original license file. After you complete the initial installation (unzipping and tarring the installation file), you must also reinstall any local or server databases by running $GDHOME/scripts/Install_Client or $GDHOME/scripts/Install_Server. PC - The easiest way to update an existing GDPro installation is to update in place, without uninstalling the previous installation. If you need to move the installation, or you do uninstall, make sure that you save the contents of the \gdpro\GDDatabse\systems and \gdpro\GDDatabse\GDEnv directories. Once you have installed the new version, replace the newly installed systems and GDEnv directories with the data that you saved. If you were unable to save the GDEnv directory, you will have to re-register your systems. 2.1 ABOUT RELEASE 2.2.0 ======================= GDPro release 2.2.0 contains new functionality, performance improvements and bug fixes. The primary new functionality includes: - the incoporation of a system navigator - adding tab sheets to the complex attribute editors - adding reference classes to reverse engineering - adding reference include directories for reverse engineering - adding the ability to manually move link labels in the diagram - and adding a new "locked mode" (Autosave Off), which provides better performance by deferring data update to the file. Other improvements in Release 2.2 include supporting the license server for Windows 95 and Windows NT platforms, general performance improvements and bug fixes. GDPro 2.2 is fully compatible with GDPro 2.1 systems and databases. 2.2 NEW FEATURES ================ NAVIGATOR The Navigator lists all objects in the system in a navigator display window. This window contains object categories that can be expanded to show the names of the objects in the different categories. You can easily find specific objects, such as the name of a specific class, select the name, and zoom directly to the class in the class diagram. To bring up the navigator, click on Tools -- Navigator. TAB SHEETS Tab sheets have been provided for the complex objects in GDPro. These include classes, template classes, utility classes, and similar objects that have complex sets of attributes. The tab sheets orgainze the attributes into functional groups, making managing the attribute content of your classes much easier. REFERENCE CLASSES Reference classes are classes that do not participate in code generation. They are automatically created by reverse engineering when classes in the reverse engineering set of files have associations or inheritance relationships with classes that are not defined in the code that is being reverse engineered. Reference classes complete the association or inheritance relationships, but do have any content themselves (no attributes or operations defined), and will not have any code generated for them. Another application for reference classes is to create systems of library classes. The way to approach this is to reverse engineering a class library, for example Rogue Wave, select all of the classes, and make them reference classes. You can make classes into reference classes by selecting the classes and right-clicking in the background of the class diagram, going to the Utilities button, and selecting "make reference class" from the submenu. You can also toggle the reference classes back to "live" classes using the same technique. Once you have your library of reference classes, you can use the classes as components in creating a new system by opening the system with the reference classes, going to the navigator, clicking on the class you want to use in your new system, zoom to the class, and copy and paste it into your new class diagram. You can inherit or create associations to the reference class, and GDPro will know not to generate the header and body files for the reference class. REFERENCE INCLUDE DIRECTORIES Reference include directories are now available for reverse engineering. They allow reverse engineering to process macro definitions from reference class libraries, like Rogue Wave or Microsoft Foundation Class Library, without rully reverse engineering the classes in the reference library. You can specify as many reference include directories as you wish to make sure that reverse engineering gets the macro expansions parse properly. To add a reference include directory to the reverse engineering process, add an include directory, select it, and click on the "Reference" button in the reverse engineering dialog. AUTOSAVE ON/OFF The Autosave switch selects Autosave On, where all changes are immediately written to the database, and Autosave Off, which deferrs writing changes to the database until you save the system. In previous versions of GDPro, Autosave was set to "On." Turning Autosave off gives you much better performance. The liability is that if your GDPro session crashes, your changes are lost if you have not saved your system or view. When GDPro is running in SERVER mode (connected to a database server), turning Autosave off "locks" the diagram. That means that no one else can modify the objects on the diagram you have locked until you close the diagram or change to Autosave On mode. 2.3 SUPPORTED PLATFORMS ======================= Windows NT 4.0 SGI IRIX 5.3 (Shared client, Local client, Database Server) SGI IRIX 6.x (Shared client and Local client only) HP/UX 10.x Sun Solaris 2.4 and up Windows '95 support is provided with the exception of reverse engineering and with limitations on the display of line styles. Other application functionality, including the design, code generation and reporting functions, are supported on the Windows '95 platform. More complete support for Windows '95 is planned for mid 1998. 2.4 WHAT IS GDPro? ================== GDPro is a developer's toolkit that supports modeling, reverse engineering and reengineering for developers of C++ and Java, or for any developer using any of the popular software modeling methods such as Booch, Rumbaugh OMT or UML. It support both modeling as well as reverse engineering, allowing you do automatically produce design diagrams and documents of existing C++ (available now) and Java (code generation available now, reverse engineering coming soon). ======================== 3.0 SYSTEM REQUIREMENTS ======================== Unix Platforms: Disk Space Required: The Unix compressed tar file is between 20 and 25 MB, depending on specific Unix platform. The resulting installation is between 110MB and 120 MB, depending on platform. PC Platform: The compressed installation file is 10 MB. The resulting GDPro installation is 23MB. ftp://ftp.csn.net/ASTI/GDPro/notes2.2.3