Проектирование приложений
Проектирование приложений - многоступенчатый процесс, включающий в себя
постановку задачи, разработку модели программной системы, реализацию
полученной модели, разработку дизайна системы, организацию безопасной
работы, тестирование и анализ результатов работы системы и еще много
всего. В
данной работе будут рассмотрены основные этапы работы над приложением
баз данных.
В приведенных примерах принимается, что разработка проводится для
web-приложения на PHP c MySQL.
Стандарт программирования
Очень желательно писать программу, придерживаясь некоторого стандарта.
Такой подход сильно облегчает жизнь,
когда приложение
разрастается и работать над ним приходится нескольким программистам,
зачастую сменяющим друг друга. В стандарте необходимо учесть следующие
моменты:
- Основные принципы построения БД. Применительно к MySQL это означает
использование единой машины баз данных (как правило, выбирается MyISAM
или InnoDB), использование единой кодировки и единых правил создания
ключей, индексов, триггеров и хранимых процедур и т.д. Работа с
объектами БД в рамках одной программной системы должна вестись
единообразно.
- Именование объектов БД и программы. Имена на объекты БД (таблицы,
представления, процедуры, поля) и объекты программы (переменные,
функции, модули, объекты) должны назначаться по единым правилам, вплоть
до использования прописных и строчных букв.
- Использование одинаковых приемов программирования. В большинстве
случаев системы программирования позволяют получить один и тот же
результат разными путями, поэтому при коллективной работе похожие
действия (например,
доступ к данным) должны осуществляться одними и теми же средствами
(например, используя те же библиотеки и функции). Иначе коллективная
работа над проектом становится очень затруднительной, не говоря о
распространенной ситуации, когда программист увольняется, его работа
должна быть продолжена другим, а он не понимает ничего из того, что там
понаписал первый.
Стандарт может быть любым,
главное, чтобы он выдерживался во всем проекте. Пример стандарта
стилевого оформления программ на Delphi смотри в полезных ссылках.
При
некоторой переработке его можно использовать для любого приложения с
учетом специфики языка программирования.
Дизайн приложения
Каждый - дизайнер, или считает себя таковым. Отсюда куча приложений с
запутанными меню, невообразимыми сочетаниями цветов и т.д. Так что
вопросу удобства использования (usability) нужно обязательно уделять
внимание и для начала не выдумывать ничего, а воспользоваться
проверенными рекомендациями. О дизайне web-приложений см. в полезных ссылках.
Если в web-приложении используется, например, библиотека визуальных
компонентов VCL for PHP, то внешний вид приближается к виду привычного
windows/linux-приложения. В этом случае рекомендации по дизайну будут
несколько другими. Об этом также см. в полезных ссылках.
Постановка задачи. Модель и структура
данных
см. здесь
Безопасность приложения
см. здесь
Тестирование и оптимизация
Полученная программа безусловно должна быть тщательно протестирована
на наличие ошибок и безопасность. Добавление или изменение любой
функциональности также должно тестироваться. О важности тестирования
говорит тот факт, что любая серьезная компания-разработчик ПО имеет в
своем штате специалистов-тестеров, которые только и делают, что гоняют
программу и сообщают о замеченных проблемах программистам. Совсем
крупные компании с большой аудиторией пользователей практикуют
публичное бета-тестирование, выдавая добровольцам беты своих программ
на предмет поиска ошибок. Подробнее о тестировании см. в полезных ссылках.
В процессе тестирования и работы выявляются, например, такие слабые
места приложения, как замедление работы при выполнении некоторых
функций или разрастании баз данных. Этого можно избежать, учитывая на
этапе программирования рекомендации по оптимизации кода приложения и
работы СУБД. Часть таких рекомендаций носит общий характер, часть
является специфическими для выбранной среды разработки. По оптимизации
PHP и MySQL см. полезные
ссылки.
Документирование
Пожалуй, самый неприятный этап для разработчика после тестирования.
Можно выделить две основных составляющих документирования:
1. Руководство разработчика. Включает описание структуры БД и объектов
программы. Предназначено для самого разработчика или других
разработчиков, если проект с открытым кодом. Инструментарий для
создания руководства разработчика может быть самым разнообразным - от
Блокнота до продвинутого редактора. Разработчикам на PHP нужно
обратить внимание на средства автоматизированного документирования
PHP-программ, например, phpDocumentor.
После расстановки специальных меток в тексте программы с помощью
phpDocumentor можно получить готовую справку.
2. Руководство пользователя. Предназначено понятно для кого и для
более-менее серьезных проектов совершенно необходимо. Описание
некоторых программ для составления справки см. в полезных ссылках.
Ну и, конечно, документация должна быть актуальной, то есть ее
необходимо постоянно править и дополнять.
Обновления и контроль версий
Если программа работает на одном сервере в одной организации, то
проблемы нет. Если же инсталляций много и предвидится изменение
функционала, то система обновлений необходима. Этот вопрос решается
по-разному, но, в любом случае, необходимо продумать следующие моменты:
- доставка обновления пользователю (через сайт, по подписке на
электронную почту или другим путем);
- способ установки обновления на компьютере пользователя;
- целостность данных (при обновлении структуры БД не должны быть
потеряны пользовательские данные);
- возможность отката к предыдущей версии программы и БД.
С обновлением функционала тесно связан вопрос контроля версий.
Разработчик должен четко представлять отличия новой версии от
предыдущей и фиксировать эти отличия для контроля и возможного отката.
Контроль версий можно автоматизировать, воспользовавшись
соответствующими программами (см. полезные ссылки).
Администрирование
Надо подумать и о тех, кто будет прогу администрировать. Для выполнения
административных действий в приложении должна присутствовать панель
администратора. Как минимум, должны быть реализованы функции работы со
списком пользователей, а также мониторинг работы системы на основе
анализа логов. Как максимум - из панели администрирования должны
производиться все действия по настройке и анализу работы системы.
Интернационализация
Даже если программа не будет эксплуатироваться нигде, кроме просторов
великого и могучего, предусмотреть возможность интернационализации не
помешает. Под интернационализацией понимают возможность адаптации
программы для работы пользователя из другой страны. Для этого
необходимо предусмотреть возможность замены всех надписей и сообщений
программы на другой язык, замену кодировки таблиц баз данных, перевод
даты/времени и валюты в другой формат. Пример интернационализации
приложения на PHP см. в полезных ссылках.
Инсталлятор
Очень желательно автоматизировать процесс инсталляции, чтобы
пользователь при первом запуске программы мог в диалоговом режиме
выбрать язык, настроить
соединение с базой, создать БД со всеми объектами, дать возможность
установить пример и т.д.
Итого
Как видим, собственно на творчество уходит процентов 20-30. Остальное -
рутина. Еще не расхотелось делать свое приложение? Если нет - тогда
вперед. Только имейте в виду, что с вероятностью, приближающейся к 100
%, кто-то уже делал что-то подобное. Так что перед началом разработки
нелишне будет слазить в интернет на предмет поиска аналогов. Даже если
в точности того, что нужно,
не найдется, наверняка удастся откопать что-то похожее. Поставьте и
проанализируйте - польза будет.
Полезные ссылки:
http://www.citforum.ru/programming/delphi/style_delphi/
(стандарт
стилевого оформления в Delphi)
http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F (тестирование,
англ.)
http://rusgraf.ru/graf7/ (дизайн
web-приложения)
http://www.postroika.ru/html/coding.html (правила
верстки html)
http://www.rsdn.ru/article/ui/appdesign.xml (дизайн
приложения)
http://php.spb.ru/php/speed.html (оптимизация
PHP)
http://www.botik.ru/~rldp/mysql/mysqlcli/glava14.htm (оптимизация
MySQL)
http://forum.shelek.ru/index.php/topic,9652.0.html (создание
документации)
http://www.techinfo.net.ru/docs/Version_Control_Systems.html (программы
контроля версий)
http://www.ibm.com/developerworks/ru/library/os-php-intl/index.html (интернационализация
приложения на PHP)
© re-stichka.narod.ru
При
публикации данного материала ссылка на источник обязательна.