Билет 12 - stankin/design-1 GitHub Wiki

12 билет

1 Вопрос: Понятия программы и программной инженерии. Процессы жизненного цикла программных средств.

Ответ:

Понятия программы и программной инженерии.

Программа — 1) комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления (стандарт ISO/IEC/IEEE 24765:2017); 2) синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая из определений и операторов или инструкций, необходимых для определённой функции, задачи или решения проблемы (стандарт ISO/IEC 2382:2015). Первое определение соответствует понятию «исполняемый файл», второе — относится к понятию «исходный код».

Программная инженерия (англ. software engineering) — приложение систематического, дисциплинированного, измеримого подхода к разработке, функционированию и сопровождению программного обеспечения, а также исследованию этих подходов; то есть, приложение дисциплины инженерии к программному обеспечению.

Процессы жизненного цикла.

Процессы жизненного цикла делятся на три группы:

  1. Основные.
  2. Вспомогательные.
  3. Организационные.

Основные процессы жизненного цикла - это процессы, которые реализуются под управлением основных сторон, участвующих в ЖЦ ПС. Основными сторонами являются заказчик, поставщик, разработчик, оператор и персонал сопровождения программных продуктов. Основные процессы состоят из 5 процессов:

  1. Заказ.
  2. Поставка.
  3. Разработка.
  4. Эксплуатация.
  5. Сопровождение.

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

Процесс заказа.

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

  1. Подготовка.
  2. Подготовка заявки на подряд.
  3. Подготовка и корректировка договора.
  4. Надзор за поставщиком.
  5. Приемка и закрытие договора.

Процесс поставки

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

  1. Подготовка.
  2. Подготовка ответа.
  3. Подготовка договора.
  4. Планирование.
  5. Выполнение и контроль.
  6. Проверка и оценка.

Процесс разработки.

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

Разработчик управляет процессом разработки на проектном уровне в соответствии с процессом управления, который конкретизируется в данном процессе; определяет инфраструктуру для данного процесса в соответствии с процессом создания инфраструктуры; адаптирует данный процесс к условиям проекта в соответствии с процессом адаптации и управляет процессом разработки на организационном уровне в соответствии с процессами усовершенствования и обучения. Если разработчиком является поставщик разрабатываемого программного продукта, то разработчик должен также выполнять процесс поставки. Данный процесс состоит из следующих работ:

  1. Подготовка процесса.
  2. Анализ требований к системе.
  3. Проектирование системной архитектуры.
  4. Анализ требований к программным средствам.
  5. Проектирование программной архитектуры.
  6. Техническое проектирование программных средств.
  7. Программирование и тестирование программных средств.
  8. Сборка программных средств.
  9. Квалификационные испытания программных средств.
  10. Сборка системы.
  11. Квалификационные испытания системы.
  12. Ввод в действие программных средств.
  13. Обеспечение приемки программных средств.

Процесс эксплуатации

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

Оператор управляет процессом эксплуатации на проектном уровне в соответствии с процессом управления, который конкретизируется в данном процессе; определяет инфраструктуру для данного процесса в соответствии с процессом создания инфраструктуры; адаптирует данный процесс к условиям проекта в соответствии с процессом адаптации и управляет процессом эксплуатации на организационном уровне в соответствии с процессами усовершенствования и обучения. Если оператор является поставщиком программной услуги, то оператор выполняет также процесс поставки. Данный процесс состоит из следующих работ:

  1. подготовка процесса;
  2. эксплуатационные испытания;
  3. эксплуатация системы;
  4. поддержка пользователя.

Процесс сопровождения

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

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

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

  1. Подготовка процесса.
  2. Анализ проблем и изменений.
  3. Внесение изменений.
  4. Проверка и приемка при сопровождении.
  5. Перенос.
  6. Снятие с эксплуатации.

Вспомогательные процессы жизненного цикла.

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

  1. Процесс документирования.
  2. Процесс управления конфигурацией.
  3. Процесс обеспечения качества.
  4. Процесс верификации.
  5. Процесс аттестации.
  6. Процесс совместного анализа.
  7. Процесс аудита.
  8. Процесс решения проблем.

Процесс документирования.

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

  1. подготовка процесса;
  2. проектирование и разработка;
  3. выпуск;
  4. сопровождение

Процесс управления конфигурацией

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

  1. подготовка процесса;
  2. определение конфигурации;
  3. контроль конфигурации;
  4. учет состояний конфигурации;
  5. оценка конфигурации;
  6. управление выпуском и поставка.

Процесс обеспечения качества

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

  1. подготовка процесса;
  2. обеспечение продукта;
  3. обеспечение процесса;
  4. обеспечение систем качества.

Процесс верификации

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

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

  1. подготовка процесса;
  2. верификация.

Процесс аттестации

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

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

  1. подготовка процесса;
  2. аттестация.

