Библиотека сайта rus-linux.net
OSCAR
Глава 16 из книги "Архитектура приложений с открытым исходным кодом", том 2.
Оригинал: OSCAR
Автор: Jennifer Ruttan
Перевод: А.Панин
16.1. Системная иерархия
Являясь веб-приложением Tomcat, система OSCAR по большей части следует шаблону проектирования "модель-представление-контроллер" (MVC). Это значит, что код модели (объекты доступа к данным - Data Access Objects, или DAO) отделен от кода контроллера (сервлетов), а их код, в свою очередь, отделен от представлений (генерируемых с использованием технологии Java Server Pages или JSP). Наиболее важным различием между контроллером и представлениями является то, что сервлеты являются классами, а с помощью технологии JSP формируются HTML-страницы, разметка которых производится с помощью кода на языке Java. Данные размещаются в памяти во время выполнения сервлета и при использовании технологии JSP производится чтение этих же данных, обычно путем чтения и записи атрибутов объекта обработки запроса. Практически любая станица, созданная с использованием технологии JSP в рамках системы OSCAR, спроектирован таким же образом.
16.2. Принятые в прошлом решения
Я упоминала о том, что OSCAR является достаточно взрослым проектом. Это обстоятельство оказало воздействие на эффективность применения в рамках проекта шаблона проектирования MVC. Если говорить кратко, существуют участки кода, в которых этот шаблон проектирования вообще не используется ввиду того, что они были разработаны до момента начала активного применения шаблона проектирования MVC. Некоторые из наиболее часто используемых возможностей реализованы именно таким образом; например, выполнение множества действий с демографическими данными (записями пациентов) осуществляется в рамках файла исходного кода demographiccontrol.jsp
- эти действия включают создание записей пациентов и обновление их данных.
Возраст системы OSCAR является препятствием для решения множества проблем, затрагивающих дерево исходного кода на сегодняшний день. На самом деле были приложены значительные усилия для улучшения ситуации, среди которых принудительное использование правил проектирования в ходе процесса обзора исходного кода. Этот подход, выбранный сообществом на данный момент, служит для повышения качества процесса взаимодействия в будущем и предотвращения попадания некачественного исходного кода в кодовую базу проекта, что было проблемой в прошлом.
Этот подход ни в коем случае не является ограничением того, как мы могли бы проектировать части системы сегодня; однако, этот подход усложняет процесс принятия решений при исправлении ошибок в устаревших частях системы OSCAR. Если вам или кому-то другому предстоит исправить ошибку в функции создания записи пациента, будете ли вы исправлять ошибку, используя тот же стиль, что был применен при создании существующего кода? Или все-таки вы заново полностью разработаете модуль, точно следуя шаблону проектирования MVC?
Являясь разработчиками, мы должны трепетно взвешивать наши возможности в подобных ситуациях. Не существует гарантии того, что если вы повторно спроектируете часть системы, не будет допущено новых ошибок и в том случае, когда производится работа с реальными данными пациентов, решение должно приниматься чрезвычайно аккуратно.
16.3. Управление версиями
Большую часть периода существования проекта OSCAR для управления деревом исходного кода использовалась система контроля версий CVS. Вносимые изменения обычно не проверялись на корректность, поэтому имелась возможность добавить в репозиторий код, который мог привести к невозможности сборки. Разработчикам было сложно отслеживать изменения, особенно в случае присоединения к команде новых разработчиков на поздних этапах жизненного цикла проекта. Новый разработчик мог увидеть что-либо, что он желал бы изменить, внести изменения и отправить их в ветку исходного кода за несколько недель до того, как кто-либо заметит значительные модификации (данная ситуация особенно актуальна в период длительных праздников, таких, как Рождественские каникулы, в течение которых очень малое количество людей исследует дерево исходного кода).
Но положение вещей изменилось: дерево исходного кода проекта OSCAR на сегодняшний день находится под управлением системы контроля версий git. Любые модификации кода из основной ветки должны преодолеть проверку стиля кода и модульное тестирование, быть успешно скомпилированы и проверены разработчиками. (Большая часть этой работы выполняется с помощью комбинации сервера системы непрерывной интеграции Hudson и инструмента проверки стиля исходного кода Gerrit.) Управление проектом стало более надежным. Многие проблемы, вызванные некорректной работой с деревом исходного кода проекта, были решены.
Далее: Модели данных/DAO