Мой основной персональный Web-ресурс:
В том числе: ИТ-публикации и Open Source, СПО, НПП, ИТ и государство

среда, 24 августа 2011 г.

Вопрос о сертификации прикладных расчетных программ

Мой друг-Профессор (на самом деле профессор, доктор и большой ученый) обратился ко мне с вопросом по поводу сертификации ПО. Как у нас обстоят дела в этой сфере.

Я, в общем-то, в теме ПО не новичок, про вопросы сертификации имею кое-какие представления. Но – именно "кое-какие". На моей памяти вся проблема сертификации ПО у нас связана или с вопросами совместимости (чаще всего с Windows) или обеспечения безопасности (тут я полный профан, знаю только, что есть).

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

В целом все это остается пустыми разговорами.

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

Но это – бизнес-приложения.
А что делать с научно-расчетными системами?

Выполняется задача: оценка запасов подземных вод (это – из области моей "дожурналистской" деятельности).
Собираются фактические данные изысканий, проводятся дополнительные изыскания. Далее – собственно анализ, прогноз, выводы.
Все это делается на основе каких-то математических моделей. А модели реализуются с помощью программ.

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

Собственно, тут и возникает вопрос сертификации ПО.
Вы сделали Оценку запасов. Но дальне требуется ваш отчет "защитить" (в принципе, как и любую другую НИР). Вопрос-то серьезный – на основе вашей оценки будут приниматься серьезные решения.

Процедура защиты подразумевает прохождение внешней независимой экспертизы.
И вот этот независимый эксперт (обычно это организация) спрашивает: а ваша расчетная программа сертифицирована?

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

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

То должен ли быть некий внешний контроль над теми программами, которые используются при проектировании объектов, доказывающий что они правильные?
Ведь, например, чтобы делать инженерные изыкания, надо получить лицензию. У нас в стране много лицензируемых видов деятельности. Если завтра мы с тобой создадим фирму А+С и, как старые изыскатели, захотим занаться изыскательской деятельностью, нас заставят получить лицензию. Есть ли подобный механизм в разных предметных отраслях, специальной сертификации (я не пишу лицензирования, поскольку лицензия в IT понимается, как право на использование программы) ПО? Как, например, дело обстоит у военных, у людей, следящих за нами и пр. Есть процедуры, которая программа должна пройти прежде, чем ее официально допустят к работе?
===============

В принципе сама постановка вопроса понятна и справедлива. Но как она реализуется на практике.
Я задал другу-Профессору некоторые встречный вопросы (например, на основе каких нормативных требований эксперт требует сертификации). Он пока выясняет. Но просил меня проконсультироваться по поводу сертификации прикладного ПО у ИТ-проффи.

Что я и делаю. Интересно мнение ИТ-проффи.
Спасибо!

11 комментариев:

  1. На сколько я знаю, есть такая же проблема сертификации ПО для подсчета запасов нефти :(

    ОтветитьУдалить
  2. Это конечно чтистая теория - но программный продукт Х может быть сертифицирован на то, что он действительно верно и правильно использует и реализует модель А на базе контрольных примеров(например использует моделирование методом Монте-Карло). И только на это.

    А вот то что модель А можно сертифицировать на "правильность" мирозданию в голове как-то не укладывается.

    ОтветитьУдалить
  3. Разумеется, речь идет только о проверке соответствия программы некоторой модели. Хотя это - чертовски сложная задача, даже для не очень сложной модели.

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

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

    ОтветитьУдалить
  5. Я с уважением отношусь к расчетам типа "потерь в сетях" или сметной документации.
    Но все же это довольно простые расчеты. Тут все можно хорошо классифицировать и упорядочить.
    И самое главное - это "человеко-проверяемые" расчеты.
    Проверить правильность вычислений, в принципе, не очень трудно.

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

    ОтветитьУдалить
  6. Как проверить правильность расчетов, которые может сделать только суперкомпьютер?

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

    Для "чистой" математики - это достаточно просто, для вероятностных моделей понадобится проводить прямое моделирование "подбрасывания монетки".

    зы. это не ИТишная тематика. Это высшая математика.

    ОтветитьУдалить
  7. Со сложными моделями, особенно описывающими природные процессы, все очень-очень непросто. Тут контрольными примерами не обойдешься. Тут детерминированные методы тестирования на работают.
    Т.е контрольный пример может показать ошибку, но он не может доказать отсутствие ошибок.

    ОтветитьУдалить
  8. Проблема не в доказательстве правильности расчетов. Разработанные программы так или иначе верифицируются авторами, людьми,которые считают и тд. Проблема в процедуре сертификации. Сейчас возможно такое: ведомственная оргранизация готова сертифицировать - она дает документ в котором прописаны условия, что надо сделать людям, представляющим программу, что прдествить. То есть, как я понимаю, все делаешь сам. Но при этом, им надо еще заплатить за процедуру. Хорошо, разработчик, который надеется, что программа ему будет приносить доход возможно пойдет на это. А что делать мне, сли я пользуюсь программами, разработанными, например Американской геологической службой? Они используются во всем мире, бесплаты и общедоступны. С какого бодуна я должен платить сертифицирующей организации за эту программу?

    ОтветитьУдалить
  9. Тут есть два разных вопроса
    1. Теория - как сертфикацию можно и нужно (ли) делать
    2. Как оно есть сейчас.
    По второму нужно рассматривать конкретные случае.

    Кто именно требует сертификацию?
    На основании каких нормативных документов?

    Как обстоят дела в США?
    Приведено пример - программа Американской геологической службой. Так значит она, скорее всего, уже имеет сертификат этой службы!
    Другой уже вопрос - признается ли он у нас.

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

    (а) для этого тоже надо писать программу,

    (б) в них не проявляются те тонкости, для которых и создана численная модель.

    2. Сертификация
    Требование сертификации предъявляется чиновником, который не представляет существо компьютерного (а раньше - аналогового) моделирования как инструмента творческого ИССЛЕДОВАНИЯ.

    Если программа считает плохо, исследователь это неизбежно, очень скоро обнаружит. И захочет доработать ее. Диалектика.

    Любая программа, даже самая хорошая, требует, например, подбора шага дискретизации, особенно по времени, часто переменного. И т.д.

    НО! Дело обстоит еще хуже.
    Кто берет на себя право исполнять фискальную функцию? Требование к программе, а также к обосновывающим модель данным предъявляет оплачиваемый эксперт, который уже имеет некоторый опыт манипулирования покупной(?), как правило, американской программой в своей небогатой практике.
    Кто находит удел профессионального применения в отыскивании формальных несоответствий в чужой работе, а не в живых практических и теоретических исследованиях?
    То что программа - это, грубо говоря, (i) решение дифур + (ii) ввод/вывод данных, но сервисно оформленная, понять можно, лишь являясь специалистом, и не обязательно программистом одновременно. Основное в моделировании - исследование процесса. Без этого никакая программа не поможет.
    Не следует, однако, думать, что экспертиза не нужна. Эксперт должен обладать не столько знаниями нормативов, сколько интуитивным пониманием сути и обоснованности рассматриваемого труда.

    3. Норматив
    Программное обеспечение не входит в «Единый перечень продукции, подлежащей обязательной сертификации», утвержденный Правительством РФ за № 982 в 2009/10 г. Сертификация ПО на территории РФ является добровольной.

    Однако, в подзаконном виде исполнителям ведомствами вменяется в обязанность использования сертифицированные программы, вывешивая в интернете предложения по этой процедуре, которая стоит очень немалых денег. Кто же у нас попрет против...
    Здесь надо заметить, что продуктом программа становится только при совершении купли-продажи. Если же специалист сам разработал программу - "станок", на котором работает сам и дает работать своим коллегам, даже если при этом выполняется оплачиваемая работа, то что это?

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

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

    Был прогресс, а не теперешнее болото с монстрами зарубежных программых комплексов, которые осваивают на 5%, не понимая теоретической основы, границ применимости, значимости погрешностей...


    3. И последнее (пока), но очень важное.
    Может быть я ошибаюсь, но в любом социальном явлении чем дальше, тем больше усматриваются, как писал классик МЛ-зма, "интересы тех групп и классов, которым это выгодно".
    Одна зацепка, другая... Глядишь, и получишь предложение. А то, и сам предложишь.

    ОтветитьУдалить