Процесс сопровождения – основные действия и задачи

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

Подготовительная работа службы сопровождения включает следующие задачи:

  • планирование действий и работ, выполняемых в процессе сопровождения.
  • определение процедур локализации и разрешения проблем, возникающих в процессе сопровождения.

Анализ проблем и запросов на модификацию ПС, выполняемый службой сопровождения, включает следующие задачи:

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

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

Проверка и приемка заключаются в проверке целостности модифицированной системы и утверждении внесенных изменений.

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

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

Процесс эксплуатации – основные действия и задачи

Процесс эксплуатации (operation process) охватывает действия и задачи оператора — организации, эксплуатирующей систему.

Подготовительная работа включает проведение оператором следующих задач:

  • планирование действий и работ, выполняемых в процессе эксплуатации, и установку эксплуатационных стандартов.
  • определение процедур локализации и разрешения проблем, возникающих в процессе эксплуатации.

Эксплуатационное тестирование осуществляется для каждой очередной редакции программного продукта, после чего она передается в эксплуатацию.

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

Поддержка пользователей заключается в оказании помощи и консультаций при обнаружении ошибок в процессе эксплуатации ПС.

Процесс разработки – основные действия и задачи

Процесс разработки (development process) предусматривает действия и задачи, выполняемые разработчиком, и охватывает работы по созданию ПС и его компонентов в соответствии с заданными требованиями, включая оформление проектной и эксплуатационной документации; подготовку материалов, необходимых для проверки работоспособности и соответствующего качества программных продуктов, материалов, необходимых для организации обучения персонала, и т. д.

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

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

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

Преобразование RegExp в String, затем обратно в RegExp

Вопрос

Объявлен RegExp regex = /asd/

Я храню его как ключ в моей системе хранения ключей.

Допустим, я попытаюсь преобразовать str = String(regex) тогда результатом будет "/asd/".

Теперь мне нужно преобразовать строку обратно в RegEx.

Я выполняю: RegExp(str) и вижу /\/asd\//

это не то, что я хочу. Это не то же самое, что /asd/

Можно ли просто удалить первый и последний символы из строки перед преобразованием ее в регулярное выражение? Это дало бы мне желаемый результат в данной ситуации, но не обязательно сработало бы, если бы в RegExp были такие модификаторы, как /i or /g

Есть лучший способ сделать это?

Ответ

Если вам не нужно хранить модификаторы, вы можете использовать Regexp#source чтобы получить строковое значение, а затем преобразовать обратно с помощью RegExp конструктора.

var regex = /abc/g;
var str = regex.source; // "abc"
var restoreRegex = new RegExp(str, "g");

Если вам действительно нужно сохранить модификаторы, используйте регулярное выражение для анализа регулярного выражения:

var regex = /abc/g;
var str = regex.toString(); // "/abc/g"
var parts = /\/(.*)\/(.*)/.exec(str);
var restoredRegex = new RegExp(parts[1], parts[2]);

Это будет работать, даже если в шаблоне есть / в нем, потому чтоe .* жаден и будет продвигаться до последнего / в строке.

Если производительность вызывает беспокойство, используйте обычные манипуляции со строками, используя String#lastIndexOf:

var regex = /abc/g;
var str = regex.toString(); // "/abc/g"
var lastSlash = str.lastIndexOf("/");
var restoredRegex = new RegExp(str.slice(1, lastSlash), str.slice(lastSlash + 1));

Список MIME-типов

Общие типы

Согласно RFC 2045RFC 2046RFC 4288RFC 4289 и RFC 4855 выделяются следующие базовые типы передаваемых данных:

  • application;
  • audio;
  • example;
  • image;
  • message;
  • model;
  • multipart;
  • text;
  • video.

application

Внутренний формат прикладной программы

audio

Аудио

image

Изображение

message

Сообщение

model

Для 3D-моделей

  • model/example: (RFC 4735)
  • model/iges: IGS файлы, IGES файлы (RFC 2077)
  • model/mesh: MSH файлы, MESH файлы (RFC 2077), SILO файлы
  • model/vrmlWRL файлы, VRML файлы (RFC 2077)
  • model/x3d+binaryX3D ISO стандарт для 3D компьютерной графики, X3DB файлы
  • model/x3d+vrmlX3D ISO стандарт для 3D компьютерной графики, X3DV VRML файлы
  • model/x3d+xmlX3D ISO стандарт для 3D компьютерной графики, X3D XML файлы

multipart

text

Текст

video

Видео

vnd

Вендорные файлы

x

Нестандартные файлы

  • application/x-www-form-urlencoded Form Encoded Data[19]
  • application/x-dviDVI
  • application/x-latexLaTeX файлы
  • application/x-font-ttfTrueType (не зарегистрированный MIME-тип, но наиболее часто используемый)
  • application/x-shockwave-flashAdobe Flash[20] и[21]
  • application/x-stuffitStuffIt
  • application/x-rar-compressedRAR
  • application/x-tarTarball
  • text/x-jquery-tmpljQuery
  • application/x-javascript:

x-pkcs

  • application/x-pkcs12: p12 файлы
  • application/x-pkcs12: pfx файлы
  • application/x-pkcs7-certificates: p7b файлы
  • application/x-pkcs7-certificates: spc файлы
  • application/x-pkcs7-certreqresp: p7r файлы
  • application/x-pkcs7-mime: p7c файлы
  • application/x-pkcs7-mime: p7m файлы
  • application/x-pkcs7-signature: p7s файлы

Как завершить процесс в Linux?

Необходимо запустить терминал и выполнить команду kill:

kill <process_id>

где <process_id> — это номер процесса. Этот номер можно получить с помощью команды ps:

ps

