[Open-source/free-software] Software programming and its tools
While browsing through the web and reading with full interest the tons of posts in this forum, I create a list of software programming tools useful to do professional software engineering. I must admit that I haven't fully tested and used all of the listed tools. But I am often fascinated that companies generally do not need to spend much money on expensive software licenses for software development tools ... hmmm ... don't they really need??? Just for my interest, some of you - working professionally on non-free software(!!) - could possibly tell how much open-source/free software tools are used in their software development processes.
The list below is separated into a few categories and topics which are in my honest opinion important to deliver professional and good-quality software applications. I am quite aware of that this list is not complete and quite C/C++-centric; so, it would be great if we could get more topics to the list which you think are also very important in software development. Regarding the list of available tools, I don't think that we need to list all the tools available for all the topics since most of us should be able to find the very special tools by using a good web search. I just wanted to give some basic ideas. But maybe, it would be possibly great to get a list of the most prominent tools of the most commonly used languages today.
[Development Tool Chain]
- IDE: eclipse, vi(m), anjuta, code::blocks
- build automation: make, GNU autoconf, cmake, bjam (Boost C++ project), SCons
- preprocessor: cpp, gcc
- compiler: gcc, llvm
- assembler: gas (GNU binutils)
- linker: ld (GNU binutils)
- debugging: gdb, ddd (graphical GUI for gdb)
[Source Code Analysis]
- static code analyzer: splint
- dynamic code analyzer/profiler: valgrind, gprof, oprofile, PAPI
- code instrumentation/tracepoints: ust (user-space tracing)
- code coverage: gcov (lcov for graphical display of coverage)
[Application Testing]
- testing: dejagnu, cunit, cppunit, Boost, JUnit
- integration testing/build server: buildbot, CruiseControl, Hudson
[Software Management and Maintenance]
- source code versioning: git, hg, svn, cvs, bazar
- documentation: doxygen, trac
- bug management: bugzilla
- source code indexing and search: cscope, lxr
- installation: install4j, InstallJammer
[Software Engineering]
- Engineering model and tools: scrum (and web tools)
- Modeling tools: UML, MDA (model-driven-architecture), DbC (Design by Contract), TDA (test-driven architecture)
[Runtime Libraries]
- Parallelization: OpenMP, OpenCL, Pthread
- Message Passing: MPI
I'm not sure if that's really an interesting topic and if the community is responsive, but depending on the activity, this could possibly be made a sticky topic some time :-)
Andi
|