Процесс совместного анализа

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

  1. подготовка процесса;
  2. анализы управления проектом;
  3. технические анализы.

Процесс аудита

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

  1. подготовка процесса;
  2. аудиторская проверка.

Процесс решения проблем

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

  1. подготовка процесса;
  2. решение проблемы.

Организационные процессы жизненного цикла

К организационным процессам жизненного цикла относятся:

  1. Управление.
  2. Создание инфраструктуры.
  3. Усовершенствование.
  4. Обучение.

Процесс управления

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

  1. Подготовка и определение области управления.
  2. Планирование.
  3. Выполнение и контроль.
  4. Проверка и оценка.
  5. Завершение.

Процесс создания инфраструктуры

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

  1. подготовка процесса;
  2. создание инфраструктуры;
  3. сопровождение инфраструктуры.

Процесс усовершенствования

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

  1. Создание процесса.
  2. Оценка процесса.
  3. Усовершенствование процесса.

Процесс обучения

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

  1. Подготовка процесса.
  2. Разработка учебных материалов.
  3. Реализация плана обучения.

Источники:

Понятие программы;

Стандарт ISO/IEC/IEEE 24765:2017;

Стандарт ISO/IEC 2382:2015;

Понятие исполняемого файла;

Исходный код;

Программная инженерия;

Сделал: Лаверычев Максим


2 Вопрос: Понятие онтологии и семантической сети. Применение онтологий в проектировании информационных систем.

Ответ:

Понятие онтологии

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

Кроме того, в любой сфере человеческой деятельности онтологии позволяют:

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

  • Сокращение концептуальной и терминологической неодно­значности. Онтологический анализ обеспечивает основу для синтеза рассматриваемых объектов с различными потребностями (или ракурсами рассмотрения) в зависимости от конкретного контекста.

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

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

При проектировании информационных систем, управляемых онтологиями, стоит также учесть особенности жизненного цикла самих онтологий. Жизненный цикл онтологий переплетается с жизненными циклами проектов разработки конкретных программных продуктов, которые подключаются к онтологии той же прикладной сферы. Оба жизненных цикла поддерживаются соответствующими ролями: инженером программного обеспечения и инженером онтологии. Однако, M. Fernandez подчеркнул определённую аналогию между двумя процессами и исследовал известные модели жизненного цикла разработки программного обеспечения, представляя их в качестве потенциальных парадигм для развития онтологий. Среди рассматри­ваемых парадигм:

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

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

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

Понятие семантической сети

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

Обычно в семантической сети предусматриваются четыре категории вершин:

  • понятия (объекты),

  • события,

  • свойства,

  • значения.

Понятия представляют собой константы или параметры, которые определяют физические или абстрактные объекты.

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

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

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

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

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

В синтаксических моделях (реляционной, сетевой или иерархической) для обеспечения такой связи потребуется дублирование информации об объекте.

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

  • лингвистические,

  • логические,

  • теоретико-множественные,

  • квантификационные.

Лингвистические отношения бывают глагольные (время, вид, род, число, залог, наклонение) и атрибутивные (модификация, размер, форма).

Логические отношения подразделяются на конъюнкцию (и), дизъюнкцию (или), отрицание (не) и импликацию (если – то).

Теоретико-множественные отношения - это отношение подмножества, отношение части и целого, отношение множества и элемента.

Квантификационные отношения делятся на логические кванторы общности и существования («каждый», «все»), нелогические кванторы («много», «несколько») и числовые характеристики.

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

  • связь "есть-нек" (от слов "есть некоторый"). Направлена от частного понятия к более общему и показывает принадлежность элемента к классу;

  • связь "есть-часть". Показывает, что объект содержит в своем составе разнородные компоненты (объекты), не подобные данному объекту.

Пример семантической сети для описания структуры понятия "юридическое лицо" приведен на следующем рисунке.

Рисунок 4.2 Элементы семантической сети

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

  • объект - предмет, подвергающийся действию;

  • источник - размещение предмета перед действием;

  • приемник - размещение предмета после действия;

  • время - указание на то, когда происходит событие;

  • место - указание на то, где происходит событие;

  • цель - указание на цель действия.

Рассмотрим пример: Директор завода "САЛЮТ" остановил 25.03.90 цех № 4, чтобы заменить оборудование

Рисунок 4.3 Пример семантической сети

Преимущества семантических сетей:

  • описание объектов и событий на уровне, очень близком к естественному языку;

  • обеспечивается возможность сцепления различных фрагментов сети;

  • возможные отношения между понятиями и событиями образуют достаточно небольшое и хорошо формализованное множество;

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

Источники:

Понятие онтологии;

Понятие информационных систем;

Каскадная, поэтапная и эволюционная модели;

Понятие семантической сети.

Сделал: Чистякова Евгения и Есипова Анна