Ada_Ru форум

Обсуждение языка Ада

Ada в России: ещё один продукт

Оставить новое сообщение

Сообщения

Vadim Godunko
Ada в России: ещё один продукт
2006-10-13 19:41:21

Добрый вечер!

 

В период с 8 по 10 ноября 2006 года государственная комиссия произвела предварительные испытания нескольких подсистем опытного образца новейшей отечественной системы организации использования воздушного пространства. Среди предъявленных на испытания подсистем хочется особенно выделить подсистему справочной информации, разработанную полностью на языке Ada и не получившую в результате испытаний ни одного замечания и рекомендации!

 

Программное обеспечение подсистемы выполнено по архитектуре клиент-сервер, взаимодействие между клиентом и сервером осуществляется с использованием технологии CORBA (в реализации PolyORB). Графический интерфейс пользователя реализован на основе библиотеки Motif. В качестве хранилища данных используется сервер базы данных PostgreSQL.

 

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

 

При разработке программного обеспечения подсистемы использовался один из передовых методов разработки программного обеспечения - Model Driven Architecture (MDA). Как результат использования метода большая часть исходных текстов реализации сервера приложений, IDL спецификация интерфейса сервера и элементы схемы базы данных (домены, таблицы, ограничения, ключи и индексы) формируются автоматически по UML диаграмме предметной области. Графический интерфейс пользователя разработан полностью вручную.

2006/11/14, Vadim Godunko <vgodunko@rostel.ru>:

 

В период с 8 по 10 ноября 2006 года государственная комиссия произвела

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

отечественной системы организации использования воздушного пространства.

Среди предъявленных на испытания подсистем хочется особенно выделить

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

не получившую в результате испытаний ни одного замечания и рекомендации!

 

Программное обеспечение подсистемы выполнено по архитектуре

клиент-сервер, взаимодействие между клиентом и сервером осуществляется с

использованием технологии CORBA (в реализации PolyORB). Графический

 

кстати, а как будет себя вести система если в локалке

будет стоять сетевая карта, которая принимает пакеты

с ошибкой, но диагностику ошибки не выдает?

(есть у меня такая в коллекции - судя по всему битый буфер или

может просто драйвер криво программирует частоты или как обычно

Цшники с указателями намудрили(по слухам при замене драйвера

эта глюкала может работать и без ошибок), в общем по сети

и через схему контроля CRC судя по всему все проходит без ошибок,

но позже в буфере пакет портится и уже без всякой диагностики передается

в комп. Причем многие реализации юниксов умные и если работают на локалке

то для скорости отключают все программные CRC даже в тех протоколах

где они есть)

 

интерфейс пользователя реализован на основе библиотеки Motif. В качестве

хранилища данных используется сервер базы данных PostgreSQL.

 

а вот интересно, как будет жить такая база на винте, которые не выдает

ошибки CRC на битых секторах или аналогично данные портятся уже

при передаче по шлейфу(который кстати часто рвется или ломается)?

(попадался мне такой WD - всесто ошибки CRC на большинстве bad-секторов ничего

не выдавал, причем говорят что такая фича бывает в тч и из-за ошибок или

несовместимости BIOS, или просто настроек вроде частот и тп, так что

тестирование

винтов на других машинах не поможет)

 

Битемпоральная архитектура хранилища данных обеспечивает уникальную

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

извлечения не только информации на настоящее время и истории изменений,

но и формирование "среза" данных на любой момент времени в прошлом без

выполнения дополнительных операций или перехода в особый режим работы.

 

а вот интересно, что будет на битых базах? :)

 

Vladimir

PS кстати, не посоветуешь что-нить для контроля данных под виндой?

(а то я тут собрался порядок на винтах навести - надо перелить по локалке

на другую машину и RW все, архиватор конечно хорошо, но боюсь что бэкап

коллекции исходников и тп проще просто сливать на RW так, да и места столько

нету, ошибки могут накапливаться(мало ли какая программа может

попортить данные на винте, да и сам бывает F8 ничайно нажмешь :) ) и тд и тп)

md5 под винду нашел, но оно не может сканировать подкаталоги,

да и контрольные файлы лучше бы отдельно держать на другом диске,

желательно и с полными именами и датами файлов(некоторые имена файлов

бывает искажаются - это зависит от версии системы, NERO и тд и тп)...

Vadim Godunko wrote:

 

 

 

Добрый вечер!

 

В период с 8 по 10 ноября 2006 года государственная комиссия произвела

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

отечественной системы организации использования воздушного пространства.

Среди предъявленных на испытания подсистем хочется особенно выделить

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

не получившую в результате испытаний ни одного замечания и рекомендации!

 

Пря-здря-вля-ю!

 

(И горжусь тем, что немножко рядом постоял! :)

Vladimir Teplouhov wrote:

будет стоять сетевая карта, которая принимает пакеты

с ошибкой, но диагностику ошибки не выдает?

а вот интересно, как будет жить такая база на винте, которые не выдает

ошибки CRC на битых секторах

А интересно, будет ли работать эта система на компьютере без блока питания ?

.... Простите ... Не удержался... ;-(

14.11.06, Dmitriy Anisimkov<anisimkov@ada-ru.org> написал(а):

Vladimir Teplouhov wrote:

> будет стоять сетевая карта, которая принимает пакеты

> с ошибкой, но диагностику ошибки не выдает?

>

 

> а вот интересно, как будет жить такая база на винте, которые не выдает

> ошибки CRC на битых секторах

А интересно, будет ли работать эта система на компьютере без блока питания ?

 

кстати от БП тоже бывают чудеса

 

от кондеров на плате нынче вообще регулярно

 

про разгоны ваще молчу - сам у соседа несколько мес как-то искал

глюк - оказалось что из-за разгона. Работало все кроме нескольких программ :/

Кстати по всем симптомам был как бы не читаемый CD - ошибка CRC,

причем на инсталляторе в одном и том-же месте. Сколько дисков и приводов

в магазине поменяли :) Хорошо хоть прогнал тесты CDD и убедился что привод

и диск не причем, так бы и вообще никогда не догадались в чем дело...

(кстати стандартная поставка породии на систему под названием

винды ваще никаких намеков на тесты и отладчики не предусматривает,

да и отдально тест найти очень не просто - их почти нет!)

 

..... Простите ... Не удержался... ;-(

 

гы

а ты наверно думаешь что найти эту глюковину было легко?

(она у меня на особом месте в коллекции трофеев :) )

 

сразу несколько мес стояла и тихо наводила диверсию у клиента

(быстро не проверишь - все же работает)

 

потом ребята из фирмы которые компы поставляли еще не знаю

сколько на нее охотились

 

особый прикол что с виду все работает-то нормально - особенно если

учесть что архиваторами чайники пользоваться не любят

 

чтобы протестировать надо специально создать архивы в сотни мег

и долго-долго их копировать туда-сюда(а для начала еще и заподозрить это - все

же вроде работает), вот после этого кое-где появляются битые архивы...

 

так что не такая это прастая работа такой глюк выловить.

(когда совсем не работает вообще проблем нет - заменил и все,

а вот когда битый пакет бывает довольно редко это вычислить

очень сложно, даже специальный тест в момент тестирования

может ничего не найти если например температура в помещении

изменилась на несколько градусов - не раз наблюдал глюки системных плат при

уменьшее температуры в помещении и тп)

 

так что тут поможет только постоянный 100% контроль CRC,

причем желательно сквозной - то есть полностью софтовый,

чтобы CRC писал сам софт либо хотябы что-то вроде длинного чтения

с послед проверкой crc уже софтом...

 

Vladimir

Vladimir Teplouhov wrote:

 

так что тут поможет только постоянный 100% контроль CRC,

причем желательно сквозной - то есть полностью софтовый,

чтобы CRC писал сам софт либо хотябы что-то вроде длинного чтения

с послед проверкой crc уже софтом...

 

Ну вот с такой проверкой как раз всё нормально, поскольку транспортный уровень - TLS, а он не просто CRC считает, но цифровую подпись и ставит и проверяет. А иногда и информацию шифрует, чтобы врагу не досталась ;)

А нельзя ли прекратить флуд? Заранее спасибо.

 

ВФ

On Mon, Nov 13, 2006 at 10:41:21PM +0300, Vadim Godunko wrote:

Добрый вечер!

[skip]

 

Молодцы! Поздравляю!

 

При разработке программного обеспечения подсистемы использовался один из передовых методов разработки программного обеспечения - Model Driven Architecture (MDA). Как результат использования метода большая часть

 

Как на счет статейки для нашего сайта? ;-)

Об этом MDA и Аде? Было бы классно!

 

--

Maxim Reznik

14.11.06, Vasiliy Fofanov<fofanov@act-europe.fr> написал(а):

 

А нельзя ли прекратить флуд? Заранее спасибо.

 

ну если вопросы надежности стали называться флудом...

 

Vladimir

PS посмотрел тут вын-хп и новомодные мобильные поделки - окончательно

убедился что софтом нынче занимаються только полные криворучки и дебилы :/

Это ж надо так накосячить чтобы на 3 строчки настроек gprs приходилось

трахаться по 1-2 недели... Причем как оказалось одни и те-же параметры

в разных марках телефонов надо ставить по разному - из-за ошибок в

прошифках и тп...

14.11.06, Vadim Godunko<vgodunko@rostel.ru> написал(а):

Vladimir Teplouhov wrote:

>

> так что тут поможет только постоянный 100% контроль CRC,

> причем желательно сквозной - то есть полностью софтовый,

> чтобы CRC писал сам софт либо хотябы что-то вроде длинного чтения

> с послед проверкой crc уже софтом...

>

Ну вот с такой проверкой как раз всё нормально, поскольку транспортный

уровень - TLS, а он не просто CRC считает, но цифровую подпись и ставит

и проверяет. А иногда и информацию шифрует, чтобы врагу не досталась ;)

 

в том что оно может шифровать не сомневаюсь, но не факт что шифрование

идет с дополнительной проверкой(практика показывает что даже от простой

потери пакетов на канале инета нифига не работают все в тч и такие инетные

протоколы как tcp - при высоком проценте потерь он будет бесконечно снижать

скорость, а ошибки CRC дак и вообще часто не проверяются) - вполне возможна

реализация и просто XOR(в тч и с перемежением) с какой-то ПСП и тп, в

этом случае

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

Так что не посмотрев точно в исходники я бы ничего устверждать не стал :)

Причем нет гарантии что в последующих версиях какой-нить "умник" не

с оптимизирует проверки... (причем наведенных ошибок при шифровании

как это в архиваторах скорее всего не будет, так что очень вероятно что редкие

сбои вообще не будут обнаружены, то есть это железо никто и не

подумает заменить)

 

вторая проблема - появляются таймауты, и как программа будет работать

в таких условиях это тоже надо продумывать заранее, при тестировании

очень маловероятно попасть на такой глюк или вообще заметить...

(при более 40% потерь глючили практически все программы и протоколы :/

в суппорт про косяки писал, но им похоже пофиг - типа проблемы прова,

но даже такие ошибки не очень-то заметны на практике, ну глючит

из-за чего-то программа, а почему хз, при этом суппорт провайдера

упорно прикидывается белым и пушистым либо все валят на модем, АТС и тд и тп)

 

да, и при обнаружении подобных проблем есть еще проблема куда

выводить диагностику - мегабайты логов скорее всего не будет просмоатривать

никто на практике...

 

Vladimir

PS а вот что делать с ошибками диска и памяти не понятно - ничего готового

что-то не припоминаю вообще(ну кроме архиваторов конечно)...

PPS по-моему надо думать в сторону распределенного полностью программного

сетевого RAID...

PPPS аппаратные RAID не предлагать - желающие могут подсчитать вероятность

нарваться на ошибку в прошивке и тп, в общем нафиг эту лотерею...

(про такие косяки не раз писали даже в админских околоюниксовых эхах,

когда например в зеркале копировались данные из испорченного винта

на нормальный и тп, при этом еще следует учесть что большинство

админов ленивые халтурщики и никакие программисты, так что наверняка

было написано не про все сбои)

На GFS кстати я пока косо смотрю по тем-же причинам.

PPPPS регулярные глюки на серверах даже солидных компаний

уже задолбали - седня дак и вообще супер, на гугль даже из-за DNS не вышел,

похоже придется еще и IP записывать как будто делать мне больше не чего... :/

