-
Notifications
You must be signed in to change notification settings - Fork 17
exam01 6
Процесс - Совокупность взаимосвязанных и (или) взаимодействующих видов деятельности, использующих входы для получения намеченного результата.
Системная инженерия - Междисциплинарный подход, управляющий полным техническим и организаторским усилием, требуемым для преобразования ряда потребностей заинтересованных сторон, ожиданий и ограничений в решение и для поддержки этого решения в течение его жизни.
В основании системной инженерии лежит ряд концепций — общих абстрактных представлений, связанных с пониманием её предмета, а также совокупность принципов, то есть исходных, принимаемых за истину правил, которые используются в качестве основы для рассуждений и/или для принятия решений.
Основные концепции системной инженерии включают следующие понятия:
-
Система (System) - Совокупность взаимосвязанных и (или) взаимодействующих элементов.
-
Жизненный цикл (System Life Cycle) - Совокупность явлений и процессов, повторяющаяся с периодичностью, определяемой временем существования типовой конструкции изделия от ее замысла до утилизации или конкретного экземпляра изделия от момента завершения его производства до утилизации..
-
Заинтересованные стороны (Stakeholders) - Лицо или группа лиц, заинтересованные в деятельности или успехе организации.
В процессе развития системной инженерии сложились её основные принципы:
-
Переход от редукционистского к системному подходу.
-
Переход от монодисциплинарного к междисциплинарному подходу.
-
Переход от структурного к процессному подходу.
-
Переход от рабочего проектирования и конструирования к архитектурному проектному подходу.
-
Переход от непосредственной реализации к моделецентричной реализации.
-
Переход от одной группы описаний ко множественности групп описаний.
-
Переход от приоритета документов к приоритету данных.
-
Переход от единой верификации к раздельным верификации и валидации.
-
Переход от управления жизненным циклом как «технологическим конвейером» к «заказам-поставкам».
-
Переход от работы «для одного заказчика» к работе со множеством заинтересованных сторон.
-
Переход от методов жёсткого планирования к использованию гибких прогнозных методов.
Системная инженерия отвечает за интеграцию всех технических аспектов, экспертов предметной области и специализированных групп в рамках всех усилий команды разработки целевой системы. Работа в области системной инженерии начинается с определения потребностей заинтересованных сторон и необходимой функциональности, управления множеством [функциональных и нефункциональных] требований, которые затем должны быть преобразованы в ответный рабочий проект системы и её архитектуру при помощи синтеза проектных решений, после чего система проходит этапы верификации и валидации.
В обобщённой форме набор методов (процессов) системной инженерии включает, как минимум, следующие действия, которые необходимы для получения оптимальной системы:
-
обеспечение надёжного проектного репозитория, который поддерживает необходимые инструменты для совместной работы множества специалистов над мультидисциплинарной информацией в ходе создания системы и управления её жизненным циклом;
-
точную оценку доступной информации и определение недостающей;
-
точное определение критериев производительности и эффективности, которые определяют успех или неудачу системного проекта;
-
получение и анализ всех исходных требований, которые отражают запросы пользователей и цели заинтересованных сторон;
-
проведение системного анализа для разработки проектных решений, отражающих поведение системы, которые должны соответствовать всем функциональным требованиям и требованиям к производительности;
-
распределение всех поведенческих элементов системы по соответствующим (подходящим) им элементам архитектуры;
-
проведение анализа компромиссных решений по альтернативным проектным решениям или архитектуре для поддержки процесса принятия решений;
-
создание исполняемых моделей для верификации и валидации работы системы.
В соответствии с современными представлениями, предметом системной инженерии является интегрированное, целостное рассмотрение крупномасштабных, комплексных, высокотехнологичных систем, взаимодействующих преимущественно на уровне предприятий с использованием человеко-машинных интерфейсов.
Создание таких систем требует усиленного внимания к следующим процедурам:
-
разработке архитектуры систем, проектированию систем и их элементов;
-
системному анализу и исследованию операций;
-
управлению инженерной деятельностью;
-
выбору технологий и методик;
-
эффективному управлению жизненным циклом системы.
Профиль современной системной инженерии включает следующие основные области деятельности:
-
Управление организацией (организационно-управленческая деятельность).
-
Управление проектами (проектно-управленческая деятельность).
-
Управление инженерными решениями (проектно-инженерная деятельность).
-
Специальные инженерные дисциплины (технологическая деятельность).
Программная инженерия (Software Engineering) — приложение систематического, дисциплинного, измеримого подхода к развитию, оперированию и обслуживанию программного обеспечения, а также исследованию этих подходов; то есть, приложение дисциплины инженерии к программному обеспечению (ISO/IEC/IEEE 24765:2017).
Основной принцип программной инженерии состоит в том, что программы создаются в результате выполнения нескольких взаимосвязанных этапов (анализ требований, проектирование, разработка, внедрение, сопровождение), составляющих жизненный цикл программного продукта. Жизненный цикл программного обеспечения определяется как период времени, который начинается с момента принятия решения о необходимости создания ПО и заканчивается в момент его полного изъятия из эксплуатации.
Программное обеспечение (ПО) - Совокупность компьютерных программ и программных документов, необходимых для эксплуатации этих программ.
Методы программной инженерии - это структурные решения, предназначенные для разработки программного обеспечения и включающие системные модели, формализованные нотации и правила проектирования, а также способы управления процессом разработки.
В качестве основы для реализации методов программной инженерии, как правило, используются CASE-средства. Совокупность методов, применяемых в жизненном цикле разработки программного обеспечения и объединенных одним общим философским подходом, представляет собой методологию разработки.
Методы программной инженерии можно разделить на три группы:
- методы прототипирования, базирующиеся на различных формах прототипов;
Методы прототипирования используются для получения прототипов - промежуточных версий программной системы. Прототипы создаются в некоторых процессах разработки для демонстрации концепций, заложенных в системе.
- формальные методы, обоснованные математически;
Термин «формальные методы» подразумевает ряд операций, в состав которых входят создание формальной спецификации системы, анализ и доказательство спецификации, реализация системы на основе преобразования формальной спецификации в программы и верификация программ. В формальном языке системной спецификации заложены математические концепции. При этом используется область дискретной математики, основанной на алгебре, теории множеств и алгебре логики.
- эвристические методы, касающиеся неформализованных подходов (структурные, ориентированные на данные, объектно- ориентированные).
-
Инструменты работы с требованиями (Software Requirements Tools).
-
Инструменты проектирования (Software Design Tools) — инструменты для создания и проверки программного дизайна. (SADT/IDEF, UML, BPMN/BPEL, Microsoft DSL и т.п.)
-
Инструменты конструирования (Software Construction Tools). В соответствии с пониманием “конструирования”, заданным соответствующей областью знаний SWEBOK. Эти инструменты используются для производства и трансляции программного представления (например, исходного кода), достаточно детального и явного для машинного выполнения.
-
Инструменты тестирования (Software Testing Tools).
-
Генераторы тестов (test generators). Эти инструменты помогают в разработке сценариев тестирования.
-
Средства выполнения тестов (test execution frameworks). Эти средства обеспечивают среду исполнения тестовых сценариев в контролируемом окружении, позволяющем отслеживать поведение объекта, подвергаемого тестированию.
-
Инструменты оценки тестов (test evaluation tools). Эти инструменты поддерживают оценку результатов выполнения тестов, помогая определить в какой степени и где именно обнаруженное поведение соответствует ожидаемому поведению.
-
Средства управления тестами (test management tools).
-
Инструменты анализа производительности (performance analysis tools).
- Инструменты сопровождения (Software Maintenance Tools). Эта тема охватывает инструменты, особенно важные для обеспечения сопровождения существующего программного обеспечения, подверженного модификациям:
-
Инструменты облегчения понимания (comprehension tools). Эти инструменты помогают человеку в понимании программ. Примерами могут служить различные средства визуализации.
-
Инструменты реинжиниринга (reengineering tools). Эти инструменты поддерживают деятельность по реинжинирингу, описанную в области знаний SWEBOK “Software Maintenance”.
- Инструменты конфигурационного управления (Software Configuration Management Tools). Инструменты конфигурационного управления делятся на три категории:
-
Инструменты отслеживания (tracking) дефектов, расширений и проблем.
-
Инструменты управления версиями.
-
Инструменты сборки и выпуска. Эти инструменты предназначены для управления задачами сборки и выпуска продуктов, а также включают средства инсталляции.
- Инструменты управления инженерной деятельностью (Software Engineering Management Tools). Средства управления деятельностью по программной инженерии делятся на три категории:
-
Инструменты планирования и отслеживания проектов.
-
Инструменты управления рисками.
-
Инструменты количественной оценки.
- Инструменты поддержки процессов (Software Engineering Process Tools):
-
Инструменты моделирования.
-
Инструменты управления проектами.
-
Инструменты конфигурационного управления, поддерживающие работу с актуальными версиями всего комплекса артефактов проекта.
-
Ролевые платформы разработки программного обеспечения, охватывающие все стадии жизненного цикла и, на сегодняшний день, являющиеся развитием интегрированных средств разработки и CASE-инструментов в направлении поддержки “смежной” функциональности – управления требованиями, работ по конфигурационному управлению с поддержкой управления изменениями, тестирования и оценки качества.
- Инструменты обеспечения качества (Software Quality Tools) Средства обеспечения качества делятся на две категории:
-
Инструменты инспектирования. Эти средства используются для поддержки обзора (review) и аудита.
-
Инструменты (статического) анализа. Эти средства используются для анализа программных артефактов, данных, потоков работ и зависимостей.
-
Процессы в контексте системы
-
Специальные процессы программных средств