Технология разработки ПО / Роль технологии программирования
.docРоль технологии программирования
С появлением мощной вычислительной техники ПО достигло больших размеров и уровня сложности: для разработки больших систем неформальный подход, используемый в первые годы, оказался недостаточным. Десятки тысяч операторов исходных программ должны были исправляться, когда обнаруживались несоответствия, модифицироваться, когда требования пользователей изменялись, адаптироваться к новому оборудованию, когда оно покупалось. Эти виды деятельности все вместе были названы сопровождением программного обеспечения.
Возникло понятие «кризис программного обеспечения». Усилия, затрачиваемые на сопровождение программного обеспечения, начали поглощать ресурсы с тревожащей скоростью. Стоимость систем многократно возрастала по сравнению с расчетной, системы получались ненадежными и сложными в эксплуатации и сопровождении. Возникла необходимость в новых технологиях и методах управления сложными Проектами.
Менеджеры и многие технические разработчики стали задавать себе следующие вопросы.
-
Почему необходимо так много времени для завершения разработки программы?
-
Почему ее стоимость столь высока?
-
Почему мы не можем найти все ошибки до то, как мы передадим программу нашим заказчикам?
Такой интерес менеджеров и разработчиков не только к программному обеспечению, но и к способу, которым оно разрабатывается, приводит к принятию практики технологии программирования.
О перманентном «кризисе программного обеспечения» говорят уже почти 40 лет: велика доля неудачных программных проектов (приблизительно три из каждых четырех).
Таблица 1. Статистика по 30 000 проектам по разработке ПО в компаниях США
|
Год |
Проваленные |
Проблемные |
Успешные |
|
2000 |
23% |
49% |
28% |
|
1998 |
28% |
46% |
26% |
|
1995 |
40% |
33% |
27% |
|
1994 |
31% |
53% |
16% |
Успешные проекты – вовремя и в рамках бюджета был выполнен весь намеченный объем работ. Проблемные – не уложились в сроки, перерасходовали бюджет и/или сделали не все, что требовалось. Проваленные – не были доведены до конца.
Цель технологии программирования - обеспечить основу для разработки программных средств с высоким качеством.
В предыдущие два-три десятилетия боролись разные точки зрения на предмет технологии программирования:
- широкое использование инструментальных средств или
- набор методик и регламентирующих средств, позволяющих, в частности, на каждом этапе провести экспертизу, архивацию и измерение объема и качества проделанной работы (средства – стандарты, процедуры: соглашения о последовательности действий одного или нескольких разработчиков, направленных на достижение некоторой цели ТП, программные средства), или
- "наука и искусство" (в качестве средств – "методы жизненного цикла").
Сейчас технология программирования это – "инженерная дисциплина" с "инженерными подходами". В качестве ее средств рассматриваются "стандарты, методологии, технологические программные средства, процессы, методы организации, методы управления и системы обеспечения качества".
В литературе приводятся различные определения понятия технология программирования.
Согласно американскому стандарту ANSI/IEEE 610.12-1990:
"Технология программирования - это:
Применение систематического, упорядоченного, поддающегося количественному определению подхода для разработки программного обеспечения, работы с ним и его сопровождения, то есть, применение инженерного дела к программному обеспечению.
Программное обеспечение и его характеристики
В любом производстве используемая технология определяет лучшие достижимые показатели. В силу специфичности производства ПО технология его создания очень сильно завязана на человеческий ресурс и поэтому должна включать в себя организационный и управленческий аспекты.
Программное обеспечение – это:
-
компьютерные программы, которые при выполнении обеспечивают желаемые функции и характеристики;
-
структуры данных, которые дают возможность программам адекватно манипулировать информацией;
-
документы, которые описывают работу и использование программ.
Поскольку ПО скорее логический, чем физический элемент системы, определенные его характеристики существенно отличаются от аналогичных характеристик аппаратуры ЭВМ и других производимых продуктов.
1. ПО проектируется или конструируется, оно не производится классическом понимании.
2. В области пpогpаммного обеспечения послепpоизводственные пpоблемы pешаются значительно более пpосто.
3. ПС при своем использовании (эксплуатации) не изнашивается, но требует сопровождения.
4. Программный продукт нематериален. Менеджер Проекта, отслеживая, не отстает ли реализация проекта от графика, может полагаться только на документацию, которая фиксирует процесс разработки.
5. Большая часть ПО разрабатывается для конкретных заказчиков, а не собирается из готовых компонентов.
Отсюда следует, что проекты программного обеспечения не могут управляться так же, как если бы они были производственными проектами.
Процессы программного обеспечения
Подход, который принимается при создании конкретного программного средства, определяется процессами программного обеспечения.
Существует набор стандартов, определяющих различные элементы в структуре жизненных циклов ПО и программно-аппаратных систем. В качестве основных таких элементов выделяют технологические процессы — структурированные наборы деятельностей, решающих некоторую общую задачу или связанную совокупность задач, такие, как процесс сопровождения ПО, процесс обеспечения качества, процесс разработки документации и пр.
Под процессом программного обеспечения понимается множество взаимосвязанных видов деятельности разработчиков (этапов, шагов процесса), преобразующих получаемую ими входную информацию в выходную.
На каждом "шаге" разработки получают некоторую информацию (представленную в различной форме: передаваемую устно, в виде документов, программ и т.д.) от предыдущего шага и на ее основе создают выходную информацию (также представляемую в различной форме).
Каждый вид деятельности (activity) представляет собой достаточно однородный набор действий, выполняемых для решения одной задачи или группы тесно связанных задач в рамках разработки и поддержки эксплуатации ПО.
При этом создаются и перерабатываются различного рода артефакты — создаваемые человеком информационные сущности, документы в достаточно общем смысле, участвующие в качестве входных данных и получающиеся в качестве результатов различных деятельностей. Примерами артефактов являются: модель предметной области, описание требований, техническое задание, архитектура системы, проектная документация на систему в целом и на ее компоненты, прототипы системы и компонентов, собственно, исходный код, пользовательская документация, документация администратора системы, руководство по развертыванию, база пользовательских запросов, план проекта, и пр.
Каждый вид деятельности (анализ предметной области, сбор требований, проектирование, кодирование, тестирование, сопровождение и др.) представляется набором инженерных рабочих задач.
Задачи «атомарны» и состоят в выполнении некоторого действия.
Процессы, методы и средства технологии программирования
Технология программирования (сокр. ТП) реализуется «послойно»: основание для технологии программирования - это процессы (слой процессов). Следующий слой составляют методы (methods) технологии программирования. которые базируются на средствах (слой средств).
Методы ТП задают техническое описание того, "как сделать", чтобы построить программное средство или его компонент. Методы ТП представляют собой структурные решения, предназначенные для разработки высококачественного ПО эффективным способом. Они включают в себя правила моделирования, формализованную нотацию, другие наглядные приемы, а также способы управления процессом создания ПО. Такой метод как структурный анализ связан с определением основных функциональных компонентов. В 80-90-х годах добавились ОО методы (Буч и Рамбо), интегрированные сейчас в единый унифицированный метод, построенный на основе унифицированного языка моделирования UML.
Средства (tools) ТП обеспечивают автоматическую или полуавтоматическую поддержку процессов и методов. Средства - системы программирования, инструментальные программные средства (tools, toolkits, CASE-средства) и аппаратура (компьютеры, dev kits, сети, ...). Когда инструментальные программные средства объединены так, что информация, создаваемая одним из них, используется другим, то говорят, что образована так называемая автоматизированная или поддерживаемая ЭВМ технология программирования (computer-aided software engineering - CASE).
Современные методологии и реализующие их технологии поставляются в электронном виде вместе с CASE-средствами и включают библиотеки процессов, шаблонов, методов, моделей и других компонентов, предназначенных для построения ПО того класса систем, на который ориентирована методология.
