An Overview of Tools Available in CS 501
An Overview of Tools Available in CS 501 Ken Hopkinson hopkik@cs. cornell. edu
Talk Overview § Rational Rose for Design § Source Management Tools § A Selection of Available Development Environments § Debugging Techniques CS 501 : An Overview of Helpful Tools 2
Using Rational Rose for Project Design
Start Rational Rose CS 501 : An Overview of Helpful Tools 4
CS 501 : An Overview of Helpful Tools 5
A Typical Design CS 501 : An Overview of Helpful Tools 6
Another Sample Design Case CS 501 : An Overview of Helpful Tools 7
Remember Your Specifications CS 501 : An Overview of Helpful Tools 8
Specification Fields CS 501 : An Overview of Helpful Tools 9
General Specification Fields CS 501 : An Overview of Helpful Tools 10
Source Code Management § Also known as Configuration Management § Source Code Managers are tools that: – Archive your development files – Serve as a single point of entry/exit when adding or updating development files CS 501 : An Overview of Helpful Tools 11
Why You Want A Source Control System § § § § Supports concurrent development Manage diverging source code bases Records file/release versions Easy access to all previous revisions Can record why a revision was made Optimal disk space usage You’ll end up doing something equivalent anyway so it may as well be automated CS 501 : An Overview of Helpful Tools 12
Source Code Management Tools Are Not § A substitute for project management § A replacement for developer communication CS 501 : An Overview of Helpful Tools 13
How They Work § Central database of source code, documentation, build tools § Each file stored only once - all other versions are diffs of that one copy § To Make a Change – Check out the latest version of a file – Make the changes – Update the database CS 501 : An Overview of Helpful Tools 14
What should be in the database Source Code Documentation Build Tools Often need old versions of the tools to build old versions of the software – Ensures software is rebuilt exactly as the customer received it § Test Suites § Anything else you might want later § § § – CS 501 : An Overview of Helpful Tools 15
Version Control § Companies ship several products from the same source base (ie Win NT and Windows 2000 versions of MS Office) § When tracking down bugs you want to examine the code as it was when the product shipped CS 501 : An Overview of Helpful Tools 16
Code Sharing § Multiple people can work on the same source base without colliding – (1) Locks individual files so only one person at a time can modify it *OR* – (2) Allows multiple people to modify a source file and the system will automatically merge the changes (usually) CS 501 : An Overview of Helpful Tools 17
Locking § Only one person can work on a file at once § Works fairly well if developers work on different areas of the project and don’t conflict often § Problem 1: People forget to unlock files when they are done § Problem 2: People work around locking by editing a private copy and checking in when the file is finally unlocked - easy to goof and lose changes CS 501 : An Overview of Helpful Tools 18
Merging § Several people can work on a file at once § Before committing changes, each user merges their copy with the latest copy in the database – This is normally done automatically by the system and usually works, but you should not blindly accept the result of the merge CS 501 : An Overview of Helpful Tools 19
Labelling § Label all the files in the source base that make up a product at each milestone § Just before and just after a major change (eg. changing several interfaces) § When a new version ships CS 501 : An Overview of Helpful Tools 20
Version Trees § Each file in the database has a version tree § Can branch off the version tree to allow separate development paths § Typically a main path (trunk) for the next major version and branches off of shipped versions for maintenance CS 501 : An Overview of Helpful Tools 21
Branching § When a new version ships, typically create a branch in the version tree for maintenance § Double update: fix a defect in the latest version and then merge the changes (often by hand) into the maintenance version § Also create personal versions so you can make a change against a stable source base and then merge in the latest version later CS 501 : An Overview of Helpful Tools 22
Examples § – – § – § – RCS Solaris: man rcsintro CVS Solaris: man cvs www. cyclic. com/cvs/info. html Visual Source. Safe msdn. microsoft. com/SSAFE Clear. Case www. rational. com Source. Forge www. sourceforge. net CS 501 : An Overview of Helpful Tools 23
RCS § File management only § Transaction model – check out and lock – edit – check in and unlock § Little support for binaries CS 501 : An Overview of Helpful Tools 24
CVS § Built on top of RCS – Therefore little support for binaries § Database can be remote § No locking: merge before commit § Fast § Integrates with emacs CS 501 : An Overview of Helpful Tools 25
Source. Safe § § § Microsoft’s entry into the field Project-based Checkout-edit-checkin model Built-in web site creation tools Integrates with MSDEV CS 501 : An Overview of Helpful Tools 26
Clearcase § Clearcase is configuration management on steroids § You create a view of the database with a config spec, which describes how to select files from the database. § When you set a view, Clearcase creates a virtual filesystem containing only those versions of the files selected by the config spec CS 501 : An Overview of Helpful Tools 27
Clearcase Features § Distributed System – Several groups at different locations can work on the same database § Can install triggers – Example: e-mail the author of a file when some one makes a change to it § Uses merging model like CVS, but can also lock files CS 501 : An Overview of Helpful Tools 28
More Clearcase Features § Integrates with MSDEV § Build Management – Knows to rebuild out-of-date files even if your makefile doesn’t § Slow and a bit buggy CS 501 : An Overview of Helpful Tools 29
Source. Forge § On-line Version Control System § Projects are available for public discovery and development § A very good environment for open source projects CS 501 : An Overview of Helpful Tools 30
Helpful Rules for Version Control Bliss § Archived Files Should Always Compile § Code Review Files Before Check-in § Compile and run latest archived files *as a set* before Check-in § No Cheating (even “simple bug fixes” need to undergo this process) CS 501 : An Overview of Helpful Tools 31
Development Tools Available at Cornell at No Charge to You
MSDNAA § § § Windows XP Visual Studio. Net Windows CE Development Tools Microsoft SQL Server Visual Source. Safe CS 501 : An Overview of Helpful Tools 33
Freely Available Software § GNU § Free Software Foundation § Other Public Software Freely Distributed CS 501 : An Overview of Helpful Tools 34
Useful Public Software § § § Apache Web Server g++/gdb Perl Python CVS CS 501 : An Overview of Helpful Tools 35
Software Installed in Public Windows/Unix Labs § § Microsoft Office including MS Access Purify CVS Server Unix Shell Access CS 501 : An Overview of Helpful Tools 36
Key Points to Remember § Use the most appropriate tools for the job § Check available Cornell software before buying anything § Ignore licensing agreements at your peril § No extra credit is given for a one week project that does the same work as a one-line library call. CS 501 : An Overview of Helpful Tools 37
A Closer Look at Two Cool Development Tools § Purify § Microsoft Visual Debugger CS 501 : An Overview of Helpful Tools 38
Purify § Purify is a tool for locating runtime errors in a C/C++ program § Purify can find § Array bounds errors § Accesses through dangling pointers § Uninitialized memory reads § Memory allocation errors § Memory leaks § Purify is available on Windows and UNIX systems and is a product of Rational Software www. rational. com CS 501 : An Overview of Helpful Tools 39
How Purify Works § Purify instruments a program by adding protection instructions around every load and store operation § When program is executed a viewer will be created to display errors as they happen § Purify is flexible and can be run standalone with any executable (written in C) or within a debugging environment like Visual Studio § Purify is customizable and can be set to ignore certain types of errors CS 501 : An Overview of Helpful Tools 40
How to Use Purify § add purify command to link command § program: $(OBJS) purify [-option. . . ] $(CC) $(CFLAGS) -o program $(OBJS) $(LIBS) § OR run purify in Visual Studio § OR load file in purify executable CS 501 : An Overview of Helpful Tools 41
CS 501 : An Overview of Helpful Tools 42
CS 501 : An Overview of Helpful Tools 43
Visual Debugger § Graphically Oriented § Run from Visual Studio § Can debug a failed process by selecting the Yes button at “Debug Application” dialog after a memory or other failure occurs § Can attach to a running process by choosing the Tools->Start Debug->Attach to Process menu option CS 501 : An Overview of Helpful Tools 44
The Visual Debugger CS 501 : An Overview of Helpful Tools 45
Breakpoints § Can stop execution at any line and in any function. (Location) § Can set conditions on breakpoints if you are only interested in specific passes through a piece of code (Location->Condition) § Conditional breakpoints detached from any one line in the program are also possible, but make program execution very slow (Data). CS 501 : An Overview of Helpful Tools 46
Breakpoint Window CS 501 : An Overview of Helpful Tools 47
Conditional Window CS 501 : An Overview of Helpful Tools 48
Conditional Data Breakpoint CS 501 : An Overview of Helpful Tools 49
Examining Program State § Print and/or Change variable state. § Walk up/down the stack trace. § View disassembled code. CS 501 : An Overview of Helpful Tools 50
CS 501 : An Overview of Helpful Tools 51
Quick Print/Change Variables CS 501 : An Overview of Helpful Tools 52
Common Pointer Problems Pointer to bogus memory Corrupt data structure segments Data sharing errors Accessing data elements of the wrong type § Attempting to use memory areas after freeing them § § CS 501 : An Overview of Helpful Tools 53
Conclusion § Rational Rose is an Excellent Design Tool § Version Control Software is Very Helpful § Many Good Project Tools Available at Cornell § Using Development Tools Well Can Make a Big Difference in Your Project’s Success CS 501 : An Overview of Helpful Tools 54
- Slides: 54