Добавлен: 24.05.2023
Просмотров: 176
Скачиваний: 2
Ключевым фактором успеха проектного управления является наличие чёткого заранее определённого плана, минимизации рисков и отклонений от плана, эффективного управления изменениями (в отличие от процессного, функционального управления, управления уровнем услуг).
3.1 Подходы в программировании для менеджеров проектов
В зависимости от задач и ресурсов, определяется методология и подход в разработке. В частности, если требования известны, понятны и зафиксированы, и противоречивых требований не имеется, используется каскадная модель [97]. Её уместно задействовать в относительно небольших проектах, где нет проблем с доступностью программистов нужной квалификации. Учитывая, что список требований нельзя скорректировать в любой момент, продукты, разработанные по данной модели без обоснованного ее выбора, могут иметь недочеты, о которых становится известно лишь в конце, из-за строгой последовательности действий. Стоимость внесения изменений высока, так как для ее инициализации приходится ждать завершения всего проекта. Тем не менее, фиксированная стоимость часто перевешивает минусы подхода.
Если же ситуация противоположна, и функциональность варьируется, в то время как сроки и ресурсы строго фиксированы, то когда четко определены некоторые приоритетные направления разработки проекта, разумно применять концепцию RAD (rapid application development model или быстрая разработка приложений), которую также часто связывают с концепцией визуального программирования [98]. Во второй главе я приводил примеры IDE, соответствующих этой концепции. RAD может использоваться только при наличии высококвалифицированных и узкоспециализированных архитекторов. Бюджет проекта большой, чтобы оплатить этих специалистов вместе со стоимостью готовых инструментов автоматизированной сборки. RAD-модель может быть выбрана при уверенном знании целевого бизнеса и необходимости срочного производства системы в течение 2-3 месяцев.
Когда требуется тщательное тестирование продукта, то разумно использовать V-модель, которая больше ориентирована на малые и средние проекты, где требования также четко определены и фиксированы, и в условиях доступности инженеров необходимой квалификации, особенно тестировщиков. V-модель применима к системам, которым особенно важно бесперебойное функционирование.
В отличие от каскадной, в гибкой модели (Agile) для старта проекта достаточно лишь небольшого планирования. Она наиболее уместна, когда потребности пользователей постоянно меняются в динамическом бизнесе, а изменения на Agile реализуются за меньшую цену из-за частых инкрементов [99].
Частным примером является проект Электронной Системы Медицинских Осмотров, созданная для проведения массовых медосмотров в считанные минуты [100].
Если требования к конечной системе заранее четко определены и понятны, но проект большой или очень большой, и в то же время, основная задача должна быть определена, но детали реализации могут эволюционировать с течением времени, эффективна итеративная модель [101]. Примером итерационной разработки может служить распознавание голоса. Идеальное распознавание еще не достигнуто, следовательно, задача еще не решена полностью.
3.2 Прикладной аспект отдельных инструментов разработки
Выбор языка программирования
При выборе языка программирования, стоит ориентироваться на тот, что уже знаком, поскольку обучение неизученному языку может занимать от 3 до 6 месяцев. Также, при выборе команды разработчиков, разумно опираться на единый язык для веб-программирования.
Если задачи относительно простые, но использование CMS недостаточно, то стоит ориентироваться на высокоуровневые языки, поскольку это также повысит производительность [102][103].
Очевидно, что чем более распространён язык, например, PHP, тем проще найти команду разработчиков на нём, воспользовавшись конкуренцией на рынке. Таким образом, обеспечивается больший выбор при меньших затратах. Исключением является ситуация, где требуется более специализированный язык для повышения производительности. Имеет смысл ориентироваться на возможности и ограничения того или иного языка, что не входит в задачи данного исследования.
Также как использование высокоуровневого языка имеет преимущество перед низкоуровневыми, подход с использованием каскадов веб-приложений и CMF заменил устаревшего способа написания веб-приложений, а IDE упростили сам процесс разработки. Однако, у IDE также имеются контексты применения.
Особенности каркасов веб-приложений
Фреймворки определяют архитектуру приложения, поскольку представляют собой набор модулей, библиотек и соглашений для облегчения разработки повседневных задач и объединения компонентов сложной системы.
К задачам фреймворка можно отнести обработку входных данных, вызов обработчика бизнес-логики, и вывод данных, а также дополнительные: создание и валидация форм, пре- и пост- обработка данных, работа с хранилищем данных [22]. Практически все фреймворки выполняют похожий функционал – разница в синтаксисах и дополнительных возможностях.
Примеры основных фреймворков по языкам программирования:
- PHP: Yii, Symphony, Zend;
- Python: Django;
- Ruby: Ruby on Rails;
- Perl – Mojolicious, Dancer, Catalyst.
Сравнение CMS и каркасов веб-приложений
Большая часть каркасов веб-приложений реализует шаблон проектирования Model-View-Controller (MVC). Однако, также могут использоваться и другие шаблоны, например, Model-View-Presenter (Backbone.js) или Model-View-ViewModel (Knockout.js) [104].
Если основная задача универсальных CMS — простота создания сайта без вмешательства программиста, то есть — конструктор сайтов, то CMF — это конструктор CMS (в том числе узкоспециализированных) для программиста [23]. Благодаря такому подходу сайт, созданный с помощью CMF, по сравнению с сайтом на базе CMS, может иметь более простую и безопасную в работе административную панель (в которой отсутствуют функции настройки сайта под любые функции) и быть менее требовательным к ресурсам системы (каждый модуль реализует именно те функции, которые необходимы в работе сайта). При наличии грамотно спроектированной CMF и готовых модулей, программисту остаётся только сборка этих модулей в единое пространство и оформление вывода в соответствии с пожеланиями клиента, то есть разработка сайта на основе CMF вполне сравнима по трудоёмкости с разработкой сайта на универсальной CMS.
Сложности могут возникнуть, если программист-пользователь фреймворка столкнётся с программными ошибками в его реализации. Не будучи экспертом в архитектуре фреймворка, он может испытывать затруднение с её локализацией, не может быть уверен, сделал ли он ошибку сам, или столкнулся с ошибкой в CMF. Глубокие знания архитектуры фреймворка могут понадобиться и при его тонкой настройке, если программист желает получить максимальную производительность [23].
Веб-фреймворк обеспечивает бесшовную интеграцию всех трёх слоёв MVC архитектуры. Фреймворки скрывают от программиста детали подключения к базе данных и формирования веб страниц с помощью шаблонов-представлений, позволяя программисту сконцентрироваться на реализации бизнес-логики [22].
Процесс создания приложения с использованием MVC-фреймворка заключается в написании классов контроллеров, моделей и представлений, каждый из которых является наследником базовых классов для компонентов каждого слоя.
Многие веб-фреймворки обеспечивают полуавтоматическое создание прототипа веб-приложения, выполняющего основные операции с данными путём скаффолдинга, то есть, методом метапрограммирования для создания веб-приложений, взаимодействующих с базой данных [105].
Важные характеристики фреймворка:
-
- Размер. При выборе CMF стоит обращать внимание на такие факторы, как размер фреймворка. Если фреймворк слишком велик и не имеет легко разделяемой модульной архитектуры, это может неоправданно утяжелить приложение. Компактность фреймворка может вступить в противоречие с широтой возможностей, которые он предоставляет;
- Производительность — важная на практике характеристика веб-фреймворка. Она может косвенно зависеть от размера, особенно для интерпретируемых языков вроде PHP. Следует оценивать производительность фреймворка в таких единицах, как количество обрабатываемых в секунду запросов [23].
Шаблоны и библиотеки в разработке веб-приложений
Шаблоны снижают сложность, предоставляя информацию о коде; снижают число ошибок за счёт стандартов; ускоряют проектирование, но требуют адаптации [106].
Есть сборники кода, шаблонизаторы: использование шаблонов для генерации страниц (назначение – отелить представление от бизнес-логики); различия между шаблонами: синтаксис и скорость работы (интерпретация, компиляция).
Задачи использования шаблонов и библиотек:
-
- обработка текста;
- работа с почтой;
- работа с хранилищами: работа с API хранилища (драйверы, ODBC, JDBC и т. д.), ORM – объектно-реляционная проекция;
- графика;
- криптография.
Веб-шаблоны могут быть использованы любым лицом или организацией с целью создания своего веб-сайта [107].
После того как шаблон куплен или скачан, пользователь может полностью заменить общую информацию, содержащуюся в веб-шаблоне на свою личную информацию, информацию об организации или продукте.
Шаблоны могут быть использованы для отображения личной информации или ежедневной активности в блогах, для продажи продуктов в онлайн режиме, для отображения информации о компании или организации, истории семьи, галереи фотографий, онлайн размещения музыкальных и видео файлов и проигрывания через веб-браузер, для настройки области входа в приватную часть сайта [106].
Общая цель опытных веб-разработчиков — разработка и развертывание гибких и легко сопровождаемых приложений.
Важным моментом в достижении этой цели является отделение бизнес-логики от логики представления. Разработчики могут использовать системы веб-шаблонов (с разной степенью успеха), чтобы сохранить такое разделение [107].
Одним из основных обоснований для «эффективного разделения» является необходимость обеспечить максимальную гибкость кода и ресурсов, описывающих логику представления. Требования клиента, изменение потребительских предпочтений или желание «освежить лицо» с сохранением ранее существовавшего содержания часто приводят к необходимости существенно изменить дизайн веб-контента, по возможности, без нарушения основной инфраструктуры сайта.
Различие между «представлением» (дизайном) и «бизнес-логикой» (инфраструктурой), как правило, имеет важное значение [24], потому что:
-
- исходный язык кода представления может отличаться от языка кода других ресурсов;
- в ходе производственного процесса может потребоваться работа по внесению изменений в разное время и в разных местах;
- разные работники владеют различными навыками: дизайнерские умения не всегда совпадают с навыками кодирования бизнес-логики;
- когда разрозненные компоненты хранятся отдельно и слабо связаны, тогда код легче поддерживать, он становится более удобен для чтения.
Не у всех потенциальных пользователей веб-шаблонов есть желание и возможность нанять разработчиков для проектирования системы в соответствии с их потребностями. Кроме того, возможно, что некоторые из них хотят использовать сеть, но почти не имеют технических знаний. По этим причинам ряд индивидуальных разработчиков и компаний выпускают веб-шаблоны специально для повторного использования людьми, не имеющими технической квалификации.
К тому же, веб-шаблоны для повторного использования могут быть очень полезны даже для высококвалифицированных и опытных разработчиков, это особенно важно для тех, кто полагается на простоту и «готовые» веб-решения. Такие «готовые» веб-шаблоны иногда бывают свободно доступны, и их легко приспособить под конкретные требования [107].
Специализированные шаблоны могут быть предметом продажи через интернет. Существует множество коммерческих сайтов, которые предлагают веб-шаблоны по платным лицензиям. Также существуют источники бесплатных шаблонов и шаблонов с открытым исходным кодом [106].
Использовать веб-шаблоны для генерации конечных html-страниц можно с помощью шаблонизаторов. Часто это необходимо для обеспечения возможности параллельной работы программиста и дизайнера-верстальщика. Использование шаблонизаторов часто улучшает читаемость кода и внесение изменений во внешний вид, когда проект целиком выполняет один человек.