(глюк похоже только в .ru, но из-за вумной переадресации с .com по IP на ru

и на английский вариант не смог выйти тоже, то есть ваще никак. Кстати

фича с пустой строкой после "?" нынче похоже тоже не работает :/ )

Vladimir Teplouhov wrote:

14.11.06, Vasiliy Fofanov<fofanov@...> написал(а):

 

А нельзя ли прекратить флуд? Заранее спасибо.

ну если вопросы надежности стали называться флудом...

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

А Вы Вадим, говорите о надежности оборудовании.

На кривом оборудовании даже Ада не будет стабильно работать.

И говорить об этом надо в другом месте.

 

Vladimir

PS посмотрел тут вын-хп и новомодные мобильные поделки - окончательно

убедился что софтом нынче занимаються только полные криворучки и дебилы :/

Это ж надо так накосячить чтобы на 3 строчки настроек gprs приходилось

трахаться по 1-2 недели... Причем как оказалось одни и те-же параметры

в разных марках телефонов надо ставить по разному - из-за ошибок в

прошифках и тп...

И это тоже реплика не по существу. Ругать кривые софты дело бесполезное.

Лучше писать надежные софты, и лучше на Ада.

Vladimir Teplouhov wrote:

 

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

 

Ну вот с такой проверкой как раз всё нормально, поскольку транспортный

уровень - TLS, а он не просто CRC считает, но цифровую подпись и ставит

и проверяет. А иногда и информацию шифрует, чтобы врагу не досталась ;)

 

в том что оно может шифровать не сомневаюсь, но не факт что шифрование

идет с дополнительной проверкой

Так что не посмотрев точно в исходники я бы ничего устверждать не стал :)

Причем нет гарантии что в последующих версиях какой-нить "умник" не

с оптимизирует проверки...

 

Основное замечание НЕ ПУТАТЬ БОЖИЙ ДАР С ЯИЧНИЦЕЙ!

 

Да, TLS работает через TCP, недостатки TCP и известны и неустранимы нами, не имеет смысл их обсуждать вовсе.

 

TLS (он же Transport Layer Security) - защищенный протокол сетевого взаимодействия, принятый как стандарт. Можно ругать стандарт, но _любая_ реализация подобных библиотек (особенно для использования в защищенных системах) проходит жестокие проверки соответствующими государственными органами. Посему говорить о криворукости - бесполезно.

 

А теперь собственно по теме ;)

 

В SSL/TLS есть понятие ciphers - набор алгоритмов, обеспечивающих защиту информации. Вот список и характеристики включённых по умолчанию:

 

DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1

DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1

AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1

EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1

EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1

DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1

DES-CBC3-MD5 SSLv2 Kx=RSA Au=RSA Enc=3DES(168) Mac=MD5

DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1

DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1

AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1

RC2-CBC-MD5 SSLv2 Kx=RSA Au=RSA Enc=RC2(128) Mac=MD5

DHE-DSS-RC4-SHA SSLv3 Kx=DH Au=DSS Enc=RC4(128) Mac=SHA1

RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1

RC4-MD5 SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5

RC4-MD5 SSLv2 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5

RC4-64-MD5 SSLv2 Kx=RSA Au=RSA Enc=RC4(64) Mac=MD5

EXP1024-DHE-DSS-DES-CBC-SHA SSLv3 Kx=DH(1024) Au=DSS Enc=DES(56) Mac=SHA1 export

EXP1024-DES-CBC-SHA SSLv3 Kx=RSA(1024) Au=RSA Enc=DES(56) Mac=SHA1 export

EXP1024-RC2-CBC-MD5 SSLv3 Kx=RSA(1024) Au=RSA Enc=RC2(56) Mac=MD5 export

EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH Au=RSA Enc=DES(56) Mac=SHA1

EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH Au=DSS Enc=DES(56) Mac=SHA1

DES-CBC-SHA SSLv3 Kx=RSA Au=RSA Enc=DES(56) Mac=SHA1

DES-CBC-MD5 SSLv2 Kx=RSA Au=RSA Enc=DES(56) Mac=MD5

EXP1024-DHE-DSS-RC4-SHA SSLv3 Kx=DH(1024) Au=DSS Enc=RC4(56) Mac=SHA1 export

