CS345 - Software Engineering - Spring 2005-2006
Charlie Peck and Chris Hardie
Department of Computer Science - Earlham College
Software Development Tools
Much of quality software development is about evaluating and making the most of the tools that are available to do the job you want. Throughout the course, we'll be looking at some of the tools out there, and asking you to evaluate the pros and cons of each.
- Command line shell: often a primary component of your development environment, the shell helps you manage files, processes, input/output redirection, command history and aliases, and other "meta" information related to the software you're developing and running.
- Common manifestations : sh, bash, tcsh, zsh
- What to consider when choosing: finding the right shell is mostly about functionality, but there are stylistic differences between each that may be important. If you already have one or a kind of one you like, stick with it unless you have a compelling reason to switch.
- For your own edification: Read about the history of the Unix shell and how each popular option evolved. Read through some reasonably complex scripts and see if you can follow all that they are doing.
- Programming language: a primary tool in software development...the language you write software in!
- Common manifestations : c, java, perl, php, python, coldfusion, vbasic, lisp, tcl, etc.
- What to consider when choosing: the programming language you choose will largely depend on the task at hand, though many experienced software developers often start with the language(s) they're most comfortable with and pick from those. Be careful, language choice can be a matter of religion.
- For your own edification: Read through a few of the many online discussions about what programming language to use for web application development. Make a note of the kinds of issues that come up consistently, and the way that the most passionate debaters tend to deal with them.
- Configuration tools (autoconf, automake, make, libtool, etc.)
- Source control systems (cvs, subversion, darcs, rcs, etc.)
- Text editors (emacs, vi, pico, notepad, bbedit, etc.)
- Debuggers (gdb, perl debugger, etc.)
- Datastores (flat file databases, SQL databases, interfaces to both)
- Cluster / Parallel computation tools (MPI, mpC, MPBench, etc.)
- Automated testing tools (test writing tools, test suite harnesses, Perl test modules, Selenium, browser plugins, etc.)
- Profling and optimization tools (gprof, Perl benchmarking tools)
- Task / Bug Tracking tools (Bugzilla, RT, GNATS, FogBugz, Scarab, etc.)
- Notation / XML
- Regular expressions
- Time, people and budget tracking
- Specialized libraries / APIs
Last significant update: January 12, 2006