Skip to content
irades edited this page Apr 4, 2019 · 12 revisions

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

Терминология:

Технология (теория) - применение научных знаний для практических целей, особенно в промышленности.

Технология - машины или оборудование, разработанные с использованием техники.

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

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

Смысл Agile сформулирован в Agile-манифесте разработки ПО: «Люди и взаимодействие важнее процессов и инструментов. Работающий продукт важнее исчерпывающей документации. Сотрудничество с заказчиком важнее согласования условий контракта. Готовность к изменениям важнее следования первоначальному плану».

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

Существует несколько Agile-моделей:

1. Feature driven development (FDD, разработка, управляемая функциональностью) — итеративная модель разработки программного обеспечения, одна из гибких методологий разработки (agile). FDD представляет собой попытку объединить наиболее признанные в индустрии разработки программного обеспечения методики, принимающие за основу важную для заказчика функциональность (свойства) разрабатываемого программного обеспечения. Основной целью данной модели является разработка реального, работающего программного обеспечения систематически, в поставленные сроки.

FDD включает в себя пять базовых видов деятельности:

  1. разработка общей модели;
  2. составление списка необходимых функций системы;
  3. планирование работы над каждой функцией;
  4. проектирование функции;
  5. реализация функции.

2. Test-driven development (TDD, Разработка через тестирование) — модель разработки программного обеспечения, которая основывается на повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется код, который позволит пройти тест, и под конец проводится рефакторинг нового кода к соответствующим стандартам.

TDD цикл включает в себя пять основных шагов:

  1. Быстро добавить тест;
  2. Выполнить все тесты и увидеть, что новый тест «падает»;
  3. Выполнить небольшое изменение системы;
  4. Убедиться, что все тесты проходят;
  5. Выполнить рефакторинг, удаляя дублирование.

В модели TDD тест всегда пишется прежде чем создается соответствующий программный элемент. Если далее не выполнять шаги 2, 4, 5 то получится модель TFD (разработка «вначале тест», test first development).

2.5. Behavior-driven development (BDD, «разработка через поведение») — это модель разработки программного обеспечения, являющаяся ответвлением от методологии разработки через тестирование (TDD).

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

BDD модель является расширением TDD в том смысле, что перед тем как написать какой-либо тест, необходимо сначала описать желаемый результат от добавляемой функциональности на предметно-ориентированном языке. После того как это будет проделано, конструкции этого языка переводятся специалистами или специальным программным обеспечением в описание теста.

BDD фокусируется на следующих вопросах:

  • С чего начинается процесс;
  • Что нужно тестировать, а что нет;
  • Сколько проверок должно быть совершено за один раз;
  • Что можно назвать проверкой;
  • Как понять, почему тест не прошёл.

3. Model-driven development (MDD, Разработка, управляемая моделями) - это модель разработки программного обеспечения, когда модели становятся основными артефактами разработки, из которых генерируется код и другие артефакты.

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

Наиболее известными современными MDE-инициативами являются:

  1. разработка Object Management Group (OMG) под названием model-driven architecture (MDA);
  2. экосистема Eclipse для инструментов моделирования и программирования (Eclipse Modeling Framework).

Технологии, применяемые в рассмотренных моделях:

  • репозитории;
  • система контроля версий;
  • система управления задачами;
  • автосборки;
  • автотесты;
  • автодоставка.

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

Понятие браузера

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

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

Некоторые типы содержимого веб-страниц (изображения, тексты) могут содержать ссылки на другие страницы, расположенные в сети. С помощью браузера и гиперссылок пользователь обретает возможность быстро перемещаться по страницам сайта и находить нужную информацию. В глобальной сети браузеры используют для запроса, обработки, манипулирования и отображения содержания веб-сайтов. Многие современные браузеры также могут использоваться для обмена файлами с серверами FTP, а также для непосредственного просмотра содержания файлов многих графических форматов (gif, jpeg, png, svg), аудио-видео форматов (mp3, mpeg), текстовых форматов (pdf, djvu) и других файлов.

Главное предназначение браузера — передать информацию с сайта, на котором она содержится, пользователю. Процесс получения данных происходит следующим образом: в адресной строке браузера указывается URL сайта, на котором находится контент. Браузер пользователя посылает удаленному серверу запрос на получение информации, и, если таковая имеется, она передается в приложение. При этом происходит форматирование данных из языка разметки HTML в формат интерактивного документа.

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

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

DOM (от англ. Document Object Model — «объектная модель документа») — это не зависящий от платформы и языка программный интерфейс, позволяющий программам и скриптам получить доступ к содержимому HTML-, XHTMLи XML-документов, а также изменять содержимое, структуру и оформление таких документов. HTML - HyperText Markup Language, язык гипертекстовой разметки. XML - Extensible Markup Language, расширяемый язык разметки.

Модель DOM не накладывает ограничений на структуру документа. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел которого представляет собой: • элемент; • атрибут; • текстовый; • графический или любой другой объект. Узлы связаны между собой отношениями «родительский-дочерний».

Модель DOM гарантирует правильную грамматику и правильное оформление документов. DOM трансформирует текстовый файл в абстрактное представление дерева узлов. Это позволяет полностью избежать таких проблем, как незакрытые или неправильно вложенные теги. Работая с документом XML при помощи этого метода, разработчик должен беспокоиться не о текстовом выражении документа, а только о связях типа родитель-потомок и об относящейся к этому информации. Кроме того, DOM предотвращает создание неправильных связей родитель-потомок в документе.

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