span.fullpost {display:none;} span.fullpost {display:inline;}

среда, 14 декабря 2011 г.

Всем, кто списывает задание по RSL

Пожалуйста, обратите внимание, что на этапе алгебраической спецификации   разрабатываемая программная система рассматривается как "черный ящик". Все попытки представить состояние такой системы (в виде множеств или списков) означают, что Вы пытаетесь угадать, что же это за состояние, как оно представлено там, "в черном ящике". А раз это черный ящик, то такие попытки неверны просто по определению.



Пример:
scheme library = сlass
type BookId, Book = BookId >< Bool,
 Book-infolist,
 ReaderId, Reader = ReaderId >< Book-infolist,
 Reader-infolist
value
 maxBookNumber: Nat
 emptyCatalog: Book-infolist
 emptyReaders: Reader-infolist
 addBook: Book >< Book-infolist -> Book-infolist
 deleteBook: Book >< Book-infolist -> Book-infolist
 numOfBooks: Book-infolist -> Nat
...
end

Мало того, что этот текст полон синтаксических ошибок (можете запустить RSL Type Checker и убедиться в этом), так он еще и изобилует попытками задать состояние черного ящика (в данном случае в виде двух inflist'ов). Т.е. правильно, как минимум, так:

scheme library = сlass
type Book,
 Books,
 Reader, 
 Readers
value
 maxBookNumber: Nat,
 emptyCatalog: Books,
 emptyReaders: Readers,
 addBook: Book >< Books -~-> Books,
 deleteBook: Book >< Books -~-> Books,
 numOfBooks: Books -> Nat
...
end

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

Комментариев нет:

Отправить комментарий