Инструментальные средства и технологии
Не смотря на то, что выполняемые нашей компанией проекты в значительной степени ориентированы на нужды конкретных заказчиков, их можно разделить на несколько больших групп – это крупные системы автоматизации бизнес-процессов и документооборота, мультимедийные системы для обработки медицинских изображений и коробочные решение для задач складского учета. Подавляющее число этих проектов делается с использованием платформ Microsoft. Net (http://www.microsoft.com/NET) и Java (http://java.sun.com/). Для работы с данными мы чаще всего используем системы управления базами данных Microsoft SQL Server (http://www.microsoft.com/sqlserver/2008/en/us/default.aspx) и Oracle (http://www.oracle.com/global/ru/database/index.html).
Технология Microsoft. Net предназначена для создания широкого спектра приложений и предоставляет разработчику обширную библиотеку стандартных структур данных и алгоритмов) , среду выполнения CLR, позволяющую создавать приложения, части которого написаны на разных языках программирования, поддерживаемых данной платформой — таких как C#, VB. NET, J# и других. Кроме этого, данная платформа содержит компоненты для взаимодействия с базами данных (библиотека ADO. NET) , для создания интерфейсов (Windows Forms, ASP. NET, ASP. NET MVC, WPF, Silverlight) , удаленного взаимодействия (WCF, Web Services,. Net Remoting, Sockets) и многие другие, значительно облегчающие решение стандартных задач по разработке корпоративных приложений. В нашей компании технология Microsoft. Net используется практически с момента выхода ее первой версии и в настоящее время многие проекты уже реализуются с использованием многих новшеств, появившихся в. Net Framework 3.5.
При выборе подходящего стека технологий для новых проектов мы стремимся соблюсти разумный баланс между перспективностью и надежностью той или иной технологии. В настоящее время типичный стек технологий для систем автоматизации бизнес-процессов выглядит следующим образом. Для разработки интерфейса мы используем технологии ASP. NET MVC (http://www.asp.net/mvc/) и Classic ASP. NET, AJAX, jQuery (http://jquery.com/) , Silverlight, для реализации слоя доступа к данным практически во всех наших проектах мы используем средство объектно-реляционного отображения NHibernate (https://www.hibernate.org/343.html) , для управления зависимостями — контейнеры Castle Windsor (http://www.castleproject.org/container/index.html) и Spring. Net (http://www.springframework.net/). Кроме этого, для построения медицинских систем мы используем некоторые специальные библиотеки обработки изображений такие, как dcmtk и dcm4che. Эти системы имеют богатый пользовательский интерфейс, реализованный на Windows Forms. Для взаимодействия с серверной частью используются веб-сервисы и собственная библиотека, реализующая модель передачи сообщений поверх протокола TCP/IP. Во многих наших приложениях особое внимание уделяется работе с кодом, работающим в многопоточном окружении.
Для повышения качества разрабатываемых нами решений и повышения эффективности разработки мы стремимся придерживаться основных принципов test driven development – для этого мы используем разные (в зависимости от проекта) инструменты семейства xUnit, кроме этого в каждом проекте используется build server для обеспечения процесса непрерывной интеграции разрабатываемого кода. Это позволяет нам поддерживать код в консистентном состоянии и значительно снизить затраты на сборку приложений. В качестве серверов сборки мы используем Atlassian Bamboo и Cruise Control. Net.
Для обеспечения удобства коллективной разработки мы используем систему управления версиями исходных кодов Subversion (http://subversion.tigris.org/) , которая обеспечивает централизованное хранение исходных текстов, доступ к ним через интернет (по защищенному протоколу https) , а так же в ней достаточно легко решается проблема разрешения конфликтов при одновременном внесении изменений в один и тот же фрагмент кода. Для удобства управления изменениями и координацией деятельности разработчиков мы используем систему багтрекинга Atlassian Jira. Все вышеупомянутые сервисы доступны через Internet по защищенному каналу, что очень удобно для взаимодействия с удаленными филиалами и заказчиком.

