Русский
Русский
English
Статистика
Реклама

Знания в проектах

Момент, когда проектная документация нужна

28.12.2020 12:07:24 | Автор: admin
Время идет, планета крутится, системы растут и развиваются, а я продолжаю слышать в кругах аналитиков сожаление: Эх, пришел на проект, а тут никакой документации, смотрим в код.

Но это ерунда. Хуже, когда заказчик говорит: Создали два разработчика. Уволить не могу, хотя почти ничего не делают, только по мелочи донастраивают. А с этой системой у нас уже и бухгалтерия интегрирована, и Документация? Нет ее. А надо?.. Спасите-помогите!

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




Что это за зверь документация?


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

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

Для кого документировать?


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



В первую очередь документация нужна команде разработки и заказчику.

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

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

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

Иногда проектная документация нужна просто потому, что так сказали.

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

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

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

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

Причины, по которым компании приходят к внедрению документирования


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

Есть сервис МойСклад и 2007 год. Прекрасный пример стартапа от двух разработчиков. Фундамент сервиса был целиком заложен Аскаром (генеральный директор) и Олегом (технических директор). Если почитать историю создания МоегоСклада, то можно узнать интересный факт уже тогда было неосознанное документирование продукта в рабочей тетрадке в клеточку!

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



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

Пример с автомастерской


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

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

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



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

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

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

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

И все успешно получится, потому что система обычная, никаких наворотов нет.



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

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

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

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

За 13 лет МойСклад смог очень круто подрасти: веб-приложение для RU- и US-площадок, кассовое ПО для трех платформ, мобильные приложения, шесть протоколов API и много-много всего.

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

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

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

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

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



Программный код и есть документация


Так говорят разработчики. И нет, это не так.

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

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

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

Как нас много


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











Сервис МойСклад начинался с Аскара и Олега 13 лет назад. Целиком знают продукт всего три человека: Аскар, Олег и Максим присоединившийся к ним немногим позже продакт и бизнес-аналитик.

Сегодня компания насчитывает более 150 человек. Три хранителя знаний на тридцать сотрудников? Возможно. А на команду от ста человек? Да и помнить все детали, особенно когда реализовывал их не ты, просто невозможно. Поэтому нормой стал ответ смотри как на проде.

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

Может ответить только зафиксированное знание, которое либо есть, либо нет, либо оно в человеке (а значит его нет).

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

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

Не храните знания в людях это опасно


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

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



Сегодня все более актуальна тема с удаленной работой, да и ранее команды разработки всегда обсуждали задачи в чатах (Slack, Telegram, Skype и т.д.).

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

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

Моя позиция такова: стараюсь минимизировать развернутые ответы на вопросы в чатах и максимально ссылаться на существующую документацию:

Разработчик: [Вопрос]
Я: [ссылка на Confluence] п. [название]


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

И про контекст










Итого: где же тот самый момент?


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

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

Что может дать наличие документации на программный продукт?

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


А такой результат влечет за собой как минимум экономическую выгоду.

Ссылки


analystdays.ru/ru/talk/83497 Analyst Days. Как мы процесс документирования внедряли
habr.com/ru/company/moysklad/blog/452016 Сервис МойСклад 12 лет в облаке (уже 13!)
Подробнее..

Пример модели знаний о требованиях

01.03.2021 12:17:20 | Автор: admin

Зачем нужна модель знаний

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

Вот некоторые из них:

  • BABOK (A Guide to the Business Analysis Body of Knowledge) - руководство к своду знаний по бизнес-анализу от Международного института IIBA (International Institute of Business Analysis)

  • SWEBOK (Software Engineering Body of Knowledge) - международный стандарт ISO/IEC TR 19759 от 2015 г., в котором описана общепринятая сумма знаний о программной инженерии

  • SEBOK (Systems Engineering Body of Knowledge) - свод знаний в области системной инженерии, разработанный организацией BKCASE, которая контролируется Управляющим советом, состоящим из трех ассоциаций (т.е. Международного совета по системной инженерии, Центра исследований системной инженерии и Компьютерного общества IEEE)

  • BPM CBOK (Guide to the Business Process Management Body of Knowledge) - свод знаний по управлению бизнес-процессами Ассоциации профессионалов управления бизнес-процессами (ABPMP)

  • PMBOK (Project Management Body Of Knowledge) - свод профессиональных знаний по управлению проектами института управления проектами PMI

  • сертификация IREB CPRE (certification in Requirements Engineering) Foundation Level - методология инженерии требований сообщества IREB.

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

На текущий момент существует множество способов представления знаний: семантические сети, фреймы, языки и нотации и др. (Википедия).

Один из этих способов можно было бы использовать для конспектирования изученного материала в виде модели знаний с целью:

  • извлечь существенные понятия о концепциях, описанных в своде знаний

  • получить структурированное системное представление о связях между концепциями

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

