Л.Е. Карпов - Системы программирования (1114903), страница 20
Текст из файла (страница 20)
Всевариации конфигураций можно получать, используя развитые языки управлениязаданиями современных операционных систем, например, возможности условноговызова программ системы программирования или значения переменных системногоокружения.Примыкает к такому способу управления конфигурацией работа винтегрированных средах разработки программного обеспечения. Такие системы умеютработают с “проектом программного комплекса”, который включает в себя все файлыкомплекса (как с текстами программ, так и с библиотечными модулями), а такжережимы их обработки. Интегрированные среды позволяют гибко переходить ототладочной конфигурации комплексов к оптимизированной конфигурации, чтооблегчает процесс сопровождения уже разработанных программ.Перечисленные способы управления обладают своими преимуществами(простотой или удобством), но имеют один существенный недостаток.
Ихиспользование возможно только в тех случаях, когда над разработкой илисопровождением программного комплекса работает один программист (если такихпрограммистов много, они должны работать последовательно друг за другом, сообщаядруг другу обо всех сделанных ими изменениях в программах). Однако в последнеевремя все чаще приходится видеть, что разработкой программ (тем более ихсопровождением) занимаются целые коллективы разработчиков.
Иногда этиколлективы работают в распределенном режиме в глобальной вычислительной сети.Реальную помощь таким коллективам при управлении конфигурациейформируемых программных комплексов могут оказать только специальноразрабатываемые системы управления версиями программ.
Эти системы способнывести централизованные базы данных программных проектов, к которым обеспеченколлективный доступ со стороны многих разработчиков одновременно.3.8. Системы управления версиями программных комплексовВ настоящее время многие системы программирования начали включать в свойсостав системы управления версиями. Например, в составе систем Visual Studioкомпании Microsoft, имеется система Visual SourceSafe, позволяющая создавать базыданных версий, включать файлы в состав версий программных проектов, отслеживатьисторию их изменений, сравнивать различные версии между собой. Имеется такжеопределенный выбор систем управления версиями, которые не привязаны жестко ккакой-либо системе прогр аммиро вания, а мо гут р аботать с любыми из них, ведя базыданных или репозитории файлов, составляющих законченные программные комплексы.Такие автономные системы управления версиями обычно удобны тем, чтопозволяют вести управления версиями особенно сложных программных комплексов –распределенных.
Эти программные комплексы не только работают, но и создаются враспределенном окружении, в котором разные программисты работают с разнымисистемами программирования, создавая относительно независимые компонентыединой сложной программы. В этих условиях особенно важно, чтобы р абота срепозиторием файлов велась в сетевом режиме с возможностью одновременногодоступа с многих рабочих мест. Такой сетевой репозиторий начинает играть рольпрограммного сервера, а рабочие места оказываются клиентами этого сервера.
Приэтом клиенты могут быть самыми разнообразными, они могут работать с разнымаппаратным обеспечением, с разными операционными системами, с разнымисистемами программирования. Необходимо лишь, чтобы система управления версиями73могла взаимодействовать со всеми ними по единым, понятным для всех правилам.Именно так и работают лучшие и наиболее используемые системы управленияверсиями, которые способны поддерживать до нескольких десятков операционныхсистем и нескольких тысяч клиентов, одновременно работающих над созданиемединого программного комплекса.Среди коммерческих систем наиболее широко используются системыуправления жизненным циклом программ Peforce SCM (Software ConfigurationManagement) и IBM Rational ClearCase. В задачу этих систем входит создание иизменение конфигураций программ, их комплексирование, регистрация поставок, атакже обеспечение повторного использования программ.
На клиентских местахразрешается использовать все наиболее распространенные операционные системы(Windows, UNIX, Linux, mainframe z/OS), а также наиболее современные системыразработки, включая Rational Application Developer, WebSphere Studio, Microsoft VisualStudio .NET, Eclipse.Широко известны и свободно распространяемые системы управления версиями,среди которых лидером является система CVS (Concurrent Versions System).
Сервернаячасть системы может работать под управлением любого варианта операционнойсистемы UNIX – FreeBSD, Linux и др. Клиентские части работают под управлениемUNIX систем, а также системы Windows.Система CVS поддерживает историю дерева каталогов (репозитория) сисходным кодом, работая с последовательностью изменений. Каждое изменение вфайлах репозитория маркируется моментом времени, когда оно было сделано, иименем пользователя, совершившим изменение.
Обычно человек, совершившийизменение, также предоставляет текстовое описание причины, по которой произошлоизменение. Система CVS может отвечать на такие вопросы:••••Кто совершил данное изменение?Когда они его совершили?Зачем они это сделали?Какие еще изменения произошли в то же самое время?Точно так же, как книгу выписывают из библиотеки, следует сначала получитьиз репозитория рабочее дерево каталогов.
Большинство этих файлов – рабочие копииисходных текстов. Однако самый первый подкаталог имеет другое назначение. CVSиспользует его для хранения дополнительной информации о каждом файле в этомкаталоге, чтобы определять, какие изменения внесены в них с тех пор, как их извлеклииз репозитория.После того, как рабочее дерево каталогов создано, можно редактировать,компилировать и проверять находящиеся в нем файлы.
Так как каждый разработчикиспользует собственный рабочий каталог, изменения, которые делает каждый из них всвоем каталоге, не становятся автоматически видимыми всем остальным. Когдаизменения будут проверены, их надо зафиксировать в репозитории и сделатьдоступными остальным.Перед тем, как фиксировать изменения, необходимо, чтобы исходные текстыбыли синхронизованы со всеми изменениями, которые сделали остальные членыгруппы.
Перед фиксацией система запускает текстовый редактор и просит ввестиописание изменений.74Система CVS позволяет узнать, какие изменения внесли другие разработчики.Журнальные записи выводятся на экран в обратном хронологическом порядке, исходяиз предположения, что недавние изменения более интересны.Система CVS обращается с добавлением и удалением файлов так же, как и спрочими изменениями, записывая такие события в истории файлов. Фактически,система сохраняет историю каталогов вместе с историей файлов, однако, система несчитает, что все созданные файлы должны оказаться под ее контролем; это не так вомногих случаях. Например, не требуется записывать историю изменений объектных ивыполняемых файлов, потому что их содержимое всегда может быть воссоздано изисходных файлов.Чтобы удалить файл из проекта, его помечают для удаления.
Фиксацияпомеченного файла не уничтожает историю этого файла – к ней просто добавляетсяеще одна редакция (“не существует”). В репозитории по-прежнему хранятся все записиоб этом файле, и к ним можно обращаться по желанию.CVS объединяет изменения, сделанные разными разработчиками. Ситуацияпроста, если изменения были совершены в разных участках файла, но может бытьизменена одна и та же строка, что называется конфликтом. CVS не понимаетсемантики программы, она обращается с исходным кодом просто как с деревомтекстовых файлов.
Если один разработчик добавляет новый параметр в функцию иисправляет все ее вызовы, пока другой разработчик одновременно добавляет новыйвызов этой функции, и не передает ей этот новый параметр, что определенно являетсяконфликтом (два изменения несовместимы), то система CVS не сообщит об этом. Еепонимание конфликтов строго текстуально.На практике, однако, конфликты случаются редко.
Обычно они происходятпотому, что два человека пытаются справиться с одной и той же проблемой, плоховзаимодействуя между собой. Правильное распределение задач между разработчикамиуменьшает вероятность конфликтов.Многие системы контроля версий позволяют разработчику блокировать файл,предотвращая внесение в него изменений до тех пор, пока его собственные измененияне будут зафиксированы.
Блокировки уместны в некоторых ситуациях, но ихиспользование не всегда лучше, чем использование CVS без блокировок. Измененияобычно объединяются без проблем, а разработчики иногда забывают убратьблокировку, в обоих случаях явное блокирование приводит к ненужным задержкам.Более того, блокировки предотвращают только текстуальные конфликты – они ничегоне могут поделать с семантическими конфликтами типа вышеописанного, когда дваразработчика редактируют разные файлы.В настоящий момент активно ведется разработка нового проекта Subversion,учитывающего положительные стороны системы CVS. Он будет распространяться сисходными текстами по свободной лицензии.3.9. Средства отладки и тестирования программЛюбая полезная программа может содержать ошибки даже после ее передачипользователям.