Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral


Формулировка цели создания ИС, в соответствии с темой

Тема: Определение уровня качества программного обеспечения (ПО) с позиции тестировщика.

Цель: С помощью программного приложения CLIPS реализовать прототип ИС, содержащий систему тестовых вопросов, направленных на оценку качества программного обеспечения с позиции тестировщика.

Описание входной и выходной информации для ИС и уровней значений входной информации.

Факторы качества ПО:

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

Полнота: Все необходимые части программы должны быть представлены и полностью реализованы.

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

Портируемость: Лёгкость в адаптации программы к другому окружению: другой архитектуре, платформе, операционной системе или её версии.

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

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

Тестируемость: Позволяет ли программа выполнить проверку приёмочных характеристик, поддерживается ли возможность измерения производительности.

Удобство использования: Простота и удобство использования программы. Это требование относится прежде всего к интерфейсу пользователя.

НЕ нашли? Не то? Что вы ищете?

Надёжность: Отсутствие отказов и сбоев в работе программ, а также простота исправления дефектов и ошибок.

Структурированность

Эффективность: Насколько рационально программа относится к ресурсам (память, процессор) при выполнении своих задач.

Безопасность

       

Рисунок 1 – ИС для определения уровня качества ПО с позиции пользователя

Перечень тестовых вопросов:

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

Листинг программы:

(clear)

(defglobal?*x* = 0)

(defclass QualityLevel

(is-a USER)

(slot LevelMin (type INTEGER))

(slot LevelMax (type INTEGER)))

(definstances Levels

(LowLevelOfQuality of QualityLevel

(LevelMin 1)

(LevelMax 12))

(MediumLevelOfQuality of QualityLevel

(LevelMin 13)

(LevelMax 24))

(HighLevelOfQuality of QualityLevel

(LevelMin 25)

(LevelMax 36)))

------------------------------------------------------------------------------------

(defmessage-handler QualityLevel result ()

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

then

(printout t crlf "Program's level of quality is" ?self crlf)))

------------------------------------------------------------------------------------

(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)

)

----------------------------------------------------------------------------------

(deffunction ask-1-2-3 (?question)

(bind? response (ask-allowed? question 1 2 3))

(eq? response 1)

)

----------------------------------------------------------------------------------

(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(q1))

else

(printout  t  crlf)

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

(printout  t  crlf)

)

)

----------------------------------------------------------------------------------

(defrule q1

(q1)

=>

(printout  t  "Dlya opredeleniya rezul'tata vam neobhodimo otvetit' na vse voprosi!" crlf)

(printout  t  crlf)

(printout  t  "Naskolko ponyatnim yavlyaetsya PO iz programmi i dokumentacii?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Sovsem ne ponyatno,2-Chastichno ponyatno,3-Ponyatno polnost'u"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (q2))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (q2))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (q2))))))

)

----------------------------------------------------------------------------------

(defrule q2

(q2)

=>

(printout  t  "Naskolko polno chasti PO predstavleni i realizovani?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Sovsem ne polno,2-Chastichno polno,3-Polnost'u"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (q3))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (q3))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (q3)))))

)

----------------------------------------------------------------------------------

(defrule q3

(q3)

=>

(printout  t  "Naskolko kratko realizovano PO (otsutstvie povtorov, lishnei informacii) ?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Mnogo povtorov i lishnego,2-Srednee kolichestvo povtorov i lishnego,3-Povtorov i lishnego ne nabludaetsya"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (q4))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (q4))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (q4)))))

)

----------------------------------------------------------------------------------

(defrule q4

(q4)

=>

(printout  t  "Naskolko horosho PO adaptiruetsya k drugoi arhitekture, platforme, OS?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Sovsem ne adaptiruetsya,2-Chastichno adaptiruetsya,3-Adaptiruetsya Polnost'u"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (q5))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (q5))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (q5)))))

)

----------------------------------------------------------------------------------

(defrule q5

(q5)

=>

(printout  t  "Naskolko soglasovannim yavlyaetsya PO (ispol'zuutsya odni i te ze soglasheniya, formati, oboznacheniya)?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Sovsem ne soglasovanno,2-Chastichno soglasovanno,3-Polnost'u soglasovanno"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (q6))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (q6))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (q6)))))

)

----------------------------------------------------------------------------------

(defrule q6

(q6)

=>

(printout  t  "Naskolko slozhno izmenit' PO dlya udovletvoreniya novih potrebnostei?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Ochen' slozhno,2-Slozhno,3-Sovsem ne slozhno"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (q7))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (q7))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (q7)))))

)

----------------------------------------------------------------------------------

(defrule q7

(q7)

=>

(printout  t  "Naskolko horosho PO pozvolyaet vipolnit' proverku priemochnih harakteristik?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Ploho,2-Horosho,3-Otlichno"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (q8))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (q8))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (q8)))))

)

----------------------------------------------------------------------------------

(defrule q8

(q8)

=>

(printout  t  "Naskolko prosto i udobno ispol'zovat' PO?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Ochen' slozhno,2-Slozhno,3-Slozhnostei ne vozniklo"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (q9))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (q9))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (q9)))))

)

----------------------------------------------------------------------------------

(defrule q9

(q9)

=>

(printout  t  "Ozenite nadezhnost' PO na predmet otsutstviya otkazov i sboev, a takzhe prostotu ustraneniya defektov?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Mnogo otkazov,2-Otkazi est' no ne kritichnie,3-Otkazov net"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (q10))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (q10))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (q10)))))

)

----------------------------------------------------------------------------------

(defrule q10

(q10)

=>

(printout  t  "Naskolko strukturirovano PO?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Sovsem ne strukturirovano,2-Chastichno strukturirovano,3-Horosho strukturirovano"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (q11))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (q11))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (q11)))))

)

----------------------------------------------------------------------------------

(defrule q11

(q11)

=>

(printout  t  "Naskolko racional'no PO otnositsya k resursam pri vipolnenii svoih zadach?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Sovsem ne racional'no,2-Chastichno racional'no,3-Polnost'u racional'no"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (q12))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (q12))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (q12)))))

)

----------------------------------------------------------------------------------

(defrule q12

(q12)

=>

(printout  t  "Naskolko bezopasnim yavlyaetsya PO?" crlf)

(printout  t  crlf)

(bind? c (ask "1-Sovsem ne bezopasno,2-Chastichno bezopasno,3-Polnost'u bezopasno"))

(printout  t  crlf)

       (if (eq 1 ?c) then

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

  (assert (dal'she))

else

       (if (eq 2 ?c)

then

  (bind?*x* (+ ?*x* 2))

  (assert (dal'she))

else (if (eq 3 ?c) then

  (bind?*x* (+ ?*x* 3))

  (assert (dal'she)))))

)

----------------------------------------------------------------------------------

(defrule res

(res)

=>

(printout  t  crlf)

(if(ask-y-n "Hotite podvesti obshiy itog? (y/n)")

then

  (send [LowLevelOfQuality] result)

  (send [MediumLevelOfQuality] result)

  (send [HighLevelOfQuality] result)

  (printout  t "Do svidan'ya! Spasibo za ispol'zovanie systemy!" crlf)

else

(printout  t "Do svidan'ya! Spasibo za ispol'zovanie systemy!" crlf))

)

Примеры работы ИИС: