hi everyone, software development involves a number of tools, and i've put together a list of what i consider essential tools, together with specific instances of these tools. i'm passing this list on to you, mostly to give you an idea of the kinds of tools you have available to you. incidentally, many of the commercial tools i've listed below (purify, icc, sun studio, etc.) have eval licenses, so you can test drive them at no cost. my tool chain, along with instances: version control - cvs, subversion documentation - doxygen naming convention - vis programmer manual editor - emacs, vim memory analyzer - valgrind, purify performance analyzer - gprof, quantify compiler - icc, gcc/g++, sun studio libraries - stl, boost, glu (from UCB cadgroup) bug tracking - bugzilla scripting - perl, bash, vbs, python (for running lots of test cases) GUI - trolltech's qt (i have not used this but it's highly recommended) i also polled a couple of students from the class for input on tools, have attached their feedback below - kashif's input is particularly nice and detailed. cheers, adnan ps - if you have any favorite tools, let me know and i'll add to the list -------- tom bender inputs: Unfortunately, I am not familiar with non-Mac systems. I have done all of my professional work on the Mac platform. I currently develop software using XCode on Mac OS X. If you're not familiar with XCode, it provides a fairly nice gui interface for editing, compiling, profiling, and debugging C, C++, Java, and Objective C. It is also reasonably priced ($0)! --- brian carlson inputs: You pretty much got everything that I've ever used. You could add jEdit ( http://www.jedit.org/) or SlickEdit (http://www.slickedit.com/) into the editors list. SlickEdit is a favorite on the Windows side for its plugin to VisualStudio (its native editor is a bit lacking) and I've heard a lot of good things about jEdit from other programmers I work with who used to code using emacs or vim. Oh, and I believe version control for visual studio is Visual SourceSafe - but I can't testify to its quality. --- kashif siddiqi inputs: I would recommend the following tools: * doc++ for documentation - produces very nice browseable html documentation * Open perl ide - nice free GUI tool for perl development and debugging version control Kashif: We actually use IBM's rationale clearcase, we used to have CVS long time ago but clearcase is much more user friendly. ------------------------------------------------------------------------ documentation - doxygen ------------------------------------------------------------------------ Kashif: I have not used doxygen, but an interesting tool that we have used is doc++, it produces very nice browseable html documentation. ------------------------------------------------------------------------ naming convention - vis programmer manual ------------------------------------------------------------------------ Kashif: We have our own naming conventions and an internal manaul that documents them. ------------------------------------------------------------------------ editor - emacs, vim ------------------------------------------------------------------------ Kashif: I personally use textpad, it is a windows based text editor. Basically any editor that provides code coloring proves useful and is helpful in catching simple bugs. Emacs is one of the more predominant editors in my group,since it is so customizable. Emacs gives us the ability to do remote editing, which is very useful as a lot of our work is done off platform on large servers. ------------------------------------------------------------------------ memory analyzer - valgrind, purify ------------------------------------------------------------------------ Kashif: We have used purify, we do build a development version of our product for windows (since it is easier to debug and test on windows). We have our own memory model that is instrumented to help debug memory leaks (this code is only available in the debug builds though). ------------------------------------------------------------------------ performance analyzer - gprof, quantify ------------------------------------------------------------------------ Kashif: For performance testing we have instrumented our code to measure runtimes and logical operation counts to get a good feel for performance. We have used quantify but generally we instrument our own code and have written tools to analyze the logs produced by the instrumentations. ------------------------------------------------------------------------ compiler - icc, gcc/g++, sun studio, MS visual ------------------------------------------------------------------------ Kashif: we use visual c++, and a proprietary cross compiler. The cross compiler is used to compile binaries for the intel itanium chips on a regular windows workstation. The cross compiler actually fits into the visual studio .net. The cross compiler also provides for very interesting profile based optimization. Basically a profile is generate from a binary, and is fed to the optimizer at compile time, we have noticed 5-10% improvement as a result. The visual C++ compiler is also used. It is use to compile the windows version of our product (which is only a test version for development). For my homeworks I have used Visual C++, Microsoft development tools are great and provide very useful browsing functionalities for files and structures (i.e. classes, methods etc). ------------------------------------------------------------------------ libraries - stl, boost, glu (from UCB cadgroup) ------------------------------------------------------------------------ Kashif: We have written our own libraries which are very similar to STL, our libraries are also templates, but we do extra book keeping e.g. we keep track of heaps where the collections allocate. Our code base is pretty old and since we did not have STL available we had to write our own classes. Another issue is that we have code that runs in the kernel so we did not want to use any thing from outside. ------------------------------------------------------------------------ bug tracking - bugzilla Kashif: we use a web based tool called genesis. I have used clear quest previously but don't have any experience with bugzilla. Genesis is kind of dated and not as easy to use a clearquest which is integrated better with clearcase. ------------------------------------------------------------------------ scripting - perl, vbs ------------------------------------------------------------------------ Kashif: perl is very useful to me, I have used perl for writing some important tools at work. I have implemented a performance analysis framework in perl. At work we routinely have to capture and analyze a lot of performance related data in text form, perl is the ideal tool for that. I have also used korn shell scripting which is good for automating simple tasks but for large text processing tasks I have not seen anything better than perl. Open Perl Ide is a nice free GUI for perl development and debugging. ------------------------------------------- Adnan Aziz, Dept. of Elect. and Comp. Eng., The University of Texas, Austin TX, 78712 1 (512) 475-9774 www.ece.utexas.edu/~adnan -------------------------------------------