stringtranslate.com

Документация по программному обеспечению

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

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

Типы

Требования к документации

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

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

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

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

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

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

Архитектурно-проектная документация

Архитектурная документация (также известная как описание архитектуры программного обеспечения ) — это особый тип проектной документации. В некотором смысле архитектурные документы являются третьей производной от кода ( проектная документация является второй производной, а документы кода — первой). Очень мало в архитектурных документах относится к самому коду. Эти документы не описывают, как программировать определенную процедуру, или даже почему эта конкретная процедура существует в той форме, в которой она существует, а вместо этого просто излагают общие требования, которые мотивируют существование такой процедуры. Хороший архитектурный документ содержит мало подробностей, но много объяснений. Он может предлагать подходы для проектирования более низкого уровня, но оставить фактические исследования по разведке для других документов.

Другой тип проектного документа — сравнительный документ или торговое исследование. Часто он принимает форму технического документа . Он фокусируется на одном конкретном аспекте системы и предлагает альтернативные подходы. Это может быть на уровне пользовательского интерфейса , кода, дизайна или даже архитектуры. Он обрисует ситуацию, опишет одну или несколько альтернатив и перечислит плюсы и минусы каждой из них. Хороший документ торгового исследования содержит много исследований, четко выражает свою идею (не полагаясь на тупой жаргон , чтобы ослепить читателя), и, что самое важное, является беспристрастным. Он должен честно и ясно объяснять стоимость любого решения, которое он предлагает как лучшее. Цель торгового исследования — разработать лучшее решение, а не навязывать определенную точку зрения. Вполне приемлемо не делать никаких выводов или заключить, что ни одна из альтернатив не является достаточно лучшей, чем базовая линия, чтобы оправдать изменение. К нему следует подходить как к научному начинанию, а не как к маркетинговому приему.

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

Если говорить о системах реляционных баз данных , документ должен включать следующие части:

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

Техническая документация

Важно, чтобы документы кода, связанные с исходным кодом (которые могут включать файлы README и документацию API ), были подробными, но не настолько многословными, чтобы их поддержка стала слишком трудоемкой или сложной. Различные руководства по документации и обзоры обычно встречаются в отношении программного приложения или программного продукта, документируемого авторами API . Эта документация может использоваться разработчиками, тестировщиками, а также конечными пользователями. Сегодня множество высокопроизводительных приложений можно увидеть в областях энергетики, транспорта, сетей, аэрокосмической промышленности, безопасности, промышленной автоматизации и в ряде других областей. Техническая документация стала важной в таких организациях, поскольку базовый и продвинутый уровень информации могут меняться с течением времени вместе с изменениями архитектуры. Есть доказательства того, что наличие хорошей документации кода фактически снижает затраты на обслуживание программного обеспечения. [1]

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

Техническая документация встроена в исходный код

Часто такие инструменты , как Doxygen , NDoc , Visual Expert , Javadoc , JSDoc , EiffelStudio , Sandcastle , ROBODoc , POD , TwinText или Universal Report, можно использовать для автоматической генерации документов кода, то есть они извлекают комментарии и программные контракты (если таковые имеются) из исходного кода и создают справочные руководства в таких формах, как текстовые или HTML- файлы.

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

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

Грамотное программирование

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

Разъяснительное программирование

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

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

Пользовательская документация

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

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

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

Пользовательская документация может быть создана в различных онлайн-форматах и ​​печатных форматах. [2] Однако существует три основных способа организации пользовательской документации.

  1. Обучающее руководство: Обучающий подход считается наиболее полезным для нового пользователя, в котором его направляют на каждом этапе выполнения конкретных задач. [3]
  2. Тематический: Тематический подход, где главы или разделы концентрируются на одной конкретной области интереса, более универсален для промежуточного пользователя. Некоторые авторы предпочитают передавать свои идеи через статью, основанную на знаниях, чтобы облегчить потребности пользователя. Этот подход обычно практикуется в динамичной отрасли, такой как информационные технологии . [4]
  3. Список или ссылка: Последний тип принципа организации — это тот, в котором команды или задачи просто перечислены в алфавитном порядке или логически сгруппированы, часто с помощью перекрестных ссылок. Этот последний подход более полезен для продвинутых пользователей, которые точно знают, какую информацию они ищут.

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

Составление пользовательской документации

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

  1. Анализ пользователя , основная исследовательская фаза процесса. [6]
  2. Планирование или фактическая фаза документирования. [7]
  3. Обзор черновика — это интуитивно понятный этап, на котором запрашиваются отзывы о черновике, составленном на предыдущем этапе. [8]
  4. Тестирование удобства использования , при котором удобство использования документа проверяется эмпирическим путем. [9]
  5. Редактирование — это заключительный этап, на котором информация, собранная на третьем и четвертом этапах, используется для создания окончательного варианта.

Маркетинговая документация

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

  1. Заинтересовать потенциального пользователя продуктом и вызвать у него желание более активно им пользоваться.
  2. Информировать их о том, что именно делает продукт, чтобы их ожидания соответствовали тому, что они получат.
  3. Объяснить позицию данного продукта по отношению к другим альтернативам.

Документация и споры о гибкой разработке

«Сопротивление документации среди разработчиков хорошо известно и не нуждается в подчеркивании». [10] Эта ситуация особенно распространена в гибкой разработке программного обеспечения, поскольку эти методологии пытаются избегать любых ненужных действий, которые не приносят прямой ценности. В частности, Agile Manifesto пропагандирует ценность «работающего программного обеспечения вместо исчерпывающей документации», что можно цинично интерпретировать как «Мы ​​хотим тратить все наше время на кодирование. Помните, настоящие программисты не пишут документацию». [11]

Однако опрос среди экспертов по программной инженерии показал, что документация ни в коем случае не считается ненужной в гибкой разработке. Тем не менее, признается, что в разработке есть мотивационные проблемы, и что могут потребоваться методы документирования, адаптированные к гибкой разработке (например, через системы репутации и геймификацию ). [12] [13]

Документы как код

Docs as Code — это подход к документации, который относится к ней с той же строгостью и процессами, что и к программному коду. Это включает:

  1. Контроль версий : использование таких систем, как Git, для отслеживания изменений и управления версиями.
  2. Непрерывная интеграция : автоматизация процесса создания и обновления документации.
  3. Сотрудничество : предоставление возможности нескольким участникам работать над документацией одновременно, аналогично разработке кода.

Преимущества Docs as Code

  1. Настройка контроля версий : Начните с размещения вашей документации в системе контроля версий. Структурируйте ее аналогично вашей кодовой базе.
  2. Автоматизация процессов : внедрение инструментов CI/CD для автоматизации создания и развертывания документации.
  3. Определите роли : Назначьте роли и обязанности по документации в Agile-команде. Убедитесь, что все понимают важность документации.
  4. Регулярные проверки : запланируйте регулярные проверки документации в рамках ретроспектив спринта.

Смотрите также

Примечания

  1. ^ «Как получить бюджет на документирование кода».
  2. ^ "RH Earle, MA Rosso, KE Alexander (2015) Пользовательские предпочтения жанров документации программного обеспечения. Труды 33-й ежегодной международной конференции по проектированию коммуникаций (ACM SIGDOC)".
  3. ^ Вёльц, Карлос. "The KDE Documentation Primer" . Получено 15 июня 2009 г.
  4. ^ Microsoft . "Статьи базы знаний по разработке драйверов". Microsoft . Получено 15 июня 2009 г. .
  5. ^ Томас Т. Баркер, Написание документации по программному обеспечению, Предисловие, xxiv. Часть серии Allyn & Bacon по технической коммуникации, 2-е изд. Upper Saddle River : Pearson Education , 2003. ISBN 0321103289 Архивировано 13 мая 2013 г. на Wayback Machine 
  6. Баркер, стр. 118.
  7. Баркер, стр. 173.
  8. Баркер, стр. 217.
  9. Баркер, стр. 240.
  10. ^ Herbsleb, James D. и Moitra, Dependra. В: IEEE Software , т. 18, № 2, стр. 16-20, март/апрель 2001 г.
  11. ^ Ракитин, Стивен., «Манифест вызывает цинизм». IEEE Computer, т. 34, № 12, стр. 4, 2001
  12. ^ Праузе, Кристиан Р. и Зоя Дурдик. «Архитектурное проектирование и документирование: отходы в гибкой разработке?» В: Международная конференция по программному обеспечению и системным процессам (ICSSP), IEEE, 2012.
  13. ^ Селик, Бран. «Agile-документация, кто-нибудь?» В: IEEE Software , т. 26, № 6, стр. 11-12, 2009