		Congratulations on installing
		-----------------------------
		    DPCpp Version 1.0 

  A Tool For Design Pattern Detection in C++ Software Systems
  -----------------------------------------------------------
		For Windows NT and Windows 95
		    Copyright 1998,1999

			Developers: 
	  Ms. Anshumali and Dr. Jagdish Bansiya
		Email: jbansiya@cs.uah.edu
		Web : http://indus.cs.uah.edu


About DPCpp 1.0
----------------
This is a DEMO version of the DPCpp product that is currently 
under development.  A full-featured version of this product is 
slated to be available upon my ability to get funding for this 
project and the extent of interest shown by individuals like you 
for such a tool.  If this tool and its idea/approach
interests you and you would like to see a full featured version of it,
email me some feed back as to how such a tool may interest you.  If you 
think you can help with the development of this product in anyway 
please let me know.  I'm also looking for sponsors or funders to 
get this project going.  To get the latest information about the 
status of this product, its availability, or get new updated 
versions, visit the Web site http://indus.cs.uah.edu.  If you 
register yourself on the website, you can receive emails about the
product and its updates directly from me.   If for some reason you
have problems connecting to the above website, try, 
http://indus.cs.uah.edu/~jbansiya.  To reach the primary contact 
person i.e. me (Dr. Jagdish Bansiya) for information about the 
product, email to jbansiya@cs.uah.edu.  

