САРАНСКИЙ КООПЕРАТИВНЫЙ ИНСТИТУТ (ФИЛИАЛ) АВТОНОМНАЯ НЕКОММЕРЧЕСКАЯ ОБРАЗОВАТЕЛЬНАЯ ОРГАНИЗАЦИЯ ВЫСШЕГО ОБРАЗОВАНИЯ ЦЕНТРОСОЮЗА РОССИЙСКОЙ ФЕДЕРАЦИИ «РОССИЙСКИЙ УНИВЕРСИТЕТ КООПЕРАЦИИ» Кафедра Экономики и информационных технологий КУРСОВАЯ РАБОТА по дисциплине «Информационные технологии» на тему «Методология программной инженерии» Выполнил: студент Выборнов Вадим Алексеевич Курс: 1 форма обучения: Заочная факультет: Экономический направление подготовки: “Информационные системы и технологии” группа: ИСТ(ПИСЭ)1–З/Бу/СР23 шифр: 09.03.02 Научный руководитель: к.п.н., доцент Голяева Наталья Владимировна Саранск 2024 Содержание ВВЕДЕНИЕ ................................................................................................................... 4 1. Основная часть ......................................................................................................... 6 1.1. Теоретические основы программной инженерии ......................................... 6 1.2. Методологии разработки программного обеспечения. Ошибка! Закладка не определена. 1.3. Инструменты и технологии программной инженерии ................................ 9 1.4. Применение методологий на практике ........................................................ 10 Заключение ................................................................................................................. 13 Список использованных источников ....................................................................... 14 2 ВВЕДЕНИЕ В современном мире программное обеспечение играет ключевую роль в функционировании практически всех сфер жизнедеятельности человека. От эффективности разработки ПО напрямую зависят качество и скорость предоставления услуг, безопасность данных и удобство их использования. Методология программной инженерии занимает центральное место в процессе создания качественного программного продукта, так как определяет подходы и принципы организации рабочего процесса. В условиях постоянно возрастающей сложности программных систем и требований к их надежности, актуальность выбора оптимальной методологии разработки не может быть переоценена. Основной целью данной работы является изучение и анализ современных методологий программной инженерии, а также оценка их применимости в различных условиях разработки программного обеспечения. Для достижения поставленной цели в работе определены следующие задачи: - Исследовать историческое развитие и теоретические основы методологий программной инженерии. - Систематизировать существующие методологии и классифицировать их по ключевым признакам. - Проанализировать преимущества и недостатки популярных методологий разработки. - Оценить эффективность применения различных методологий на примере конкретных проектов. Для достижения целей и решения поставленных задач в работе будут использованы следующие методы исследования: - Аналитический метод, позволяющий осуществить обзор литературы и источников, посвященных методологиям программной инженерии. - Сравнительный анализ, необходимый для выявления особенностей и различий между методологиями. 3 - Кейс-стади, метод исследования конкретных примеров использования методологий в реальных проектах. - Синтез полученных данных для формирования обобщенных выводов и рекомендаций по выбору методологии разработки ПО. 4 1. Основная часть 1.1. Теоретические основы программной инженерии Программная инженерия – это дисциплина, занимающаяся всеми аспектами производства программного обеспечения, от ранних стадий разработки системных требований до поддержки готового продукта. Она включает в себя определение, разработку, использование и обслуживание программного обеспечения с применением различных научных, математических и инженерных методов. На рисунке 1 представлена классическая модель жизненного цикла программного обеспечения, требований, проектирования, включающая реализации, этапы планирования, тестирования, анализа внедрения и поддержки. Эта модель иллюстрирует последовательность шагов, которые необходимо выполнить для создания качественного программного продукта. В таблице 1 проводится сравнение различных методологий разработки программного обеспечения, таких как водопадная модель, Agile, Scrum, Kanban и другие. Сравнение включает критерии, такие как гибкость, масштабируемость, подход к управлению требованиями и временем, а также особенности коммуникации в команде. Методологии программной инженерии представляют собой набор принципов, практик и процессов, используемых для управления и контроля процесса разработки ПО. Они направлены на улучшение качества программного продукта и эффективности рабочего процесса. Выбор методологии зависит от множества факторов, включая специфику проекта, размер и распределение команды, сроки и бюджет. 5 В данном разделе будут рассмотрены основные теоретические концепции программной инженерии, а также представлены и проанализированы ключевые методологии разработки ПО, их характеристики и области применения. Это позволит лучше понять, какие методологии и в каких условиях могут быть наиболее эффективными для достижения целей проекта. Рисунок 1: "Схема жизненного цикла программного обеспечения" 6 Методология Гибкость Масштабируе мость Управление требованиями Управление временем Коммуникаци я в команде Водопадная модель Низкая Средняя/Высо кая Жесткое Жесткое Формализован ная Agile Высокая Низкая/Средня Гибкое я Итеративное Открытая постоянная Scrum Высокая Средняя Гибкое ролями событиями с Итеративное с Ежедневные и спринтами встречи (standups) Kanban Высокая Средняя Гибкое акцентом поток с Непрерывное на и Постоянная визуализация и обсуждение Таблица 1: "Сравнение методологий разработки ПО" 1.2. Методологии разработки программного обеспечения Выбор методологии разработки программного обеспечения является одним из ключевых решений, которое определяет подход к управлению проектом, его структурирование и последовательность выполнения работ. Существует множество методологий, каждая из которых имеет свои особенности и лучше подходит для определенных типов проектов. На рисунке 2 представлена классификация методологий программной инженерии, которая демонстрирует разделение на традиционные и гибкие подходы. Традиционные методологии, такие как водопадная модель (Waterfall), предполагают строгую последовательность фаз разработки. В то же время, гибкие методологии, такие как Agile, Scrum и Extreme Programming (XP), 7 фокусируются на итеративной разработке и активном вовлечении заказчика в процесс. Таблица 2 содержит сравнение основных характеристик гибких методологий разработки ПО. В ней рассматриваются такие параметры, как гибкость в изменении требований, частота встреч и общения в команде, роли участников проекта, продолжительность итераций и механизмы обратной связи. Гибкие методологии призваны ускорить процесс разработки и сделать его более прозрачным и адаптируемым к изменяющимся требованиям и условиям рынка. Они подразумевают более тесное сотрудничество внутри команды и с клиентом, а также постоянную готовность к изменениям на протяжении всего проекта. Рисунок 2: "Классификация методологий программной инженерии" 8 Методология Гибкость в изменении требований Частота встреч и общения в команде Роли участников проекта Продолжител Механизмы ьность обратной итераций связи Agile Высокая Регулярные Гибкие, могут Короткие (1-4 Постоянная, в встречи меняться в недели) конце каждой зависимости итерации от проекта Scrum Высокая Ежедневные Четко стендапы определенны (Daily Standе (Product Up) Owner, Scrum Master, Development Team) Extreme Programming (XP) Высокая Частые, с Разработчики Очень После акцентом на , короткие (1-2 каждого цикла парное тестировщики недели) разработки программиро , клиенты вание 2-4 недели Спринт(Спринт) ретроспектива , Спринтревью Таблица 2: "Основные характеристики гибких методологий" 1.3. Инструменты и технологии программной инженерии Инструменты и технологии программной инженерии являются неотъемлемой частью процесса разработки программного обеспечения. Они предоставляют разработчикам средства для проектирования, реализации, тестирования и поддержки программных продуктов. Использование современных инструментов повышает эффективность рабочих процессов и помогает достигать высокого качества конечного продукта. Рисунок 3 демонстрирует спектр инструментальных средств, используемых в программной инженерии. Это могут быть системы управления версиями (например, Git), инструменты автоматизации сборки и развертывания (например, Jenkins), системы управления проектами (например, Jira), среды разработки (IDE, такие как Visual Studio или IntelliJ IDEA), фреймворки для 9 автоматизированного тестирования (например, Selenium) и многие другие. Каждый инструмент играет свою роль в оптимизации определенного аспекта процесса разработки и поддержки ПО. Инструменты программной инженерии можно классифицировать по различным критериям: по стадиям разработки ПО, по функциональному назначению, по типу лицензирования (открытое ПО против коммерческого) и др. Важно подбирать инструменты, исходя из специфики проекта, используемой методологии разработки и предпочтений команды. Рисунок 3: "Инструментальные средства программной инженерии" 1.4. Применение методологий на практике Применение методологий программной инженерии на практике позволяет организациям и командам разработчиков создавать программное обеспечение 10 более эффективно и предсказуемо. Особое внимание в данном разделе уделяется методологии Scrum, которая является одной из наиболее популярных гибких методологий. На рисунке 4 представлен типичный рабочий процесс в Scrum, включающий планирование спринта, ежедневные стендапы, разработку, тестирование и ретроспективу спринта. Этот процесс иллюстрирует цикличность и итеративность Scrum, где команда работает в коротких циклах, называемых спринтами, чтобы постепенно улучшать продукт и адаптироваться к изменениям. В таблице 3 рассматриваются ключевые преимущества и недостатки методологии Scrum. Преимущества включают повышенную гибкость перед изменениями, улучшенную коммуникацию внутри команды, быструю обратную связь от заказчика и фокус на приоритетные задачи. Недостатки могут заключаться в необходимости частого вовлечения заказчика, потребности в высокой самоорганизации команды и возможных масштабировании методологии на большие проекты. Рисунок 4: "Пример рабочего процесса в Scrum" 11 трудностях в Преимущества Недостатки Повышенная гибкость перед изменениями Необходимость частого вовлечения заказчика Улучшенная коммуникация внутри команды Потребность в высокой самоорганизации команды Быстрая обратная связь от заказчика Трудности в масштабировании методологии на большие проекты Фокус на приоритетные задачи Риск перегрузки команды из-за частых сроков и изменений Улучшение видимости проекта и прогресса Может потребоваться изменение корпоративной культуры Повышение качества продукта за счет итеративной разработки Зависимость от квалификации и опыта Scrum-мастера Таблица 3: "Преимущества и недостатки использования методологии Scrum" 12 Заключение В ходе данного реферата были рассмотрены ключевые аспекты методологии программной инженерии, включая теоретические основы, различные методологии разработки, инструментальные средства, а также практическое применение методологий в процессе создания программного обеспечения. Исследование показало, что методологии программной инженерии представляют собой фундаментальную основу для эффективной и систематизированной разработки ПО. От теоретических основ, таких как модели жизненного цикла ПО, до практических инструментов и технологий, методологии обеспечивают рамки, внутри которых команды могут работать согласованно и продуктивно. Гибкие методологии, такие как Scrum, особенно выделяются своей способностью адаптироваться к изменениям и поддерживать активное взаимодействие между всеми участниками проекта. Выводы, сделанные в результате анализа, подчеркивают значимость правильного выбора методологии для успеха проекта по разработке программного обеспечения. Гибкие методологии, такие как Scrum, хорошо подходят для проектов, требующих быстрой адаптации к изменяющимся требованиям и тесного сотрудничества с заказчиком. Однако они требуют высокой степени самоорганизации и активного участия всех членов команды. Инструментальные средства программной инженерии играют важную роль в поддержке и оптимизации процесса разработки, обеспечивая необходимую инфраструктуру для реализации выбранной методологии. В заключение, методология программной инженерии является динамично развивающейся областью, и для достижения наилучших результатов в разработке ПО необходимо учитывать как теоретические основы, так и практический опыт их применения. Постоянное изучение новых подходов и инструментов, а также готовность к изменениям являются ключевыми факторами успеха в сфере программной инженерии. 13 Список использованных источников 1. Магомедова, А.С. (2018). "Методологии разработки программного обеспечения". Москва: Издательство "Техносфера". 2. Ларман, К. (2006). "Гибкая методология разработки: От идеи до продукта". Москва: Издательский дом "Вильямс". 3. Сидоренко, В.Н. (2019). "Программная инженерия: основы теории и практики". Санкт-Петербург: БХВ-Петербург. 4. Попов, О.В., Терехов, А.Н. (2017). "Современные методы и средства разработки программного обеспечения". Москва: Издательство "Наука и Техника". 5. Швабер, К., Сазерленд, Дж. (2020). "Scrum. Революционный метод управления проектами". Москва: Альпина Паблишер. 6. Фаулер, М. (2019). "Рефакторинг: улучшение существующего кода". Москва: Издательский дом "Питер". 7. Бек, К. (2003). "Экстремальное программирование. Разработка через тестирование". Москва: Издательский дом "Вильямс". 8. Кнут, Д.Э. (2006). "Искусство программирования". Москва: Издательство "Мир". 9. Макконнелл, С. (2018). "Совершенный код. Мастер-класс". СанктПетербург: БХВ-Петербург. 10. Куликов, А.В., Терехов, А.Н. (2020). "Инструментальные средства программной инженерии". Москва: Издательство "Наука". 11. Магляс, А.В. (2017). "Программная инженерия: учебник и практикум для академического бакалавриата". Москва: Юрайт. 12. Свистунов, М.М., Шилов, В.В., Левин, М.Ш. (2018). "Методология и стандарты программной инженерии". Москва: Горячая линия - Телеком. 13. Попов, Е.В., Давыдова, М.А., Кулаков, Ю.М. (2016). "Agileметодологии разработки программного обеспечения". Москва: Книга по Требованию. 14 14. Сафонов, В.О. (2019). "Scrum. Революционный метод управления проектами". Москва: Альпина Паблишер. 15. Швабер, К., Сазерленд, Дж. (2020). "Scrum. Подробное руководство". Москва: Эксмо. 15