home *** CD-ROM | disk | FTP | other *** search
/ Borland Programmer's Resource / Borland_Programmers_Resource_CD_1995.iso / code / oew_proj / oew / readme < prev    next >
Encoding:
Text File  |  1995-05-19  |  16.4 KB  |  506 lines

  1.  
  2.     The Object Engineering Workbench for C++ (tm)
  3.  
  4.     The Object Relationship Modeler (tm)
  5.  
  6.  
  7.     Notes for the Small Project Version
  8.     ===================================
  9.  
  10.  
  11. To logon
  12. ========
  13.  
  14. Enter OEW in uppercase for the Name and Password.
  15.  
  16.  
  17. Support and Sales
  18. =================
  19.  
  20.     Please contact:
  21.  
  22.         Stephan Wolf
  23.         Innovative Software GmbH
  24.         Germany
  25.  
  26.         Telephone:    ++49 69 236929
  27.         Fax:        ++49 69 236930
  28.  
  29.     
  30.  
  31.         Bill Whittakers
  32.         Object Software Engineering Pty Ltd
  33.         Australia
  34.  
  35.         Telephone:    ++61 52 377066
  36.         Fax:        ++61 52 377054
  37.  
  38.  
  39.  
  40. Introduction
  41. ============
  42.  
  43. The purpose of the small project version is for you to evaluate The 
  44. Object Engineering Workbench.  Its single limitation is that it will 
  45. only save a model of up to 12 classes.  This means you can see 
  46. exactly how the workbench operates, as if you were using the full 
  47. version.
  48.  
  49. These notes highlight points about the operation of OEW.  Please 
  50. read them through.  If you have any difficulties, please make 
  51. contact with the support address listed below.
  52.  
  53.  
  54. Table of Contents
  55. =================
  56.  
  57.     Glossary of Special Terms in OEW/C++
  58.     To logon
  59.     Online help
  60.     The Main Window and the ORM Window
  61.         Differences between the two main windows
  62.     Importing Source Code
  63.     Printing Documentation
  64.     Rearranging diagrams
  65.     Inheritance diagram (class hierarchy)
  66.     Relationship diagram (Object Relationship Model)
  67.     Marking classes
  68.     New class
  69.     Import from objectbase
  70.     Quick reference
  71.     Global file names
  72.     Edit main program
  73.     Modules
  74.     Container classes
  75.     Using a Makefile or a Borland project file
  76.     Views
  77.     Class overview
  78.     Class list
  79.     Access to Objects in an Objectbase
  80.     Editor
  81.     Code generator options
  82.     To logout
  83.     Support and Sales information
  84.  
  85.  
  86. Glossary of Special Terms in OEW/C++
  87. ====================================
  88.  
  89. There are some special terms used in OEW.  It would be useful to 
  90. review these.  They are defined in the OEW/C++ glossary in the 
  91. online help.
  92.  
  93.  
  94.     OEW terms:      control statement, focus, objectbase, object, 
  95.             scheme, slot, view
  96.  
  97.  
  98. Online help
  99. ===========
  100.  
  101. The current online help from the full version is provided.  We 
  102. suggest you review the online help topics listed below to start 
  103. with.  Other topics are accessible through the alphabetic listing.
  104.  
  105.     Directories and files
  106.     Mouse operation
  107.     Main window
  108.     Main processes
  109.     Toolbar
  110.  
  111. You can purchase the manuals for US $99.00 by contacting the support 
  112. address below.  If you subsequently order OEW you will receive a rebate.
  113.  
  114.  
  115. The Main Window and the ORM Window
  116. ==================================
  117.  
  118. Both the main window and the ORM window can be open at the 
  119. same time (especially on a big screen).
  120.  
  121. OEW/ORM is an additional module that adds to the analysis level 
  122. of the workbench.  It does this by displaying member class 
  123. relationships (that is: "has a", "whole/part", "uses", or "contains", 
  124. depending on your terminology), and reference relationships, as 
  125. well as inheritance relationships.  Note that in the Edit 
  126. relationship dialog box you can add your own terminology for 
  127. relationships.  These are called "relationship labels".  The ability 
  128. to name relationships lets you incorporate terminology from the 
  129. methodology of your choice.  This is in keeping with the design 
  130. philosophy of OEW, in not seeking to introduce a new 
  131. methodology, but to support the concepts inherent in existing 
  132. methodologies.  It aims to support the ideas that express meaning 
  133. in a model, and at the same time map these meanings to constructs 
  134. supported by the language.
  135.  
  136. To concentrate on member class and reference relationships, use 
  137. the ORM window.  To concentrate on inheritance relationships, 
  138. use the main window.
  139.  
  140. You can have both windows open at the same time.  Classes are 
  141. accessible through the Class dialog box in both windows.  
  142. Double click on the class icon.
  143.  
  144.  
  145. Differences between the two main windows
  146. ========================================
  147.  
  148. Relationships can be declared in either window.  What varies 
  149. between the two windows is which relationships can be 
  150. displayed and which ones can be declared and defined.  The 
  151. differences can be seen when you compare the following 
  152. tables:
  153.  
  154.     Main window
  155.  
  156.         relationship    visible        declaration    definition
  157.         ------------    -------        -----------    ----------
  158.  
  159.         inheritance    yes        yes        yes
  160.         member class    no        yes        yes
  161.         reference    no        yes        yes
  162.  
  163.     ORM window
  164.  
  165.         relationship    visible        declaration    definition
  166.         ------------    -------        -----------    ----------
  167.  
  168.         inheritance    yes        yes        no
  169.         member class    yes        yes        yes
  170.         reference    yes        yes        yes
  171.  
  172.  
  173. Importing Source Code
  174. =====================
  175.  
  176. We find that one of the first things people wish to do with OEW is 
  177. parse existing code.  Please be aware of the following:
  178.  
  179. 1.  The import mechanism is 'semi-automatic'.  It can be an 
  180. iterative process in which you run the import process, review the 
  181. result (which will depend on the code being imported) and assign 
  182. code fragments the parser does not know what to do with.  It is 
  183. work that needs to be done once.  The result is an objectbase that 
  184. can be reused.
  185.  
  186. 2.  The parser analyses code for constructs that can be stored in 
  187. the objectbase (classes, data members, member functions and 
  188. datatypes).  Fragments of code that cannot be recognised (for 
  189. example: includes to C function libraries, or some comments) are 
  190. filed in a separate file, the UNKNOWN.COD file.  These code 
  191. fragments can be assigned to objects that have been added to the 
  192. objectbase.  They are catalogued by source code file, and can be 
  193. viewed and assigned from within the Assign unrelated source 
  194. code dialog box.  The UNKNOWN.COD file can also be viewed by 
  195. any file viewer.  This can be useful to decide on code assignment.  
  196. It can be useful to print the UNKNOWN.COD file for review and for 
  197. reference while assigning code.
  198.  
  199. It is useful to know what the code generator creates, because 
  200. some of the code fragments that the parser does not place, will be 
  201. recreated by the code generator.  Code for ifndefs, includes to 
  202. superclasses, includes to member classes, and includes to 
  203. referenced classes are automatically generated.  Because this will 
  204. happen, you can discard (use the Forget button) these code 
  205. fragments when assigning code fragments.
  206.  
  207. 3.  It is not necessary to assign all the unrecognised code 
  208. fragments immediately before proceeding to a review of the initial 
  209. result.  You can by-pass the process (click OK in the Assign 
  210. unrelated source code dialog box after the parsing operation is 
  211. finished).  Then review the resulting diagram and its contents to 
  212. see what the parser has done.  Then you could generate code and 
  213. compare the result with the original.  You can return to the 
  214. assignment process later to assign missing code fragments.  
  215. Remember that once this work is done, the objectbase (and its 
  216. associated scheme files) can be reused in new applications (see 
  217. Import from objectbase on the Edit menu).
  218.  
  219. 4.  Please read the online help topics and glossary definitions that 
  220. explain the function of the scheme files for modules and classes to 
  221. get an understanding of their significance and operation.  In 
  222. summary, the scheme files do two things:
  223.  
  224.     A.  They contain the "control statements" (for example 
  225.     @@ClassDeclarations) that drive the code generator.
  226.  
  227.     B.  They can contain valid C/C++ code that cannot be 
  228.     entered into the objectbase.  The code generator combines 
  229.     this code with the information in the objectbase to generate 
  230.     code for each module.
  231.  
  232. When importing code, you can assign unrelated code fragments to 
  233. the scheme files if it is not possible to assign them to objects in 
  234. the objectbase.
  235.  
  236. There are default scheme files.  Instances of scheme files for 
  237. modules and classes are only created when required (otherwise 
  238. the default schemes are used).
  239.  
  240. 5.  It is important to check that the include path in the Import 
  241. from source dialog box is set properly.  For example, if you select 
  242. a source file, make sure there is a path to the directory containing 
  243. the header file.  It is not necessary to set a path to included C 
  244. function libraries.  The include path defaults to the path defined in 
  245. the SET INCLUDE statement (if there is one) in your 
  246. AUTOEXEC.BAT file.  It is possible to enter a series of paths in the 
  247. include path edit field.
  248.  
  249. 6.  It is not necessary to import a large group of classes to test the 
  250. parser.  We suggest that you choose a small group of classes that 
  251. are representative of the way you work.  Remember the parser is 
  252. looking for 'object-oriented' code, and also that any other code 
  253. that is not 'recognised' can be assigned to the scheme files.  
  254. OEW's purpose is to encourage you to design and program 
  255. applications using C++ as an object-oriented language.  In 
  256. practice, not everything may be 'object-oriented', because of 
  257. design and time limitations.  OEW therefore provides the scheme 
  258. mechanism to incorporate these functional elements of the design 
  259. into the model.
  260.  
  261. 7.  It is a good idea to create (save) an objectbase for a model 
  262. before generating or importing code.  This ensures that the source 
  263. code files are generated into a unique directory.  Also, during an 
  264. import, an UNKNOWN.COD file is created for each objectbase; 
  265. rather than being overwritten each time, in the main directory.
  266.  
  267. 8.  You can save a model while working in the dialog boxes by 
  268. using the Shift + F12 key combination.
  269.  
  270. 9.  After an import, it is advisable to check the list of datatypes 
  271. (enumerations and typedefs) added to the built-in types.  Select 
  272. Edit datatypes from the Types menu.
  273.  
  274.  
  275. Printing Documentation
  276. ======================
  277.  
  278. Please note that the font size can be important when printing 
  279. documentation.  For a standard A4 laser or inkjet printer, Arial 
  280. and 10 are suggested for type and size respectively.  It is also 
  281. recommended to set the printer to landscape mode so the table layout 
  282. will work.
  283.  
  284.  
  285. Rearranging diagrams
  286. ====================
  287.  
  288. Both diagrams can be rearranged for better presentation and easier 
  289. reading.
  290.  
  291. Inheritance diagram (class hierarchy)
  292. -------------------------------------
  293.  
  294. Focus on a class in the class hierarchy and use the Crtl key 
  295. with the right mouse button.  Hold down the button and drag 
  296. the class to its new position, then release the button.  This 
  297. option does not work if you choose to have the Sort classes 
  298. alphabetically option on (see the View menu).
  299.  
  300. Relationship diagram (Object Relationship Model)
  301. ------------------------------------------------
  302.  
  303. Mark a class (single left click), and use the Crtl key with the 
  304. right mouse button.  Hold down the button and drag the class 
  305. to its new position, then release the button.  This diagram is 
  306. based on a grid, the size of which is dependent on the longest 
  307. class name, and the font type and size.  Note that you can 
  308. mark and move more than one class at a time.
  309.  
  310.  
  311. Marking classes
  312. ===============
  313.  
  314. It can be useful for some tasks to work on a number of classes at 
  315. once, for instance moving classes in the relationship diagram, or 
  316. marking classes as library classes.  See the online help topics 
  317. Marking classes and Edit multiple classes.
  318.  
  319.  
  320. New class
  321. =========
  322.  
  323. There are a number of ways to enter a new class.  See the Add 
  324. new class topic.  In the ORM window, you can position the cursor 
  325. in a selected spot on the background of the window and double 
  326. left click to add a new class.  The new class will be added to the 
  327. diagram at the selected grid position.
  328.  
  329. Note also that you can enter more than one class at a time by 
  330. separating the class names by commas.
  331.  
  332. See the Class dialog box help topic for detail on creating a class 
  333. and its attributes and methods.
  334.  
  335.  
  336. Import from objectbase
  337. ======================
  338.  
  339. Once you have created a model, you can reuse classes, instances 
  340. and datatypes in a new model by using the Import from 
  341. objectbase function (on the Edit menu).  Note that you have the 
  342. option to import the associated scheme files as well.
  343.  
  344.  
  345. Quick reference
  346. ===============
  347.  
  348. The quick reference is a browser which you can access with the 
  349. F5 function key while you are in another dialog box, for example, 
  350. in the Class dialog box.  It can be very useful when you are 
  351. working on one class, and you want information about another 
  352. class.
  353.  
  354.  
  355. Global file names
  356. =================
  357.  
  358. You can set file endings and subdirectories for the source code 
  359. files.
  360.  
  361.  
  362. Edit main program
  363. =================
  364.  
  365. You can edit a main program from this option on the Edit menu.
  366.  
  367.  
  368. Modules
  369. =======
  370.  
  371. Each class has a module.  By default there is one module for each 
  372. class.  You can have more than one class in a module.  You can 
  373. enter the Modules dialog box either from the Source menu, or by 
  374. clicking the Filenames button in the Class dialog box and then the 
  375. Modules button.
  376.  
  377.  
  378. Container classes
  379. =================
  380.  
  381. You can link container classes to 'descriptive tags'.  Container 
  382. classes can be used to manage the cardinality of attributes in 
  383. classes by selecting the related 'descriptive tags' from drop down 
  384. list boxes.  These container classes can be template classes.
  385.  
  386.  
  387. Using a Makefile or a Borland project file
  388. ==========================================
  389.  
  390. If you are using the Borland compiler, you can choose between 
  391. using a makefile or a project file (see the Options menu).  When 
  392. code is generated either the makefile is generated, or the Borland 
  393. project file is updated.
  394.  
  395.  
  396. Views
  397. =====
  398.  
  399. You can choose subsets of classes and arrange them in separate 
  400. views, in both diagrams.  Views allow you to focus attention on 
  401. aspects of a model.  A class can be in any number of views.  A 
  402. view can be set exclusive, in the Select view dialog box, to isolate 
  403. the classes in the view from the other classes in the model.  When 
  404. a view is selected the name of the view is included in the title bar.
  405.  
  406.  
  407. Class overview
  408. ==============
  409.  
  410. Use the overview to see a complete diagram when it is too large 
  411. to fit on the screen.  The dark area in the miniaturised overview, 
  412. which is the visible section of the diagram, can be moved by 
  413. dragging it with the mouse.
  414.  
  415.  
  416. Class list
  417. ==========
  418.  
  419. Use the class list to help with navigation in a large diagram.  
  420. Highlight a class in the list to move it into the visible section of the 
  421. diagram.
  422.  
  423.  
  424. Access to Objects in an Objectbase
  425. ==================================
  426.  
  427. Access is based on the level of the user group of the user who 
  428. creates an object.  If another user belongs to a group with a higher 
  429. level, he or she will be allowed access.  Objects to which a user 
  430. does not have access are displayed in grey.  The user can browse 
  431. them, but not make any changes.  You can however create a 
  432. subclass of a class to which you are not allowed access.
  433.  
  434. If you want to test the access mechanism, then follow this 
  435. example.
  436.  
  437. 1.  Create three user groups (for example, Developers, 
  438. Contractors and Guests).  Set the levels for the groups to 
  439. 900, 600 and 500 respectively.
  440.  
  441. 2.  Add three users, one in each group.
  442.  
  443.     user    user group
  444.     ----    ----------
  445.  
  446.     Bill    Developers
  447.     David    Contractors
  448.     Justin    Guests
  449.  
  450. 3.  Logon as David and enter the classes: Wheel and Engine.
  451. 4.  Logon as Justin and enter the classes: Body and Door.
  452. 5.  Logon as Bill and enter the classes: Vehicle, Car and 
  453. Truck, where Vehicle is the superclass of both Car and 
  454. Truck.
  455. 6.  Now logon as each user again and you will see which 
  456. objects they are allowed access to.
  457.  
  458.  
  459. Editor
  460. ======
  461.  
  462. You can use any Windows or DOS editor, or the built editor built 
  463. in.  We suggest you test the link to another editor later (look at the 
  464. main functions first).
  465.  
  466.  
  467. Code generator options
  468. ======================
  469.  
  470. There is an option for the code generator that determines the level 
  471. of detail for comments in the generated code.  We suggest you set 
  472. it off for a start.  This will simplify the look of the code you 
  473. generate while testing, which will make it easier to see what the 
  474. code generator does.
  475.  
  476.  
  477. To logout
  478. =========
  479.  
  480. When you select logout from the File menu, it is a two step 
  481. operation.  The login screen is displayed first, giving the 
  482. choice to enter again as another user, or to logout.
  483.  
  484. If you want to exit directly in one step, press Alt + F4.
  485.  
  486.  
  487. Support and Sales information
  488. =============================
  489.  
  490.     Please contact:
  491.  
  492.         Stephan Wolf
  493.         Innovative Software GmbH
  494.         Germany
  495.  
  496.         Telephone:    ++49 69 236929
  497.         Fax:        ++49 69 236930
  498.  
  499.  
  500.         Bill Whittakers
  501.         Object Software Engineering Pty Ltd
  502.         Australia
  503.  
  504.         Telephone:    ++61 52 377066
  505.         Fax:        ++61 52 377054
  506.