S/W Engineering

Programming Resource

General-Purpose Library

  • Boost C++ Libraries
  • Dlib C++ Library : a general purpose cross-platform C++ library designed using contract programming and modern C++ techniques
  • Loki : a C++ library of designs, containing flexible implementations of common design patterns and idioms

GUI and Application Framework

  • GTK+ : the GIMP Toolkit, a multi-platform toolkit for creating graphical user interfaces
  • Qt : a cross-platform application and UI framework for developers using C++ or QML, a CSS & JavaScript like language
  • wxWidgets : a C++ library that lets developers create applications for Windows, OS X, Linux and UNIX on 32-bit and 64-bit architectures as well as several mobile platforms including Windows Mobile, iPhone SDK and embedded GTK+

Resource and Memory Management

  • Valgrind : an instrumentation framework for building dynamic analysis tools
  • Dr. Memory : Memory Debugger for Windows and Linux, a memory monitoring tool capable of identifying memory-related programming errors such as accesses of uninitialized memory, accesses to unaddressable memory (including outside of allocated heap units and heap underflow and overflow), accesses to freed memory, double frees, memory leaks, and (on Windows) access to un-reserved thread local storage slots
  • VLD : Visual Leak Detector, a free, robust, open-source memory leak detection system for Visual C++

Static Code Analysis

  • Lint : a tool to find problems in software
    • Splint : Secure Programming Lint, Annotation-Assisted Lightweight Static Checking
    • C++ lint : a free lint for C++
    • Jlint
  • Cppcheck : a static analysis tool for C/C++ code
  • PMD : a source code analyzer
  • FindBugs : Find Bugs in Java Programs

Computer-Aided Software Engineering (CASE)

  • StarUML : the Open Source UML/MDA Platform
  • WhiteStarUML : Actively developed UML tool derived from StarUML
  • ArgoUML : the leading open source UML modeling tool
  • Mscgen : a small program that parses Message Sequence Chart descriptions and produces PNG, SVG, EPS or server side image maps (ismaps) as the output
  • SequenceViz : a tool to generate sequence diagrams by reverse engineering .NET Assemblies

Code Review

Source Configuration Management (SCM)

  • CVS : Concurrent Version System, a version control system designed for software projects
  • Subversion : an open source version control system
  • Git : a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency
  • Mercurial : a free, distributed source control management tool

Issue Tracking

  • Bugzilla : server software designed to help you manage software development
  • MantisBT : an open source issue tracker that provides a delicate balance between simplicity and power
  • phpBugTracker : a web-based bug tracker with functionality similar to other issue tracking systems, such as Bugzilla
  • GNU GNATS : a set of tools for tracking bugs reported by users to a central site

Logging

  • Apache Logging Services : open-source software related to the logging of application behavior and released at no charge to the public
  • glog : C++ implementation of the Google logging module
  • Pantheios: an Open Source C/C++ Diagnostic Logging API library, offering an optimal combination of 100% type-safety, efficiency, genericity and extensibility

Testing

  • xUnit : testing of different elements (units) of software, such as functions and classes
    • JUnit : a programmer-oriented testing framework for Java
    • CppUnit : a C++ unit testing framework
    • NUnit : a unit-testing framework for all .Net languages
    • Boost Test Library
    • Google Test : Google's framework for writing C++ tests on a variety of platforms (Linux, Mac OS X, Windows, Cygwin, Windows CE, and Symbian)
  • Hamcrest : a framework that assists writing software tests
  • jMock : a library that supports test-driven development of Java code with mock objects
  • EasyMock
  • Google Mock : an extension to Google Test for writing and using C++ mock classes
  • Expect : a tool for automating interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, etc.
  • Cobertura : a code coverage utility for Java
  • Quilt : a Java software development tool that measures coverage , the extent to which unit testing exercises the software under test

Build System

  • CMake : the cross-platform, open-source build system
  • Apache Ant : a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other
  • SCons : an Open Source software construction tool
  • Ninja : a small build system with a focus on speed
  • Bazel : Google's own build tool
  • GNU Make : a tool which controls the generation of executables and other non-source files of a program from the program's source files
  • Apache Maven : a software project management and comprehension tool
  • CruiseControl : both a continuous integration tool and an extensible framework for creating a custom continuous build process
  • Hudson : Extensible continuous integration server
  • Jenkins : An extensible open source continuous integration server
  • Bamboo : a continuous integration and delivery tool that ties automated builds, tests and releases together in a single workflow

Integrated Development Environment (IDE)

  • Visual Studio
  • Eclipse
  • Code::Blocks : a free C, C++ and Fortran IDE built to meet the most demanding needs of its users
  • Wing IDE : Wingware's Python IDE, an Integrated Development Environment designed specifically for the Python programming language
  • Em::Blocks : a free C/C++ IDE built to meet the most demanding needs of its users working in the field of embedded software development
  • emIDE : a free and full-featured IDE integrating all features needed for developing and testing professional embedded applications

Source Documentation and Browsing

  • Doxygen : the de facto standard tool for generating documentation from annotated C++ sources, but it also supports other popular programming languages such as C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some extent D
  • Javadoc
  • NDoc : Code Documentation Generator for .NET