Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Автоматизация разработки





Многие современные программные продукты насчитывают миллионы строчек кода, десятки тысяч файлов. Совершенствуются десятилетиями при участии сотен разработчиков. Код программ одновременно редактируется людьми, нередко находящимися в разных помещениях, в разных организациях, в разных странах. Вносимые изменения могут содержать ошибки или быть противоречивыми. Любое изменение потенциально может сделать стабильную прежде систему неработоспособной. Разобраться в этой путанице позволяют т.н. системы контроля версий.

Системы контроля версий хранят историю изменений документов (в частности, файлов исходного кода) в виде периодических фиксаций их содержимого, а также дополнительной информации о том, кто вносил изменения, когда и с какой целью. Автоматическое ведение реестра изменений само по себе полезно и позволяет в случае необходимости вспомнить и проанализировать интересующие этапы разработки, найти тех, кто внес те или иные изменения.

Гораздо важнее оказывается возможность «отката» проекта к любому ранее зафиксированному состоянию. Такая возможность особенно важна в том случае, когда внесенные изменения сделали разрабатываемую систему нестабильной или неработоспособной.

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

Примечательно, что объемы хранилищ истории увеличиваются не столь катастрофично, поскольку изменения файлов запоминаются в виде приращений, т. е. запоминается не вся новая версия файла, а только то его место, которое изменилось (например, строчка с исправленной ошибкой). Особенно эффективно в этом смысле хранение текстовых файлов, а не двоичных.

Изначально системы контроля версий были централизованными (CVS, Subversion и пр.), т.е. хранилища истории располагались на сервере, а пользователи копировали из него временный срез (фиксацию, commit) проекта на локальные компьютеры, модифицировали файлы и фиксировали изменения в хранилище сервера.

Со временем все более популярными становятся т.н. распределенные системы контроля версий (Git, Mercurial, Bazaar и др.). Такие системы на каждом локальном компьютере хранят не отдельный временной срез проекта, а всю его историю целиком. Другими словами, каждое локальное хранилище содержит полный объем информации и является равноправным по отношению к остальным хранилищам. Такие системы менее уязвимы и в определенном смысле более удобны. При этом вполне допустимо хранить одно из таких хранилищ на сервере и условно называть его центральным (так чаще всего и делают). Не все ветви разработки обязаны вноситься в центральное хранилище. Например, экспериментальные ветви м. б. закрыты и оставлены на локальных компьютерах, чтобы не засорять основной проект.

Как правило, системы контроля версий управляются с командной строки, но для них имеется множество графических оболочек (Tortoise, QGit, SmartSVN, Giggle и др.). Многие системы контроля версий интегрированы в среды разработки (NetBeans IDE, Eclipse, Microsoft Visual Studio, Qt Creator и пр.). Пользуются популярностью сервисы, предоставляющие возможность расположения хранилищ в Интернете (GitHub, Bitbucket, SourceForge, Google Code, Launchpad и др.). Множество известных проектов пользуются подобными услугами (Linux, Android, Ruby on Rails, Qt, Joomla!, PHP, Mozilla, OpenOffice, Netbeans, OpenSolaris, Facebook, Yahoo, Twitter, Perl и пр.). Исходные коды большинства проектов открыты. Любой пользователь Интернета имеет возможность получить не только полную версию текстов программ со всей историей, но и стать полноправным участником разработки.

Системы контроля версий нередко интегрируются с системами управления проектами (Redmine, Trac, Bugzilla и пр.). Такие системы позволяют планировать и отслеживать разработку, назначая задачи, приоритеты, ответственных исполнителей и т.п.

Рассмотренные и многие другие инструменты автоматизации разработок (средства автоматической сборки проектов, прогонки тестовых примеров и пр.) реализуют, на первый взгляд, тривиальные возможности, однако подобные мелочи играют колоссальную роль в больших проектах.

3.3 Когда базар строит собор [16]

Ниже приводится два примера разной организации разработки проектов с участием большого числа разработчиков. Первый пример основан на статье «Восход и закат CORBA» Мичи Хеннинга [16], в которой раскрываются глубинные причины провала проекта CORBA – одного из наиболее финансируемых и коммерчески востребованных проектов своего времени. Во втором примере рассматривается процесс разработки интегрированной настольной системы KDE – одного из самых крупных мировых проектов с открытым программным кодом. Пример основан на статье Тиля Адама и Мирко Бёма из книги [4].

Date: 2015-09-24; view: 458; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию