Проектирование приложений

Проектирование приложений - многоступенчатый процесс, включающий в себя постановку задачи, разработку модели программной системы, реализацию полученной модели, разработку дизайна системы, организацию безопасной работы, тестирование и анализ результатов работы системы и еще много всего. В данной работе будут рассмотрены основные этапы работы над приложением баз данных. В приведенных примерах принимается, что разработка проводится для 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
При публикации данного материала ссылка на источник обязательна.

Hosted by uCoz