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

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 23.09.2017
Размер файла 44,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

ГАОУ ВО «Дагестанский государственный институт народного хозяйства»

Кафедра «Информационные технологии и информационная безопасность»

Курсовая работа по дисциплине: «Программная инженерия»

Тема: «Принципы программной и системной инженерии»

Руководитель: Бекбулатова Зайнаб Абдулмуслимовна

Выполнил(а): Кадиев Исмаил Мусаевич

3к 1гр

Махачкала 2016

Содержание

Введение

1. История появления. Определение программной инженерии

2. История появления. Определение системной инженерии

3. Сравнительный анализ стандартов системной и программной инженерии

Заключение

Список использованной литературы

Введение

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

Актуальность данной курсовой работы заключается в достаточно бурном развитии системной и программной инженерии. Этапы развития системной и программной инженерии можно выделять по-разному. Каждый этап связан с появлением (или осознанием) очередной проблемы и нахождением путей и способов решения этой проблемы.

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

Для достижения поставленной цели необходимо решить ряд задач:

1. Раскрыть понятие системной и программной инженерии;

2. Изучить особенности современных методологий и технологий создания программных средств;

3. Показать основные достоинства и недостатки;

4. Понимание роли и места системной и программной инженерии в процессе создания сложных систем;

5. Подведение итогов данной работы и внесение изменений.

1. История появления. Определение программной инженерии

В конце 60-х - начале 70-х годов прошлого века произошло событие, которое вошло в историю как первый кризис программирования. Событие состояло в том, что стоимость программного обеспечения стала приближаться к стоимости аппаратуры («железа»), а динамика роста этих стоимостей позволяла прогнозировать, что к середине 90-годов все человечество будет заниматься разработкой программ для компьютеров. Тогда и заговорили о программной инженерии (или технологии программирования, как это называлось в России) как о некоторой дисциплине, целью которой является сокращение стоимости программ.

Термин «инженерия программного обеспечения» появился впервые в 1968 году на Конференции НАТО «Инженерия программного обеспечения» и предназначался, чтобы спровоцировать размышления относительно текущего в то время «кризиса программного обеспечения». С тех пор, это продолжилось как профессия и область исследований, посвященных созданию программного обеспечения, которое имеет более высокое качество, более доступно, поддерживаемо, и быстрее строится.

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

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

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

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

На сегодняшний день нет единого определения понятия «программная инженерия». Сам термин программная инженерия - впервые был озвучен в октябре 1968 года на конференции подкомитета НАТО по науке и технике (г.Гармиш, Германия). Присутствовало 50 профессиональных разработчиков программного обеспечения (ПО) из 11 стран. Рассматривались проблемы проектирования, разработки, распространения и поддержки программ. Там впервые и прозвучал термин «программная инженерия» как некоторая дисциплина, которую надо создавать и которой надо руководствоваться в решении перечисленных проблем.

Вскоре после этого в Лондоне состоялась встреча 22-х руководителей проектов по разработке ПО. На встрече анализировались проблемы и перспективы развития ПО. Отмечалась возрастающее воздействие ПО на жизнь людей. Впервые серьезно заговорили о надвигающемся кризисе ПО. Применяющиеся принципы и методы разработки ПО требовали постоянного усовершенствования. Именно на этой встрече была предложена концепция жизненного цикла ПО (SLC - Software Lifetime Cycle) как последовательности шагов-стадий, которые необходимо выполнить в процессе создания и эксплуатации ПО. Вокруг этой концепции было много споров. В 1970 г. У.У. Ройс произвел идентификацию нескольких стадий в типичном цикле и было высказано предположение, что контроль выполнения стадий приведет к повышению качества ПО и сокращению стоимости разработки.

Отличие от других инженерий.

Отличие программной инженерии от других инженерий интересно прежде всего с точки зрения двух вопросов:

· почему доля провальных проектов в программной инженерии так велика по сравнению с другими инженериями?

· можно ли в программной инженерии применять опыт других инженерий?

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

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

