Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы программирование.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
262.94 Кб
Скачать

Конвертер из sdl в объектный программный код

Почему сложно: посылка-приём сообщения ~ 300 команд.

Удалось найти сужение, основываясь на ограничениях (переходы короткие, есть только 20% критичных объектов, можно локализовать данные), т.е. учитываем специфику предметной области. Применяется не свёртка-развёртка. Есть только один объект – ФПО (функциональное ПО), остальные объекты – вызов процедуры (~ 30 команд).

Вопрос 13. Реинжиниринг программных систем.

Есть работающая программа, но как она работает, никто не знает.

Реинжиниринг – преобразование.

Реинжиниринг – существенно более общее понятие, чем программирование.

Реинжиниринг похож на трансляцию. Но в отличие от трансляции занимается инфраструктурными преобразованиями:

  • ввод-вывод (раньше перфокарты, магнитные ленты)

  • диалог с человеком

  • работа с базами данных

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

Реинжиниринг программного обеспечения – процесс преобразования старых программ на старых языках со старых платформ в эквивалентные на новых языках на новые платформы.

Иногда реинжиниринг подразумевает извлечение только необходимой функциональности.

Пример автоматизированных средств реинж. – «Modernization WorkBench» и «RescueWare».

Часть II. Технология программирования встроенных систем реального времени

Вопрос 14(1). Понятие встроенной системы реального времени.

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

Встроенные системы: мобильные телефоны, ракеты, различная бытовая техника.

Масштаб времени может быть разным: телефония ~ 10 мс, ядерный взрыв ~ мкс, нс.

Особенности встроенных систем реального времени:

  • система должна быть надёжной

  • гарантия по времени обслуживания

  • распределенное управление

  • эффективность (оптимизация)

  • человеко-машинный интерфейс (психология, эргономика)

  • работа с базами данных

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

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

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

Пример: Проц1, проц2, проц3-  память1,память2,память3. Если в какую-то память один из процессоров хочет записать не тот результат, который хотят двух других, и так, к примеру, 3 раза, то очевидно, что он сломался и его надо заменить.

Пример встроенной системы реального времени – станция правительственной связи «ФОБОС К» (но основе троированного Самсона):

"Самсон" – троированный. Является устройством, имеющим больший уровень надёжности, чем все остальные.

Если что-то не работает (аппаратная синхронизация):

  1. проверить, не сломалась ли сеть (для этого послать групповое сообщение)

  2. обнаружив неисправный узел, протестировать его

  3. ремонт

  4. вернуть узел на место (постепенное выравнивание памяти)

Постепенное выравнивание памяти

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

Если падают РМО (программная синхронизация):

УВК всегда посылает данные на два РМО (основной и резервный). Таким образом, гарантируем, что пользователь потеряет не более одной команды. Единственный плохой случай, когда упало во время работы с базой данных.