Современные технологии разработки и тестирования программного обеспечения (ПО). Часть 1. Коварцев А.Н. - 5 стр.

UptoLike

Составители: 

Постепенное усложнение решаемых задач, а вместе с ними кодов и объемов
разрабатываемых программных средств, заставило критически переосмыслить
сложившийся к концу 60-х годов стиль и технику программирования. В связи с чем,
начиная с 70-х годов усилиями рабочей группы Технического комитета по
программированию Международной федерации по обработке информации (ИФИП),
состоящей из таких известных
ученых как Н. Вирт, Д. Грис, Э. Дейкстра, У. Дал, Д.
Парнас, Ч. Хоар (руководимой профессором В. Турским), формируются основы
методологии и теории программирования.
В среде программистов утверждается принцип структурного программирования,
как наиболее производительного и привлекательного стиля программирования [13, 20].
Развитие концепции структуризации привело к осознанию необходимости
структуризации данных [1], что и определило
появление в языках программирования
механизмов абстрагирования типов данных (Клу [37], Модула [13] и д.р.). Последнее
легло в основу техники модульного программирования, содержательной основой
которой является интерпретация типа как алгебры над множеством объектов и
множеством операций, а модуля как программного эквивалента абстрактного типа.
В модульном программировании акцент делается на разбиение программы на
модули таким образом, чтобы данные (обрабатываемые модулем) были спрятаны в нем.
Эта доктрина, известная какпринцип ограничения доступа к данным”, в значительной
степени повысила модифицируемость и эффективность порождаемого кода.
Эволюция техники модульного программирования привела к появлению объектно-
ориентированного стиля программирования [34, 36, 39], который во многом
унифицировал процесс создания ПС. К достоинствам этого метода
относится то, что в
нем более полно реализуется технология структурного программирования, облегчается
процесс создания сложных иерархических систем, появляется удобная возможность
создания пользовательских библиотек объектов в различных областях применения.
Параллельно с развитием процедурного стиля программирования в начале 70-х
годов появляются непроцедурные языки логического программирования и
программирования искусственного интеллекта (LISP [22], PROLOG [6], РЕФАЛ,
ПРИЗ [25, 31]) . Программа
в таких языках представляет собой совокупность правил
(определяющих отношения между объектами) и цели (запроса). Процесс выполнения
программы трактуется как процесс установления общезначимости логической формулы
по правилам, установленным семантикой того или иного языка. Результат вычислений
является побочным продуктом процедуры вывода. Такой метод являет собой полную
противоположность программирования на каком-либо из
процедурных языков. Сегодня
PROLOG - язык, предназначенный для программирования приложений, использующих
средства и методы искусственного интеллекта, создания экспертных систем и
представления знаний.
В 80-х годах исследование причин неудач при реализации больших программных
проектов [38] показало, что число ошибок в спецификациях на программы значительно
превышает их количество в программных кодах. Так около 56% ошибок допускаются
на этапе формулировки требований к программе при этом расходуется в среднем
82% всех усилий, затраченных коллективом на устранение ошибок проекта. В то
время как на этапе кодирования программ допускается соответственно 7% ошибок
и тратится 1% усилий на их ликвидацию [38]. В это время формулируется тезис о том,
что целью программирования является не порождение программы
как таковой, а
создание технологических условий, когда разрабатываемое программное обеспечение
легко адаптируется к новым обстоятельствам и новому пониманию решаемой задачи [10,