Эксплуатация ПО вместе с командой разработки

Обратная связь между пользователями и группой разработки очень часто является важным фактором успех проекта, особенно на стадии пилотной эксплуатации. Заказная или внутренняя разработка приложений требует, чтобы проблемы, которые возникают у пользователей, решались как можно быстрее. Самым привычным способом коммуникаций при этом является телефон или электронная почта. Такой способ не всегда хорошо работает. Например, если идет пилотная эксплуатация, пользователи могут не знать куда звонить или отправлять письма с описанием проблем. К тому же, качество таких коммуникаций может сильно зависеть от опыта пользователей.

Если команда использует TFS для организации процессов разработки, то идеально чтобы проблемы, которые возникают у пользователей регистрировались в TFS проекте в виде ошибок. В некоторых случаях возможно даже предоставление доступа к Team Web Access пользователям разрабатываемой системы, для того чтобы они сами могли создавать ошибки. Но это тоже не всегда удобно, так как пользователи могут не обладать необходимыми навыками.

Очевидным выходом из положения является интеграция приложения с Team Foundation Server для предоставления пользователю возможности прямо из эксплуатируемой системы сообщить о возникших проблемах. При этом само ПО может собрать дополнительную диагностическую информацию и создать баг на сервере.

Team Foundation Server API

TFS снабжен программным интерфейсом который позволяет работать практически со всеми компонентами, в том числе управлять рабочими элементами. В простейшем случае достаточно подключить две библиотеки Microsoft.TeamFoundation.Client.dll и Microsoft.TeamFoundation.WorkItemTracking.Client.dll и у вас уже будет возможность создавать и управлять рабочими элементами.

Например, код который создет рабочий элемент очень краток:

projectCollection = TfsTeamProjectCollectionFactory. GetTeamProjectCollection(new Uri ("http://tfs_server_address:8080/tfs")); var workItemStore = projectCollection. GetService<WorkItemStore>(); var workItemTypes = workItemStore. Projects["ProjectName"].WorkItemTypes; var workItem = new WorkItem (workItemTypes["bug"]) { Title="Bug created programmatically" }; workItem.History = "sometext";workItem.Save();

Подключить его к вашему приложению не составит никакого труда.

Более детальные примеры работы с TFS можно посмотреть на сайте MSDN.

Сложности и их решения

В случае если вы разрабатываете настольное приложение, такой способ обладает рядом недостатков. В первую очередь они связаны с аутентификацией и авторизацией пользователя на сервере TFS, и требуют создания учетной записи на сервере, или его имперсонации. Так же на компьютер пользователя в обязательном порядке требуется установка Team Foundation Server Client, что может быть не всегда удобным. Таких недостатков лишено серверное приложение, например веб-сайт на базе ASP.NET. Самым очевидным решением в случае с настольными приложениями видится создание веб-сервиса и его вызов из приложения.