Feature list что это

Быстрый градиентный бустинг с CatBoost

Привет, хабровчане! Подготовили перевод статьи для будущих учеников базового курса Machine Learning.

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

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

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это
Источник

CatBoost — это библиотека градиентного бустинга, созданная Яндексом. Она использует небрежные (oblivious) деревья решений, чтобы вырастить сбалансированное дерево. Одни и те же функции используются для создания левых и правых разделений (split) на каждом уровне дерева.

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это
Источник

По сравнению с классическими деревьями, небрежные деревья более эффективны при реализации на процессоре и просты в обучении.

Работа с категориальными признаками

Наиболее распространенными способами обработки категориальных данных в машинном обучении является one-hot кодирование и кодирование лейблов. CatBoost позволяет использовать категориальные признаки без необходимости их предварительно обрабатывать.

При использовании CatBoost мы не должны пользоваться one-hot кодированием, поскольку это влияет на скорость обучения и на качество прогнозов. Вместо этого мы просто задаем категориальные признаки с помощью параметра cat_features.

Преимущества использования CatBoost

Есть несколько причин подумать об использовании CatBoost:

Параметры обучения

Давайте рассмотрим общие параметры в CatBoost:

Пример с регрессией

CatBoost в своей реализации использует стандарт scikit-learn. Давайте посмотрим, как мы можем использовать его для регрессии.

Первый шаг, как всегда, импортировать регрессор и создать его экземпляр.

При обучении модели CatBoost также позволяет нам визуализировать его, установив plot=true:

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

Также мы можем выполнять кроссвалидацию и визуализировать процесс:

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

Аналогично вы можете выполнить grid search и визуализировать его:

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

Также мы можем использовать CatBoost для построения дерева. Вот график первого дерева. Как вы видите из дерева, листья разделяются при одном и том же условии, например, 297, значение > 0.5.

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

CatBoost дает нам словарь со всеми параметрами модели. Мы можем вывести их, как словарь.

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

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

Источник

Как написать диздок

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

Запрос «как написать диздок», заданный в любой поисковик, даёт немало ответов, представляющих собой как перевод западных статей, так и авторские размышления на эту тему из России, или даже дизайн проекта «Курочка Ряба». В воображении читателя предстает большой единый документ, описывающий идею и геймплей игры с перечислением всех ее фич. Возможно, читатель однажды приходит с такими идеями работать геймдизайнером в крупную российскую или западную компанию, на крупный проект… И обнаруживает, что таких документов больше не существует.

О том, как написать диздок, который существует в крупных компаниях (автор этих строк работал с документацией Obsidian Entertainment, Allods Team, Raven Software, The Workshop, Slightly Mad Studios, преподает курс проектной документации в геймдизайне в Высшей школе бизнес-информатики НИУ ВШЭ на программе профессиональной переподготовки Менеджмент игровых интернет-проектов), и будет эта краткая статья. Разумеется, кому-то описанное в ней может показаться очевидным. Она рассчитана на тех, кто как раз ищет ответы на вопросы «как написать диздок» или хочет устроиться работать геймдизайнером в крупную компанию-разработчика.

Проектная документация сейчас представляет собой не большой дизайн-документ, не набор файлов MS Office, и даже не файлы в Google Docs.

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

Третий же документ Feature List представляет собой «разбор» описанной двумя предыдущими документами игры на компоненты. Это мостик к, собственно, разработке. Сообразно описанному в нем, продюсер или иной руководитель может составлять планы, рассчитывать майлстоуны, спринты и многое другое, но эта тема достойна отдельной статьи.

Простой же геймдизайнер, утроившись на работу в крупную компанию, вряд ли будет составлять вышеописанные три документа, но прочитать и запомнить их придётся. Основное время геймдизайнера уходит на последующий уровень — самый масштабный по объему. Это диздоки конкретных фичей, описанных в Vision и Feature List’е. К примеру, дизайн ездовых животных или дизайн нанесения клановых эмблем на броню… Впрочем, есть и куда более масштабные: дизайн системы характеристик персонажа или дизайн развития базы игрока.

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

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

На этой радостной ноте моя краткая статья заканчивается. Надеюсь, она была вам интересна. И можно переходить к комментариям!

Источник

feature list

Смотреть что такое «feature list» в других словарях:

Feature Driven Development — (FDD) is an iterative and incremental software development process. It is one of a number of Agile methods for developing software and forms part of the Agile Alliance. FDD blends a number of industry recognized best practices into a cohesive… … Wikipedia

List of computer-animated films — A computer animated film commonly refers to feature films that have been computer animated to appear three dimensional on a movie screen. While traditional 2D animated films are now done primarily with the help of computers, the technique to… … Wikipedia

List of Microsoft codenames — Microsoft codenames are the codenames given by Microsoft to products it has in development, before these products are given the names by which they appear on store shelves. Many of these products (new versions of Windows in particular) are of… … Wikipedia

List of FTP commands — Below is a list of FTP commands that may be sent to an FTP host, including all commands that are standardized in RFC 959 by the IETF. All commands below are RFC 959 based unless stated otherwise. These commands differ in use between clients. For… … Wikipedia

List of Proton car models — This is a list of Proton car models, listed in chronological order by the year of release of each of the respective cars. Proton is the Malaysian national carmaker. Proton SagaThe Proton Saga was the first Proton model, based on the Mitsubishi… … Wikipedia

List of computer-aided design editors — Advanced 3D CAD software allows users to create complex 3D forms This page compares computer aided design (CAD) software that engineers and architects use to create drawings for the fields of architecture, engineering and construction (AEC) in… … Wikipedia

List of Batman animated episodes — List of Batman episodes redirects here. For episodes of the live action television series, see List of Batman television episodes. For episodes of The Batman, see List of The Batman episodes. Batman: The Animated Series credits logo. The… … Wikipedia

List of British Jews — is a list that includes Jewish people from the United Kingdom and its predecessor states.Although the first Jews may have arrived on the island of Great Britain with the Romans, it wasn t until the Norman Conquest of William the Conqueror in 1066 … Wikipedia

Feature Driven Development — (Abk. FDD) ist eine Sammlung von Arbeitstechniken, Strukturen, Rollen und Methoden für das Projektmanagement im Rahmen agiler Softwareentwicklung. Inhaltsverzeichnis 1 Grundlagen 2 FDD Prozessmodell 2.1 Prozess #1: Entwickle ein Gesamtmodell … Deutsch Wikipedia

List of DC Comics characters: A — List of characters in DC Comics: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A Name Alter Ego(s) Original Publisher First Appearance Year Date Writer Artist A … Wikipedia

Источник

Классификация документов: 7 практических подходов для небольших наборов данных

Классификация документов или текста — это одна из важнейших задач в обработке естественного языка (natural language processing, NLP).

У нее есть множество применений, таких как классификация новостей, фильтрация спама, поиск неприемлемых комментариев и т. д.

У больших компаний нет проблем со сбором больших наборов данных, поэтому обучение модели классификации текста с нуля — вполне осуществимая задача.

Однако, для большинства реальных задач большие наборы данных — редкость, и для построения своей модели приходится проявлять смекалку.

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

Введение в классификацию документов

Процесс классификации документов начинается с очистки и подготовки корпуса.
Затем этот корпус кодируется любым типом представления текста, после чего можно приступить к моделированию.

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

В этой статье мы сосредоточимся на шаге «Представление текста» из этой диаграммы.

Тестовый набор данных для классификации

Мы будем использовать данные из соревнования Правда, или нет? NLP с твитами о катастрофах на Kaggle.

Задача — предсказать какие твиты были о настоящих катастрофах, а какие — нет.

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

Давайте взглянем на наши данные:

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

В данных содержится идентификатор, ключевое слово, местоположение, текст и бинарное целевое значение.

Для предсказания результата мы будем использовать только текст твита.

В обучающей выборке меньше 8000 твитов.

Эта выборка маленькая и сложная для работы, особенно если учесть ограничение в 280 символов.

Подготовка текстовых данных

Прежде, чем мы приступим к решению задач NLP, нужно предварительно обработать и очистить данные.

Цель статьи не в этом, но, если вам интересно, можете почитать подробнее об этом шаге в этой статье.

Если коротко, то мы:

Теперь давайте посмотрим, как можно представить этот корпус, чтобы его можно было передать в алгоритм машинного обучения.

Представление текста

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

Этот шаг называют представлением текста.

CountVectorizer

CountVectorizer — это простой способ векторизовать и представлять текстовые документы.