This version 1.0 of the DPCpp that you have installed is aimed to 
demonstrate of an approach to automating design pattern 
identification and visualization.  An article dedicated to the 
pattern detection approach implemented by this tool and how this 
can be useful to understanding large object-oriented systems for 
purposes such as maintainability, reuse, reverse-engineering, and 
program understanding has been published in the June 1997 issue 
(on Design Patterns") of Dr Dobb's Journal.  This article is also 
accessible on the Dr. Dobb's website http://www.ddj.com and 
my homesite http://indus.cs.uah.edu.


Setting the PATH Before You Run DPCpp.exe
-----------------------------------------
The main executable of this product is called `dpcpp.exe'.  This 
main executable file also uses the `dphelper.exe' for its 
operations.  It is IMPORTANT that the "dphelper.exe" and 
"msbsc50.dll" are both in the search path of your system 
environment.  You can set this up by either adding the directory 
in which these files are to your system search path or by copying 
these two (`dphelper.exe' and `msbsc50.dll') files to windows 
system directories such as \windows\system in Windows 95 or
\winnt\system32 in Windows NT.



Using DPCpp.exe
---------------
Once you have the 'dphelper.exe' and 'msbsc50.dll' in the system 
search path, the tool is fairly intuitive and easy to use.  To get
started, work with the sample data files that are delivered with 
the tool.  This version of the tool takes source browser files 
(*.bsc) created by the Microsoft Visual C++ 5.0 compiler as input. 
Two browser files (`coolinterp.bsc' and `coolinterp2.bsc')along 
with the sources (in directories `coolinterp' and `coolinterp2') 
used to create the browser files are delivered along with the tool.
To see how the tool works click `open' and select one of these 
browser files.  The program then displays a message 
"Processing c:\..\..\coolinterp.bsc" in the "Textview" window.  
Wait until the processing is complete, which is indicated by the 
message "Processing Complete".

At this point you have three windows displayed for you.  One is a 
"Text View" window, which is used to display all program messages 
and outputs. The second window is a "Graph View" window, in which 
you will see the class hierarchy diagram of the project processed.  
(TROUBLE SHOOT:  If this "graph view" window is blank, that would 
mean that the `dphelper.exe' and `msbsc50.dll' are NOT in the 
system search path.)  There is also a third "Tree view" window, 
which shows the class hierarchy using the familiar tree control.  

The most important "view" window of this tool is the "Graph View" 
window.  This window is used to display the patterns detected, the
clusters, class relationships, and class collaborations.  There are
icons provided in the toolbar to select on SIX views that are 
currently available to you in this tool.  There are also pair of 
arrow icons on the toolbar that allow you to cycle between all the
views. A brief description of the views follows:

View 1. Shows the class-object diagram.  This view shows you all 
        the classes and their Inheritance relationships. 
View 2. Shows the Composition/Aggregation relationships detected 
	between classes, based on the attribute (data member) 
	declarations in the classes.
View 3. Shown is a combination of View 1 and 2 i.e. all classes 
	are shown along with their Inheritance and Composition/
	Aggregation relationships.
View 4. Shows the Clusters (Concepts) detected in the project.  
	A Cluster is a group of functional related classes.  
	Clusters represent concepts that a group of collaborating 
	classes implement.  Design patterns are special cases of 
	clusters.  And therefore the detection and identification
	of design patterns start with identification of clusters.  
	When the participant classes of a cluster have well 
	defined relationships and roles to play, the cluster is 
	identified to be a specific pattern.  Clusters are shown 
	as subgraphs enclosed in a labeled rectangle.  For more 
	information about clusters refer to my website: 
	http://indus.cs.uah.edu.
View 5. Combines all the previous view into one, showing the 
	Clusters along with Inheritance and Composition/Aggregation
	relationships for all the classes. 
View 6. Shows all instances of COMPOSITE / DECORATOR patterns 
	detected by the tool in the projects classes.  Each 
	Composite pattern is shown within its own sub-graph that is 
	bounded by a rectangle and label as "Composite # X".  
	Please note that this version of the tool DOES NOT 
	distinguish between the Composite and Decorator pattern.  


If a second project is opened for pattern analysis, this project 
will get its own "Text View" and "Tree View" window.   The 
"Graph view" Window is shared by all opened and processed C++ 
projects.  Also note that once you dismiss the projects "text view"
or "tree view' window there is no way for you to create a new 
window instance without reprocessing the project.


To Identify Patterns in Your Own Programs
------------------------------------------
This version of the tool only takes Microsoft source browser files
(*.bsc) as input.  Therefore,  you will have to create a browser 
file from the project source before the project can be used for 
Pattern Analysis.  Creation of the source browser files is very 
straight froward with Visual C++ 5.0 in DevStudio environment.  
In the "Project Setting" dialog and on the "C++" Tab there is a 
check box for "Generate Browser Info", check this box.  There is 
also a "Browser Info" Tab in the "Project Settings" Dialog on 
which there is another check box for "Build Browser Info into 
File", check this box too.  When you compile you program with these
options set, a browser file (*.bsc) will be created for the program.
This file can them be opened from "DPcpp" for pattern analysis.

IMPORTANT NOTE : While DPcpp.exe uses the browser to get 
information about the program it also examines the source files 
(*.h and *.cpp) directly.  DPcpp gets the names of the files and 
their path from the browser file.  The source file path names 
stored in the browser file are relative and therefore moving or 
copying browser files without the source will result in DPCpp not 
working correcting (Several of the VIEWS will be blank).  It is 
best that you leave the browser files (*.bsc) in the directory 
they are created.

Remember, it is NOT Necessary to have programs linked to generate 
browser files.  When you compile a source file it generates the 
corresponding .sbr file, these .sbr files are then put together 
by the `bscmake' (delivered with VC++) program to generate a 
single .bsc file.

If you don't want system files (examples, stream classes, MFC 
classes etc) to be involved in the pattern analysis of your 
projects, these classes should be excluded at the time of the 
browser file creation.  The option "/Es" excludes standard system
files from being included in the browser file information.  For 
additional options on how to work with browser file creation, look
up help on "BSCMAKE.EXE" or type "bscmake -?" on the command line 
in a Command Window.

You can also generate the browser files manually, by running the 
"cl.exe" and "bscmake" by hand.  Run the "cl" compiler with the 
"Fr" option on the source files, say, "*.cpp" files, this will 
generate a "*.sbr" for each of the source files".  Once the 
"*.sbr" files are generated run "bscmake" on the "*.sbr" files.


Example for a source file MyTest.cpp:

C:>\temp\cl /Fr MyTest.cpp
C:>\temp\bscmake /o MyTest.bsc /Es MyTest.sbr

The "/Es" excludes the standard system files such as "streams" and
"MFC" if used from the browser file generated.  You can also 
specify other source files if want them to be excluded from the 
pattern analysis.  Look at all the options that bscmake.exe 
provides for browser file creation.  You are also allowed to use 
WildCard options to specify the source and ".sbr" files on these 
two commands.


Contact For More Information on DPCpp:
--------------------------------------
Dr. Jagdish Bansiya and Anshumali
Email: jbansiya@cs.uah.edu
Web : http://indus.cs.uah.edu
Phone: 205-890-7317
