Краткие сведения из теории. Разработка спецификаций структурных единиц
Лабораторная работа № 1
Разработка спецификаций структурных единиц.
Цель работы
В соответствии с рабочей программой по дисциплине «Системное программирование» в результате выполнения заданий по лабораторным работам студент должен:
уметь:
- осуществлять разработку кода программного модуля на современных языках программирования;
- оформлять документацию на программные средства;
знать:
- основные принципы технологии структурного и объектно-ориентированного программирования;
- методы и средства разработки технической документации;
- основные принципы отладки и тестирования программных продуктов.
Таким образом, студент во время проведения занятия и самостоятельной работы по теме занятия должен:
- приобрести навыки разработки спецификаций системного программного обеспечения;
- закрепить теоретические знания о формировании требований к программному обеспечению.
Краткие сведения из теории
Основными вопросами, которые должны рассматривать составитель (-ли) спецификаций, являются следующие:
а) Функциональные возможности. Каковы предполагаемые функции программного обеспечения?
б) Внешние интерфейсы. Как программное обеспечение взаимодействуют с пользователями, аппаратными средствами системы, другими аппаратными средствами и другим программным обеспечением?
в) Рабочие характеристики. Каково быстродействие, доступность, время отклика, время восстановления различных функций программного обеспечения и т.д.?
г) Атрибуты. Каковы мобильность, правильность, удобство сопровождения, защищенность программного обеспечения и другие критерии?
д) Проектные ограничения, налагаемые на реализацию изделия. Предъявляются ли требования к соответствию каким-либо действующим стандартам, к языку реализации, к политикам целостности баз данных, к задействуемым ресурсам, к операционной среде(-ам) и т.д.?
Составителю(-ям) спецификаций следует избегать размещения в спецификациях архитектурных решений или требований к организации и выполнению проекта.
Спецификация является проверяемой, если и только, если каждое требование, изложенное в ней, может быть проверено. Требование являются проверяемым, если и только, если существует некий конечный экономически-эффективный (рентабельный) процесс, используя который пользователь или машина могут убедиться, что программное изделие удовлетворяет этому требованию. В целом, любое неоднозначное требование не проверяемо.
Непроверяемые требования включают формулировки типа «работает хорошо», «хороший пользовательский интерфейс» и «обычно должно происходить». Эти требования не могут быть проверены, так как невозможно определить термины «хороший», «хорошо» или «обычно». Утверждение о том, что «программа никогда не должна зацикливаться» является непроверяемым, так как тестирование этого свойства теоретически невозможно.
Примером проверяемого утверждения является следующее:
Программа должна выдавать результат в течение 20 секунд после заданного события в 60% случаев; и должна выдавать результат в течение 30 секунд после заданного события в 100% случаев.
Это утверждение может быть проверено, так как в нём используются конкретные термины и измеримые величины.
Если нельзя изобрести метод, чтобы определить, отвечает ли программное обеспечение определённому требованию, то это требование следует исключить или пересмотреть.
Спецификация должна указывать, какие функции должны выполняться с какими данными для получения каких результатов в каком месте и для кого. Спецификация должна фокусироваться на предоставляемых услугах. Спецификация обычно не должна указывать элементы архитектуры и внутренней структуры программы, такие как:
а) Разбиение программного обеспечения на модули;
б) Присваивание функций модулям;
в) Описание потока данных или управления между модулями;
г) Выбор структур данных.
Рекомендуемое содержание спецификации:
1. Введение
1.1 Назначение
1.2 Область действия
1.3 Определения, акронимы и сокращения
1.4 Публикации
1.5 Краткий обзор
2. Полное описание
2.1 Контекст изделия
2.2 Функции изделия
2.3 Характеристики пользователя
2.4 Ограничения
2.5 Допущения и зависимости
3. Специфические требования
Приложения
Алфавитный указатель
Назначение (Подраздел 1.1Спецификации)
Этот подраздел должен:
а) Обрисовать назначение спецификации;
б) Указать аудиторию, для которой предназначена спецификации.
Область действия (Подраздел 1.2Спецификации)
Этот подраздел должен:
а) Задавать название создаваемому программное изделию (-ям) (например, Host DMBS (Главная система управления базой данных), Генератор отчетов и т.д.);
б) Объяснять, что программное изделие будет и, в случае необходимости, не будет делать;
в) Описывать применение задаваемого программного обеспечения, включая связанные с ним выгоды, цели и задачи;
г) Согласовываться с аналогичными формулировками в спецификациях более высокого уровня (например, со спецификацией системных требований), если они существуют.
Определения, акронимы и сокращения (Подраздел 1.3Спецификации)
В этом подразделе должны быть представлены определения всех терминов, акронимов и сокращений, необходимые для правильной интерпретации спецификации. Эта информация может быть обеспечена ссылками на одно или более приложений в спецификации или ссылкой на другие документы.
Публикации (Подраздел 1.4Спецификации)
Этот подраздел должен:
а) Представить полный список всех документов, на которые делаются ссылки где-либо внутри спецификации;
б) Идентифицировать каждый документ по заголовку, номеру отчета (если применяется), дате и организации-издателю;
в) Определить источники, из которых могут быть получены ссылки.
Эту информацию можно обеспечить ссылкой на приложение или другой документ.
Краткий обзор (Подраздел 1.5Спецификации)
Этот подраздел должен:
а) Описать, что находится в оставшейся части спецификации;
б) Объяснить, как организована структура спецификации.
Общее описание (Раздел 2Спецификации)
Этот раздел спецификации должен описывать общие факторы, которые влияют на программное изделие (-я) и требования, предъявляемые к нему. Этот раздел не устанавливает конкретные требования. Вместо этого, он обеспечивает предварительные сведения о тех требованиях, которые подробно определяются в разделе 3 спецификации, и делает их более простыми для понимания.
Этот раздел обычно состоит из шести подразделов, а именно:
а) Контекст изделия;
б) Функции изделия;
в) Характеристики пользователей;
г) Ограничения;
д) Допущения и зависимости;
е) Разделение требований.
Контекст изделия (Подраздел 2.1Спецификации)
Этот подраздел спецификации должен описывать изделие в контексте с другими, связанными с ним изделиями. Если изделие является независимым и полностью автономным, то это должно быть явно сформулировано в документе. Если спецификация определяет изделие, которое является компонентом большей системы, как это часто бывает, то данный подраздел должен устанавливать связь требований этой большей системы с функциональными возможностями программного обеспечения, и должен идентифицировать интерфейсы между этой системой и программным обеспечением.
Может оказаться полезным использование блок-схемы, показывающей главные компоненты большей системы, соединений и внешних интерфейсов.
Этот подраздел должен также описывать как программное обеспечение функционирует в рамках различных ограничений. Например, эти ограничения могут включать:
а) Системные интерфейсы;
б) Интерфейсы пользователя;
в) Аппаратные интерфейсы;
г) Интерфейсы программного обеспечения;
д) Интерфейсы связи;
е) Память;
ж) Операции;
з) Требования по адаптации места использования.
Системные интерфейсы
Этот подраздел должен перечислять каждый системный интерфейс и идентифицировать функции программного обеспечения, выполняющие системные требования, и описание интерфейса для соответствия системе.
Интерфейсы пользователя
Этот подраздел должен указывать следующее:
а) Логические характеристики каждого интерфейса между программным изделием и его пользователями. Это включает характеристики конфигурации (например, требуемые форматы экрана, компоновку страницы или окна, содержание любых отчетов или меню, или наличие программируемых функциональных клавиш), необходимые для выполнения требований к программному обеспечению.
б) Все аспекты оптимизации интерфейса с пользователем, который должен использовать систему. Они могут просто включать список разрешений и запрещений различных способов представления системы пользователю. Одним из примеров может быть требование, предъявляемое к опции длинных или коротких сообщений об ошибках. Подобно всем другим, эти требования должны быть проверяемыми, например, «машинистка 4-го класса может выполнить задачу X за Z минут после 1 часа тренировки», а не «машинистка может выполнить задачу Х» (Это также может быть определено в Атрибутах Программной Системы в разделе, озаглавленном Простота использования).
Аппаратные интерфейсы
Этот подраздел должен определять логические характеристики каждого интерфейса между программным изделием и аппаратными компонентами системы. Он включает конфигурационные характеристики (число портов, наборы команд и т.д.). Он также охватывает вопросы, касающиеся того, какие устройства должны поддерживаться, как они должны поддерживаться и протоколы. Например, поддержка терминала может указывать полноэкранную поддержку в противоположность построчной поддержке.