Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
спецификации.rtf
Скачиваний:
20
Добавлен:
01.05.2015
Размер:
249.1 Кб
Скачать
  1. Спецификация компьютерной программы для решения любой задачи из параметризованного класса задач (в том числе – метод решения задачи, спецификации входных и спецификации выходных данных)

8.1.СПЕЦИФИКАЦИЯ КОМПЬЮТЕРНОЙ ПРОГРАММЫ

8.1.1.Что означает слово "спецификация" (по толковому словарю)

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

8.1.2. Как надо понимать термин "спецификация компьютерной программы" в данном контексте (семантика)

Компьютерная программа (КП) - это задание для компьютера, написанное программистом, в то время как спецификация КП – это задание для человека (программиста), написанное постановщиком задачи или системным аналитиком. Внешнее проектирование КП – это процесс описания ожидаемого поведения разрабатываемой КП с точки зрения внешнего наблюдателя. Цель этого процесса – конструирование “внешних” взаимодействий будущей КП без конкретизации её внутреннего устройства. Внешний проект выражается в форме внешних спецификаций КП, предназначенных для широкой аудитории, включающей заказчика и пользователей КП (для проверки и одобрения), авторов документации к КП, всех программистов, участвующих в разработке КП, а также всех тех, кто будет заниматься тестированием КП.

Определение 6.1.. Внешняя спецификация КП – это промежуточное описание задачи, которую должна решать проектируемая КП.

Цель внешней спецификации – материально фиксировать понимание задачи (в виде текста, документа, макета и т.д.) и передать понимание заинтересованным лицам. Назначение внешней спецификации состоит в определении поведения КП. Пользователи КП рассчитывают на это поведение, а разработчики должны обеспечить его. Внешние спецификации должны описывать КП с точки зрения пользователя и избегать ограничений на внутреннее устройство КП. Внешние спецификации должны описывать все возможные входные данные КП (как допустимые, так и недопустимые) и соответствующую реакцию КП. Они должны точно и полно описывать внешние сопряжения при минимальных предположениях (или совсем без них) о внутреннем устройстве КП. Спецификация должна описывать, ЧТО должна делать КП, но она не должна описывать, КАК это она должна делать. Хорошая внешняя спецификация КП должна позволить заранее понять, какая реализация этой спецификации в виде КП не устроит пользователей.

Определение 6.2. Реализация заданной спецификации в виде КП удовлетворяет этой спецификации, если она обеспечивает поведение КП, описанное в заданной спецификации.

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

Определение 6.3. Написание спецификации КП называется специфицированием, автор спецификации называется спецификатором.

Таким образом, специфицирование КП - это вид деятельности, результатом которой является спецификация КП.

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

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

8.1.3. О стиле написания спецификаций

Внешние спецификации могут быть написаны в “дефинитивном” (дефинитивные спецификации) или в “операционном” (операционные спецификации) стиле.

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

В операционной спецификации, вместо описания свойств проектируемой КП, приводится способ их конструирования в КП.

Операционные спецификации имеют ряд преимуществ перед дефинитивными. Они сравнительно легко составляются опытными программистами, главным образом потому, что процесс их составления сильно напоминает программирование. Однако операционная спецификация часто имеет больший размер, чем дефинитивная, и ведет к излишней (ненужной!) подробности спецификации. Дефинитивная спецификация не только является более короткой, чем операционная, но и предоставляет разработчику большую свободу, позволяя ему самому выбрать способ реализации этих свойств.

8.1.4. Основные свойства спецификаций

Основными свойствами спецификации КП являются полнота, точность и понятность.

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

Точность (формальность, однозначность) спецификации означает её “математичность”. Математические объекты и понятия, нужные в спецификациях, не всегда можно найти готовыми в математике. В теоретической информатике (theoretical computer science) они могут создаваться по мере необходимости. “Математичность” вовсе не означает употребление каких-то изощрённых сложных, очень абстрактных математических понятий: нужно использовать только те, которые действительно нужны, и чем они проще, тем лучше. Степень формализации сильно варьируется в зависимости от цели, которая ставится перед спецификацией КП, и от её потенциальных читателей. Спецификатор должен владеть искусством формализовать спецификацию не в большей степени, чем это требуется для её недвусмысленного понимания.

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

  • использования понятий, естественных для описания исходной задачи,

  • учёта запаса знаний, особенностей психологических, интеллектуальных, профессиональных и производственных установок, опыта программирования и т.п. всех людей, работающих с этой спецификацией.