Отсюда следуют следующие выводы:

· Стоимость программы - это стоимость только ее проектирования

· Стоимость проектирования коробочных продуктов «размазывается» по копиям

· Стоимость заказных продуктов (массово не копируемых) остается высокой

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

Прямым следствием отсутствия возможности «теоретического» контроля проекта является то, что тестирование продукта - это единственный способ убедиться в его качестве. Именно поэтому стоимость тестирования составляет существенную стоимость ПО. Кстати, строительный инженер, как правило, лишен возможности такого «тестирования» своего продукта перед сдачей его в эксплуатацию.

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

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

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

· Разработка спецификации требований (результат - описания требований к программе, которые обязательны для выполнения - описание того, что программа должна делать)

· Разработка проекта программы (результат - описание того, как программа будет работать)

· Кодирование (результат - исходный код и файлы конфигурации)

· Тестирование программы (результат - контроль соответствия программы требованиям)

· Документирование (результат - документация к программе)

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

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

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

· создание высококачественного продукта;

· экономически эффективным способом.

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

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

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

Так как область «Программной инженерии» все еще относительно молода по сравнению со своими сестринскими областями инженерии, есть все еще большая работа и дебаты вокруг того, что представляет собой «инженерия программного обеспечения», и удовлетворяет ли оно понятию инженерии.

2. История появления. Определение системной инженерии

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

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

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

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

Первые разработки в области сложных (преимущественно, инженерно-технических) систем, основанные на системном подходе и системных методах, отмечаются в 1940-х годах в США во время Второй мировой войны. В послевоенное время значительные успехи науки, техники и технологий наряду с быстро возраставшими потребностями в автоматизации процессов и производств на основе стремительно совершенствовавшихся компьютерных технологий стимулировали начало индустриального создания так называемых крупномасштабных систем высокой сложности. Эти системы отличались как количественными показателями (существенным ростом числа составных частей и выполняемых функций, высокой степенью автоматизации, значительно возросшей стоимостью создаваемых систем и важностью решаемых ими задач и так далее), так и качественными показателями (принципиально иным уровнем организации и управления, высокой сложностью функционирования системы в целом и её составных частей, повышением гетерогенности, необходимостью взаимодействия с другими сложными системами и так далее).

В 1957 году в одной из первых работ по системной инженерии Г.Х. Гуд и Р.Э. Макол отмечали, что создаваемые человеком сложные и крупномасштабные системы отличаются следующими признаками:

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

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

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

· высокой степенью автоматизации, что позволяет решать не только технические, но и организационно-управленческие задачи;

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

· наличием (в большинстве случаев) в составе системы конкурирующих сторон;

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

· повышением требований к использованию адекватных методов, облегчающих принятие решений персоналом;

· появлением новых способов организации деятельности по созданию систем с особым акцентом на коллективные методы работы.

В основу работ по созданию подобных систем были положены достижения общей теории систем, а также системного анализа, исследования операций, теории информации, вычислительной техники и кибернетики. Эти достижения стали целенаправленно использоваться при комплексном решении инженерных и организационно-управленческих задач, возникающих при создании таких систем, что в итоге привело к появлению нового междисциплинарного методологического подхода, получившего название «системная инженерия». Как самостоятельная дисциплина системная инженерия начала оформляться в конце 1950-х -- начале 1960-х годов в рамках общей теории систем, будучи отнесена создателем этой концепции Л. фон Берталанфи к её прикладной [технической] области, наряду с двумя другими методологическими дисциплинами -- исследованием операций и инженерной психологией.

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

В 1965 году А. Д. Холл впервые описал методологию системной инженерии определив её как организованную творческую технологию и выделив в качестве основы три положения:

1. Системная инженерия многоаспектна, и этот факт должен быть обязательно отражён при определении её предмета.

2. В основу деятельности системного инженера должно быть положено понимание, что целью всего процесса системной инженерии является оптимальное проведение функциональных границ между человеческими интересами, системой и её окружением. В самом же окружении выделяются три главных составных части: 1) физическое и техническое окружение; 2) деловое и экономическое окружение; 3) социальное окружение.

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

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

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

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

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

· Система;

· Жизненныйцикл;

· Заинтересованные стороны.

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

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

· большие размеры;

· сложная иерархическая структура;

· циркуляция в системе больших информационных, энергетических и материальных потоков;

· высокий уровень неопределённости в описании системы.

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

· система в целом обладает свойствами, которыми не обладает ни один из составляющих её элементов;

· систему можно разделить на подсистемы и изучать каждую из них отдельно;

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

· система осуществляет целенаправленный выбор своего поведения.

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

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

В системной инженерии жизненный цикл системы понимается как эволюция во времени системы, продукта, проекта или другой созданной человеком сущности -- от концепции, создания и использования до прекращения функционирования или применения (ISO/IEC 15288:2008). Эволюция целевой системы связывается в системной инженерии с прохождением последовательности определённых стадий, увязанных с совокупностью управленческих решений, для обоснования которых используются объективные свидетельства того, что система на принятом уровне материализации является достаточно зрелой для перехода от одной стадии жизненного цикла к другой. При этом, на каждом этапе жизненного цикла система имеет относительно стабильный набор характеристик. При моделировании жизненного цикла используются совокупности процессов жизненного цикла. Для этого имеется ряд нормативно-технических документов, содержащих описание полной совокупности процессов, необходимых для моделирования жизненного цикла широкого спектра систем, создаваемых человеком.

Заинтересованные стороны - с первых шагов развития и по настоящее время, системная инженерия в качестве основы деятельности по созданию систем выделяют необходимость комплексного учета потребностей заинтересованных сторон. В системной инженерии заинтересованная сторона понимается как лицо или организация, имеющие права, долю, требования или интересы к системе или к использованию ее свойств, отвечающих их потребностям и ожиданиям (ISO/IEC 15288:2008). Заинтересованные стороны преследуют различные цели, которые должны быть гармонично учтены на основе баланса их интересов, в том числе через регулирование отношений: между группами заинтересованных сторон; между заинтересованными сторонами и объектом интереса.

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

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

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

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

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

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

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

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

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

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

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

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

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

Все известные методы (процессы) системной инженерии предполагают итеративное применение процедур синтеза, анализа, оценки:

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

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

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

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

3. Сравнительный анализ стандартов системной и программной инженерии

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

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

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

Среди официальных стандартов системной и программной инженерииглавенствующее место сегодня занимают спецификации, разрабатываемые седьмым подкомитетом Объединенного технического комитета 1 ISO и IEC -- Системная и программная инженерия (ISO/IEC JTC1/SC7 Software and systems engineering). Этот подкомитет в соответствии со своим мандатом занимается стандартизацией процессов создания программных продуктов и систем, а также инструментами и технологиями поддержки этой деятельности. За последние года JTC1/SC7 разработал около 20 новых документов по стандартизации в области системной и программной инженерии.

Следует отметить, что стандарты, связанные с проблемами создания эффективных систем, разрабатываются и в других технических комитетах ISO. Например, комитет ISO/TC 184 - Промышленные системы автоматизации и интеграция, занятый технологиями промышленной автоматизации, включая автоматизированные системы производства и управления, а также обеспечивающие ИС, коммуникации и физические интерфейсы, необходимые для интеграции упомянутых систем в сферу мирового электронного бизнеса, силами своего 5-ого подкомитета -- Архитектура, коммуникации и принципы интеграции разработал ряд важных стандартов, содержащих принципы описания и моделирования архитектуры систем уровня предприятия. Эти стандарты могут успешно применяться не только при создании систем промышленной автоматизации, но и при разработке других систем, например, информационных бизнес систем различного назначения.