Что должна включать модель знаний

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

А раз это процессы, то классический подход к такой модели - ответить на основные вопросы:

  • кто? - какие действующие лица с какими наборами компетенций выполняют активности в процессах

  • как? - какие активности, техники и события включают в себя процессы, в какой последовательности выполняются; кроме описания самих активностей важно отразить:

    • ключевые принципы, на которых базируются активности

    • ключевые свойства и аспекты активностей

    • основные ограничения

    • определения и факты, связанные с процессами

  • что? - какие поставляемые результаты и прочие сущности являются результатом активностей или поступают на вход активностей

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

Кроме того, между концептами системы важно отразить связи:

  • структурные - отношение к группе, связь части и общего

  • зависимости - влияние концептов друг на друга или операции, связывающие концепты друг с другом

  • динамические - обозначить последовательность выполнения, направление потока информации

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

Archimate для представления знаний

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

Далее описана попытка представить методологию инженерии требований сообщества IREB в виде модели знаний в нотации ArchiMate.

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

Некоторые примеры описания модели знаний элементами нотации Archimate:

1. Активности, группы активностей и связи между ними

Цель описания: ответить на вопрос Как? - описать последовательность и структуру выполняемых в процессе активностей, а так же применяемые техники.

С помощью элемента слоя реализации Пакет работ (Work Package) можно отразить активности и техники используемые в процессах.

Связь Композиция (Composition) отражает то, что одна активность является частью более крупной группы активностей. Связь Триггер (Triggering) позволяет отобразить последовательность выполнения активностей.

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

Элемент Ценность (Value) позволяет указать ценность или преимущества использования активности в общем процессе и ответить на вопрос модели Зачем?.

2. Результаты активностей

Цель описания: ответить на вопрос Что? - описать основные ключевые результаты активностей и процессов, информационные потоки.

Результаты активностей описываются элементом Поставляемые результаты (Deliverable).

С помощью связи Реализация (Realization) отражается - какая активность создает поставляемые результаты. Связь Доступ (Access) позволяет показать чтение или запись информации из/в поставляемые результаты. Связь Поток отражает факт передачи информации (без конкретизации сущностей) между активностями или событиям.

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

3. Свойства активностей

Цель описания: отразить основные принципы, свойства, ограничения и аспекты активностей, а так же определения, связанные с ними.

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

С помощью элемента Требование (Requirement) описываются свойства или аспекты, связанные с активностью или поставляемыми результатами процесса. Элемент Принцип (Principle) позволяет описать ключевые принципы, связанные с активностью. Элемент Понятие (Meaning) можно использовать для описания ключевых понятий и определений.

С помощью связи Ассоциация (Association) описанные артефакты связываются с активностями и поставляемыми результатами.

Например, процесс инженерии требований имеет Ключевые аспекты процесса RE (декомпозируются в отдельном представлении) и основывается на девяти ключевых принципах. Принцип 4. Контекст связан с концептом Контекст (само определение дано в описании элемента).

Факторы, каким то образом ограничивающие пространство свойств или оказывающие влияние на свойство отражаются элементом Ограничение (Constraint), а само влияние отражается связью Влияние (Influence).

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

Цель описания: ответить на вопрос Кто? - описать наборы компетенций и основных действующих лиц, участвующих в процессах.

Элемент Роль (Business Role) позволяет отразить набор компетенций или зону ответственности, связанных с активностью. Элемент Актор (Business Actor) представляет бизнес-сущность, выполняющую активность. Это может быть как конкретное лицо, так и структурные единицы, например, подразделения.

С помощью связи Назначение (Assignment) устанавливается связь между соответствующим активным элементом и активностью, им выполняемой.

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

5. Структурные связи между сущностями. Обобщение и специализация

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

С использованием связи Композиция (Composition) отображаются случаи, когда один элемент является неотъемлемой частью другого (не может существовать без него). Например, активность по обучению пользователей является частью процесса выбора CASE-инструмента.

Отразить связь между абстрактным концептом и его конкретными реализациям позволяет связь Специализация (Specialization). Например, к концепту Модель относятся модели системного контекста, которые в свою очередь могут быть реализованы как DFD-диаграммы или UML-варианты использования.

6. Что еще может Archi

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

В состав ArchiMate входит инструмент для просмотра всех связей выбранного элемента. Глубина связей может настраиваться.

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

Заключение

Методология инженерии требований сообщества IREB описана моделью представления знаний в формате ArchiMate. Результат здесь:

Что удалось:

  • в графической форме представить знания об инженерии требований

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

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

Какие остались вопросы:

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

  • область применения модели - достаточность для описания других областей знаний системного анализа

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

Подробнее..

Категории

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

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru