OMG! Essence of Software Engineering? ЛАФ’2013 В мире много методов приемов практик идеологий разработки ПО V-model TDD Agile ISO 12207 PRINCE2 RUP Persona’s method V-model Continious Integration SCRUM TDD EssUP OpenUP User Story Pair Programming Persona’s method XP UML DoD ISO 24744 Kanban Kanban Use Cases MSF MSF SCRUM CI DevOps Literate Programming MDD Pair Programming BPMN Тысячи их!!1 Я смотрю, ты совсем запутался? Ну, не совсем, но я правда иногда не понимаю – как все это связано между собой. Тем более, что у каждой команды все равно свой собственный метод. Подвести бы под это какую-нибудь основу… Ну, несколько таких методов я сам придумал. UML там, RUP… А про основу – это ты хорошо сказал! Смотри, я придумал для тебя Единую Теорию Всего Программирования… Я назвал ее SEMAT – Software Engineering Method And Theory. Мы опишем все методы через практики и… Основы! Смотри: Методы Methods Состоят из Практики Основа Определены в терминах Язык Practices The Kernel The Language Описаны при помощи элементов У нас есть три области интереса (Area of concerns): Потребитель Customer Решение Solution Предприятие Endeavor Внутри каждой области есть АЛЬФЫ – это очень клевые штуки, я их сам придумал – а ещё есть деятельности и компетенции. Для всего этого есть графический язык, как UML, только круче! Альфы ALPHA Abstract-Level Progress Health Attribute Деятельности Activity Space Компетенции Competence Альфы Потребитель Возможность Стейкхолдер Требования Программная система Решение Предприятие Команда Работа Технология работы Альфы и семантика Потребитель Возможность предоставляет Стейкхолдер потребляет и использует фокусирует настраивается под Требования удовлетворяет задают ограничения Работа Предприятие Программная система создает планирует и производит Технология работы Команда поддерживает Решение Деятельности Потребитель Исследовать возможность Понять нужды Убедиться в удовлетворении Изучать использование системы Решение Понять требования Спроектировать систему Реализовать систему Протестировать систему Развернуть систему Обслуживать систему Предприятие Приготовиться выполнять работу Координировать дела Поддерживать команду Отслеживать прогресс Прекратить работу Компетенции Потребитель Представление интересов стейкхолдеров Решение Анализ Разработка Тестирование Предприятие Лидерство Управление Теперь смотри, как это работает: мы «протаскиваем» проект по состояниям альф, выполняя дела из деятельностей при помощи наших компетенций. Альфа Имеет Состояние альфы Подтверждает Намечает Деятельность Компетенция Рабочий продукт Создает/изменяет Воплощается в Дело Ох… Круто! Хотя и сложновато как-то. Ладно, спасибо большое , Ивар, я теперь сам попробую разобраться – что это, и чем может помочь аналитику. Не вопрос, обращайся! А штука полезная, сам увидишь. И не такая уж сложная. Ладно, пойду пока еще какойнибудь язык придумаю. Или чтонибудь еще, что можно сократить до трех букв. See u! Где здесь место для аналитика? Потребитель Исследовать возможность Понять нужды Убедиться в удовлетворении Возможность Изучать использование системы Стейкхолдер Представление интересов стейкхолдеров Решение Требования Понять требования Анализ Программная система Предприятие Команда Работа Технология работы Стейкхолдеры Выявлены Стейкхолдеры выявлены. Представлены Механизмы вовлечения стейкхолдеров согласованы, представители обозначены. Вовлечены Представители стейкхолдеров вовлечены в работу и выполняют свои обязанности. В согласии Представители стейкхолдеров находятся в согласии. Удовлетворены развертыванием системы Минимальные ожидания представителей стейкхолдеров удовлетворены. Удовлетворены работой системы Система удовлетворяет или превышает минимальные ожидания стейкхолдеров. Возможность Идентифицирована Решается программной системой Коммерческая, социальная или бизнесовая возможность идентифицирована. Потребность в программном решении обоснована и подтверждена. Оценена Ценность успешного решения установлена. Жизнена Все согласны, что решение может быть произведено достаточно быстро и дешево, чтобы воспользоваться ценностью. Использована Принесла выгоду Система создана и демонстрирует использование возможности. Операционное использование или продажи создают ощутимую выгоду. Требования Выявлены Все согласны, что новая система нужна. Определены Назначение и предмет новой системы ясны. Ясны Приняты Адресуют потребности Полны Требования обеспечивают целостное описание неотъемлемых характеристик системы. Описание системы через требования приемлемо для стейкхолдеров. Достаточное количество требований направлено на удовлетворение потребностей в новой системе. Требования полностью удовлетворяют потребности в новой системе. Чек-листы для состояний Стейкхолдеры Выявлены Идентифицированы все различные группы заинтересованных сторон (стейкхолдеров), которых затрагивает или может затронуть разработка или функционирование системы. Достигнуто согласие между группами стейкхолдеров (как минимум, между теми, кто финансирует, использует, поддерживает и обслуживает систему). Определены обязанности представителей стейкхолдеров. Чек-листы для состояний Стейкхолдеры Представлены Представители стейкхолдеров согласились взять на себя ответственность. Представители стейкхолдеров уполномочены нести ответственность. Представители стейкхолдеров готовы к сотрудничеству между собой. Представители стейкхолдеров уважают и поддерживают технологию работы команды. Спасибо, кэп! Чек-листы для состояний Требования Выявлены Стейкхолдеры согласны, что система должна быть создана. Выявлены стейкхолдеры, которые будут пользоваться системой. Выявлены стейкхолдеры, которые будут финансировать создание системы. Ясно, какую возможность будет использовать будущая система. Чек-листы для состояний Требования Определены Выявлены стейкхолдеры, вовлеченные в разработку новой системы. Все стейкхолдеры согласны с назначением новой системы. Ясно, что будет являться показателем успешности системы. Все стейкхолдеры разделяют понимание объема предложенного решения. Согласован способ описания требований. Имеется механизм для управления требованиями. Ясная схема приоритезации требований. Выявлены и признаны ограничения. Ясно сформулированы все предположения. Расширения Kernel Можно определить собственные под-альфы, их статусы и чеклисты для проверки. Что еще полезно: компетенции Представление интересов стейкхолдеров Анализ Способность собирать, выражать и балансировать потребности стейкхолдеров, и аккуратно представлять их точку зрения. Способность понять возможности и потребности стейкхолдеров, и преобразовать их в согласованный набор требований. Что эти люди делают для команды Представление интересов Анализ Люди с этой компетенцией помогают команде: • Понять бизнес-возможность. • Осознать сложности и потребности потребителей, пользователей и других заинтересованных сторон. • Приоритезировать и согласовывать требования. • Взаимодействовать со стейкхолдерами. • Понимать – насколько хорошо система удовлетворяет нуждам стейкхолдеров. Люди с этой компетенцией помогают команде: • Идентифицировать и понять нужды и возможности. • Докопаться до корневых причин проблем. • Собрать, понять и продуктивно обсуждать требования. • Создавать и согласовывать спецификации и модели. • Визуализировать решения и понимать их последствия. Необходимые навыки Представление интересов Необходимые навыки: • Ведение переговоров • Фасилитация • Нетворкинг • Хорошая письменная и устная речь • Эмпатия Анализ Необходимые навыки: • Письменная и устная коммуникация • Наблюдать, понимать и записывать детали • Декомпозиция • Видеть целое исходя из требований • Формулирование требований Заключение: что дает Kernel? • Фокусирует внимание на состоянии альф: стейкхолдеров, возможности и требований; • Разделяет роли для работы со стейкхолдерами и для анализа требований; • Предоставляет высокоуровневые последовательности состояний ключевых альф и чек-листы для их диагностики. Для чего использовать Kernel • Для оценки состояния проекта (без привязки к конкретной методологии) • Для планирования • Для сравнения двух методологий и проектирования процессов изменения • Для обучения • Для масштабирования • Для оптимизации методов • Для подбора людей Немедленная польза 1. Применять чек-листы 2. Включать пункты из чек-листов в договоры и проектные документы Текущий статус и ссылки В настоящее время стандарт находится на рассмотрении в OMG (статус: OMG Final Submission, 18 feb 2013). OMG сейчас проверяет соблюдение авторских прав. Ожидаемая дата рассмотрения – август 2013. Инициатива SEMAT: http://www.semat.org/ Карты на английском: http://www.ivarjacobson.com/SEMAT_Kernel _Cards_Download/ Спасибо за внимание! Юрий Куприянов Эксперт по системному анализу и разработке ПО, эксперт по коммуникациям и фасилитации, интерактивным методикам, преподаватель, тренер. Обращайтесь за консультациями! [email protected] http://facebook.com/yksi12 skype: yury.kupriyanov