Добавлен: 06.11.2023
Просмотров: 120
Скачиваний: 6
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Размещено на http://www.allbest.ru/
ГАОУ ВО «Дагестанский государственный институт народного хозяйства»
Кафедра «Информационные технологии и информационная безопасность»
Курсовая работа по дисциплине: «Программная инженерия»
Тема: «Принципы программной и системной инженерии»
Руководитель: Бекбулатова Зайнаб Абдулмуслимовна
Выполнил(а): Кадиев Исмаил Мусаевич
3к 1гр
Махачкала 2016
Содержание
Введение
1. История появления. Определение программной инженерии
2. История появления. Определение системной инженерии
3. Сравнительный анализ стандартов системной и программной инженерии
Заключение
Список использованной литературы
Введение
В середине ХХ века успехи науки, техники и технологий наряду с быстро возраставшими потребностями в автоматизации процессов и производств на основе стремительно совершенствовавшихся компьютеров стимулировали начало индустриального создания так называемых систем «большого масштаба». Эти системы отличались как количественными показателями – существенно возросло число составных частей и выполняемых функций, качественно повысилась степень автоматизации, заметно повысились стоимость систем и важность решаемых ими задач, - так и качественными показателями: принципиально возрос уровень организации и управления, усложнилось функционирование системы в целом и ее частей, повысилась гетерогенность, появилась принципиальная потребность в совместной работе с другими, весьма сложными системами. В основу работ по созданию систем «большого масштаба» легли достижения общей теории систем, системного анализа, исследования операций, теории оптимизации, вычислительной техники и кибернетики. Эти исследования стали целенаправленно использоваться при комплексном решении инженерных и организационно-управленческих задач, возникающих при создании подобных систем, что в итоге привело к появлению нового междисциплинарного подхода и методики, получившего название системная и программная инженерия.
Актуальность данной курсовой работы заключается в достаточно бурном развитии системной и программной инженерии. Этапы развития системной и программной инженерии можно выделять по-разному. Каждый этап связан с появлением (или осознанием) очередной проблемы и нахождением путей и способов решения этой проблемы.
Целю курсовой работы является формирование целостного представления о системной и программной инженерии, как междисциплинарных областей технических наук, сосредоточенных на проблемах создания эффективных, комплексных систем.
Для достижения поставленной цели необходимо решить ряд задач:
-
Раскрыть понятие системной и программной инженерии; -
Изучить особенности современных методологий и технологий создания программных средств; -
Показать основные достоинства и недостатки; -
Понимание роли и места системной и программной инженерии в процессе создания сложных систем; -
Подведение итогов данной работы и внесение изменений.
1. История появления. Определение программной инженерии
В конце 60-х – начале 70-х годов прошлого века произошло событие, которое вошло в историю как первый кризис программирования. Событие состояло в том, что стоимость программного обеспечения стала приближаться к стоимости аппаратуры («железа»), а динамика роста этих стоимостей позволяла прогнозировать, что к середине 90-годов все человечество будет заниматься разработкой программ для компьютеров. Тогда и заговорили о программной инженерии (или технологии программирования, как это называлось в России) как о некоторой дисциплине, целью которой является сокращение стоимости программ.
Термин «инженерия программного обеспечения» появился впервые в 1968 году на Конференции НАТО «Инженерия программного обеспечения» и предназначался, чтобы спровоцировать размышления относительно текущего в то время «кризиса программного обеспечения». С тех пор, это продолжилось как профессия и область исследований, посвященных созданию программного обеспечения, которое имеет более высокое качество, более доступно, поддерживаемо, и быстрее строится.
Программная инженерия прошла несколько этапов развития, в процессе которых были сформулированы фундаментальные принципы и методы разработки программных продуктов. Основной принцип программной инженерии состоит в том, что программы создаются в результате выполнения нескольких взаимосвязанных этапов (анализ требований, проектирование, разработка, внедрение, сопровождение), составляющих жизненный цикл программного продукта. Фундаментальными методами проектирования и разработки являются модульное, структурное и объектно-ориентированное проектирование и программирование.
Несмотря на то, что программная инженерия достигла определенных успехов, перманентный кризис программирования продолжается. Связано это с тем, рубеж 80–90-х годов отмечается как начало информационно-технологической революции, вызванной взрывным ростом использования информационных средств: персональный компьютер, локальные и глобальные вычислительные сети, мобильная связь, электронная почту, Internet и т.д.
Программная инженерия — это инженерная дисциплина, которая связана со всеми аспектами производства ПО от начальных стадий создания спецификации до поддержки системы после сдачи в эксплуатацию.
Программные инженеры применяют систематичные и организованные подходы к работе для достижения максимальной эффективности и качества ПО. Их задача состоит в адаптации существующих методов и подходов к решению свой конкретной проблемы.
На сегодняшний день нет единого определения понятия «программная инженерия». Сам термин программная инженерия - впервые был озвучен в октябре 1968 года на конференции подкомитета НАТО по науке и технике (г.Гармиш, Германия). Присутствовало 50 профессиональных разработчиков программного обеспечения (ПО) из 11 стран. Рассматривались проблемы проектирования, разработки, распространения и поддержки программ. Там впервые и прозвучал термин «программная инженерия» как некоторая дисциплина, которую надо создавать и которой надо руководствоваться в решении перечисленных проблем.
Вскоре после этого в Лондоне состоялась встреча 22-х руководителей проектов по разработке ПО. На встрече анализировались проблемы и перспективы развития ПО. Отмечалась возрастающее воздействие ПО на жизнь людей. Впервые серьезно заговорили о надвигающемся кризисе ПО. Применяющиеся принципы и методы разработки ПО требовали постоянного усовершенствования. Именно на этой встрече была предложена концепция жизненного цикла ПО (SLC – Software Lifetime Cycle) как последовательности шагов-стадий, которые необходимо выполнить в процессе создания и эксплуатации ПО. Вокруг этой концепции было много споров. В 1970 г. У.У. Ройс произвел идентификацию нескольких стадий в типичном цикле и было высказано предположение, что контроль выполнения стадий приведет к повышению качества ПО и сокращению стоимости разработки.
Отличие от других инженерий.
Отличие программной инженерии от других инженерий интересно прежде всего с точки зрения двух вопросов:
-
почему доля провальных проектов в программной инженерии так велика по сравнению с другими инженериями? -
можно ли в программной инженерии применять опыт других инженерий?
Прежде всего, отметим, что жизненный цикл продукта любой инженерии в упрощенном виде включает фазы: проектирование, создание образца, испытание, производство, эксплуатация.
Компьютерная программа – это (в отличие от объектов других инженерий) не материальный объект. Отсюда следуют следующие отличия. Фаза производства состоит в копировании образца на другие носители. Стоимость фазы исчезающее мала. Если кодирование считать элементом проектирования (что очень близко к истине), то отсутствует также и фаза создания образца (строится компилятором и линковщиком)
Отсюда следуют следующие выводы:
-
Стоимость программы – это стоимость только ее проектирования -
Стоимость проектирования коробочных продуктов «размазывается» по копиям -
Стоимость заказных продуктов (массово не копируемых) остается высокой
Второе существенное отличие состоит в том, что программа – искусственный объект. Т.е. для программы нет объективных законов, которым бы подчинялось ее поведение. Например, у инженера – строителя есть объективные законы строительной механики: равновесия моментов и сил, устойчивости механических систем и т.д. Инженер – строитель может проверить свои архитектурные решения на соответствие этим законам и тем самым обеспечить удачу проекта. Эти законы объективны, они будут действовать всегда. У программного инженера на первый взгляд также есть типовые, проверенные временем архитектурные решения (например, клиент-серверная архитектура). Но эти решения определяются уровнем развития вычислительной техники (и адекватным им уровнем требований). С появлением техники с принципиально новыми возможностями программному инженеру придется искать новые решения.
Прямым следствием отсутствия возможности «теоретического» контроля проекта является то, что тестирование продукта – это единственный способ убедиться в его качестве. Именно поэтому стоимость тестирования составляет существенную стоимость ПО. Кстати, строительный инженер, как правило, лишен возможности такого «тестирования» своего продукта перед сдачей его в эксплуатацию.
Ну и наконец, программная инженерия – молодая дисциплина, опыт которой насчитывает всего несколько десятков лет. По сравнению с опытом строительной инженерии (тысячелетия) это конечно очень мало. Программную инженерию иногда сравнивают с ранней строительной, когда законы строительной механики еще не были известны и строительные инженеры действовали методом проб и ошибок, накапливая бесценный опыт. Несмотря на молодой возраст, программная инженерия также накопила определенный опыт, который позволяет (при разумном его применении) делать удачные проекты.
Понятие программной инженерии. Одним из основных понятий программной инженерии является понятие жизненного цикла программного продукта и программного процесса. Жизненный цикл – непрерывный процесс, начинающийся с момента принятия решения о создании ПО и заканчивающийся снятием его с эксплуатации. Жизненный цикл разбивается на отдельные процессы.
Процесс – совокупность действий и задач, имеющих целью достижение значимого результата. Основными процессами (иногда называют этапами или фазами) жизненного цикла являются:
-
Разработка спецификации требований (результат – описания требований к программе, которые обязательны для выполнения – описание того, что программа должна делать) -
Разработка проекта программы (результат – описание того, как программа будет работать) -
Кодирование (результат – исходный код и файлы конфигурации) -
Тестирование программы (результат - контроль соответствия программы требованиям) -
Документирование (результат – документация к программе)
Кроме основных, существует много дополнительных и вспомогательных процессов, связанных не созданием продукта, а с организацией работ (нефункциональные процессы): создание инфраструктуры, управление конфигурацией, управление качеством, обучение, разрешение противоречий, и т.п.
Модель программного процесса — это упрощенное описание программного процесса, представленное с некоторой точки зрения. Модель задается в виде практических этапов, необходимых для создания ПО. В модели мы говорим, что и как мы будем делать. Т.е. какие процессы, с какой степенью конкретизации и в какой последовательности мы будем выполнять. Выбор модели процесса является первым шагом в создании ПО. Правильны выбор модели очень важен, т.к. во многом определяет успех проекта. Выбор тяжелых процессов может утопить проект, а слишком легкое отношение к процессам – к потере контроля над ходом выполнения.
Метод программной инженерии — это структурный подход к созданию ПО, который способствует производству высококачественного продукта эффективным в экономическом аспекте способом. В этом определении есть две основные составляющие: программный инженерия компьютерный
-
создание высококачественного продукта; -
экономически эффективным способом.
Иными словами, метод – это то, что обеспечивает решение основной задачи программной инженерии: создание качественного продукта при заданных ресурсах времени, бюджета, оборудования, людей.