Методология Microsoft Solution Framework
Корпорация Майкрософт выпустила в свет пакет руководств по эффективному проектированию, разработке, внедрению и сопровождению решений, построенных на основе своих технологий. Эти знания базируются на опыте, полученном Майкрософт при разработке и сопровождению программного обеспечения, опыте консультантов Майкрософт, разрабатывавших проекты на предприятиях заказчиков, и лучшем из того, что накопила на данный момент IT-индустрия. Всё это представлено в виде двух связанных и хорошо дополняющих друг друга областей знаний: Microsoft Solutions Framework (MSF) и Microsoft Operations Framework (MOF)
(рис. 7.8).
Microsoft Solutions Framework − это комплект взаимосвязанных моделей, концепций и руководств по созданию и внедрению программных и информационных систем уровня предприятия [8]. Он содержит набор интегрированных ресурсов (практические руководства, аудиторные занятия, описания методик и методологий) и принципов, приводящих проектные группы к успеху. MSF не является методологией, а скорее предоставляет гибкие и практические пути применения информационных технологий для решения проблем, обеспечивает структуру, помогающую локализовать проблемы и облегчить принятие эффективных решений.
Рис. 7.8. Взаимосвязь и области применения методологий MSF и MOF
В основе Microsoft Solutions Framework лежат следующие идеи:
o идентификация целей проекта и планирование их достижения;
o формирование факторов успеха;
o управление рисками;
o выпуск промежуточных версий;
o планирование активности каждого члена проектной;
o четко обозначенные контрольные точки (вехи);
o проектные команды небольшой численности.
Подробную информацию по MSF в виде рекомендаций, описаний действий, инструкций, шаблонов документов можно найти на сайте www.microsoft.com/msf/.
MOF призван обеспечить организации, создающие критически важные (Mission-Critical) IT-решения на базе продуктов и технологий Microsoft, техническим руководством по достижению их надежности (Reliability), доступности (Availability), удобства сопровождения (Supportability) и управляемости (Manageability). MOF затрагивает вопросы, связанные с организацией обучения и работы персонала, процессов, технологиями и менеджментом в условиях сложных (Complex), распределенных (Distributed) и разнородных (Heterogeneous) IT-сред.
Рис. 7.9. Области ключевых компетенций MOF
MOF основан на лучших производственных методиках, собранных в библиотеке IT Infrastructure Library (ITIL), составленной Агентством правительства Великобритании (Central Computer and Telecommunications Agency) и представляет собой свод ключевых компетенций в 4-х основных разделах реализации и использования программного продукта: «Изменения», «Эксплуатация», «Поддержка» и «Оптимизация» (рис. 7.9). Информация по MOF доступна в Internet по адресу http://www.microsoft.com/mof/.
Модель процесса в MSF формируется на базе итеративной и эволюционной моделей ЖЦ, основывается на сценариях использования, работы выполняет небольшая команда (хотя есть способы масштабирования команд для больших проектов), используется подход к тестированию, основанный на контексте. Модель полностью ориентирована на заказчика − принцип «качества обслуживания заказчика.
В модели поддерживаются следующие потоки работ (Workflow):
o Формулировка целей и задач проекта
o Идентификация факторов успеха проекта
o Создание сценариев и тестирование сценариев
o Создание требований по качеству обслуживания
o Планирование итераций
o Создание архитектуры решения
o Реализация задачи по разработке
o Сборка продукта
o Быстрое тестирование, исправление и закрытие ошибок
o Тестирования требований по качеству обслуживания
o Выпуск продукта
o Управление проектом
В модели проектной команды MSF у каждого члена команды имеются четко очерченные роли и зоны ответственности (рис. 7.10). В основу модели положены следующие принципы:
o взаимозависимые и взаимосвязанные роли в малой команде
o определение роли, особой миссии и зоны ответственности для каждого члена проектной команды
o распределенное управление проектом и ответственность
o каждый сфокусирован на успехе проекта и настроен на работу в течение всего цикла проекта
o эффективные коммуникации между членами команды являются ключевым фактором успеха;
o параллельная работа всех участников команды над проектом
o пользователи и обучающий персонал включены в команду.
В такой группе: общие для всех членов группы цели и конкретные для каждого планы реализации; каждый понимает как проблемы конечного пользователя, так и проблемы разработчика; каждый общается с каждым, и каждый делает реальную работу; каждый несет ответственность за свою работу, в том числе и перед группой.
Менеджер продукта. Обеспечивает коммуникационный канал между заказчиком и проектной командой. Менеджер продукта управляет ожиданиями заказчика, разрабатывает и поддерживает бизнес-контекст проекта. Его работа не связана напрямую с продажей продукта, он сфокусирован на продукте, его задача – определить и обеспечить удовлетворение заказчика. Лучшая кандидатура на эту роль – существующий постоянный пользователь продукта, сотрудник коммерческого отдела или другой представитель заказчика, если он понимает задачи и механику бизнеса.
Рис. 7.10. Роли членов проектной команды MSF
Менеджер проекта. Управляет коммуникациями и взаимоотношениями в проектной команде, является координатором действий, разрабатывает функциональные спецификации и управляет ими, ведет график проекта и отчитывается по состоянию проекта, инициирует принятие критичных для хода проекта решений.
Архитектор, разработчик. Принимает технические решения, которые могут быть реализованы и использованы, создает продукт, удовлетворяющий спецификациям и ожиданиям заказчика, консультирует другие роли в ходе проекта. Разработчик участвует в обзорах, реализует возможности продукта, участвует в создании функциональных спецификаций, отслеживает и исправляет ошибки за приемлемое время. В контексте конкретного проекта разработчик дополнительно может, например, производить инсталляцию программного обеспечения, настройку продукта или услуги.
Разработка сложных программных систем требует детального знания высокоуровневых языков программирования, визуального моделирования, сетевых технологий и проектирования баз данных. В связи с тем, что один человек не может быть экспертом во всех областях этих технологий, важно, чтобы экспертиза во всех областях реализации проекта была представлена соответствующими техническими специалистами, входящими в группу разработчиков, а руководитель этой группы знал и понимал ключевые моменты каждой из этих технических областей.
Тестер. Тестирование включает в себя не только проверку кода. Тестировать надо функциональные спецификации, систему обеспечения производительности, пользовательские интерфейсы, планы внедрения и используемую терминологию. Тестер обеспечивает возможность того, чтобы все особенности и задачи тестирования были известны до выпуска версии продукта, разрабатывает стратегию тестирования и планы тестирования для каждой из фаз проекта. Планы и процедуры тестирования для сложных программных систем должны быть комплексными.
Инструктор. Отвечает за снижение затрат на дальнейшее сопровождение продукта, обеспечение максимальной эффективности работы пользователя. Важно, что речь идет о производительности пользователя, а не системы. Для обеспечения оптимальной продуктивности инструктор собирает статистику по производительности пользователей и создает решения для повышения производительности, с использованием таких технологий, как мультимедиа, видео, HTML, встроенные системы подсказки, мастера, тренажеры и т.п. Инструктор принимает участие во всех обсуждениях пользовательского интерфейса и архитектуры продукта.
Логистик. Задача логистика – обеспечить «гладкое» внедрение и развитие продукта. Обычной является ситуация, когда внедрение продукта стоит дороже его разработки. Логистик должен обеспечить такое состояние дел, чтобы заказчик был готов к внедрению, чтобы вовремя были выполнены все подготовительные работы и существовала необходимая инфраструктура.
Помимо перечисленных ролей, можно выделить еще «роли поддержки и сопровождения». Это специалисты и эксперты в ключевых точках инфраструктуры. Они привлекаются к работам, когда это необходимо, но не принимают решений. Если численность проектной комнды меньше шести человек, то часть ролей может совмещаться, и их будет выполнять один человек. MSF дает рекомендации по совместимости нескольких различных ролей. На рис. 7.11 показаны рекомендации по совмещению ролей.
Рис. 7.11. Рекомендации MSF по совмещению ролей
в проектной команде
В настоящее время существуют наборы программных продуктов для поддержки командной работы. На наш взгляд одним из таких интересных и недорогих наборов является следующий: Visual Studio Team System 2010 (интегрированное средство управления программными проектами), SQL Server 2008 (одно из наиболее эффективных средств для хранения и управления данными) и BizTalk Server 2010 (средство для управления и автоматизации бизнес-процессов), с помощью которого можно полностью реализовать все задачи по разработке мобильного программного приложения небольшой по численности командой.
Методология Scrum
Методология Scrum – это набор принципов, на которых строится процесс разработки, позволяющий в жёстко фиксированные небольшие промежутки времени («спринты») от двух до четырех недель предоставлять конечному пользователю работающее ПО с новыми возможностями, для которых определён наибольший приоритет. Возможности ПО к реализации в очередном спринте определяются в начале спринта на этапе планирования и не могут изменяться на всём его протяжении. При этом строго-фиксированная небольшая длительность спринта придаёт процессу разработки предсказуемость и гибкость [9].
Методология устанавливает правила управления процессом разработки, применяет итеративную модель и позволяет использовать уже существующие практики кодирования, корректируя требования или внося тактические изменения. Использование этой методологии дает возможность выявлять и устранять отклонения от желаемого результата на более ранних этапах разработки программного продукта, реализуя тем самым заданное качество.
В методологии Scrum имеется всего три роли.
Scrum Master – самая важная роль в методологии. Как правило, эту роль в проекте играет менеджер проекта или team-leader. В обязанности Scrum Master'а входит обеспечение максимальной работоспособности и продуктивности команды, четкого взаимодействия между всеми участниками проекта, своевременное решение всех проблем, тормозящих или останавливающих работу, ограждение команды от всех воздействий извне во время итерации и обеспечение следования процессу всех участников проекта.
Product Owner – человек, поставляющий требования программистам. Обычно Product Owner является представителем заказчика или представляет рынок, на котором реализуется продукт. Product Owner должен составить бизнес-план и план развития с требованиями. Исходя из имеющейся информации, Product Owner подготавливает список требований, ранжированный по значимости. В обязанности участника проекта входит своевременное предоставление требований к продукту, определение дат и содержания релизов, эффективное управление приоритетами и корректировка требований.
Team – команда, состоящая из пяти–девяти человек. В нее входят люди с различными навыками – разработчики, аналитики, тестировщики. В отличие от методологии MSF здесь нет заранее определенных и поделенных ролей в команде, ограничивающих область действий членов команды. Первая задача такой команды – поставить реально достижимую, прогнозируемую, значимую цель для итерации. Вторая задача – реализовать эту цель в отведенные сроки и с заявленным качеством. Цель итерации считается достигнутой, если все поставленные задачи реализованы, весь код написан по стандартам кодирования, программа протестирована и все найденные дефекты устранены. В обязанности всех членов Scrum-Team входит участие в выборе цели итерации и определение результата работы. Они должны эффективно взаимодействовать со всеми участниками команды, самостоятельно организовывать свою работу, предоставлять владельцу рабочий продукт в конце каждого цикла.
Рис. 7.12. Процессы и артефакты в методологии Scrum
Артефакты в методологии Scrum (рис. 7.12):
Product Backlog – это имеющихся на данный момент список деловых и технических требований к системе с указанием приоритетов. Product Backlog включает в себя задачи, технологии, проблемы, запросы ошибки и т.д. Элементы этого списка называются «историями» (User Story) или элементами Backlog’a (Backlog Items). Product backlog открыт для редактирования для всех участников Scrum-процесса.
Sprint Backlog содержит функциональность, выбранную Product Owner из Product Backlog. Все функции разбиты по задачам, каждая из которых оценивается и выполняется командой в соответствии с гибким планом работ.
Burndown chart показывает, сколько уже исполнено и сколько ещё остаётся сделать.
Результатом Sprint является готовый продукт, который можно передавать заказчику. Каждый sprint представляет собой «водопад». В течение спринта делаются все работы по сбору требований, дизайну, кодированию и тестированию продукта.
Такая итеративная разработка, в конце которой создается готовый к использованию продукт, применяется во многих гибких методологиях. Но в Scrum хорошо реализован процесс сбора функций и их распределение по итерациям. Спорный момент здесь – отсутствие жестко заданного распределения ролей и обязанностей в команде. Принцип «все ответственны за всё» работает далеко не всегда, наоборот, четкое распределение ролей позволит сконцентрироваться сотрудникам только на тех работах, где они могут принести максимум пользы.
Как и многие другие гибкие методологии, Scrum требует постоянного участия представителя заказчика или наличия представителя рынка. В обоих случаях всё не так хорошо, как описывается в стартовой модели. Заказчик не всегда может полностью определить, что именно ему нужно, а частое изменение требований вносит неопределённость и может сильно замедлить работу. Представитель рынка выявляет интересы некоторого количества конкретных покупателей, а определение интересов абстрактной целевой группы возможных пользователей – процесс, требующий продолжительных исследований.
Тем не менее, методология Scrum является одной из самых применяемых гибких (Agile) методологий, когда необходимо в сжатые сроки небольшой командой изготовить и передать заказчику качественный продукт.
И, наконец, третий путь коммерциализации перспективной идеи программного приложения – это организовать компанию «с нуля» и запустить производство продукта на промышленной основе.
Дата добавления: 2016-03-15; просмотров: 1981;