В терминале выполняем команды killall или kill:

sudo killall -9 <process_name>
sudo kill -9 <process_id>

где <process_id> — это номер процесса, а <process_name>  — наименование процесса. Либо устанавливаем и используем htop:

sudo apt-get install htop
htop

Выбираем нужный процесс, и жмем F9

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

А каким способом пользуетесь Вы?

Немного истории создания языка Си

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

Авторам этого языка (имеется ввиду язык Си), которые работали под Unix, писали на Ассемблере, им захотелось какого-то общего языка. Брайан Керниган и Денис Ритчи попытались сделать какой-то инструмент для себя любимых. Сделали язык A, B, потом C. Ну а дальне не пришлось перебирать алфавит — вроде как удобно, вроде как получилось. Язык Си объединил в себе черты языков низкого уровня и языков высокого уровня. Очень часто пишут в литературе язык «среднего» уровня не потому что чего-то нет, потому что есть все вместе. Например, вы можете так же, как и в других языках создать массив одной строкой, так же вы можете делать ассемблерные вставки.

Несмотря на универсальность, этот инструмент не будет всегда идеален, всегда есть какой-то чуть лучше, но на сегодняшний день язык стабильно на втором месте, многие десятилетия. Все конкуренты этого языка в основном С++ и Java. Но когда надо выжать всю мощь из компьютера – то это Си. Подумайте на чем пишут операционные системы, например, Windows или Linux. Родным, как правило, всегда являлся для них язык Си. Когда вам надо писать, например, на уровне ядра, драйверов, это язык Си.

Были приняты определённые стандарты. Зачем одни нужны спросите вы? По сути, стандарт не для нас, он не очень нам нужен. Вот представьте, кто-то написал операционную систему, в ней нужно сделать поддержку языков программирования, для этого нужно сделать компилятор (перевод текста в машинный код) и для того, чтобы все писали одинаковый компилятор нужен стандарт. Если его не будет, то на разных системах будет «своя версия языка Си». И тогда мы получим достаточно серьезную проблему, например, вы напишете исходник, принесете его на одну ОС, вы писали, отлаживали – работает. Принесете на другую, а он скажет – «да я не знаю, что это такое». Вот для этого нужен стандарт. Конечно все люди – это люди и есть ошибки, есть некоторые отклонения от стандарта, но это должно быть по минимуму.

Хотелось бы вам сразу сказать, что С++, C#, Java – Си-подобные языки, т.е. внешний вид кода такой как в Си. Те авторы, кто создавал эти языки, сохранили внешний вид от языка Си, а идеологию изменили.

Запуск Elasticsearch и Kibana в Docker Compose

docker-compose.yml

version: '3.9'

services:

  elasticsearch:
    build: ./build-elasticsearch
    container_name: elasticsearch
    restart: always
    environment:
      - "discovery.type=single-node"
    ports:
      - "9200:9200"
    networks:
      - es01

  kibana:
    build: ./build-kibana
    container_name: kibana
    restart: always
    environment:
      - SERVER_NAME=kibana
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200/
    links:
      - "elasticsearch"
    ports:
      - "5601:5601"
    networks:
      - es01

networks:
  es01:

Файл располагается в корневом каталоге.

Dockerfile для Elasticsearch

FROM docker.elastic.co/elasticsearch/elasticsearch:7.8.0

Файл располагается в ./build-elasticsearch.

Dockerfile для Kibana

FROM docker.elastic.co/kibana/kibana:7.8.0

Файл располагается в ./build-kibana.

Подробнее можно почитать на официальных страницах:

Выполнить сборку контейнера и запустить можно при помощи команды:

docker-compose up --build -d

Запуск Mongo и Mongo Express в Docker Compose

docker-compose.yml

version: '3.9'

services:
  
  mongo:
    build: ./build-mongo
    container_name: mongo
    restart: always
    networks:
      - mongo
    ports:
      - "27017:27017"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
      - MONGO_INITDB_DATABASE=test-database

  mongo-express:
    build: ./build-mongo-express
    container_name: mongo-express
    restart: always
    networks:
      - mongo
    ports:
      - "8093:8081"
    environment:
      - ME_CONFIG_MONGODB_SERVER=mongo
      - ME_CONFIG_MONGODB_PORT=27017
      - ME_CONFIG_MONGODB_ENABLE_ADMIN=true
      - ME_CONFIG_MONGODB_ADMINUSERNAME=mongo
      - ME_CONFIG_MONGODB_ADMINPASSWORD=mongo
      - ME_CONFIG_MONGODB_AUTH_DATABASE=admin
      - ME_CONFIG_MONGODB_AUTH_USERNAME=${MONGO_ROOT_USER}
      - ME_CONFIG_MONGODB_AUTH_PASSWORD=${MONGO_ROOT_PASSWORD}
      - ME_CONFIG_BASICAUTH_USERNAME=${MONGOEXPRESS_LOGIN}
      - ME_CONFIG_BASICAUTH_PASSWORD=${MONGOEXPRESS_PASSWORD}

networks:
  mongo:

Файл располагается в корневом каталоге.

Файл .env:

MONGO_ROOT_USER=mongo
MONGO_ROOT_PASSWORD=mongo
MONGOEXPRESS_LOGIN=mongo
MONGOEXPRESS_PASSWORD=mongo

Dockerfile для Mongo

FROM mongo:5.0

Файл располагается в ./build-mongo

Dockerfile для Mongo Express

FROM mongo-express:0.54

Файл располагается в ./build-mongo-express

Подробнее можно почитать на официальных страницах:

docker-compose up --build -d

Выполнить сборку контейнера и запустить можно при помощи команды:

ГОСТ 24.ххх Система технической документации на АСУ