Skip to content
kulichkinayuliya edited this page Nov 2, 2020 · 28 revisions

Выполнила - Куличкина Юлия группа ИДБ-17-06

Проверил - ?


Понятие процесса

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

Системная и программная инженерия

Системная инженерия

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

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

Основные концепции системной инженерии включают следующие понятия:

  • Система (System) - Совокупность взаимосвязанных и (или) взаимодействующих элементов.

  • Жизненный цикл (System Life Cycle) - Совокупность явлений и процессов, повторяющаяся с периодичностью, определяемой временем существования типовой конструкции изделия от ее замысла до утилизации или конкретного экземпляра изделия от момента завершения его производства до утилизации..

  • Заинтересованные стороны (Stakeholders) - Лицо или группа лиц, заинтересованные в деятельности или успехе организации.

Принципы системной инженерии

В процессе развития системной инженерии сложились её основные принципы:

  1. Переход от редукционистского к системному подходу.

  2. Переход от монодисциплинарного к междисциплинарному подходу.

  3. Переход от структурного к процессному подходу.

  4. Переход от рабочего проектирования и конструирования к архитектурному проектному подходу.

  5. Переход от непосредственной реализации к моделецентричной реализации.

  6. Переход от одной группы описаний ко множественности групп описаний.

  7. Переход от приоритета документов к приоритету данных.

  8. Переход от единой верификации к раздельным верификации и валидации.

  9. Переход от управления жизненным циклом как «технологическим конвейером» к «заказам-поставкам».

  10. Переход от работы «для одного заказчика» к работе со множеством заинтересованных сторон.

  11. Переход от методов жёсткого планирования к использованию гибких прогнозных методов.

Методы системной инженерии

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

В обобщённой форме набор методов (процессов) системной инженерии включает, как минимум, следующие действия, которые необходимы для получения оптимальной системы:

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

  • точную оценку доступной информации и определение недостающей;

  • точное определение критериев производительности и эффективности, которые определяют успех или неудачу системного проекта;

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

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

  • распределение всех поведенческих элементов системы по соответствующим (подходящим) им элементам архитектуры;

  • проведение анализа компромиссных решений по альтернативным проектным решениям или архитектуре для поддержки процесса принятия решений;

  • создание исполняемых моделей для верификации и валидации работы системы.

Предмет системной инженерии

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

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

  • разработке архитектуры систем, проектированию систем и их элементов;

  • системному анализу и исследованию операций;

  • управлению инженерной деятельностью;

  • выбору технологий и методик;

  • эффективному управлению жизненным циклом системы.

Профиль современной системной инженерии включает следующие основные области деятельности:

  1. Управление организацией (организационно-управленческая деятельность).

  2. Управление проектами (проектно-управленческая деятельность).

  3. Управление инженерными решениями (проектно-инженерная деятельность).

  4. Специальные инженерные дисциплины (технологическая деятельность).

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

Программная инженерия (Software Engineering) — приложение систематического, дисциплинного, измеримого подхода к развитию, оперированию и обслуживанию программного обеспечения, а также исследованию этих подходов; то есть, приложение дисциплины инженерии к программному обеспечению (ISO/IEC/IEEE 24765:2017).

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

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

Методы программной инженерии

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

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

Методы программной инженерии можно разделить на три группы:

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

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

  • формальные методы, обоснованные математически;

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

  • эвристические методы, касающиеся неформализованных подходов (структурные, ориентированные на данные, объектно- ориентированные).

Инструменты (CASE) программной инженерии (Software Engineering Tools):

1. Инструменты работы с требованиями (Software Requirements Tools).

  1. Инструменты проектирования (Software Design Tools) — инструменты для создания и проверки программного дизайна. (SADT/IDEF, UML, BPMN/BPEL, Microsoft DSL и т.п.)

  2. Инструменты конструирования (Software Construction Tools). В соответствии с пониманием “конструирования”, заданным соответствующей областью знаний SWEBOK. Эти инструменты используются для производства и трансляции программного представления (например, исходного кода), достаточно детального и явного для машинного выполнения.

  3. Инструменты тестирования (Software Testing Tools).

  • Генераторы тестов (test generators). Эти инструменты помогают в разработке сценариев тестирования.

  • Средства выполнения тестов (test execution frameworks). Эти средства обеспечивают среду исполнения тестовых сценариев в контролируемом окружении, позволяющем отслеживать поведение объекта, подвергаемого тестированию.

  • Инструменты оценки тестов (test evaluation tools). Эти инструменты поддерживают оценку результатов выполнения тестов, помогая определить в какой степени и где именно обнаруженное поведение соответствует ожидаемому поведению.

  • Средства управления тестами (test management tools).

  • Инструменты анализа производительности (performance analysis tools).

  1. Инструменты сопровождения (Software Maintenance Tools). Эта тема охватывает инструменты, особенно важные для обеспечения сопровождения существующего программного обеспечения, подверженного модификациям:
  • Инструменты облегчения понимания (comprehension tools). Эти инструменты помогают человеку в понимании программ. Примерами могут служить различные средства визуализации.

  • Инструменты реинжиниринга (reengineering tools). Эти инструменты поддерживают деятельность по реинжинирингу, описанную в области знаний SWEBOK “Software Maintenance”.

  1. Инструменты конфигурационного управления (Software Configuration Management Tools). Инструменты конфигурационного управления делятся на три категории:
  • Инструменты отслеживания (tracking) дефектов, расширений и проблем.

  • Инструменты управления версиями.

  • Инструменты сборки и выпуска. Эти инструменты предназначены для управления задачами сборки и выпуска продуктов, а также включают средства инсталляции.

  1. Инструменты управления инженерной деятельностью (Software Engineering Management Tools). Средства управления деятельностью по программной инженерии делятся на три категории:
  • Инструменты планирования и отслеживания проектов.

  • Инструменты управления рисками.

  • Инструменты количественной оценки.

  1. Инструменты поддержки процессов (Software Engineering Process Tools):
  • Инструменты моделирования.

  • Инструменты управления проектами.

  • Инструменты конфигурационного управления, поддерживающие работу с актуальными версиями всего комплекса артефактов проекта.

  • Ролевые платформы разработки программного обеспечения, охватывающие все стадии жизненного цикла и, на сегодняшний день, являющиеся развитием интегрированных средств разработки и CASE-инструментов в направлении поддержки “смежной” функциональности – управления требованиями, работ по конфигурационному управлению с поддержкой управления изменениями, тестирования и оценки качества.

  1. Инструменты обеспечения качества (Software Quality Tools) Средства обеспечения качества делятся на две категории:
  • Инструменты инспектирования. Эти средства используются для поддержки обзора (review) и аудита.

  • Инструменты (статического) анализа. Эти средства используются для анализа программных артефактов, данных, потоков работ и зависимостей.

  • Процессы в контексте системы

  • Специальные процессы программных средств

Clone this wiki locally