Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
МЕТОДОЛОГИЯ И ПРОГРАММНАЯ ИНЖЕНЕРИЯ1.1 Понятие методологии
Во всяком виде деятельности можно выделить цель, определяющую смысл деятельности, а также содержание и способ. При этом, не меняя цели, можно выбирать различное содержание и способ деятельности. Различные содержание и способ деятельности обычно имеют разную эффективность в достижении цели. В общем случае методологией называется систематическое описание способа выполнения некоторой деятельности. Так как содержание деятельности, с одной стороны, целесообразно, а с другой стороны, влияет на способ деятельности, то в систему методологии также попадает и содержание, и цель деятельности, но в качестве вспомогательных элементов. При смене содержания деятельности необходимо пересмотреть способ этой деятельности. При смене цели деятельности появляется новый вид деятельности, поэтому становится необходимым пересмотреть как содержание, так и способ. В обоих случаях пересмотр методологии обязателен. В зависимости от уровней решаемых задач внутри некоторого вида деятельности методологии также разделяются на уровни. Обычно различают общие методологии, описывающие способы решения глобальных задач, и специальные методологии, описывающие способы решения конкретных прикладных задач. Общие методологии представляют собой некоторые теории и философские концепции, а всё более и более специальные методологии обретают формы схем деятельности, конкретных методик и приёмов, выражаемых в планах, стандартах, методических руководствах и инструкциях. Специальные методологии в рамках некоторого вида деятельности не должны противоречить общим методологиям. Программирование, являясь одним из видов деятельности, также имеет цель, содержание и способ. Цель отвечает на вопрос «зачем разрабатывать программное обеспечение?», содержание — «какое программное обеспечение разрабатывать?», способ — «как разрабатывать программное обеспечение?» Соответственно, существуют общие и специальные методологии разработки программного обеспечения. Общие методологии разработки программного обеспечения являются специальными для общеинженерных методологий, и содержат интерпретацию деятельности инженера применительно к деятельности инженера-программиста. Специальные методологии базируются на парадигмах программирования и теориях организации производства применительно к разработке программного обеспечения. При решении задачи разработки программного обеспечения выделяются цель задачи, содержание задачи и метод решения. Эти части задачи, которые можно назвать уровнями решения, соответствуют наборуинформационных моделей, при помощи которых описывается решение, точнее, формальная система представления о решении задачи. Распространены следующие названия информационных моделей трёх указанных уровней: концептуальная, логическая и физическая. Формальность этой системы обусловлена необходимостью, в конце концов, свести решение задачи до уровня машинных языков, формальных по своей природе. Представление решения задачи разработки программного обеспечения в виде набора информационных моделей разного уровня, а также определяемый этим представлением логический порядок разработки является методологией разработки программного обеспечения — это есть способ программирования как вида деятельности, при этом содержанием является представление программиста о прикладной проблеме и последовательный перевод описания этой проблемы с естественного на машинный язык, а целью — решение прикладной проблемы при помощи вычислительной техники. Под прикладной проблемой здесь понимается не только создание прикладного программного обеспечения для конкретной вычислительной среды, но и создание системного программного обеспечения — создание вычислительной среды для функционирования прикладного программного обеспечения с конкретными характеристиками.
1.2 Предпосылки появления дисциплины – программная инженерия
Предпосылки для внедрения принципов проект-менеджмента в процесс разработки программного обеспечения зародились в конце 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.3 Составные части программной инженерии
Составные части программной инженерии иногда описывают в виде «четырёх П»: Продукт, Персонал, Процесс, Проект. а) Программный продукт должен быть достаточно универсальным (в рамках решаемых им задач), устойчиво работать в различных ситуациях (в том числе при некорректной работе пользователя), иметь достаточно полную документацию. В первом приближении, целью программной инженерии можно считать изучение и применение методов, позволяющих разработать качественный программный продукт. б) Персонал (Заинтересованные лица) — лица, на которых оказывают влияние характеристики программного продукта и процесса разработки: Пользователи, Заказчики, Инвесторы, Разработчики. Для успешной разработки программного продукта необходимо управлять «человеческим фактором»: требованиями и ожиданиями заинтересованных лиц, навыками разработчиков, в том числе командной работой. в) Процесс разработки программного продукта включает в себя: - виды работ: сбор и анализ требований, проектирование, «конструирование» (написание программного кода), тестирование; - фазы (этапы) разработки; - артефакты: спецификации требований, программный код, описания тестов, результаты тестовых прогонов и т.п. г) Проект — совокупность действий, ограниченная во времени и направленная на получение уникального результата. Разработка программного продукта является частным случаем проектной деятельности. Тройное ограничение проекта («железный треугольник») продемонстрирован на рис. 1.
Рис. 1. Тройное ограничение проекта
Контрольные вопросы 1. Что понимается под «кризисом программирования»? 2. Охарактеризуйте этап «стихийного» программирования. 3. Назовите составные части программной инженерии. 4. Дайте характеристику программного продукта? 5. Дайте характеристику персонала, как составной части программной инженерии? 6. Что включает в себя процесс разработки программного продукта? 7. Поясните понятие «железный треугольник» относительно проекта.
Дата добавления: 2014-09-26; просмотров: 625; Нарушение авторских прав Мы поможем в написании ваших работ! |