Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры к ГОСАМ (все билеты).doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

Вопрос 3. Автоматизация проектирования программного обеспечения на базе case-технологий. Принципы построения и т.Д.

CASE – computer aided software enginiring

Под автоматическим проектированием понимается проектирование и организация процесса разработки ПО с помощью компьютера. CASE в данном контексте это средства построения графической модели. Современные case средства позволяют выполнять след процессы: документрирование, внесения изменений, организация проекта. Средства: Функциональные от computer association: All Vision Sute: Model Process (BP Win), ER Data Modeler (ER Win), ER Win analizator. След средства по проектировании в объектной методологии: IBM Rational Rose. Так же есть автоматические средства тестирования SODA, ROBOT, также средства фиксрования изменений.

Архитектура разработки на основе case средств

Анализ - > проектирования –> разраб архитектуры = диаграммы

Билет 9.

Вопрос 1. Множественные выражения Программирование второго порядка Недетерминированное программирование

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

Теоретическая часть

Предикат bagof(Object,Goal,List) порождает список List всех объектов Object, отвечающих цели Goal. Очевидно, что Goal и Object должны содержать общие переменные.

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

student(ivan,17,87). student(petr, 18,77). student(frol, 17,87).

Следующий запрос сгенерирует список имен студентов, имеющих возраст 17 лет. ?- bagof(Name,student(Name,17,_),Names).

Name = H46 Names = [ivan,frol]; No

Если одно и то же значение Object будет найдено многократно, то все они будут занесены в List. ?- bagof(Name,student(Name,17,_),Names). Name = Н80 Names = [ivan,frol,frol]; No То есть результат как бы сохраняется.

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

?- bagof(Name,student(Name, Voz,_),Names).

Name = H23 Voz=17 Names = [ivan,frol]; Name = H23 Voz=18 Names = [petr], No

Предикат findall(Object,Goal,List) отличается от bagof тем, что он не обращает внимание на различные конкретизации тех переменных из Goal, которых нет в Object.

?-findall(Name,student(Name,Voz,Ves),Names).

Name = H23 Voz = H25 Ves = H26 Names = [ivan,petr,vasia,frol,frol,dusia,abram]; No

В случае отсутствия решения предикат все равно будет успешен со значением [].