Here you can read about our process of development and the tools we use every day to efficiently develop our software.
Agile methods generally promote a disciplined project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices that allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals. Source: http://en.wikipedia.org/wiki/Agile_development
Scrum is an iterative incremental framework for managing complex work (such as new product development) commonly used with agile software development. Though not an acronym, some companies implementing the process have been known to adhere to an all capital letter expression of the word, i.e., SCRUM. This may be due to one of Ken Schwaber's early papers capitalizing SCRUM in the title.
Although Scrum was intended for management of software development projects, it can be used to run software maintenance teams, or as a general project/program management approach. Source: http://en.wikipedia.org/wiki/Scrum
Continuous integration itself refers to the practice of frequently integrating one's code with the code that is to be released (often this is the trunk, but that is not necessarily the case). The term 'frequently' is open to interpretation, but is often taken to mean "many times every day". Source: http://en.wikipedia.org/wiki/Continuous_Integration
We are applying the following recommended practices:
TeamCity is a continuous integration and build management system. With TeamCity, you can set up a build server within minutes and enjoy out of the box continuous unit testing, code quality analysis, and early reporting on build problems - even without leaving your favorite IDE. TeamCity offers a gentle learning curve, so you can quickly improve your release management practices by gradually adopting its advanced features and capabilities. Source: http://www.jetbrains.com/teamcity/
When it's time for your software to head out the door, breathe easy knowing that all of your code is covered. NCover leads the industry in revealing which parts of your code have been tested and which parts are still exposed. Well crafted code is the first step in delivering amazing products. Source: http://www.ncover.com/
FxCop is a free static code analysis tool from Microsoft that checks .NET managed code assemblies for conformance to Microsoft's .NET Framework Design Guidelines. Unlike the lint programming tool for the C programming language, FxCop analyzes the compiled object code, not the original source code. It uses CIL parsing, and callgraph analysis to inspect assemblies for more than 200 defects in the following areas: Correctness, Library design, Localization, Naming conventions, Performance and Security. Source: http://en.wikipedia.org/wiki/FxCop
CAT.NET is a binary code analysis tool that helps identify common variants of certain prevailing vulnerabilities that can give rise to common attack vectors such as Cross-Site Scripting (XSS), SQL Injection and XPath Injection. Source: http://www.microsoft.com/downloads/details.aspx?FamilyId=0178e2ef-9da8-445e-9348-c93f24cc9f9d&displaylang=en
Mockups enables interface wireframing by using over 75 hand-drawn UI elements, so that people don't get attached to “that pretty color gradient” or think that your mockup has actual code behind it and is “practically done”.
Product managers, designers, developers and even clients can work together in the same tool to quickly iterate over software mockups, before writing code.
IDEs are designed to maximize programmer productivity by providing tightly-knit components with similar user interfaces. This should mean that the programmer has much less mode switching to do than when using discrete development programs. This program typically provides many features for authoring, modifying, compiling, deploying and debugging software. The aim is to abstract the configuration necessary to piece together command line utilities in a cohesive unit, which theoretically reduces the time to learn a language, and increases developer productivity. It is also thought that the tight integration of development tasks can further increase productivity. Source: http://en.wikipedia.org/wiki/Integrated_development_environment
The Visual Studio development system is a comprehensive suite of tools designed to help software developers create innovative, next-generation applications. It’s the perfect work environment for application developers. Source: http://www.microsoft.com/visualstudio/en-us/default.mspx
ReSharper provides solution-wide error highlighting on the fly, instant solutions for found errors, over 30 advanced code refactorings, superior unit testing tools, handy navigation and search features, single-click code formatting and cleanup, automatic code generation and templates, and a lot more productivity features for C#, VB.NET, ASP.NET, XML, and XAML. Source: http://www.jetbrains.com/resharper/
Eclipse is a multi-language software development environment comprising an IDE and a plug-in system to extend it. It is written primarily in Java and can be used to develop applications in Java and, by means of the various plug-ins, in other languages as well, including C, C++, COBOL, Python, Perl, PHP, and others. Source: http://en.wikipedia.org/wiki/Eclipse_(software)
Software Testing is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test, with respect to the context in which it is intended to operate. Software Testing also provides an objective, independent view of the software to allow the business to appreciate and understand the risks at implementation of the software. Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs. Software Testing can also be stated as the process of validating and verifying that a software program/application/product (1) meets the business and technical requirements that guided its design and development; (2) works as expected; and (3) can be implemented with the same characteristics.
Software Testing, depending on the testing method employed, can be implemented at any time in the development process, however most of the test effort occurs after the requirements have been defined and the coding process has been completed. Source: http://en.wikipedia.org/wiki/Software_testing
The Gallio Automation Platform is an open, extensible, and neutral system for .NET that provides a common object model, runtime services and tools (such as test runners) that may be leveraged by any number of test frameworks. Source: http://www.gallio.org/
MbUnit v3 is the current version of the MbUnit Framework. It is based on the Gallio Test Automation Platform which provides a stunning array of interoperable test tools. MbUnit v3 has been rewritten from the ground up to provide a compelling suite of testing features with native support for .Net 2.0 and .Net 3.5. Source: http://www.mbunit.com/
Rhino.Mocks is a dynamic mock object framework for the .Net platform. It's purpose is to ease testing by allowing the developer to create mock implementations of custom objects and verify the interactions using unit testing. Source: http://ayende.com/projects/rhino-mocks.aspx
Selenium is a suite of tools to automate web app testing across many platforms. Selenium runs in many browsers and operating systems and can be controlled by many programming languages and testing frameworks. Source: http://seleniumhq.org/
Revision control (also known as version control, source control or (source) code management (SCM)) is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may be changing the same files. Changes are usually identified by a number or letter code, termed the "revision number", "revision level", or simply "revision". Each revision is associated with a timestamp and the person making the change. Revisions can be compared, restored, and with some types of files, merged. Source: http://en.wikipedia.org/wiki/Revision_control
Subversion (SVN) is a version control system initiated in 2000 by CollabNet Inc. It is used to maintain current and historical versions of files such as source code, web pages, and documentation. Source: http://en.wikipedia.org/wiki/Subversion_(software)