Управление версиями
Применительно к разработке программных средств, управление версиями — это искусство управления параллельными изменениями. Обычно системы управления версиями действуют как центральные хранилища или архивы, и предоставляют управляемый интерфейс для доступа и коллективного использования кода (и, возможно, документации).Применительно к разработке программных средств, управление версиями — это искусство управления параллельными изменениями. Обычно системы управления версиями действуют как центральные хранилища или архивы, и предоставляют управляемый интерфейс для доступа и коллективного использования кода (и, возможно, документации).
Представьте ситуацию, когда двум членам группы необходимо работать над одним и тем же файлом. Они могут открыть и редактировать файл одновременно, перезаписывая изменения друг друга. Либо каждый из них располагает собственной копией файла и редактирует ее на свой лад в автономном режиме. Бывает также, что один программист просто бездействует в ожидании, пока другой не завершит редактирование файла.
Система управления версиями позволяет решить все эти проблемы.
Подобные системы способны отслеживать изменения каждого файла в архиве таким образом, чтобы пользователь мог видеть не только его текущее состояние, но и содержимое в любой момент времени в прошлом. Эта функция позволяет выполнять откат ошибочного кода, чтобы вернуться к работоспособной версии. Определенный набор экземпляров файла можно пометить как окончательную версию. Это означает, что можно продолжать разработку кода, но всегда иметь доступ к копии версии, которая на данный момент считается окончательной.
Кроме того, системы управления версиями помогают нескольким программистам одновременно работать над кодом. Каждый программист может получить копию кода в архиве (этот процесс называется выдачей). После внесения изменений новый вариант можно поместить обратно в архив. В этом случае считается, что версия принята или предоставлена. Поэтому системы управления версиями могут отслеживать, какие пользователи вносят изменения.
Обычно подобные системы способны управлять одновременными обновлениями. Это означает, что два программиста могут одновременно модифицировать один и тот же файл.
Система управления версиями, используемая большинством разработчиков UNIX и/или Open Source, называется CVS (Concurrent Versions System — система параллельных версий). Система CVS относится к категории программного обеспечения с открытым исходным кодом и входит в поставку практически каждой версии UNIX. Кроме того, ее можно приобрести для систем DOS, Windows и Macintosh. Она поддерживает модель клиент/сервер, поэтому можно просматривать код на любом компьютере через Интернет-соединение, если сервер CVS доступен в сети. По этой причине система использовалась при разработке PHP, Apache, Mozilla и других крупных проектов, по крайней мере, частично.
CVS можно выгрузить из Web-сайта по адресу:
http://www.cvshome.org/
Хотя базовая версия CVS является инструментом командной строки, различные дополнения, включая модули на основе Java и Windows, реализуют для нее более при влекательный интерфейс. Дополнения также можно выгрузить из упомянутого выше сайта.
Существуют коммерческие альтернативы CVS. Одна из них — Microsoft Visual Source Safe — тесно интегрирована с продуктами Visual Studio.
Выбор среды разработки
Управление версиями можно развить в более широкую тему среды разработки. Для программирования абсолютно необходимы лишь текстовый редактор и браузер для целей тестирования. Однако многие пользователи РНР выражают заинтересованность в интегрированной среде разработки (IDE — integrated development environment). В настоящее время не существует совершенной IDE для программистов на РНР. Конечно, можно выгрузить либо написать собственное расширение, реализующее выделение элементов синтаксиса, для существующего редактора либо готовых пакетов веб-программирования. Многие из подобных продуктов доступны в сети (их слишком много, чтобы перечислять здесь — необходимо подбирать те, что соответствуют применяемому редактору).
Существует несколько интересных бесплатных проектов по созданию независимой автономной интегрированной среды разработки для PHP, среди которых стоит отметить KPHPDevelop, которая ориентируется на среду рабочего стола KDE для Linux. Дополнительную информацию по этому проекту можно получить по адресу:
http://kphpdev.sourceforge.net/
Ntv не менее, следует заметить, что в настоящее время лучшие IDE для PHP являются коммерческими.
Документирование проектов
Ниже приводится неполный список различных типов документации для программных проектов:
- Проектная документация.
- Техническая документация/руководство разработчика.
- Словарь данных (включая документацию по классам).
- Руководство пользователя (хотя большинство веб-приложений должны быть самоочевидными).
Здесь наша цель состоит не в том, чтобы обучать написанию документации, а в рекомендациях по снижению трудозатрат за счет частичной автоматизации процесса.
В некоторых языках существуют методы автоматической генерации некоторых из перечисленных документов — в частности, технической документации и словарей данных. Например, программа javadoc генерирует дерево HTML-файлов, содержащее модели и описания членов классов для Java-программ.
Для РНР существует немало утилит подобного рода. Ниже перечислены некоторые из них:
- phpdoc, доступная по адресу:
http://www.phpdoc.de/
Это система, которая использовалась для документирования кода библиотеки PEAR. Обратите внимание, что термин phpDoc используется для описания целого множества проектов подобного типа, и это лишь один из них.
- PHPDocumentator, доступная по адресу:
http://phpdocu.sourceforge.net/
PHPDocumentator дает возможность получать документы, во многом подобные генерируемым программой javadoc, и довольно надежна в работе.
- phpautodoc, доступна по адресу:
http://souceforge.net/projects/phpautodoc/
Эта программа также генерирует вывод, подобный утилите javadoc.
Для поиска других приложений данного типа (и РНР-компонентов вообще) хорошо подходит сайт SourceForge:
http://sourcefoge.net
Продукты SourceForge, в основном, используются сообществом пользователей UNIX/Linux, но существует множество проектов и для других платформ.
Создание прототипов
Созданием прототипов называют определенный этап разработки, широко используемый для написания веб-приложений. Прототип служит удобным средством отработки требований заказчика. Обычно прототип представляет собой частично работающую версию приложения, которую можно обсуждать с клиентом и которая служит основой окончательной версии. Часто окончательная версия получается в результате многочисленных переработок модели. Преимущество такого подхода состоит в возможности тесного взаимодействия с клиентом или конечным пользователем с целью создания приемлемой системы. Кроме того, в какой-то мере клиент становится совладельцем продукта.
Чтобы быстро "сколотить" модель, необходимы определенные навыки и утилиты. Вот где себя оправдывает модульный принцип проектирования. Наличие доступа к набору готовых компонентов существенно ускоряет построение модели. Другим удобным средством быстрого создания моделей служат шаблоны, которые рассматриваются дальше.
Построение моделей связано с двумя основными проблемами. Необходимо иметь о них представление, чтобы избегать затруднений, а также использовать этот подход с максимальной эффективностью.
Первая проблема связана с тем, что программисты часто находят затруднительным отбрасывать код, который они по той или иной причине написали. Модели обычно создаются быстро, но впоследствии становится очевидным, что прототип построен не самым оптимальным образом. Нелепые фрагменты кода еще можно исправить, но когда структура в целом неприемлема, положение становится серьезным. Дело в том, что веб-приложения обычно создаются в предельно сжатые сроки, и времени на исправление может попросту не остаться. В результате получается неудачно построенная система, которой трудно управлять.
Во избежание этого необходимо применить элементы планирования, о чем речь шла выше. Иногда проще что-то переделать заново, нежели пытаться исправить. Может показаться, что на планирование просто нет времени, но впоследствии оно избавит от множества забот.
Вторая проблема состоит в том, что система может превратиться в вечный прототип. Каждый раз когда, казалось бы, работа завершена, заказчик предлагает новые усовершенствования, дополнительные функциональные возможности и обновления сайта. Из-за такого наплыва требований проект, возможно, никогда не сможет быть завершен.
Во избежание подобной ситуации, составьте план с фиксированным количеством версий и датой, после истечения которой нельзя добавлять новые функции без повторного планирования, составления сметы и графика.
Разделение логики
Возможно, вам уже знакома идея использования HTML для описания структуры веб-документов и применения каскадных таблиц стилей (CSS — cascading style sheets) для описания их оформления. Этот принцип отделения содержимого от представления можно распространить и на создание сценариев. Обычно долговременное содержание сайтов осуществляется проще, когда реализовано разграничение логики и содержимого. Это сводится к разделению PHP-кода и HTML-кода.
Для простых проектов с небольшим количеством строк кода эффект от реализации данного принципа может не оправдать затрачиваемых усилий. По мере разрастания проекта становится важным найти способ разграничения логики и содержимого. В противном случае кодом будет все сложнее и сложнее управлять. Если возникает необходимость изменить оформление веб-сайта, а элементы форматирования тесно связаны с HTML-кодом, подобная работа может превратиться в настоящий кошмар.
Ниже перечислены три основных подхода к разделению логики и содержимого:
- Для хранения различных частей содержимого используйте подключаемые файлы. Это упрощенный подход, но вполне эффективный, если сайт в основном статичный. Данное решение обсуждалось на примере вымышленной компании АВС.
- Воспользуйтесь API-интерфейсом функций либо классов с набором собственных функций для подключения динамического содержимого к статическим шаблонам страницы. Такой подход был рассмотрен ЗДЕСЬ.
- Воспользуйтесь системой шаблонов. Она анализирует статические шаблоны и применяет регулярные выражения для замены дескрипторов-заполнителей динамическими данными. Главное преимущество данного решения состоит в том, что проектировать шаблоны может кто-то другой, кому совершенно не требуется вникать в PHP-код. Необходимо иметь возможность использования предоставляемых шаблонов с минимальными изменениями.
Существует целый набор систем шаблонов. Возможно, наиболее популярной из них является система Smarty, которая доступна по следующему адресу:
http://smarty.php.net/
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться