exam01 - stankin/inet-2022 GitHub Wiki

Билет 1

1. Модели и технологии организации гибкой (agile) разработки программных средств.

2. Понятие браузера. Возможности и технологии управления объектной моделью документа (DOM).

Реферат к вопросам экзамена по дисциплине Интернет-технологии 1 курса магистратуры ▶️

Выполнили: Васильева Татьяна ИДМ-22-02, Еремин Илья ИДМ-22-05, Сосолятина Кристина ИДМ-22-07, Терентьев Александр ИДМ-22-03, Савочкина Дарья ИДМ-22-04, Воротников Игорь ИДМ-22-01

Модели и технологии организации гибкой (agile) разработки программных средств.

Гибкая методология - серия подходов к разработке программного обеспечения, ориентированных на использование итеративной разработки, динамическое формирование требований и обеспечение их реализации в результате постоянного взаимодействия внутри самоорганизующихся рабочих групп, состоящих из специалистов различного профиля.

Основные идеи гибких методологий:

  1. Люди и взаимодействие важнее процессов и инструментов.
  2. Работающий продукт важнее исчерпывающей документации.
  3. Сотрудничество с заказчиком важнее согласования условий контракта.
  4. Готовность к изменениям важнее следования первоначальному плану.

Основные идеи гибких методологий базируются на 12 принципах, изложенных в Agile-манифесте

Модели и технологии организации гибкой (agile) разработки программных средств - это подходы к разработке программного обеспечения, которые стремятся учитывать изменения в требованиях и среде разработки, а также обеспечивать высокую степень свободы и гибкости в процессе разработки.

К методологиям и технологиям гибкой разработки можно отнести:

  • Scrum. Scrum - одна из самых известных моделей гибкой разработки. Это итеративный процесс разработки программного обеспечения: для программного продукта создается много последовательных выпусков, в которых постепенно добавляется требуемая функциональность. Основой Scrum является Sprint, в течении которого выполняется работа над продуктом. Sprint ограничен по времени (1-4 недели) и имеет фиксированную продолжительность. По окончанию Sprint’а должна быть получена новая рабочая версия продукта, которую представляют на демо-встречах, после чего планируется следующий спринт. У каждого Scrum-проекта есть владелец продукта, Scrum-мастер и команда. Проект можно назвать эффективным, когда Scrum-мастер, владелец продукта и команда начинают работать вместе, а не врозь, – это начинает походить на Scrum-проект.
  • Экстремальное программирование(Extreme Programming (XP)). XP стремится к максимальной эффективности и качеству разработки, а также к быстрой итерации разработки. Она ориентирована на непрерывное тестирование и оптимизацию работы команды разработки. Кроме того, XP объединяет разработчиков, тестировщиков и пользователей в единую команду, что позволяет улучшить обмен информацией и сотрудничество. Это методология, которая позволяет создавать программное обеспечение высокого качества, при этом поддерживать высокое качество жизни у членов команды разработки. В основе подхода лежит ряд важных ценностей: коммуникация, простота, обратная связь, смелость, уважение; и ряд практик.
  • Dynamic System Development Method (DSDM). Основан на концепции быстрой разработки приложений. Представляет собой итеративный и инкрементный подход, который придаёт особое значение продолжительному участию в процессе пользователя/потребителя.
  • Kanban. Методология основана на понятии "потока работы" и стремится улучшить эффективность работы команды разработки через управление потоком работы, задачи распределяются равномерно между всеми участниками команды разработки, реализует принцип «точно в срок», и ограничивается одновременное максимальное количество выполняемых задач. Методология направлена именно на улучшение существующих рабочих процессов путём визуализации и активной работы над незавершёнными задачами - для этого используется специальная доска Kanban, на которой отображается поток работы через различные стадии разработки (например, "требуется", "в работе", "готово").
  • Feature Driven Development (FDD). Объединяет лучшие практики и сосредотачивает внимание разработчиков на функциональных элементах, полезных с точки зрения клиента. Основной целью данной методологии является разработка реального, работающего программного обеспечения систематически, в поставленные сроки.
  • OpenUP. Итеративно-инкрементный метод разработки программного обеспечения. Делит жизненный цикл проекта на четыре фазы: начальная фаза, фазы уточнения, конструирования и передачи. Жизненный цикл проекта обеспечивает предоставление заинтересованным лицам и членам коллектива точек ознакомления и принятия решений на протяжении всего проекта.
  • Разработка через тестирование. Основывается на повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется код, который позволит пройти тест, и под конец проводится рефакторинг нового кода к соответствующим стандартам.
  • Разработка управляемая моделями. Фокусируется на разработке моделей программного обеспечения, из которых генерируется код и другие артефакты. Модель представляет собой абстрактное описание программного обеспечения, которое скрывает информацию о некоторых аспектах с целью представления упрощенного описания остальных.
  • Lean Software Development. Еще одной моделью гибкой разработки является Lean Software Development. Она стремится к удалению избыточности и улучшению эффективности разработки, используя принципы леан-производства. Эта модель также уделяет большое внимание управлению рисками, а также улучшению качества и скорости разработки.

В общем, модели и технологии организации гибкой разработки программных средств руководствуются одними и теми же принципами, объединены стремлением к более гибкой, эффективной и качественной разработке программного обеспечения. Они учитывают изменения в требованиях и среде разработки, а также стремятся к быстрой итерации разработки и улучшению сотрудничества в команде разработки. Чтобы использовать эти модели эффективно, следует уделить внимание таким факторам, как опыт разработчиков, организационная структура, требования к программному обеспечению и т.д.

Отличия Agile от других методологий В первую очередь важно понимать, что Agile — это семейство методологий с общими принципами, но инструменты и подходы к работе у каждой методологии из этого семейства свои. Поэтому сравнивать Agile с другими методологиями напрямую не совсем корректно. Но если говорить не об основных инструментах, а именно об основополагающих принципах, у Agile есть несколько отличий от классических строгих методологий вроде Waterfall:

● Конечная цель работы в любой момент может измениться, и это нормально. Более того, к этому даже нужно стремиться, так как за несколько месяцев разработки цели и требования клиентов просто не могут остаться теми же в условиях постоянно меняющегося мира.

● На аналитику и планирование нужно тратить меньше времени, поскольку позже их потребуется проводить снова. Лучше уделить больше внимания техническому совершенству продукта.

● В результате каждого небольшого цикла должен получаться готовый продукт, пусть и без некоторых функций.

● Новые требования к продукту обязательно должны быть учтены и добавлены в следующих рабочих циклах.

● Сроки проекта должны быть гибкими, с запасом на задержки и изменения.

● Руководитель должен на протяжении всего цикла принимать деятельное участие в работе команды, а не приходить в начале с требованиями и в конце с ревизией.

Преимущества и недостатки Agile Плюсы: ● Гибкость и открытость к любым изменениям. Можно быстро внести новые требования заказчика, оперативно ответить на действия конкурентов, работать в условиях неопределенности.

● Сниженные риски провала. Тестирование, анализ результатов и общение с заказчиками есть в конце каждого цикла, так что можно быстро понять, что что-то идёт не так, и исправить это. Ситуации, что в конце получился никому не нужный продукт, точно не возникнет.

● Устойчивость к срыву сроков. Их можно гибко адаптировать в зависимости от того, растянулась ли разработка какой-то фичи. В том числе можно отказаться от каких-то функций прямо в процессе работы, чтобы в срок выпустить готовый продукт.

● Большая вовлечённость команды. Отсутствие микроменеджмента, тесная работа с руководством и самоуправление помогают разработчикам работать эффективнее и видеть своё влияние на проект.

● Высокая скорость реакции на проблемы. Если появится баг — его можно быстро устранить в новом цикле. Не нужно полностью перекраивать проект, сдвигать сроки или откладывать исправление ошибки на потом.

● Минимум рутины. Разработчики тратят меньше времени на документацию и отчёты — то, что они обычно не любят больше всего.

Минусы:

● У проекта нет чёткого плана и структуры. В конце может получиться совсем не то, что в начале. Это минус скорее для заказчиков, которым важна определённость и чёткое следование определённым требованиям. Например, для государственных компаний.

● Потребность в тесном общении. Заказчику нужно постоянно общаться с командой, обновлять требования, смотреть промежуточные результаты.

● Завязанность на команду. В процессе работы сложно бывает сменить разработчика или руководителя, так как его придется погружать в подробности всех прошлых циклов и в уже отработанные процессы.

● Слишком большой фокус на мелочах. Иногда за обновлением, дополнением и исправлением функций можно потерять глобальную цель проекта, удариться в доработку мелочей и забыть о главном.

● Сложности с внедрением. Если в компании работали по другой методологии, построить Agile может быть сложно. Потребуется отдельный сотрудник либо менеджер проекта, который хорошо разбирается в гибких методологиях. И переход может занять много времени.

Понятие браузера. Возможности и технологии управления объектной моделью документа (DOM).

Браузер - агент пользователя, предоставляющий ему функциональность получения и чтения гипертекста, просмотра содержания гипертекстовых узлов, перемещения от одного узла к другому, взаимодействия с информационным наполнением, веб-приложениями и т.д. Браузеры обычно устанавливаются на компьютеры, телефоны и другие устройства и предоставляют приведенную выше функциональность. Браузеры обеспечивают доступ к интернету и отображают веб-страницы и веб-приложения, используя языки разметки такие как HTML, CSS и JavaScript. Они также обеспечивают различные функции, такие как закладки, история посещений, навигацию по страницам и т.д.

Существует множество разных браузеров, каждый из которых имеет свои специфические функции и возможности. Некоторые из самых популярных браузеров сейчас это Google Chrome, Mozilla Firefox, Microsoft Edge, Apple Safari и Opera.

В глобальной сети браузеры используют для запроса, обработки, манипулирования и отображения содержания веб-сайтов. Многие современные браузеры также могут использоваться для обмена файлами с серверами FTP, а также для непосредственного просмотра содержания файлов многих графических форматов, аудио-видео форматов, текстовых форматов и других файлов.

Для доступа к сайту необходимо ввести его URL - единообразный локатор ресурса или же его адрес. Его форма записи приведена на рис. 1.

Рис. 1. Форма записи URL

Большинство веб-страниц содержат описание разметки на языке HTML. Язык HTML интерпретируется браузерами; полученный в результате интерпретации форматированный текст отображается на экране монитора компьютера или мобильного устройства.

DOM - это стандартное программное интерфейсное решение, которое определяет способы управления документами и интерактивными веб-приложениями. Объектная модель документа представляет собой иерархию объектов, которые соответствуют элементам HTML-страницы, и обеспечивает программистам способы управления этими объектами с помощью скриптов. Иными словами, это представление HTML-документа в виде дерева тегов.

Такое дерево нужно для правильного отображения сайта и внесения изменений на страницах с помощью JavaScript. Пример DOM-дерева приведён на рис. 2.

Рис. 2. DOM-дерево

ИСТОЧНИКИ

  1. 📑Лекции по дисциплине "Интернет-технологии"
  2. 📑Agile-манифест разработки программного обеспечения
  3. 💬Extreme programming
  4. 📃Гибкая методология разработки
  5. 💬Agile, scrum, kanban: в чем разница и для чего использовать?
  6. 💬Кратко о методологиях разработки ПО: Waterfall, Lean и Feature Driven Development
  7. 📑ГОСТ Р ИСО 9241-151-2014
  8. 📃URL
  9. 📑DOM 10.📃Agile 11.📃DOM 12.📃KANBAN 13.📃Браузер 13.📑[Э.Стеллман, Д.Грин. "Постигая Agile. Ценности, принципы, методологии"]
⚠️ **GitHub.com Fallback** ⚠️