Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные понятия процесса разработки программного обеспечения (ПО)




Технологии разработки программного обеспечения - цели, принципы, парадигмы

Программный инструментарий разработки систем, основанных на знаниях

 

□ Технологии разработки программного обеспечения - цели, принципы, парадигмы

□ Методологии создания и модели жизненного цикла интеллектуальных систем

□ Языки программирования для ИИ и языки представления знаний

□ Инструментальные пакеты для ИИ

□ Workbench-системы

 

 

 

Как известно, технология (от греческого технос - мастерство, логос - слово, на­ука) - это наука о мастерстве.

 

Под технологией программирования понимается [Брукс, 1979] совокупность знаний о I способах и средствах достижения целей в области программного обеспечения ЭВМ, в I том числе и таких, которые ранее никем не достигались.

 

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

Изменения являются постоянным фактором разработки ПО. Для того чтобы преодолеть их разрушающий эффект, в качестве целей технологии разработки ПО принимаются следующие четыре свойства программных систем [Ross et al., 1975]:

1. Модифицируемость. Необходимость модификации ПО обычно возникает по двум причинам: чтобы отразить в системе изменение требований или чтобы исправить ошибки, внесенные ранее в процессе разработки.

2. Эффективность системы подразумевает, что при функционировании опти­мальным образом используются имеющиеся в ее распоряжении ресурсы: вре­мя и память.

3. Надежность системы ПО означает, что она должна предотвращать концепту­альные ошибки, ошибки в проектировании и реализации, а также ошибки, воз­никающие при функционировании системы.

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

Цели технологии разработки ПО, рассмотренные выше, не могут лишь пассивно признаваться. Наоборот, по мере выполнения работ необходимо придерживаться определенного набора принципов, которые обеспечивают достижение этих це­лей. В качестве таких принципов обычно выделяют [Ross et al, 1975; Буч, 1992] абстракцию, сокрытие информации, модульность, локализацию, единообразие, полноту и подтверждаемость.

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

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

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

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

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

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

Принципы технологии разработки ПО не должны применяться случайно - не­обходимо выполнять структуризацию системы определенным образом и, что са­мое важное, поскольку происходит деление системы на модули, применять со­гласованные критерии декомпозиции. Можно выделить три основных подхода к разработке ПО, обеспечивающие такие критерии: нисходящее структурное про­ектирование [Йордан, 1979]; проектирование, структурированное по данным [Jackson, 1975], и объектно-ориентированное проектирование [Booch, 1986].

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

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

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

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

Такой подход получил название объектно-ориентированного [Booch, 1986]. Здесь учитывается важность трактовки объектов ПО как активных элементов, причем каждый объект наделен своим собственным набором допустимых операций. Лег­ко убедиться, что объектно-ориентированная парадигма поддерживает основные принципы технологии разработки ПО.




Поделиться с друзьями:


Дата добавления: 2015-07-02; Просмотров: 1250; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.