Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Как читать этот пример
Спецификация требований программного обеспечения «Навигатор классов для
ОС Microsoft Windows 7 x86»
Оглавление
Для решения наших задач можно обойтись без оглавления.
Данный документ содержит требования к разрабатываемому программному продукту и является основой для его разработки. Документ предназначен для специалистов ООО «ГоСт» по разработке программного обеспечения.
СТПО - спецификация требований к программному обеспечению ПО - программное обеспечение ОС - операционная система
Аналогично оглавлению.
Данное изделие работает независимо от другого ПО за исключением операционной системы, установленной на вычислительной машине.
Этот раздел содержит описание интерфейсов систем и подсистем. В данном случае он отсутствует, потому что ПО не является подсистемой (частью системы).
Интерфейс пользователя представляет собой окно, размер которого определяется пользователем. По- умолчанию размер окна задается таким, чтобы отобразить все функциональные элементы окна (интерфейса пользователя). Максимальный размер окна соответствует максимальному разрешению экрана. Интерфейс пользователя содержит следующие функциональные компоненты:
Каждая вкладка соответствует определенному файлу и содержит несколько полей:
Поле открытых файлов содержит историю открытых пользователем файлов.
Меню одержит пункты: «Выбрать новый файл с исходным кодом», «Перейти к следующей вкладке» «Перейти к предыдущей вкладке», «Закрыть текущую вкладку», «Закрыть все вкладки», «Очистить историю открытых файлов», «Закрыть приложение».
Выбор файла осуществляется в виде диалога.
Функциональные клавиши продукта:
Ctrl + о - открыть диалог открытия файла.
Ctrl + стрелка вправо - отобразить вкладку, расположенную справа от текущей вкладки.
Ctrl + стрелка влево - отобразить вкладку, расположенную слева от текущей вкладки.
Ctrl + F4 - закрыть текущую вкладку.
ALT + F4 - закрыть программу.
Диалог выбора файла должен отображать директорию последнего открытого файла.
Окно программы, а так же ее все элементы должны быть масштабируемы. Вследствие чего, переключатель вкладок, поле открытых файлов, поля вкладок и сами вкладки должны использовать полосы прокрутки, если содержимое не умещается в установленный пользователем размер окна программы. Минимальный размер окна программы должен быть достаточен, чтобы отобразить информацию
о классах одного открытого файла без использования полос прокрутки. Все текстовые поля, должны поддерживать операцию копирования в буфер с помощью контекстного меню и комбинации клавиш ctrl+c.
Этот раздел содержит описание интерфейсов с аппаратными средствами, управлением которыми осуществляется непосредственно вашим ПО. В данном случае продукт не взаимодействует непосредственно с каким-либо аппаратным средством.
Поскольку рассматриваемое ПО не зависит от работы других программных продуктов, кроме операционных систем, а для описания интерфейсов ОС нужны более глубокие познания в программировании и операционных системах, на данном этапе достаточно привести краткое описание основных интерфейсов операционных систем:
Интерфейсы ОС Windows:
Интерфейсы прикладного программирования (Windows API):
Оконный интерфейс пользователя:
Windows User Interface Windows GDI+
Функции работы с файлами, предоставляемые Windows API (CreateFile, OpenFile, ReadFile, WriteFile, CloseFile, DeleteFile, CopyFile, FindFirstFile, FindNextFile, GetFileSize)
Приведу другие интерфейсы других систем для энтузиастов:
Работа с графикой (ОС Windows):
DirectX (directDraw, directD3D), OpenGL Работа со звуком (ОС Windows):
DirectX (), OpenAL
Итерфесы других ОС:
OpenGL
Работа со звуком:
OpenAL
Интерфейсы прикладного программирования:
Cocoa
Работа с графикой:
X11
В данном примере этот пункт не нужен, поскольку передача данных с использование сетевых технологий задачей не предусмотрена.
Здесь необходимо подсчитать (примерно) необходимый для работы программы объем памяти (как оперативной так и постоянной)
Размер инсталлированной в систему программы не должен превышать 100 Мбайт Эту цифру, в первом приближении, грубо округлив, берем с потолка =)))
Суммарный объем файлов, создаваемых изделием в процессе работы на жестком диске, не должен превышать 1 Мбайт.
Как получена эта цифра. Программа хранит историю открытых файлов (полные пути к ним), путь к последнему открытому файлу и пути к текущим открытым файлам в виде текста. Каждый путь представляет собой строку (максимум 255 символов), каждый символ кодируется 8 или 16 битами (в зависимости от используемой кодировки. Возьмём 8 бит. Таким образом, для хранения одной строки требуется 2048 бит или 2 Кбит. Исходя из предположения хранения максимум 1024 файлов в истории и максимум 128 текущих открытых файлов получаем 2252Кбит, или 2.2Мбит, или ~280Кбайт. Добавим то, что мы что-то не учли, получим 1 Мбайт.
Объем оперативной памяти, занимаемой программой не должен превышать 200 Мбайт По аналогии с объемом постоянной памяти, занимаемой программой.
Действия инициируемые пользователем:
Во время диалога выбора файла, остальные функции программы пользователю не доступны. Диалог длится до нажатия кнопки «выбрать» при выделенном файле с исходным кодом.
Периоды оставленных без отклика действий:
После завершения диалога выбора файла, пока не будет завершен анализ файла, формирование и отображение выводимой пользователю информации, все действия пользователя остаются без отклика.
Этот пункт используется, если программа может работать в нескольких режимах. В данном случае этот пункт отсутствует.
Здесь приводятся основные функции изделия (без фанатичной детализации). Функции поделены на 3 группы.
Обработка файла, содержащего список (историю) отрытых пользователем файлов (чтение, создание, запись, добавление).
Обработка файла, содержащего список файлов с исходным кодом, связанных с открытыми вкладками (чтение, создание, запись, добавление).
Обработка файлов с исходным кодом (чтение).
Определение используемого языка программирования.
Определение классов в анализируемом тексте.
Определение членов выделенных классов.
Выбор файла для анализа.
Добавление строк с именем файла в поле истории открытых файлов.
Удаление строк из поля истории открытых файлов.
Отображение полного пути к файлу.
Добавление вкладки.
Удаление вкладки.
Отображение списка классов во вкладках.
Отображение подробной информации о членах выбранного класса.
Масштабирование элементов интерфейса пользователя.
Интерфейс пользователя представляет собой окно, размер которого определяется пользователем. Размер окна по-умолчанию - 1024х600 точек. Максимальный размер окна соответствует максимальному разрешению экрана. Эскиз интерфейса приведен в приложении А.
Пункт меню, на который наведен курсор мыши, подсвечивается в соответствии с текущей темой ОС. Данную фразу можно использовать при выборе используемого фона и шрифта всех объектов стандартного оконного интерфейса пользователя.
Оставшаяся область разделена (с помощью разделителя шириной 5 пикселей) на две области:
Кнопка «открыть»
Под переключателем отображается содержимое выбранной вкладки. Размер поля зависит от размера окна, и отстоит от нижней и правой границы окна, от поля открытых файлов на 5 пикселей. Каждая вкладка разделена на две области, расстояние между ними 5 пикселей.
Сразу под надписью располагается поле дерева классов:
«тип_доступа имя_конструктора (имя_параметра1 тип = значение_по-умолчанию,
имя_параметра2 тип = значение_по-умолчанию, ...)»
Для отображения одной сигнатуры используется только одна строка.
Сигнатуры конструкторов сортируются по числу входных параметров - от меньшего к большему.
В начало строки конструктора родительского класса, замененного текущим дочерним классом добавляется текст «overridden ».
Для отображения одной сигнатуры используется только одна строка.
Сигнатуры методов сортируются по имени метода по-возрастанию, затем по числу входных параметров - от меньшего к большему.
В начало строки метода родительского класса, замененного текущим дочерним классом добавляется текст «overridden ».
«тип_доступа тип_свойства имя_свойства»
Для отображения одного свойства используется только одна строка.
Свойства сортируются по имени.
«тип_доступа тип_атрибуты имя_атрибута = значение_по-умолчанию»
Для отображения одного атрибута используется только одна строка.
Атрибуты сортируются по имени.
Дабы не заморачиваться с указанием используемого шрифта и цветов заливки фона окна и полей, можно сказать о том, что эти настройки наследуются от текущей темы ОС.
В данном случае, удобно структурировать детальные требования по особенностям, по воздействиям, по объектам.
Вариант №1 - структурирование по объектам
Является абстракцией файла, содержащего исходный код
описание: содержит полный путь к файлу с исходным кодом тип: строка
тип доступа: открытый
описание: содержит имя файла тип: строка тип доступа:
описание: содержит строки исходного файла тип:
тип доступа: закрытый
описание: содержит указатель на используемый язык программирования
тип: целое число
тип доступа: закрытый
описание: содержит описание ошибки тип: строка
тип доступа: открытый
Входные данные - нет.
Считывает в виде строк содержимое файла, путь к которому содержится в path, и заносит его в content. В зависимости от возникших исключительных ситуаций, возвращает целое число и записывает соответствующую строку в errmsg.
Выходные данные |
Исключительная ситуация |
errmsg |
0 |
||
1 |
по указанному пути файл отсутствует |
«Файл <path> не существует» |
2 |
ошибка чтения из файла |
«Ошибка чтения из файла <path>» |
3 |
Не хватает памяти для записи содержимого файла |
«Файл слишком большой или открыто слишком много файлов» |
Входные данные - нет.
Анализирует содержимое content - определяет используемый язык программирования, проверяет баланс открывающих и закрывающих скобок в описаниях классов и их членов (begin-end, фигурные и круглые скобки). В зависимости от определенного языка программирования записывает его код в proglang:
В зависимости от ошибок в тексте исходного файла, генерирует исключительные ситуации. Возвращает целое число, указывающее на возникшую исключительную ситуацию:
Выходные данные |
Исключительная ситуация |
errmsg |
0 |
||
1 |
код написан на не поддерживаемом языке программирования; |
«Не могу определить язык исходного кода файла <path>» |
2 |
не хватает открывающих или закрывающих операторных скобок в определении класса; |
«Ошибка в описании класса <имя класса> файла <path>» |
Входные данные - нет.
Если при чтении и определении языка программирования ошибок не выявлено, анализирует content, выделяет строки, соответствующие описанию классов, и формирует коллекцию объектов класса Classes. Затем объекты коллекции сортируется в соответствии с иерархией наследования, а затем по именам.
Обрабатывает только одну исключительную ситуацию - не хватает виртуальной памяти, для создания объектов типа Classes.
Выходные данные - коллекция объектов типа Classes.
Описание следующего класса привожу уже не подробно (только описание элементов), ибо надоело печатать - а вам нужно будет писать все!
описание: содержит имя класса
описание: содержит имя родительского класса
описание: является ли класс - дочерним
описание: содержит массив строк - сигнатур методов
описание: содержит массив строк - сигнатур конструкторов
описание: содержит массив строк - описаний атрибутов
описание: содержит массив строк - описаний свойств
описание: содержит массив строк - описание класса (из исходного файла)
3.2.2.2 Методы
Определяет, является ли рассматриваемый класс - дочерним.
Анализирует content, выделяет конструкторы, формирует строки, содержащие сигнатуры конструкторов.
Анализирует content, выделяет методы, формирует строки, содержащие сигнатуры методов.
Анализирует content, выделяет атрибуты, формирует строки, содержащие описание атрибутов.
Анализирует content, выделяет свойства, формирует строки, содержащие описание свойств.
Сортирует элементы constructors по возрастанию числа входных параметров
Сортирует элементы methods по имени методов, если встречаются методы с одинаковыми именами, сортирует их по возрастанию числа входных параметров
Сортирует элементы attributes по имени атрибутов
Сортирует элементы properties по имени атрибутов Вариант №2 - структурирование по последовательности воздействие / реакция
Данный вариант удобен, если работа программы зависит от действий пользователя. В этом случае нужно будет прописать все воздействия пользователей, и отклик на эти воздействия.
Здесь можно приводить отклики, например, таким образом:
Входные данные - строка, содержащая полный путь к файлу.
Проверяется существование указанного файла, в случае успешной проверки, осуществляется чтение всех строк файла.
Выходные данные - массив всех считанных строк.
Исключительные ситуации - 1) файл с указанным именем (полный путь к файлу) не существует - инициализация процедуры вывода сообщения пользователю в формате: «Файл
<путь_к_файлу> не найден»; 2) файл поврежден (как правило это проявляется как отсутствие маркера «конца» файла) - инициализация процедуры вывода сообщения пользователю в формате: «Не возможно произвести чтение из файла <путь_к_файлу>. Указаный файл поврежден»
Входные данные - массив строк.
Если при выполнении чтения файла не возникло исключительных ситуаций, осуществляется анализ входных данных - определяются блоки описания классов, методы, конструкторы, атрибуты и свойства внутри каждого блока, проверяется баланс открывающих и закрывающих операторных скобок. Если ошибок не возникло, для каждого класса формируется структура данных, содержащая:
Следующие пункты оформлять не нужно!