Home> Community Center> Development Academy> Concepts

General Items

Agile software development

Agile software development is a conceptual framework for software engineering that promotes development iterations throughout the life-cycle of the project. Learn more »

Build Grid

Build Grid TeamCity is built around the concept of a build grid — a central server is managing a potentially large grid of processes called build agents, which usually run on separate computer boxes. Each build agent has its own setup and the central server distributes tasks to the build agents based on compatibility criteria match between the agent and the task to run. Learn more »

Code Analysis

Code Analysis Taking a look at the software development process we have to realize that we spent more time in reading software as in developing software. Bugfixing and refactoring is taking it's time. So what could we do analyse code or to make it much more easier? Learn more »

Continuous Integration

Continuous Integration (CI) is a practice in software development describing the process of regular, comprehensive and automatic building and testing of applications. CI is often used in agile projects, but not limited to them. Learn more »

JetBrains dotTrace

JetBrains dotTrace is the complete profiling solution for .NET. Learn more »

Domain Specific Languages

Domain Specific Languages As Martin Fowler states in his article — "The basic idea of a domain specific language (DSL) is a computer language that's targeted to a particular kind of problem, rather than a general purpose language that's aimed at any kind of software problem." Learn more »

Extreme Programming

Extreme Programming is one implementation of the agile philosophy. It consists of values, practices and gives a template for the steps of software development. Learn more »

IntelliJ IDEA

IntelliJ IDEA is the most intelligent Java IDE, focusing on developer productivity and teamwork. Despite being called the best Java IDE in the industry IDEA also supports the widest range of other modern programming languages and technologies. Learn more »

Intentional Programming

Intentional Programming. Sometimes as a programmer we can get ahead of ourselves. We reference class we haven't yet imported or even created, assign values to variables we haven't yet defined, make calls to methods we haven't written, and so forth. Technically these could be considered mistakes, but they are mistakes made with the best of intentions. Learn more »

Language Oriented Programming

(LOP) is a style of computer programming, via metaprogramming in which, rather than solving problems in general-purpose programming languages, the programmer creates one or more domain-specific programming languages for the problem first, and solves the problem in those languages. Learn more »

Polyglot Programming

Polyglot Programming Different programming languages bring different strengths. Polyglot programming allows developers to combine multiple languages on a single project. They can, for example, use Java to build the system core, scripting in Groovy to define a DSL around the core, HTML with JavaScript to build web UI and let say Ruby to implement other external services. Learn more »

Pre-tested Commit

Pre-tested Commit With TeamCity's Pre-tested Commit feature (available in IntelliJ IDEA, Eclipse, and Microsoft Visual Studio), the developer's changes to be committed to the Version Control System (VCS) are first tested on the server bypassing the VCS. Learn more »

Refactoring

Refactoring. According to Martin Fowler, "Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior." Since its first introduction, this technique has been widely adopted. Learn more »

ReSharper

ReSharper: The most intelligent add-in to Visual Studio, ever! With its unrivalled code analysis, superior unit testing solution, and much, much more — ReSharper is sure to greatly increase the productivity of any .NET developer. Learn more »

Right-to-Left Development

Right-to-Left Development A main step in developing a logic model is to decide which approach to use. The different development stages (e.g., planning, implementation, or maintenance) should lead to one of two approaches to creating the model: right-to-left or left-to-right. Learn more »

TeamCity

TeamCity is a distributed build management and Continuous Integration system that allows your team to run and monitor your software building process while improving team communication, productivity and the integration of changes. With TeamCity: Learn more »

Test-Driven Development

Test-Driven Development (TDD) is a software development technique consisting of short iterations where new test cases covering the desired improvement or new functionality are written first, then the production code necessary to pass the tests is implemented, and finally the software is refactored to accommodate changes. The availability of tests before actual development ensures rapid feedback after any change. Practitioners emphasize that test-driven development is a method of designing software, not merely a method of testing. Learn more »

Unit Testing

Unit Testing: In computer programming, unit testing is a procedure used to validate that individual units of source code are working properly. A unit is the smallest testable part of an application. In procedural programming a unit may be an individual program, function, procedure, etc., while in object-oriented programming, the smallest unit is a method, which may belong to a base/super class, abstract class or derived/child class. Learn more »