«САМАРСКИЙ ИНСТИТУТ ИНЖЕНЕРОВ ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА Кафедра телекоммуникаций на железнодорожном транспорте СОВРЕМЕННЫЕ ТЕХНОЛОГИИ РАЗРАБОТКИ И ТЕСТИРОВАНИЯ ...»
МИНИСТЕРСТВО ПУТЕЙ СООБЩЕНИЙ РФ
Департамент кадров и учебных заведений
САМАРСКИЙ ИНСТИТУТ ИНЖЕНЕРОВ ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА
Кафедра телекоммуникаций на железнодорожном транспорте
СОВРЕМЕННЫЕ ТЕХНОЛОГИИ РАЗРАБОТКИ И ТЕСТИРОВАНИЯ
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (ПО)
(часть 1)
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ СРЕДСТВАМИ
ТЕХНОЛОГИИ ГРАФОСИМВОЛИЧЕСКОГО ПРОГРАММИРОВАНИЯ
Методические указания для студентов специальности Информационые системы (железнодорожный транспорт) 071900 Составитель: А.Н. Коварцев САМАРА УДК 681.3.06.Современные технологии разработки и тестирования программного обеспечения (ПО).
(часть 1): Разработка ПО средствами технологии графосимволического программирования: Методические указания для студентов специальности ИС. - Самара:
СамИИТ, 2000. - 50с.
Утверждена на заседании кафедры телекоммуникаций на железнодорожном транспорте Печатается по решению редакционно-издательского совета института.
Рассматривается проблемы автоматизации разработки программных средств (ПС) с использованием технологии графосимволического программирования (ГСП), обеспечивающей визуальный стиль программирования в процессе создания или модификации ПО. Технология ГСП позволяет исключить большинство видов дефектов и ошибок при создании или модификации ПС и их компонент, и поддерживает такие этапы жизненного цикла ПС, как проектирование, кодирование, отладку, документирование и сопровождение.
Предназначено для студентов специальности “Информационные системы” 0719.
Составитель: Александр Николаевич Коварцев Рецензент: д.т.н., профессор Сергей Антонович Прохоров (заведующий кафедрой информационных систем и технологий СГАУ)
СОДЕРЖАНИЕ
1. СОВРЕМЕННЫЕ ТЕХНОЛОГИИ РАЗРАБОТКИ И ТЕСТИРОВАНИЯ ПО
2. Основные понятия технологии графосимволического программирования2.1. Концептуальная модель технологии
2.2. Базовые модули и типы данных
2.3. Базовые модули. Базисы
2.4. Типы базовых модулей
2.5. Объекты технологии ГСП
2.5.1. Акторы
2.5.2. Предикаты
2.5.3. Агрегаты
2.5.4. Объекты типа “in line”
2.6 Модель межмодульного информационного интерфейса технологии ГСП
2.6.1. Информационный интерфейс базовых модулей
2.6.2. Информационный интерфейс агрегатов
3.Конструирование объектов технологии ГСП
3.1. Конструирование объектов инкапсуляцией агрегатов............. 3.2. Классификация данных объектов ГСП
3.2.1. Проблема классификации данных агрегатов
3.2.2. Декомпозиция агрегатов. Алгебра трехзначной логики выделения классификационных признаков................ 3.3. Сжатие числа операций процедуры классификации данных................. 3.4. Алгоритм классификации данных на основе частичного перебора маршрутов ориентированного графа
3.5. Эффективность алгоритма АЧП
СПИСОК ЛИТЕРАТУРЫ
1. СОВРЕМЕННЫЕ ТЕХНОЛОГИИ РАЗРАБОТКИ И ТЕСТИРОВАНИЯ ПО
Широкое внедрение средств вычислительной техники в различные сферы жизни и деятельности человека стимулировало развитие автоматизированных методов и инструментальных средств, применяемых для создания прикладного программного обеспечения (ПО). Производство современного ПО происходит на фоне высоких требований, предъявляемых к качеству создаваемых программ и значительной сложности выполняемых ими функций. “Идеальной” технологией программирования представляется такая технология, которая по некоторому достаточно неформальному описанию объекта программирования автоматически генерирует текст синтаксически и семантически корректной программы.Разработка любого программного средства может быть представлена как процесс, состоящий из ряда последовательных преобразований одного описания решаемой задачи в другое, начиная от постановки задачи и заканчивая программой, реализованной в кодах конкретной ЭВМ.
Все время существования программного средства от зарождения идеи по его созданию, до завершения его эксплуатации, обычно определяют как жизненный цикл.
Укрупнено можно выделить пять наиболее важных этапов жизненного цикла программного средства (ЖЦ ПС): спецификацию (10%), проектирование (10%), кодирование (10%), отладку (20%) и сопровождение (50%). В скобках записаны относительные затраты ресурсов на создание ПС.
По затратам времени, человеческих и машинных ресурсов все эти этапы не одинаковы. Наиболее “дорогими”, в этом смысле, являются этапы, связанные с поиском ошибок в программах. Затраты ресурсов на них могут быть равными, или даже превосходить совокупные затраты ресурсов на остальных этапах. В стандарте DOD-STD-2167-A около 30% требований, документов и соответствующих им процессов непосредственно связаны с отладкой, тестированием и испытаниями программ. Данный стандарт является обязательным при выполнении заказов Министерства обороны США [28].
Эти затраты быстро увеличиваются при возрастании требований к качеству ПС. На долю устранения ошибок и сопровождение ПС приходится почти 75% всех затрат.
Следует учитывать, что значительная часть работ, выполняемых на этапе сопровождения, связана с поиском и устранением оставшихся в программе ошибок.
Ретроспектива развития методов и средств автоматизации программирования в этом отношении говорит сама за себя. Первоначально все усилия были сосредоточены на этапе программирования, что позволило решить ряд проблем, связанных с ограничениями функциональных возможностей существующих к тому моменту языков программирования.
На этом этапе следует выделить развитие специализированных языков программирования, таких как КОБОЛ, СИМУЛА, СИМСКРИПТ [19], АСПИД [30], АНАЛИТИК и т.д.
Специализированные или проблемно-ориентированные языки [34], построенные для решения конкретных задач, несомненно, упрощают процесс разработки программных продуктов в выбранной предметной области, но в то же время для новых языков характерна проблема преемственности, а для специализированных ограниченности области применения.
Постепенное усложнение решаемых задач, а вместе с ними кодов и объемов разрабатываемых программных средств, заставило критически переосмыслить сложившийся к концу 60-х годов стиль и технику программирования. В связи с чем, начиная с 70-х годов усилиями рабочей группы Технического комитета по программированию Международной федерации по обработке информации (ИФИП), состоящей из таких известных ученых как Н. Вирт, Д. Грис, Э. Дейкстра, У. Дал, Д.
Парнас, Ч. Хоар (руководимой профессором В. Турским), формируются основы методологии и теории программирования.
В среде программистов утверждается принцип структурного программирования, как наиболее производительного и привлекательного стиля программирования [13, 20].
Развитие концепции структуризации привело к осознанию необходимости структуризации данных [1], что и определило появление в языках программирования механизмов абстрагирования типов данных (Клу [37], Модула [22] и д.р.). Последнее легло в основу техники модульного программирования, содержательной основой которой является интерпретация типа как алгебры над множеством объектов и множеством операций, а модуля как программного эквивалента абстрактного типа.
В модульном программировании акцент делается на разбиение программы на модули таким образом, чтобы данные (обрабатываемые модулем) были спрятаны в нем.
Эта доктрина, известная как “принцип ограничения доступа к данным”, в значительной степени повысила модифицируемость и эффективность порождаемого кода.
Эволюция техники модульного программирования привела к появлению объектноориентированного стиля программирования [36, 39], который во многом унифицировал процесс создания ПС. К достоинствам этого метода относится то, что в нем более полно реализуется технология структурного программирования, облегчается процесс создания сложных иерархических систем, появляется удобная возможность создания пользовательских библиотек объектов в различных областях применения.
Параллельно с развитием процедурного стиля программирования в начале 70-х годов появляются непроцедурные языки логического программирования и программирования искусственного интеллекта (LISP [22], PROLOG [6], РЕФАЛ, ПРИЗ [25, 31]). Программа в таких языках представляет собой совокупность правил (определяющих отношения между объектами) и цели (запроса). Процесс выполнения программы трактуется как процесс установления общезначимости логической формулы по правилам, установленным семантикой того или иного языка. Результат вычислений является побочным продуктом процедуры вывода. Такой метод являет собой полную противоположность программирования на каком-либо из процедурных языков. Сегодня PROLOG - язык, предназначенный для программирования приложений, использующих средства и методы искусственного интеллекта, создания экспертных систем и представления знаний.
В 80-х годах исследование причин неудач при реализации больших программных проектов [38] показало, что число ошибок в спецификациях на программы значительно превышает их количество в программных кодах. Так около 56% ошибок допускаются на этапе формулировки требований к программе. При этом расходуется в среднем 82% всех усилий, затраченных коллективом на устранение ошибок проекта. В то время как на этапе кодирования программ допускается соответственно 7% ошибок и тратится 1% усилий на их ликвидацию [38]. В это время формулируется тезис о том, что целью программирования является не порождение программы как таковой, а создание технологических условий, когда разрабатываемое программное обеспечение легко адаптируется к новым обстоятельствам и новому пониманию решаемой задачи [10, 27]. Р. Хемминг так формулирует этот тезис: “Здравая вычислительная практика требует постоянного исследования изучаемой задачи не только перед организацией вычислений, но также в процессе его развития и, особенно, на той стадии, когда полученные числа переводятся обратно и истолковываются на языке первоначальной задачи” [32].
Перечисленные выше причины привели в середине 80-х годов к осознанию необходимости реализации интегрированного окружения поддержки всего жизненного цикла ПС и, в первую очередь, этапа проектирования ПС, что обусловило появление инструментальных средств автоматизации проектирования программных систем (CASE-технологий) [35, 40, 41].
Первоначально CASE-средства были ориентированы на решение задач автоматизированного сбора информации по предметной области и проектированию будущего ПС, что позволяет экономить время при создании ПС за счет более тщательного анализа исходных требований и лучшего начального планирования программы. Впоследствии в CASE-средствах 2-го поколения полностью или частично были автоматизированы такие важные составляющие жизненного цикла ПС как моделирование информации предметной области; программирование; тестирование, отладка ПС и измерение качества; поддержка документирования; сопровождение.
Применение CASE-инструментов позволяет в значительной степени снизить трудоемкость создания ПС, а в отдельных случаях заменить программирование автоматическим синтезом программ.