(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Пять принципов управления жизненным циклом приложения

Кэролин Пампино (Carolyn Pampino, IBM)
На основе приложений: Rational Team Concert Beta 3, Rational Quality Manager Beta 3, Rational Requirements Composer Beta 3

Обзор

Жесткая конкуренция заставляет многие организации создавать продукты за более короткие сроки, при этом делая их еще более инновационными. Разработка программного обеспечения сама по себе является сложной задачей, поэтому чрезвычайно сложны и системы, создаваемые организациями-разработчиками информационных систем и устройства. Команды, находящиеся в условиях сжатых сроков, должны делать это без ущерба качеству или увеличения бюджета. Для этого их стратегией должно быть улучшение эффективности разработки программного обеспечения. Решение этой дилеммы состоит в улучшении взаимодействия в жизненном цикле при помощи управления жизненным циклом (УЖЦ) приложений.

Решения для управления жизненным циклом приложений, созданные для поддержания проектов по разработке ПО, координируют людей, процессы и инструменты в итеративном цикле разработки ПО, включающем связанные между собой деятельности по планированию, управлению изменениями, определению и управлению требованиями, управлению архитектурой, управлению конфигурациями ПО, автоматизации сборок и развертывания, управлению качеством. Помимо основных возможностей решения для УЖЦ включают в себя трассировку между артефактами жизненного цикла, определение и гарантию процесса, составление отчетов.

Наиболее важное преимущество решения для УЖЦ состоит в возможности координировать людей, процессы, информацию и инструменты, задействованные в проекте, для того, чтобы создавать инновационные продукты для заинтересованных лиц проекта. Поскольку не существует универсального решения, подходящего всем, мы советуем нашим клиентам сосредоточиться на следующих принципах при внедрении управления жизненным циклом, наиболее соответствующего культуре и окружению в их организации:

  • Используйте планирование в реальном времени;
  • Обеспечивайте трассировку в жизненном цикле для связанных артефактов;
  • Обеспечьте возможности для взаимодействие в контексте;
  • Применяйте бизнес аналитикe для разработки;
  • Осуществляйте непрерывное улучшение процесса разработки.

Планирование в реальном времени

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

Действия, которых следует избегать

Рекомендуемые действия

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






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

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

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






Используйте планы, которые полностью интегрированы с выполнением проекта.

Убедитесь в том, что все планы доступны и открыты каждому участнику команды проекта.

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

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


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



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


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



 

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

Потраченное время

Рис. 1. Обновление потраченного времени из элемента работ поддерживает точность планов

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

Запланированное время

Рис. 2. На представлении запланированного времени видно, когда у одних участников команды работы больше, чем у других

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

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

План развития

Рис. 4. Представление плана развития отображает распределение задач по дням и неделям в более традиционном виде

Изображение ниже демонстрирует план выпуска (Release Plan) в Rational Team Concert со ссылками на связанный с ним журнал предложений (Product Backlog), коллекции требований в Rational Requirements Composer и план тестирования в Rational Quality Manager.

План выпуска

Рис. 5. С планированием связаны коллекции требований и планы тестирования

Решение IBM Rational для совместного управления жизненным циклом включает полностью интегрированное планирование в реальном времени.

Трассировка жизненного цикла

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

Решение для УЖЦ, позволяющее осуществлять трассировку между артефактами жизненного цикла, помогает командам получать ответы на сложные вопросы относительно статуса их проекта. Создание связей между артефактами позволяет командам легче отвечать на такие вопросы, как: "На какие требования влияют дефекты?" и "Какие элементы работ готовы к тестированию?"

Вопросы трассировки в жизненном цикле

Рис. 6. Важные вопросы, на которые дает ответ решение для УЖЦ

Трассировка помогает каждому члену команды понимать, что делают остальные и как это влияет на объем работы в целом. Если вы работаете в окружении с внешним регулированием, трассировка поможет вам отвечать на такие вопросы со стороны аудиторов, как "Какие изменения включены в эту сборку, какие тесты были проведены и с каким результатом?"

Ниже приведены типичные действия, которые стоит или не стоит делать, связанные с трассировкой:

Действия, которых следует избегать

Рекомендуемые действия

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

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

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

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

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


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


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



Избегайте использования не интегрированных проектных баз данных, разработки собственных интеграций на основе проприетарных API и попыток объединить несвязанный набор инструментов.

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

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

Не выбирайте репозитории УЖЦ с проприетарными интеграциями.

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

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

Выбирайте поставщика продуктов, который понимает и поддерживает трудные задачи интеграции при управлении жизненным циклом.

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

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

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

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

Рис. 7. План выпуска, охватывающий разработку, требования и тестирование

Когда трассировочные связи установлены, решение IBM Rational для совместного управления жизненным циклом (IBM Rational Collaborative Lifecycle Management) автоматически создает на их основе трассировочные связи с дефектами, выявляемыми в ходе проведения тестирования. На изображении ниже показан дефект с созданными для него трассировочными связями. При добавлении дефекта в ходе тестирования, автоматически создаются трассировочные связи дефекта с результатами теста, тестовым набором, планом тестирования, элементом плана и требованием.

Связи жизненного цикла

Рис. 8. Связи жизненного цикла, созданные автоматически для дефекта, отображают тестовые наборы, элементы плана и требования, на которые он влияет

Взаимодействие в контексте

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

Также инструменты для взаимодействия помогают командам фокусироваться на том, что важно. Команды должны находить любые возможности для автоматизации ручных и не творческих задач. Хорошее решение для УЖЦ включает в себя автоматизацию для сборок и выполнения тестов, но также должно включать автоматизацию создания отчетов о состоянии и доступ к информации. Информационные панели проекта и персональные информационные панели играют важную роль в автоматическом снабжении команды необходимой информацией, обеспечивая прозрачность работы команды и доступ к актуальным данным при помощи командных отчетов и запросов. Хорошо спроектированный пользовательский интерфейс автоматизирует доступ к информации, доставляя информацию пользователям напрямую и не заставляя их "менять контекст", переключаясь на работу с другим приложением. В такой форме автоматизация напрямую способствует лучшему взаимодействию.

Действия, которых следует избегать

Рекомендуемые действия

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









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

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

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

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


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


 

Изображение ниже демонстрирует набор информационных панелей с виджетами, содержащими информацию из Rational Team Concert, Rational Requirements Composer и Rational Quality Manager. Данные на информационных панелях отображают актуальный статус проекта.

Информационная панель с данными из различных источников

Рис. 9. Информационные панели с данными из различных источников, обеспечивают прозрачность работ для всех функциональных команд

На изображении ниже показана мини-информационная панель, которая всегда доступна сбоку пользовательского интерфейса и может быть закреплена слева или справа. Она выполняет функции персональной мини информационной панели, которая следует за пользователем повсюду в рамках решения для УЖЦ, и может быть скрыта или показана в любой момент времени.

Мини-панель

Рис. 10. Мини-панель доступна из любой точки пользовательского интерфейса

Следующее изображение демонстрирует персональную мини-панель в Rational Team Concert. На этой панели есть виджет, отображающий изменения требований в Rational Requirements Composer. Это пример мини-панели с информацией из различных источников. При наведении мышки на требование появляется предпросмотр с информацией о статусе требования в Requirements Composer. Пользователи, которым необходим быстрый доступ к информации, быстро привыкнут к мини-панелям.

Предпросмотр

Рис. 11. Предпросмотр по ссылке из мини-панели

Бизнес аналитика для разработки

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

Согласно Кейперсу Джонсу (Capers Jones1), проекты, в которых практики измерений широко используются, достигают гораздо больших успехов, чем те, в которых подобные практики не используются.

Кейперс Джонс (Capers Jones)

Рис. 12. Проекты, использующие практики измерений, имеют больший шанс на успех

Например, три приведенных ниже метрики используются менее чем в 50% организаций по исследованиям Кейперса Джонса:

  • Метрики качества 45%
  • Метрики продуктивности 30%
  • Метрики готовности 15%

Вот наши рекомендации относительно практики измерений:

Действия, которых следует избегать

Рекомендуемые действия

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


Установите метрики производительности, подходящие вашей организации.



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


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



Не пытайтесь определить сразу все метрики проекта.


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

На изображении ниже показаны отчеты для команды разработки на информационной панели проекта. При обновлении элемента работ, отчеты отражают деятельность команды и направление ее продвижения. Используйте графики хода выполнения работ, чтобы отслеживать движение команды к завершению запланированных работ. Или, в качестве альтернативы, используйте диаграммы, которые отображают изменение количества элементов работ в состоянии "Открыта", "Выполняется" и "Закрыта" (в идеальной ситуации количество элементов в состоянии "Открыта" и "Выполняется" должно убывать, а в состоянии "Закрыта" - расти).

Отчеты

Рис. 13. Информационная панель с отчетами и метриками для измерения улучшений

Информационные панели и отчеты - ключевая составляющая решения для УЖЦ, отвечающая за измерения и реагирование на текущий прогресс команды.

Непрерывное улучшение процесса разработки

Процесс - это нечто большее, чем документированный набор действий. Мы разрабатываем процессы на основе лучших практик, взятых из опыта индустрии, как средство улучшения взаимодействия команды и повышение ее шансов на успех. Поведение по большей части определяется привычкой. Когда вы определяете или меняете процесс, вы фактически просите всю команду изменить свои привычки и перенять поведение, которое может на первый взгляд быть им непонятно. Довольно сложно изменить привычки одного человека. Для изменения процесса зачастую необходимо изменить способы мышления и модели поведения у множества людей. Хорошо спроектированное решение для УЖЦ позволяет вам менять процесс постепенно, улучшая динамику команды и продолжать движение к большей эффективности.

Действия, которых следует избегать

Рекомендуемые действия

Не стоит пренебрегать качеством процесса или относиться к нему как к лишней нагрузке.


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


Не поддавайтесь искушению улучшить все и сразу.

Не пытайтесь слишком точно определить процесс за один раз.

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



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


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



Избегайте слишком жесткого контроля процесса.


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

Не определяйте улучшений процесса, не видя конечного результата.


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



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


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

Rational Team Concert содержит спецификации процесса, которые вы можете использовать для быстрой организации работы вашей команды. Эти спецификации определяют типы элементов работ, переходы между состояниями и правила по их использованию. В дополнение к этому, команды могут модифицировать процесс под свои нужды. Процесс может быть развернут на всем проекте или модифицирован для команды в рамках проекта. Процессы даже могут быть модифицированы "на ходу", чтобы адаптироваться к меняющимся условиям проекта. Изображение ниже показывает стандартный набор типов элементов работ, определенных в стандартном шаблоне Team Concert для поддержки разработки в модели Scrum.

Типы элементов работы

Рис. 14. Типы элементов работы, поддерживающих Scrum, по умолчанию присутствуют в Rational Team Concert

Возможности, поддерживающие процесс и направляющие членов команды к реализации необходимого поведения являются важными элементами решения для УЖЦ.

Выбор решения УЖЦ для вашей команды

Выбирайте решение для УЖЦ, которое поддерживает и стимулирует сотрудничество вне зависимости от роли, организации или географического местоположения. Решение IBM Rational для совместного управления жизненным циклом (IBM Rational Solution for Collaborative Lifecycle Management) соответствует пяти принципам, описанным выше. Это решение содержит три основных продукта: IBM Rational Team Concert, IBM Rational Quality Manager и IBM Rational Requirements Composer.

Rational Team Concert интегрирует отслеживание элементов работ, управление исходным кодом, непрерывные сборки, планирование итераций и широкие возможности по настройке процесса для адаптации под ваш способ работы, предоставляя разработчикам, архитекторам, менеджерам проекта и владельцам проекта возможности для эффективной совместной работы. Поддерживается кросс-платформенная разработка, например, на Java, .NET, и для мейнфреймов. У Rational Team Concert есть встроенные интеграции как с Requirements Composer и Quality Manager, так и со многими другими популярными инструментами разработки. Узнайте больше на странице интеграций проекта на Jazz.net.

Команды, которым необходимо определение требований с использованием различных визуальных и текстовых способов и управление требованиями, используют Rational Requirements Composer. Requirements Composer продолжает активно развиваться для того, чтобы обеспечивать определение и управление требованиями для работающих в быстром темпе, ориентированных на рынок проектных команд. Requirements Composer обладает встроенными интеграциями с Team Concert, Quality Manager и многими другими популярными инструментами. Узнайте больше об интеграциях Requirements Composer на Jazz.net.

Команды, которые хотят улучшить свою способность достигать целей качества, используют Rational Quality Manager, в котором есть встроенные интеграции с Rational Team Concert и Rational Requirements Composer. IBM Rational Quality Manager помогает организациям оптимизировать качество в проекте путем предоставления единого центра для управления тестированием, который обеспечивает интегрированную поддержку жизненного цикла практически для любой целевой платформы и типа тестирования. Он реализует настраиваемое решение, основанное на ролях, для планирования тестирования, создания и выполнения тестов, а также для контроля последовательности работ, управления и сквозной трассировки.

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

___________________________________________________________________________________________________________

1  Capers Jones, "Measurement, Metrics and Industry Leadership," 2009, and Software Engineering Best Practices , McGraw Hill, 2010.

___________________________________________________________________________________________________________

Об авторе

Кэролин Пампино - руководитель программы стратегических предложений, фокусирующейся на разработке программного обеспечения для информационных технологий. Она член команды "ALM leadership team" в IBM Rational, работает вместе с лидерами команды Jazz, определяя план и стратегию развития для решения по совместному управлению жизненным циклом. Кэролин - автор постов в блоге и демонстраций на Jazz.net, соавтор электронной книги под названием "Масштабирование гибких методологий с помошью совместного управления жизненным циклом", а также соавтор IBM Redbook под названием "Совместное управление жизненным циклом с помощью продуктов IBM Rational". Она одна из основателей команды, определяющей стратегии для интеграции продуктов Rational и Tivoli, а также активный участник приобретения Build Forge. Перед работой в IBM Кэролин была директором по управлению продуктами, разработке и анализу деятельности конкурентов в BroadVision, Inc.

Кэролин благодарит Erich Gamma, Kim Peter, Robyn Gold, и Fariz Saracevic за их вклад в эту статью, как и все команды платформы Jazz и приложений для совместного управления жизненным циклом за создание потрясающих решений!

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 26.09.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Rational ClearCase Multisite Floating User License
IBM RATIONAL Clearcase Floating User License + Sw Subscription & Support 12 Months
IBM Rational Functional Tester Floating User License
IBM RATIONAL Rose Enterprise Floating User License + Sw Subscription & Support 12 Months
IBM RATIONAL Clearcase Floating User From Rational Clearcase Lt Floating User Trade Up License + Sw Subscription & Support 12 Months
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Реестр Windows. Секреты работы на компьютере
СУБД Oracle "с нуля"
ЕRP-Форум. Творческие дискуссии о системах автоматизации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100