Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
46
Добавлен:
04.01.2020
Размер:
113.58 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра экономической информатики

Отчет по лабораторной работе №1

по дисциплине

«Интеллектуальные информационные системы»

Выполнили:

Колотова А.А., Суслина Д.В.

Группа:

ФБИ-11

Проверил:

Бакаев М.А.

Новосибирск 2015

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

Задание:

  1. Модифицировать прототип ИИС на CLIPS, реализованный в ходе предыдущей лабораторной работы, с выделением интерфейса системы и «ядра».

  2. Вручную (без использования компонента, являющегося интерфейсом системы) создать в текстовом редакторе не менее 3-х файлов с входной информацией для «ядра» ИИС. Добиться их корректной работы.

Входная информация от пользователя: ответы пользователя на вопросы (да/нет). Выходная информация – уровень качества ПО.

Примеры работы

После запуска файла interface.clp пользователь ввел данные (рис 1).

Рисунок 1 – Диалог с пользователем

Сформировался файл facts.clp, содержащий факты:

(Programma horosho dokumentirovana)

(Programma neracional'no ispol'zuet resusry)

(Programma yavlyaetsa mobil'noy)

(Programma ne vypolnyaet nabor funktsiy, opredelennyh vo vneshnem opisanii)

(Programma udovletvoraet potrebnostyam)

(Programmu prosto izmenit')

(V programme voznikaut otkazy i sboi)

(programma vedet sebya ne tak, kak ojidaetsa)

(Vosstanovleniya dannyh net)

(Interfeis programmy ponyaten)

(Slojno ispravit' oshibki i defekty)

(Programma prosta v osvoenii)

После запуска файла core.clp сформировался файл result.clp, содержащий факт с результатом:

(Program's level of quality is [MediumLevelOfQuality])

Файлы с входной информацией, введенной вручную, и полученный результат представлены в таблице 1.

Таблица 1 – Примеры работы программы

Входные файлы

Выходные файлы

(Programma horosho dokumentirovana)

(Programma neracional'no ispol'zuet resusry)

(Programma yavlyaetsa mobil'noy)

(Programma ne vypolnyaet nabor funktsiy, opredelennyh vo vneshnem opisanii)

(Programma udovletvoraet potrebnostyam)

(Programmu prosto izmenit')

(V programme voznikaut otkazy i sboi)

(programma vedet sebya ne tak, kak ojidaetsa)

(Vosstanovleniya dannyh net)

(Interfeis programmy ponyaten)

(Slojno ispravit' oshibki i defekty)

(Programma prosta v osvoenii)

(Program's level of quality is [MediumLevelOfQuality])

(Programma horosho dokumentirovana)

(Programma racional'no ispol'zuet resusry)

(Programma yavlyaetsa mobil'noy)

(Programma vypolnyaet nabor funktsiy, opredelennyh vo vneshnem opisanii)

(Programma udovletvoraet potrebnostyam)

(Programmu slojno izmenit')

(V programme voznikaut otkazy i sboi)

(programma vsegda vedet sebya tak, kak ojidaetsa)

(Est' vosstanovlenie dannyh)

(Interfeis programmy ponyaten)

(Prosto ispravit' oshibki i defekty)

(Programma prosta v osvoenii)

(Program's level of quality is [HighLevelOfQuality])

(Programma ploho dokumentirovana)

(Programma neracional'no ispol'zuet resusry)

(Programma ne yavlyaetsa mobil'noy)

(Programma ne vypolnyaet nabor funktsiy, opredelennyh vo vneshnem opisanii)

(Programma ne udovletvoraet potrebnostyam)

(Programmu prosto izmenit')

(V programme ne voznikaut otkazy i sboi)

(programma vedet sebya ne tak, kak ojidaetsa)

(Vosstanovleniya dannyh net)

(Interfeis programmy neponyaten)

(Slojno ispravit' oshibki i defekty)

(programma slojna v osvoenii)

(Program's level of quality is [LowLevelOfQuality])

Файл interface.clp:

(deffunction ask (?question $?allowed)

(printout t ?question ?allowed)

(bind ?answer (read))

?answer

)

(deffunction ask-allowed (?question $?allowed)

(bind ?answer (ask ?question))

(while (not (member ?answer $?allowed) )

do

(printout t "Reenter, please" crlf)

(bind ?answer (ask ?question))

)

?answer

)

(deffunction ask-y-n (?question)

(bind ?response (ask-allowed ?question y n))

(eq ?response y)

)

(defrule Titul

(initial-fact)

=>

(printout t crlf)

(printout t "Intellektual'naya informacionnaya sistema" crlf)

(printout t "***Ocenka kachestva programmnogo obespecheniya***" crlf)

(printout t crlf)

(printout t "Zdravstvujte, pol'zovatel'!" crlf)

(if(ask-y-n "Vy hotite provesty ocenku kachestva vashey programmy?")

then

(printout t crlf)

(assert(Start))

else

(printout t crlf)

(printout t "Togda nichem ne mozhem Vam pomoch'! Vsego dobrogo!" crlf)

(printout t crlf)

)

)

(defrule St

(Start)

=>

(printout t "*Soprovojdaemost' programmy*" crlf)

(printout t crlf)

(if(ask-y-n "Programma horosho dokumentirovana? (y/n)")

then

(assert (Programma horosho dokumentirovana))

else

(assert (Programma ploho dokumentirovana)))

(assert (prodolzhit1))

)

(defrule q2

(prodolzhit1)

=>

(if(ask-y-n "Programma racional'no ispol'zuet resusry i vremya pri vypolnenii zadach? (y/n)")

then

(assert (Programma racional'no ispol'zuet resusry))

else

(assert (Programma neracional'no ispol'zuet resusry)))

(assert (prodolzhit2))

)

(defrule q3

(prodolzhit2)

=>

(if(ask-y-n "Programma yavlyaetsa mobil'noy pri rabote na drugih platformah i operacionnyh sistemah? (y/n)")

then

(assert (Programma yavlyaetsa mobil'noy))

else

(assert (Programma ne yavlyaetsa mobil'noy)))

(assert (prodolzhit3))

)

(defrule Poln

(prodolzhit3)

=>

(printout t crlf)

(printout t "*Polnota programmy*" crlf)

(printout t crlf)

(if(ask-y-n "Vypolnyaet li programma nabor funktsiy, opredelennyh vo vneshnem opisanii? (y/n)")

then

(assert (Programma vypolnyaet nabor funktsiy, opredelennyh vo vneshnem opisanii))

else

(assert (Programma ne vypolnyaet nabor funktsiy, opredelennyh vo vneshnem opisanii)))

(assert (prodolzhit4))

)

(defrule q4

(prodolzhit4)

=>

(if(ask-y-n "Udovletvoraet li programma zadannym ili jelaemym potrebnostyam? (y/n)")

then

(assert (Programma udovletvoraet potrebnostyam))

else

(assert (Programma ne udovletvoraet potrebnostyam)))

(assert (prodolzhit5))

)

(defrule q5

(prodolzhit5)

=>

(if(ask-y-n "Slojno li izmenit' programmu dlya sootvetstviya novym trebovaniyam? (y/n)")

then

(assert (Programmu slojno izmenit'))

else

(assert (Programmu prosto izmenit')))

(assert (prodolzhit6))

)

(defrule Nad

(prodolzhit6)

=>

(printout t crlf)

(printout t "*Nadejnost' programmy*" crlf)

(printout t crlf)

(if(ask-y-n "Voznikaut li otkazy ili sboi v rabote programmy? (y/n)")

then

(assert (V programme voznikaut otkazy i sboi))

else

(assert (V programme ne voznikaut otkazy i sboi)))

(assert (prodolzhit7))

)

(defrule q6

(prodolzhit7)

=>

(if(ask-y-n "Vsegda li programma vedet sebya tak, kak ojidaetsa? (y/n)")

then

(assert (programma vsegda vedet sebya tak, kak ojidaetsa))

else

(assert (programma vedet sebya ne tak, kak ojidaetsa)))

(assert (prodolzhit8))

)

(defrule q7

(prodolzhit8)

=>

(if(ask-y-n "Est' li vozmojnost' vosstanovlenia dannyh? (y/n)")

then

(assert (Est' vosstanovlenie dannyh))

else

(assert (Vosstanovleniya dannyh net)))

(assert (prodolzhit9))

)

(defrule Pon

(prodolzhit9)

=>

(printout t crlf)

(printout t "*Ponyantost' programmy*" crlf)

(printout t crlf)

(if(ask-y-n "Yavlyaetsa li interfeis programmy ponatnym? (y/n)")

then

(assert (Interfeis programmy ponyaten))

else

(assert (Interfeis programmy neponyaten)))

(assert (prodolzhit10))

)

(defrule q8

(prodolzhit10)

=>

(if(ask-y-n "Prosto li ispravit' oshibki i defekty? (y/n)")

then

(assert (Prosto ispravit' oshibki i defekty))

else

(assert (Slojno ispravit' oshibki i defekty)))

(assert (prodolzhit11))

)

(defrule q9

(prodolzhit11)

=>

(if(ask-y-n "Yavlyaetsa li programma prostoy v osvoenii? (y/n)")

then

(assert (Programma prosta v osvoenii))

else

(assert (programma slojna v osvoenii)))

(retract 0 1 3 5 7 9 11 13 15 17 19 21 23)

(save-facts "facts.clp"))

Файл core.clp:

(defglobal ?*x* = 0)

(defclass QualityLevel

(is-a USER)

(slot LevelMin (type INTEGER))

(slot LevelMax (type INTEGER)))

(definstances Levels

(LowLevelOfQuality of QualityLevel

(LevelMin 0)

(LevelMax 4))

(MediumLevelOfQuality of QualityLevel

(LevelMin 5)

(LevelMax 8))

(HighLevelOfQuality of QualityLevel

(LevelMin 9)

(LevelMax 12)))

(defmessage-handler QualityLevel result ()

(if (<= ?self:LevelMin ?*x* ?self:LevelMax)

then

(assert (Program's level of quality is ?self))))

(defrule Q0

(initial-fact)

=>

(load-facts "facts.clp"))

(defrule Q1

(Programma horosho dokumentirovana)

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Q2

(Programma racional'no ispol'zuet resusry)

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Q3

(Programma yavlyaetsa mobil'noy)

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Q4

(Programma vypolnyaet nabor funktsiy, opredelennyh vo vneshnem opisanii)

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Q5

(Programma udovletvoraet potrebnostyam)

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Q6

(Programmu prosto izmenit')

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Q7

(V programme ne voznikaut otkazy i sboi)

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Q8

(programma vsegda vedet sebya tak, kak ojidaetsa)

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Q9

(Est' vosstanovlenie dannyh)

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Q10

(Interfeis programmy ponyaten)

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Q11

(Prosto ispravit' oshibki i defekty)

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Q12

(Programma prosta v osvoenii)

=>

(bind ?*x* (+ ?*x* 1)))

(defrule Fin

(declare (salience -1))

=>

(retract *)

(send [LowLevelOfQuality] result)

(send [MediumLevelOfQuality] result)

(send [HighLevelOfQuality] result)

(save-facts "result.clp")

)

Соседние файлы в папке Интеллектуальные информационные системы (ИИС)