Он токенизирует входные данные и строит словарь известных слов, а затем представляет документ, используя этот словарь.

Давайте разберем на примере:

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

Как вы заметили, CountVectorizer построил словарь из переданного текста и представил слова с помощью библиотеки Numpy, позволяющей создавать разреженные матрицы.

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

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

Вы можете заметить, что:

Слова, которые отсутствуют в словаре — это «sells» и «she».

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

Следует знать, что у CountVectorizer есть несколько важных параметров, которые нужно подбирать в зависимости от задачи:

Разведочный анализ данных обычно помогает в выборе подходящих параметров (или диапазонов для методов оптимизации гиперпараметров).

TfidfVectorizer

Одна из проблем при работе с Countvectorizer заключается в том, что частые слова, такие как «the» будут встречаться много раз (если вы не удалили их на этапе предобработки) и эти слова на самом деле не очень важны.

Одна из популярных альтернатив — TfidfVectorizer.

Его название — это акроним от Term frequency-inverse document frequency (частота слова — обратная частота документа).

Частота слова (Term Frequency) — подсчитывает, как часто выбранное слово появляется в документе.

Обратная частота документа (Inverse Document Frequency) — снижает вес слов, которые часто встречаются в документах.

Давайте взглянем на пример:

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

В словаре снова 6 слов и обратная частота документа рассчитана для каждого из них, устанавливая самый низкий вес для слова «the», которое встретилось 4 раза.

Затем веса нормализуются до диапазона между 0 и 1, и это текстовое представление уже может быть подано в какую-либо модель машинного обучения.

Word2vec

Большая проблема в рассмотренных подходах заключается в том, что представление теряет контекст слова.

Вложения (embeddings) слов позволяют создать намного лучшие представления путем кодирования контекстной информации.

Они представляют собой отображения слов в соответствующие n-мерные векторы.

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

Word2Vec был разработан в Google Томасом Миколовым с коллегами и использует неглубокую нейронную сеть для построения вложений слов.

Векторы получаются из контекста, в котором фигурирует слово.

А именно, метод смотрит на слова, которые встречаются совместно.

Ниже приведена матрица совместного вхождения для предложения «The cat sat on the mat».

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

Word2vec состоит из двух различных моделей:

Непрерывный мешок слов (Continuous Bag of Words, CBoW) — это такая модель для получения вложений слов, полученных обучением модели предсказывать слова по контексту.

Skip-Gram же наоборот — получает вложения слов обучая модель предсказывать контекст по слову.

Основная идея вложения слов в том, что слова, появляющиеся в схожем контексте, будут ближе в векторном пространстве. Давайте реализуем word2vec на языке python:

Итак, вы создали свою модель word2vec.

Вы можете поэкспериментировать со следующими важными параметрами:

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

Этот метод обеспечит лучшее качество.

Сначала вам надо скачать обученные векторы отсюда.

Затем вы можете загрузить векторы, используя библиотеку gensim.

Давайте посмотрим на вложение:

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

Как вы видите, слово представлено 300-мерным вектором.

(Проверять существование вложения только лишь его размерностью — не лучшая идея, так как все вектора могут быть нулевыми. Лучше проверять вложение по его свойствам, к примеру, взять несколько слов и проверить расстояние между ними. Прим. переводчика)
Каждое слово из корпуса может быть представлено в таком виде, и получившуюся матрицу вложений можно использовать для обучения модели.

FastText

Теперь давайте рассмотрим чрезвычайно полезный модуль из Genism — FastText.

Он был разработан в Facebook и обеспечивает отличное качество и скорость в задачах классификации текста.

Он поддерживает модели Continuous Bag of Words и Skip-Gram.
Главное различие между предыдущими моделями и FastText в том, что он разбивает слова на несколько n-грамм.

Возьмем, к примеру, слово «orange».

Триграммами этого слова будут «ora», «ran», «ang», «nge» (игнорируя начальную и конечную границы слова).

Вектор вложения слова (текстовое представление) для «orange» будет суммой этих n-грамм.

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

К примеру, для слова «stupedofantabulouslyfantastic», которое, возможно, никогда не встречалось ни в одном корпусе, genism может вернуть или нулевой вектор, или случайный вектор небольшой длины.

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

В данном примере конечный вектор может быть ближе к векторам «fantastic» и «fantabulous».

Мы опять будем использовать предварительно обученную модель вместо того, чтобы самостоятельно получать вложения слова.

Для этого сначала скачайте предварительно обученные вектора отсюда.

Каждая строка этого файла содержит слово и соответствующий ему n-мерный вектор.

Используя этот файл мы создадим словарь для отображения каждого слова в его векторное представление.

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

А теперь посмотрим на вложение:

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

GloVe

GloVe (global vectors for word representation) означает «глобальные векторы для представления слов».

Это алгоритм обучения без учителя, разработанный в Стэнфорде.

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

Идея очень похожа на word2vec, но есть небольшие отличия.

Мы будем использовать предварительно обученные на больших корпусах векторы.
Это работает лучше в практически любой ситуации.

Мы можете скачать их отсюда.

После скачивания загрузим нашу предварительно обученную модель.

Но сперва нужно разобраться, в каком формате она распространяется.

В этом случае каждая строка содержит слово и соответствующий ему n-мерный вектор.

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

Поэтому сперва нужно подготовить словарь отображений между словами и соответствующими векторами.

Назовём его словарем вложений.

Давайте создадим такой словарь:

Итак, у нас есть словарь, в котором хранится каждое слово и вектор из предварительно обученного словаря GloVe.

Проверим вложение для какого-нибудь слова.

Универсальное кодирование предложений

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

До сих пор мы рассматривали методы представления текста на уровне слов.
Но иногда нам требуется работать на уровне предложений.
Тут нам помогают кодировщики предложений.

Хороших кодировщик должен кодировать предложения так, чтобы векторы схожих предложений были на минимальном расстоянии в векторном пространстве.

Эти предложения должны быть закодированы и представлены так, чтобы они были расположены близко друг к другу.

Давайте посмотрим как реализовать универсальный кодировщик предложений и найти похожие предложения с его помощью.

Вы можете скачать подготовленные векторы тут.

Загрузим предобученный модуль из репозитория моделей Tensorflow.

Далее создадим вложения для каждого предложения в нашем списке.

Подробнее об универсальных кодировщиках предложений вы можете почитать в этой статье.

Elmo, BERT и другие

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

Это один из главных недостатков таких моделей представления слов.

Например многозначное слово «stick», имеющее значения «палочка», «прилипать» и другие, будет представлено одним и тем же вектором независимо от контекста, что не имеет большого смысла.

Благодаря последним разработкам в NLP и моделям вроде BERT стало возможным кодировать многозначные слова кодируются разными векторами в зависимости от контекста, в котором оно применялось. Подробнее можно почитать в этой статье.

Классификация текста

В этой главе мы подготовим матрицу вложений, которую передадим на слой вложений Keras для получения текстовых представлений.

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

Давайте проиндексируем слова и установим максимальную длину предложения, заполняя каждое предложение в нашем корпусе с помощью Keras Tokenizer и pad_sequences.

Проверим количество уникальных слов в нашем корпусе.

Используя этот словарь с индексом слов и словарь вложений, мы можем создать матрицу вложений для нашего корпуса.

Эта матрица передается на соответствующий уровень нейронной сети для получения представлений слов.

Теперь мы можем описать нашу нейронную сеть и передать в неё индекс вложений.

Для этого передадим векторы на слой вложений и установим trainable=False, чтобы предотвратить изменение весов.

К примеру, запустим модель, используя вложения word2vec:

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

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

Сравнение

Так какой из методов классификации работает лучше всего в нашей задаче?

Воспользуемся Neptune для сравнения качества нашей модели с использованием различных вложений.

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это

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

Возможно, вы добьетесь большего, если дополнительно настроите модель и почистите данные.

Можете посмотреть на проведенные эксперименты тут.

Заключение

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

Источник

Feature Driven Development для веб-разработчиков

Разработка общей модели (Develop an Overall Model)

Как выразился автор методологии Джеф Делюка (Jeff Deluca — http://www.jeffdeluca.com), общая модель – больше набросок или очертание, нежели детальное содержание. Однако чтобы получить эту модель, недостаточно просто требований к проекту. Модель – это видение проекта, основанное на результатах предварительных исследований. Спасибо Луису Розенфельду (Louis Rosenfeld — http://louisrosenfeld.com) – мы знаем, насколько важна роль информационной архитектуры при веб-разработке. На этапе общей модели у нас должны быть – анализ целевой аудитории, анализ контента и контекста его использования, структура контента, включая метаданные и тезаурус. Должен быть документ, описывающий принципы пользовательского интерфейса, список используемых UX-компонентов, описание их свойств и поведения.

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это
Рис.1. Пирамида информационной архитектуры
В данном подходе подразумевается, чтомы приступаем кразработке, имея лишь наброски системы, которыепо мере разработки обрастают деталями. Таким образом, детальные каркасы (wireframes) будут разработаны входе создания соответствующих свойств (features) или, другими словами, частей проекта. Однако на стадии общей модели таки потребуются «сырые» каркасы основных интерфейсов и предварительная карта сайта.
Все выше описанное –сопутствующие документы. Основной результат этапа–модель домена (Domain model). Это статическая UML диаграмма, включающая все определенные к данному моменту логические объекты проекта и их взаимодействие (объект является частью другого объекта, объект расширяет другой объект и т.д.).

Создание списка свойств (Build a Feature List)

Не думаю, что здесь мне стоит вдаваться вподробности. Большинствоиз вас использует методику SCRUM, а список свойств в FDD – то же самое, что и product backlog в SCRUM. Разве что стоит еще раз напомнить: при создании списка следует оперировать именно целями и подцелями, но не задачами.

Планирование по свойствам (Plan by Feature)

Все бы хорошо, но как же оценить время разработки свойств проекта, когда детали туманны. Связанные задачи для разработчиков будут предельно ясны только тогда, когда будут выполнены все предварительные работы по данному свойству. Как же планировать? И тут на помощь приходит Story Point Estimation. Мы оцениваем свойства не в человеко-днях, а в абстрактных баллах по мере сложности свойства. Из всего списка предлагается выбрать свойство минимальной сложности и присвоить ему 2 балла сложности. Рекомендуется использовать экспоненциальную шкалу, например: 1, 2, 3, 5, 8. Тогда спрашивается, почему мы не назначили 1 самому пустяковому свойству. На всякий случай. Список свойств огромный и с первого взгляда маловероятно, что вы будете максимально точны в оценке.
В оценке принимают участие все члены команды. Т.е., каждое свойство обсуждается с позиций всех этапов разработки до тех пор, пока команда не приходит к единой оценке сложности. Достаточно утомительно, я вам скажу, но – продуктивно.

Технический дизайн свойства (Design by Feature)

Итак, приоритеты определены, выбрано свойство для реализации. Самое время описать требования. Для этого создается модель прецедентов (Use Cases) относительно выбранного свойства. Данный документ хорошо бы снабдить диаграммой активности (Activity Diagram) для визуализации логики сопряженных сценариев использования. Сами прецеденты можно отразить в соответствующей UML диаграмме (Use Case diagram). В ходе обзора (review) документа, опять же, принимают участие все члены команды.

Feature list что это. Смотреть фото Feature list что это. Смотреть картинку Feature list что это. Картинка про Feature list что это. Фото Feature list что это
Рис.2. Модель прецедентов привносит детали в документы общей модели

Далее работы могут вестись параллельно: часть группы занимается техническим дизайном, часть работает над каркасами (или же над детализацией каркасов, если они уже были подготовлены на стадии общей модели).
Технический дизайн предполагает UML-диаграмму с сущностями модели домена, список и диаграмму классов (где это уместно), сопряженных со свойством моделей, DAO, контроллеров, сервисов, декораторов (возможно хелперов). Там же представлена архитектура БД, покрывающая свойство в виде модели «сущность-связь» (ER Diagram). Если свойство затрагивает какие-либо внешние системы (например, профайлер пользовательских предпочтений), это должно быть также отражено в техническом дизайне, скажем, в виде диаграммы последовательностей (Sequence diagram).
Помимо прочего следует подготовить варианты тестирования (Test Cases), что позволит QA-специалистам полноценно оценить качество реализации свойства.
Когда диаграмма сущностей модели домена для выбранного свойства закончена, проявляются детали, неучтенные в общей модели. Так и должно быть: вы просто отражаете новые детали на общей модели по мере их появления.
По окончанию этапа вся команда разработчиков принимает участие в обзоре технического дизайна. Помимо «полировки» всех аспектов документа, это обеспечивает глубокое проникновение в идеи архитектуры всех разработчиков проекта.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *