Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_Информатика-344 готовый.doc
Скачиваний:
36
Добавлен:
30.04.2019
Размер:
4.96 Mб
Скачать

§6.6. Технологии разработки программного обеспечения

Технология программирования – это совокупность средств и методов создания программного обеспечения. Применение эффективных технологий программирования подразумевает:

  • внедрение прогрессивных инструментальных средств разработки программ;

  • использование специальных методов и приемов организации работ по разработке программ;

  • стандартизированность, тиражируемость и воспроизведение методов программирования различными разработчиками.

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

Потребность контролировать процесс разработки программного обеспечения (ПО), прогнозировать и гарантировать стоимость разработки, сроки и качество результатов привела в конце 70-х гг. к необходимости перехода от кустарных к индустриальным способам создания программного обеспечения и появлению совокупности инженерных методов и средств создания ПО, объединенных общим названием «программная инженерия» (software engineering). Впервые этот термин был использован на конференции, проводившейся под эгидой NATO в 1968 г. Спустя семь лет, в 1975 г., в Вашингтоне была проведена первая международная конференция, посвященная программной инженерии.

В процессе становления и развития программной инженерии можно выделить два этапа:

  • 70 – 80-е гг. – систематизация и стандартизация процессов создания программного обеспечения (на основе структурного подхода);

  • 90-е гг. – переход к сборочному, индустриальному способу создания программного обеспечения (на основе объектно-ориентированного подхода).

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

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

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

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

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

Разработка модели архитектуры ПО промышленного характера на стадии, предшествующей ее реализации или обновлению, необходима в такой же мере, как и наличие проекта для строительства большого здания. Это утверждение справедливо как в случае разработки новой системы, так и при адаптации типовых продуктов класса корпоративных информационных систем (типа R/3 или BAAN), в составе которых также имеются собственные средства моделирования. Хорошие модели являются основой взаимодействия участников проекта и гарантируют корректность архитектуры. Поскольку сложность систем повышается, важно располагать эффективными методами моделирования. Однако следует помнить, что конечная цель разработки ПО – это не моделирование, а получение работающих приложений (программного кода).

В 70 – 80-х гг. при разработке программного обеспечения достаточно широко применялся структурный подход, базирующийся на строгих формализованных методах описания ПО и принимаемых технических решений. А в настоящее время такое же распространение получил объектно-ориентированный подход. Он основан на использовании наглядных графических моделей: используются схемы и диаграммы для описания архитектуры ПО в различных аспектах (как статической структуры, так и динамики поведения системы).

Наглядность и строгость средств структурного и объектно-ориентированного анализа позволяют разработчикам и будущим пользователям системы с самого начала неформально участвовать в ее создании, обсуждать и закреплять понимание основных технических решений. Однако широкое применение этих методов и следование их рекомендациям при разработке конкретных систем сдерживалось отсутствием адекватных инструментальных средств, поскольку при неавтоматизированной (ручной) разработке все их преимущества практически сведены к нулю. Действительно, вручную очень трудно разработать и графически представить строгие формальные спецификации системы, проверить их на полноту и непротиворечивость, а тем более изменить. Если все же удается создать строгую систему проектных документов, то ее переработка при появлении серьезных изменений практически неосуществима. Ручная разработка обычно порождала следующие проблемы: неадекватная спецификация требований, неспособность обнаруживать ошибки в проектных решениях, низкое качество документации, снижающее эксплуатационные характеристики, затяжной цикл и неудовлетворительные результаты тестирования.

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

Перечисленные проблемы породили потребность в программно-технологических средствах специального класса – CASE-средствах, реализующих CASE-технологию создания и сопровождения программного обеспечения информационных систем. Первоначально значение термина CASE (Computer Aided Software Engineering – программная инженерия с помощью компьютера) ограничивалось вопросами автоматизации разработки только лишь программного обеспечения, а в настоящее время оно приобрело новый смысл и охватывает процесс разработки сложных информационных систем в целом.

Таким образом, к концу 80-х гг. назрела необходимость в CASE-средствах и возникли предпосылки для их появления – было проведено много исследований в области программирования (разработка и внедрение языков высокого уровня, методов структурного и модульного программирования, языков проектирования и средств их поддержки, формальных и неформальных языков описания системных требований и спецификаций и т.д.). Кроме того, были обеспечены:

  • подготовка аналитиков и программистов, восприимчивых к концепциям структурного и модульного программирования;

  • широкое внедрение и постоянный рост производительности компьютеров, позволившие использовать эффективные графические средства и автоматизировать большинство этапов проектирования;

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

Большинство существующих CASE-средств основано на методах структурного или объектно-ориентированного проектирования, использующих спецификации в виде диаграмм или текстов для описания внешних требований, связей между моделями системы, динамики поведения системы и архитектуры программных средств. Можно выделить шесть наиболее распространенных CASE-средств различных производителей:

  • BPwin, ERwin (компания PLATINUM technology);

  • Paradigm Plus (компания PLATINUM technology);

  • Oracle Designer (компания Oracle);

  • Power Designer (компания Sybase);

  • Rational Rose (компания Rational Software);

  • Silverrun (компания Silverrun Technologies).

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

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

  • структурный (функционально-модульный) подход, в основу которого положен принцип функциональной декомпозиции, при которой структура системы описывается в терминах иерархии ее функций и передачи информации между отдельными функциональными элементами;

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