Принципы работы с требованиями к ПО. Леффингуэлл (2002) (1186169), страница 62
Текст из файла (страница 62)
Псевдокод Как и подразумевает его название, псевдокод — это квазиязык программирования; попытка соединить неформальный естественный язык со строгими синтаксическими и управляющими структурами языка программирования. В чистом виде псевдокод состоит из комбинации следующих элементов. ° Императивных предложений с одним глаголом и одним объектом.
° Ограниченного множества (как правило, не более 40 — 60) "ориентированных на действия" глаголов, из которых должны конструироваться предложения. ° Решений, представленных формальной структурой 1Г-ЕьзЕ-ЕН01Г. ° Итеративных действий, представленных структурами 00-ин11е и Гоп-нехт. На рис. 28.1 представлен пример спецификации с помощью псевдокода алгоритма вычисления отложенного дохода от услуг в течение данного месяца в бизнес- приложении. Фрагменты текста на псевдокоде расположены уступами; такой формат ис. пользуется для того, чтобы выделить логические "блоки".
Сочетание синтаксических ог раничений, формата и разбивки существенно уменьшает неоднозначность требования, которое в противном случае было бы очень сложным и расплывчатым. (Так оно и было до написания псевдокода!) В то же время такое представление требования вполне по. пятно для человека, не являющегося программистом. Не нужно быть выдающимся уче. ным, чтобы понимать псевдокод, и нет необходимости знать С++ или(ата. алгоритм вычисления отложенного дохода от услуг в течение месяца: Век Впж(Х)=0 Гоп каждого клиента х 1Г клиент оплатил услуги вперед д(то ((текущий месяц) =(2 мес.
после даты приобретения)) дно ((текущий месяц)<=( 14 мес. после даты приобретения)) тнвн впп(х) = впп(х) + (сумма, заплаченная клиентом)/12 гтм. 28. д Примерсясекфкяавяк с ясяальзаааиием ясеадакада Глава 28. Теоретически обоснованные формальные методы... 283 Конечные автоматы В некоторых ситуациях систему или ее дискретное подмножество удобно рассматривать как "гипотетичесюзо машину, которая в конкретный момент времени может находиться только в одном из указанных состояний" (Дэвис (Оат)з, 1995)).
В ответ иа ввод, будь то данные, вводимые пользователем, или информация, поступившая от внешнего устройства, машина изменяет свое состояние и генерирует выводимую информацию пли выполняет некое действие. Как вывод, так и следующее состояние можно определить, основываясь исключительно иа знании текущего состояния и события, вызывающего транзакцию. Таким образом, поведение системы можно назвать детерминированным; можно математическим путем определить все возможные состояния и, как следствие. выводы системы, основываясь иа множестве предлагаемых вводов.
Разработчики аппаратного обеспечения десятилетиями испольэовали конечные автоматы (Ринге маге тасмпез, РЗМэ). Существует огромное количество литературы, описывающей создание и анализ таких автоматов. Математическая природа РЗМз располагает к проведению строго формального анализа, поэтому описанные ранее в данной части проблемы непротиворечивости.
полноты и неоднозначности значительно уменьшаются при их использовании, Конечные автоматы зачастую представляются в виде диаграмм перехода состояний, ктк показано иа рис. 28.2. В атой системе обозначений прямоугольники представляют состояние, в котором находится устройство, а стрелки — действия, переводящие устройство в другие состояния. Рисунок иллюстрирует переходы состояний "лампового ящика", рассматривавшегося в главе 2б. В том примере выражение иа естественном языке "лампа будет мигать каждую секунду" было несколько неоднозначным. Представленная на рис. 28.2 диаграмма перехода состояний ие является неоднозначной и иллюстрирует. что цикл В действительно был выбран правильно. Если лампа перегорает, прибор чере.
дует попытки включить четную и нечетную лампы; каждую в течение 1 секунды. Рис 28.2. Дяезрамме яфекюда амзмяикй Предлагаем вам применить Р$М для повторного определения прецедента "Управление освещением" системы НО(.1$. Вы сразу заметите, что альтернативный по. ток 0(ш (изменение яркости) прекрасно подходит для представления с помощью РБМ. В более строгой форме конечный автомат представкяечся в виде таблицы илн матрицы, где показаны все состояния, в которых может находиться устройство, вывод системы для ка.
ждого состояния и воздействия всех возможных событий иа каждое возможное состояние. Это приводит к более высокому уровню детализации, тзк яак каждое состояние и воздействие каждого события должны быть представлены в таблице. Например, табл. 28.1 определяет по. ведение освепггельной коробки в виде матрицы перехода состояний. Таблица 28.1. Матрица перехода состояний для прибора подсчитывающего четное/нечетное число нажатий Событие Лампа Вывод Состояние Нажатие Вка Нажатие Выла Нажатие Счаю Каждая секунда перего. рвет Обе лампы выключены Четнэл горит Четная горит Выключен Нечетное включение Лампа перегоре- ла/Четная горит Лампа Чеаааы юрия Нечетная горит Выключен Четное Нечстная гара включение перегоре- ла/Нечетн ая горит Выключен Четная горит Выключен Выкаючен Выключен Нечетная горит Лалла яарезаре- ла/Нечетяаа гари а1 В таком представлении можно разрешить дополнительные неоднозначности.
кото. рые могут возникнуть при попытке понять поведение прибора. ° Что происходит, если пользователь нажимает кнопку Вхл. когда прибор уже включен) Ояыею: ничего. ° с1то происходит, если обе лампы перегораюту Оямаа: прибор выключается. Конечные автоматы в~ирако применяются для некоторых категорий системных программных приложений, таких как системы обмена сообщениями, операционные системы и системы управления процессами.
Они также являются удобным средством описания взаимодействия между внешним пользователем-человеком н системой, например взаимодействия клиента банка и банкомата, когда клиент хочет сиять деньги со счета. Но конечные автоматы становятся слишком громоздкими, если нужно представить поведение системы как функцию нескольких вводов. В таких случаях требуемое поведение системы, как правило, является функцией всех текущих условий и событий, а не одного текущего события илн некой цепочки прежних событий. Таблицы решений Достаточно часто ястречаются требования, связанные с комбюгацией вводов; различные комбинации вводов приводат к различным вариантам поведения или вывода Предположим, имеется система с пятью возможными вводами (А, В, С, О, Е) и требование, заключающееся в утверждении, напоминающем оператор псевдокода: "Если А истинно, то, если В и С также нс.
тиины, генерировать вывод Х при условии, что Е не является истиннььм, иначе требуемый 284 Часть 5. Уточнение определения системы Лампа перегорела/ Нечетная горит Лампа пере- горела/ Четная горит Глава 28. Теоретически обоснованные формальные методы... 285 вывод — 1 . Комбинация предложений 18-ТНЕН-ЕВОЕ (есличсгнначе) быстро становится зэ пуганной, особенно если, как и в этом примере, имеются вложенные предложения 1Г. Как правило, обычные пользователи не могут нх поюпь, и невозможно гарантировать, по все возможные комбинации А, В, С, 0 и Е рассмотрены.
Решением в данном случае является перечислекие всех комбинаций вводов и описа. ние каждой из иих в явном виде в таблице. В нашем примере, когда допустимых значений вводов только два ("истинно" и "ложно"), получается 2' или 32 комбинации. Их можно представить с помощью таблицы, содержащей 5 строк (по одной для каждой вво. димой переменной) и 32 столбца. Графические деревья решений Дерево 1?еимиий применяется для графического отображения информации. Мы использовали это представление в главе 15, когда нужно было принять решение, какой прототип создавать.
На рис. 28.3 показано дерево решений, используемое для описания последовательности действий системы НО1.13 в чрезвычайной ситуации. Ничего наделать Ответила пи удаленнвп система безопасности? слюнить сирену Иннвмровать сообщение о тревоге Включено ли дистанционное оповнценне? Втлвчить сирену Впночен пи местный споил трвВОГи? Посгупилв пи последовательность снгнвюв, соответствующая состопнию тренин Ничего не делать Рис 28З. ЗРафнчеснее ВеРеоо Рентеинй Диаграммы деятельности Блоксхемы (и их разновидносп, ьтМ1:диэграмьты деятельности) имеют несомненное преимущество — они достаточно известны. Даже люди, далекие от всего, что связано с компьютерами, знают, что такое блок. схема Например, местная газета недавно поместила блоксхему, описывающую алгоритм, с помощью которого человеческий мозг принимает ревтение о покупке кабриолета $ААВ.