Развитие фактической стандартизации в области системной и программной инженерии сегодня связано, главным образом, с формированием сводов правил и рекомендаций по применению, или, как их ещё называют, руководств по архитектуре. В этих руководствах описываются особенности практического использования апробированных архитектурных стилей и передового опыта разработки ИС в различных отраслях хозяйственной деятельности. Кроме того, на корпоративном уровне активно развиваются языки моделирования систем, такие как SysML, Gellish, WOSL и другие.

В настоящей статье дается краткий обзор наиболее значимых официальных и фактических стандартов системной и программной инженерии, включая как недавно принятые, так и планируемые к принятию спецификации. Основное уделяется стандартам JTC1/SC7, которые согласно терминологии, принятой в ISO, относятся к «горизонтальным» стандартам. Это означает, что эти стандарты имеют в основном общий характер и могут быть применены в различных областях, таких как социотехнические, промышленные, космические, транспортные и другие системы. В результате, организации, заинтересованные в появлении стандартов и руководств, отражающих специфику своей предметной области, могут эффективно использовать спецификации, разработанные JTC1/SC7, в качестве основы.

Общая характеристика стандартов системной и программной инженерии.

В области стандартизации системной и программной инженерии JTC1/SC7 выделяет, в частности, следующие ключевые аспекты:

· процессы системной и программной инженерии, где JTC1/SC7 в партнерстве с международным советом по системной инженерии и институтом инженеров электротехники и электроники, а также рядом других организаций разрабатывает стандарты системной и программной инженерии, аккумулирующие передовой опыт создания систем и программных средств;

· архитектура предприятий, где JTC1/SC7 в партнерстве с группой по управлению объектами, разрабатывает и развивает стандарты открытой распределенной обработки, позволяющие интегрировать представления об информационных технологиях- системах и бизнес-системах и предоставляющие на этой основе инструменты системной и программной инженерии для создания информационных систем предприятий;

· свод знаний по программной инженерии, где JTC1/SC7 в партнерстве с IEEE ведет работу, как над руководством к своду знаний по программной инженерии, так и над вопросами сертификации программных инженеров.

Важной характеристикой системы стандартов системной и программной инженерии является целостность. В плане повышения целостности JTC1/SC7 проводит работы по горизонтальной, вертикальной и межотраслевой гармонизации стандартов системной и программной инженерии. Горизонтальная гармонизация ведется в разрезе процессы системной и программной инженерии -- зрелость процессов -- качество процессов, вертикальная -- в разрезе системы в целом -- домены -- отдельные процессы, а межотраслевая путем согласования планов и содержания работ по стандартизации, проводимых различными группами. Одним из важных итогов этой работы является появление в 2008 г. гармонизированных между собой стандартов ISO/IEC 15288:2008 -- системной и программной инженерии. Процессы жизненного цикла систем и ISO/IEC 12207:2008 -- системной и программной инженерии.

Процессы жизненного цикла программных средств. Принципиально важно отметить, что процессы системной и программной инженерии включают не только процессы жизненного цикла систем и программных средств, но и процессы разработки, составляющие основу деятельности по созданию систем, обладающих заданными свойствами. Хотя JTC1/SC7 традиционно уделяет первостепенное внимание стандартизации процессов жизненного цикла, в последнее время подкомитет стал заниматься и собственно процессами разработки систем, беря за основу известные стандарты профессиональных организаций. Среди профессиональных стандартов на процессы разработки важнейшими следует считать стандарт IEEE Std. 1220 -- 2005 -- Применение и управление процессом разработки систем и стандарт Американского национального института стандартов и Альянса электронной индустрии ANSI/EIA 632 -- Процессы разработки систем. JTC1/SC7 на основе стандарта IEEE Std. 1220 разработал принятый в 2007г. официальный международный стандарт ISO/IEC 26702, также планируется разработка официального международного стандарта на основе документа ANSI/EIA 632.

Стандарты архитектуры предприятий традиционно являются предметом интереса разработчиков информационных бизнес-систем. Среди подобных стандартов, развиваемых JTC1/SC7, наиболее известна группа спецификаций ISO/IEC 10746, содержащая эталонную модель ODP. Эта эталонная модель нашла, в частности, применение при разработке системы электронного правительства Германии.Как указывалось, выше, в этой области успешно разрабатывает официальные международные стандарты технический комитет ISO/TC 184. Проблематика архитектуры предприятий традиционно сильно отражается в фактических стандартах, среди которых можно выделить методику разработки архитектуры предприятия международного консорциума, схему Захмана, методику Спивака и ряд других. При этом следует отметить, что только консорциум Open Group выпускает регулярно обновляемые Руководства.

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

· стандарты основ системной и программной инженерии;

· стандарты создания систем;

· стандарты управления и оценки свойств систем и процессов;

· стандарты описания систем и процессов.

Заключение

Программная инженерия как некоторое направление возникло и формировалось под давлением роста стоимости создаваемого программного обеспечения. Главная цель этой области знаний - сокращение стоимости и сроков разработки программ.

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

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

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

Список использованной литературы

1. Батоврин В. К. Системная инженерия. -- Железногорск, 2012.

2. Батоврин В. К. Толковый словарь по системной и программной инженерии. -- М.: 2012.

3. Косяков А., Свит У., Сэмюэль Дж. С. Системная инженерия. Принципы и практика. -- М.: 2014.

4. Иванова Г.С. Технология программирования.- М.: из-во МГТУ им. Н.Э. Баумана, 2012.

5. Липаев В.В. Программная инженерия: методологические основы. - М.: ТЕИС, 2015.

6. Дорф Р., Бишоп Р. Современные системы управления. -- М.: 2012.

7. Бесекерский В. А. Теория систем автоматического управления. -- М.: 2013.

8. Гуд Г.-Х., Макол Р.-Э. Системотехника. Введение в проектирование больших систем. -- М.: 2011.

9. Баршникова. М.Ю. Основы программной инженерии - МГТУ им. Н.Э.Баумана. 2013.

10. Соммервил. И. Инженерия программного обеспечения. 7-е издание. - М. - СПб. - Киев, 2011.

11. Штерн В. Методы программной инженерии - Москва: ЛОРИ, 2012г.

Размещено на Allbest.ru


Подобные документы

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

    презентация [870,6 K], добавлен 12.11.2014

  • Использование моделирования в программной инженерии в процессе разработки программного обеспечения. Основные этапы процесса разработки программного обеспечения, их характеристика. Моделирование процессов, их определение фазами и видами деятельности.

    реферат [2,2 M], добавлен 25.12.2017

  • Цели и задачи программной инженерии. Понятие программного обеспечения. Шесть принципов эффективного использования программного обеспечения. Виды программного обеспечения: общесистемное, сетевое и прикладное. Принципы построения программного обеспечения.

    курсовая работа [30,4 K], добавлен 29.06.2010

  • История развития программирования от 50-х годов ХХ века до сегодняшних дней. Характеристика понятия и основных задач программной инженерии как отрасли компьютерной науки. Ядро профессиональных знаний SWEBOK. Свод знаний по управлению проектами PMI PMBOK.

    презентация [86,8 K], добавлен 14.08.2013

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

    курсовая работа [3,0 M], добавлен 19.11.2009

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

    дипломная работа [1,4 M], добавлен 02.03.2010

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

    дипломная работа [3,4 M], добавлен 03.07.2015

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

    доклад [33,5 K], добавлен 06.04.2015

  • Создание схемы автоматизации парокотельной установки. Описание технологического процесса. Перечень входных и выходных переменных. Блок-схема технологического процесса. Разработка программы автоматизации с помощью программной среды LOGO! Soft Comfort.

    курсовая работа [826,7 K], добавлен 20.11.2013

  • Основные функции автоматизированной системы "Решатель математических формул". Требования к техническим средствам, информационной и программной совместимости. Стратегии конструирования программного обеспечения. Проектирование, разработка программного кода.

    курсовая работа [600,0 K], добавлен 25.02.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.