Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по методологии_март.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
748.54 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«ЧЕРЕПОВЕЦКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Институт информационных технологий

Кафедра математического и программного обеспечения ЭВМ

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

Учебно-методическое пособие

Направление: 231000.68 Программная инженерия

Череповец

2013 год

Рассмотрено на заседании кафедры МПО ЭВМ, протокол №2 от 26.09.2013 г

Одобрено учебно-методической комиссией института информационных технологий ФГБОУ ВПО ЧГУ, протокол №2 от 03.10.13 г.

Составители: В.В. Селивановских, к.т.н., доцент; О.Г. Ганичева, к.т.н., доцент.

Рецензенты: Е.В. Королева, к.т.н., ведущий менеджер ОАО «Северсталь-инфоком»; О.Л. Селяничев, к.т.н., доцент кафедры МПО ЭВМ ФГБОУ ВПО ЧГУ

Научный редактор: е.В. Ершов, доктор технич.Наук Введение

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

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

Данное учебно-методическое пособие подготовлено для магистрантов, обучающихся по направлению «Программная инженерия».

Раздел 1 методология и программная инженерия

    1. Понятие методологии

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

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

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

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

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

    1. Предпосылки появления дисциплины – программная инженерия

Предпосылки для внедрения принципов проект-менеджмента в процесс разработки программного обеспечения зародились в конце 60-х — начале 70-х годов XX века, когда произошел первый кризис программирования. Умение строить новые программы отставало от требований к новым программам. Другая тенденция развития зародилась внутри самой отрасли и была основана на усилении взгляда на разработку программ, как на более, чем простое «кодирование». Вместо этого программное обеспечение рассматривается как имеющее полный жизненный цикл, начинающийся с появления концепции и проходящий стадии проектирования, разработки, ввода в действие, сопровождения и развития. Смещение фокуса внимания с кодирования породило разработку методологий и развитого инструментария, вооруживших команды инженеров, занятых на всех этапах жизненного цикла программного обеспечения.

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

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

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

В 1972 году IEEE (Computer Society of the Institute for Electrical and Electronic Engineers) выпустил первый номер Transactions on Software Engineering – Труды по Программной Инженерии. Первый целостный взгляд на эту область профессиональной деятельности появился в 1979 году, когда Компьютерное Общество IEEE подготовило стандарт IEEE Std 730 по качеству программного обеспечения. В 1986 году IEEE выпустило IEEE Std 1002 «Taxonomy of Software Engineering Standards».

В 1990 году началось планирование всеобъемлющих международных стандартов, в основу которых легли концепции и взгляды стандарта IEEE Std 1074 и результатов работы образованной в 1987 году совместной комиссии ISO/IEC JTC 1 (International Organization for Standardization/ International Electrotechnical Commission Joint Technical Committee 1). В 1995 году группа этой комиссии выпустила первую версию международного стандарта ISO/IEC 12207 «Software Lifecycle Processes». Этот стандарт стал первым опытом создания единого общего взгляда на программную инженерию. Соответствующий национальный стандарт России – ГОСТ Р ИСО/МЭК 12207-99 [ГОСТ 12207, 1999] содержит полный аутентичный перевод текста международного стандарта ISO/IEC 12207-95 (1995 года).

В свою очередь, IEEE и ACM (Association of Computer Machinery), начав совместные работы еще в 1993 году с кодекса этики и профессиональной практики в данной области, к 2004 году сформулировали два ключевых описания того, что сегодня называется основами программной инженерии – Software Engineering:

  1. Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version – Руководство к Своду Знаний по Программной Инженерии (SWEBOK);

  2. Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering  – Учебный План для Преподавания Программной Инженерии в ВУЗах.

Оба стандарта стали результатом консенсуса ведущих представителей индустрии и признанных авторитетов в области программной инженерии – по аналогии с тем, как был создан PMI PMBOK. Таким образом произошел переход к современному состоянию Software Engineering как дисциплины.

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

    1. Составные части программной инженерии

Составные части программной инженерии иногда описывают в виде «четырёх П»: Продукт, Персонал, Процесс, Проект.

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

б) Персонал (Заинтересованные лица) — лица, на которых оказывают влияние характеристики программного продукта и процесса разработки: Пользователи, Заказчики, Инвесторы, Разработчики. Для успешной разработки программного продукта необходимо управлять «человеческим фактором»: требованиями и ожиданиями заинтересованных лиц, навыками разработчиков, в том числе командной работой.

в) Процесс разработки программного продукта включает в себя:

  • виды работ: сбор и анализ требований, проектирование, «конструирование» (написание программного кода), тестирование;

  • фазы (этапы) разработки;

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

г) Проект — совокупность действий, ограниченная во времени и направленная на получение уникального результата. Разработка программного продукта является частным случаем проектной деятельности. Тройное ограничение проекта («железный треугольник») продемонстрирован на рис. 1.

Рис. 1. Тройное ограничение проекта