EXP1024-RC4-SHA SSLv3 Kx=RSA(1024) Au=RSA Enc=RC4(56) Mac=SHA1 export

EXP1024-RC4-MD5 SSLv3 Kx=RSA(1024) Au=RSA Enc=RC4(56) Mac=MD5 export

EXP-EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH(512) Au=RSA Enc=DES(40) Mac=SHA1 export

EXP-EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH(512) Au=DSS Enc=DES(40) Mac=SHA1 export

EXP-DES-CBC-SHA SSLv3 Kx=RSA(512) Au=RSA Enc=DES(40) Mac=SHA1 export

EXP-RC2-CBC-MD5 SSLv3 Kx=RSA(512) Au=RSA Enc=RC2(40) Mac=MD5 export

EXP-RC2-CBC-MD5 SSLv2 Kx=RSA(512) Au=RSA Enc=RC2(40) Mac=MD5 export

EXP-RC4-MD5 SSLv3 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export

EXP-RC4-MD5 SSLv2 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export

 

А теперь пояснения:

Kx - режим обмена ключами.

Au - режим аутентификации.

Enc - режим шифрования.

Mac - режим цифровой подписи.

 

Где-то есть None? Вот засада, нет. Вывод: и шифрование и подпись и аутентификация сервера включены по умолчанию.

 

Конечно, имеется возможность что-то поотключать, например, не используя шифрование:

 

NULL-SHA SSLv3 Kx=RSA Au=RSA Enc=None Mac=SHA1

NULL-MD5 SSLv3 Kx=RSA Au=RSA Enc=None Mac=MD5

 

Или не используя аутентификацию:

 

ADH-AES256-SHA SSLv3 Kx=DH Au=None Enc=AES(256) Mac=SHA1

ADH-AES128-SHA SSLv3 Kx=DH Au=None Enc=AES(128) Mac=SHA1

ADH-DES-CBC3-SHA SSLv3 Kx=DH Au=None Enc=3DES(168) Mac=SHA1

ADH-DES-CBC-SHA SSLv3 Kx=DH Au=None Enc=DES(56) Mac=SHA1

EXP-ADH-DES-CBC-SHA SSLv3 Kx=DH(512) Au=None Enc=DES(40) Mac=SHA1 export

ADH-RC4-MD5 SSLv3 Kx=DH Au=None Enc=RC4(128) Mac=MD5

EXP-ADH-RC4-MD5 SSLv3 Kx=DH(512) Au=None Enc=RC4(40) Mac=MD5 export

 

Однако отключить более одного механизма Вам никак не удасться.

 

Таким образом, предел Ваших возможностей по порче информации - отключить шифрование (дабы все всё видили) или отключить аутентификацию сервера (дабы можно было сфальсифицировать сервер). Ну что-же, это ВАШЕ решение. Как видите, навязать ложные данные Вам не удасться - а именно это и делает пресловутая сетевая плата.

 

А теперь пару слов о защите от криворуких администраторов при использовании PolyORB, а точнее - CORBA. Как бы администратор не старался, CORBA публикует в объектной ссылке сводную информацию (как битовый массив) о поддерживаемых и требуемых со стороны сервера механизмах защищенного взаимодействия, а в частности:

 

Integrity - контроль целостности данных при передаче

Confidentiality - шифрование данных при передаче

Detect_Replay - обнаружение воспроизведения ранее записанных данных

Detect_Misordering - обнаружение нарушения очередности поступающих данных

Establish_Trust_In_Target - аутентификация сервера клиентом

Establish_Trust_In_Client - аутентификация клиента сервером

и ещё несколько других, не имеющих прямого отношения к транспортному уровню.

 

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

 

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

 

PS. Как это ни пародоксально, но проблемы у всех одинаковые, нужно просто уметь искать правильное решение.

ну если вопросы надежности стали называться флудом...

 

Вопросы надежности Windows и прочих никак не связанных с Адой (и что характерно с анонсом Вадима) вещей несомненно являются именно им.

Причем как оказалось одни и те-же параметры

в разных марках телефонов надо ставить по разному - из-за ошибок в прошифках и тп...

 

Вот это как по-вашему называется? Не желаете ли еще проблемы с

электробритвами и пылесосами обсудить на форуме Ады?

ВФ

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти