OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 00:57

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: Как связать код и требования?
СообщениеДобавлено: Воскресенье, 08 Декабрь, 2019 11:03 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Допустим, до разработки кода сначала формируется документ с требованиями (спецификация), а на основе требований пишется код. Часто бывает, что сначала требования и код практически соответствуют друг другу (и то не полностью), а со временем, например, по прошествии 10 лет, код постепенно эволюционирует в какую-то сторону, а требования (спецификация) уже практически не отражают текущее состояние программы.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Воскресенье, 08 Декабрь, 2019 13:20 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Rifat писал(а):
как связать код и требования так, чтобы глядя на код было видно какие требования они реализуют. И изменяя код, например, исправляя какие-нибудь баги, было ясно в какие пункты требований необходимо внести изменения и дополнения.

Обычно на фирмах использут нечто атлассиановское. В исходниках вставляется урла на документ или его код в системе.
В случае ЧЯ+КП можновставлять полноценную ссылку в сам исходный код.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Воскресенье, 08 Декабрь, 2019 13:41 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Есть системы управления требованиями типа Cradle, которые встраивают в жизненный цикл софта. Вместо ТЗ - набор требований с привязками. И на этапе реализации в коде делают ссылки на СУТ. Устранение багов тоже со ссылками и коммиты тоже. Это все увязывается с svn, redmine, bugzilla или аналогами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Воскресенье, 08 Декабрь, 2019 14:09 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
У нас на "эуропейской" фирме было три типа документов:
- user needs (первоначальный набор требований без какой-либо конкретики);
- techical requirments ("Для того что-бы удовлетворить UN#XXX сделать то-то и то-то");
- software specification ("В программе сделано вот это, т.к. требовалось TR#XXX").
Как-то так в общих чертах


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Пятница, 13 Декабрь, 2019 12:03 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Rifat писал(а):
Возник вопрос как связать код и требования так, чтобы глядя на код было видно какие требования они реализуют. И изменяя код, например, исправляя какие-нибудь баги, было ясно в какие пункты требований необходимо внести изменения и дополнения.
Принципиально никак. Можно только подставлять костыли то там, то здесь.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Пятница, 13 Декабрь, 2019 13:18 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 79
Используйте ИС Дракон.

При программировании в среде ИС Дракон требования прикладной область неразрывно связаны с программным кодом. В иконе имеются ряд текстовых полей для описания прикладной области и программного кода. Прикладная область описывается на нескольких уровнях.


Последний раз редактировалось LKom Пятница, 13 Декабрь, 2019 15:13, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Пятница, 13 Декабрь, 2019 13:57 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
LKom писал(а):
Используйте ИС Дракон
Обнаружена реклама :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Пятница, 13 Декабрь, 2019 17:29 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
LKom писал(а):
Используйте ИС Дракон.
При программировании в среде ИС Дракон требования прикладной область неразрывно связаны с программным кодом. В иконе имеются ряд текстовых полей для описания прикладной области и программного кода. Прикладная область описывается на нескольких уровнях.
Поправьте меня, если я неправ...
Дракон как-то описывает структуру сущностей и отношения между ними в предметной области?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Пятница, 13 Декабрь, 2019 17:38 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Вот так: :mrgreen:
https://ru.wikipedia.org/wiki/Shakespeare_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)

А если серьёзно, пока не будет встроен формальный верификатор в Microsoft Word для людей которые пишут ТЗ (по последним данным, это не тех.задание, а точка зрения :) ) до тех пор никаких сдвигов не произойдёт, а если такой анализатор будет создан и встроен, то половина программистов сразу должна написать для формальных схем из Word интерпретаторы для своих экосистем, а вторая половина освободится от CRUD-рутины изаймётся написанием следующего поколения программ, сущностно-онтологических.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Пятница, 13 Декабрь, 2019 18:12 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 79
Wlad писал(а):
Поправьте меня, если я неправ...
Дракон как-то описывает структуру сущностей и отношения между ними в предметной области?

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

Установлена жесткая связь текста элемента описания прикладной области и соответствующего программного кода.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Суббота, 14 Декабрь, 2019 00:17 

Зарегистрирован: Среда, 31 Январь, 2018 19:54
Сообщения: 244
Rifat писал(а):
Возник вопрос как связать код и требования так, чтобы глядя на код было видно какие требования они реализуют. И изменяя код, например, исправляя какие-нибудь баги, было ясно в какие пункты требований необходимо внести изменения и дополнения.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Понедельник, 16 Декабрь, 2019 22:50 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Rifat,
на CPC есть
Цитата:
Frame By Robert D. Campbell: An abstract hierarchical Specification framework.
An abstract hierarchical 'Specification framework' for specifying the defining parameters of large systems comprising sub & subsub systems. Full version control and history recovery, operating at both system & subsystem level, is build in.

http://www.zinnamturm.eu/downloadsDH.htm#Frame
Пересекается это с вашим запросом?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Вторник, 17 Декабрь, 2019 10:49 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Не знаю. Скорее мне хотелось бы узнать мнение людей, которые им пользовались. А если никто не пользовался, то когда время будет, надо будет посмотреть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Среда, 18 Декабрь, 2019 13:10 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Сейчас пришла идея, что идея Кнута про грамотное программирование (aka литературное программирование) - это как раз то, что я ищу. В принципе, я согласен с идеей, но насчет реализации надо еще подумать как это лучше реализовать, возможно, стоит реализовать по-другому, чем это было реализовано в системе WEB.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Среда, 18 Декабрь, 2019 17:33 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Насколько я понимаю система Кнута позволяет описывать то, что делает код на одном уровне детализации. Вообще выделяют 3 уровня требований:
Цитата:
1. Пользовательские требования - описание на естественном языке (плюс поясняющие диаграммы) функций, выполняемых системой, и ограничений, накладываемых на неё.
2. Системные требования - детализированное описание системных функций и ограничений, которое иногда называют функциональной спецификацией. Она служит основой для заключения контракта между покупателем системы и разработчиками ПО.
3. Проектная системная спецификация - обобщённое описание структуры программной системы, которое будет основой для детализованного проектирования системы и её последующей реализации. Эта спецификация дополняет и детализирует спецификацию системных требований.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Четверг, 19 Декабрь, 2019 03:51 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Это можно доксигеном делать. Только комменты в коде писать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Суббота, 21 Декабрь, 2019 09:41 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Доксиген он больше предназначен для создания документации по коду. Обычно он генерирует документацию, содержащую описание классов и их методов. Но при этом может не быть общей информации о том, что мы реализовать то хотели, зачем создали именно такие классы, какие идеи положены в основу. Я бы назвал это кодоцентричным подходом.
У Кнута же скорее противоположный подход, он как бы начинает писать статью и делает вставки кода. А специальная утилита генерирует полный код программы из кусочков. Это я бы назвал документоцентричным подходом.
В любом случае для описания документации необходим один порядок следования мыслей, а для написания кода другой.
То есть хотелось бы найти какой-то промежуточный подход.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как связать код и требования?
СообщениеДобавлено: Среда, 25 Декабрь, 2019 09:13 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Вообще, если проанализировать возможные варианты, то видятся следующие варианты:
1) Есть единый источник, из которого генерируется код и документация (подход Кнута и другие подходы)
2) Код и документация врозь (как это обычно и бывает).
3) Есть код, документация и дополнительный источник, который содержит связи между кодом и документацией.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB