- •Спецификация требований программного обеспечения «Навигатор классов для
- •Введение
- •Цели стпо
- •Границы применения
- •Термины, акронимы, сокращения
- •Спецификация требований программного обеспечения «Навигатор классов для ос Ubuntu
- •Краткий обзор
- •Общее описание
- •Детальные требования
- •Требования внешних интерфейсов
- •Интерфейсы пользователя
- •Функциональные требования
-
Функциональные требования
В данном случае, удобно структурировать детальные требования по особенностям, по воздействиям, по объектам.
Вариант №1 - структурирование по объектам
-
Класс sourceFile
Является абстракцией файла, содержащего исходный код
-
Атрибуты 3.2..1.1 path
описание: содержит полный путь к файлу с исходным кодом тип: строка
тип доступа: открытый
-
name
описание: содержит имя файла тип: строка тип доступа:
-
content
описание: содержит строки исходного файла тип:
тип доступа: закрытый
-
proglang
описание: содержит указатель на используемый язык программирования
тип: целое число
тип доступа: закрытый
-
errmsg
описание: содержит описание ошибки тип: строка
тип доступа: открытый
-
Методы
-
getContent()
Входные данные - нет.
Считывает в виде строк содержимое файла, путь к которому содержится в path, и заносит его в content. В зависимости от возникших исключительных ситуаций, возвращает целое число и записывает соответствующую строку в errmsg.
Выходные данные |
Исключительная ситуация |
errmsg |
0 |
|
|
1 |
по указанному пути файл отсутствует |
«Файл <path> не существует» |
2 |
ошибка чтения из файла |
«Ошибка чтения из файла <path>» |
3 |
Не хватает памяти для записи содержимого файла |
«Файл слишком большой или открыто слишком много файлов» |
-
determProgLang()
Входные данные - нет.
Анализирует содержимое content - определяет используемый язык программирования, проверяет баланс открывающих и закрывающих скобок в описаниях классов и их членов (begin-end, фигурные и круглые скобки). В зависимости от определенного языка программирования записывает его код в proglang:
-
- C++;
-
- C#;
-
- Java;
-
- Objective C;
-
- Object Pascal;
-
- Visaul Basic;
-
- PHP;
-
- Perl;
В зависимости от ошибок в тексте исходного файла, генерирует исключительные ситуации. Возвращает целое число, указывающее на возникшую исключительную ситуацию:
Выходные данные |
Исключительная ситуация |
errmsg |
0 |
|
|
1 |
код написан на не поддерживаемом языке программирования; |
«Не могу определить язык исходного кода файла <path>» |
2 |
не хватает открывающих или закрывающих операторных скобок в определении класса; |
«Ошибка в описании класса <имя класса> файла <path>» |
-
determClasses()
Входные данные - нет.
Если при чтении и определении языка программирования ошибок не выявлено, анализирует content, выделяет строки, соответствующие описанию классов, и формирует коллекцию объектов класса Classes. Затем объекты коллекции сортируется в соответствии с иерархией наследования, а затем по именам.
Обрабатывает только одну исключительную ситуацию - не хватает виртуальной памяти, для создания объектов типа Classes.
Выходные данные - коллекция объектов типа Classes.
Описание следующего класса привожу уже не подробно (только описание элементов), ибо надоело печатать - а вам нужно будет писать все!
-
Класс Classes
-
Атрибуты
-
-
name
описание: содержит имя класса
-
parentName
описание: содержит имя родительского класса
-
isChild
описание: является ли класс - дочерним
-
methods
описание: содержит массив строк - сигнатур методов
-
constructors
описание: содержит массив строк - сигнатур конструкторов
-
attributes
описание: содержит массив строк - описаний атрибутов
-
properties
описание: содержит массив строк - описаний свойств
-
content
описание: содержит массив строк - описание класса (из исходного файла)
3.2.2.2 Методы
-
isChild()
Определяет, является ли рассматриваемый класс - дочерним.
-
findConstructorsSignatures()
Анализирует content, выделяет конструкторы, формирует строки, содержащие сигнатуры конструкторов.
-
fmdMethodsSignaturesQ)
Анализирует content, выделяет методы, формирует строки, содержащие сигнатуры методов.
-
findA ttributes()
Анализирует content, выделяет атрибуты, формирует строки, содержащие описание атрибутов.
-
findProperties()
Анализирует content, выделяет свойства, формирует строки, содержащие описание свойств.
-
sortConstructors()
Сортирует элементы constructors по возрастанию числа входных параметров
-
sortMethods()
Сортирует элементы methods по имени методов, если встречаются методы с одинаковыми именами, сортирует их по возрастанию числа входных параметров
-
sortAttributes()
Сортирует элементы attributes по имени атрибутов
-
sortProperties()
Сортирует элементы properties по имени атрибутов Вариант №2 - структурирование по последовательности воздействие / реакция
Данный вариант удобен, если работа программы зависит от действий пользователя. В этом случае нужно будет прописать все воздействия пользователей, и отклик на эти воздействия.
Здесь можно приводить отклики, например, таким образом:
-
Особенности системы 3.2.1 Особенность системы 1 - отработка процедуры выбора файла пользователем в диалоговом режиме
-
описывается работы программы, после выбора файла.
-
Щелчок левой кнопкой мыши по имени файла, в диалоге открытия файла, затем щелчок левой кнопкой мыши по кнопке «выбрать».
-
Связанные функциональные требования
-
Чтение файла
Входные данные - строка, содержащая полный путь к файлу.
Проверяется существование указанного файла, в случае успешной проверки, осуществляется чтение всех строк файла.
Выходные данные - массив всех считанных строк.
Исключительные ситуации - 1) файл с указанным именем (полный путь к файлу) не существует - инициализация процедуры вывода сообщения пользователю в формате: «Файл
<путь_к_файлу> не найден»; 2) файл поврежден (как правило это проявляется как отсутствие маркера «конца» файла) - инициализация процедуры вывода сообщения пользователю в формате: «Не возможно произвести чтение из файла <путь_к_файлу>. Указаный файл поврежден»
-
Анализ считанных данных
Входные данные - массив строк.
Если при выполнении чтения файла не возникло исключительных ситуаций, осуществляется анализ входных данных - определяются блоки описания классов, методы, конструкторы, атрибуты и свойства внутри каждого блока, проверяется баланс открывающих и закрывающих операторных скобок. Если ошибок не возникло, для каждого класса формируется структура данных, содержащая:
-
имя класса
-
имя родительского класса
-
флаг - является ли данных класс дочерним
-
массив строк с описанием конструкторов, сортированный по возрастанию числа входных параметров конструктора
-
массив строк с описанием методов, сортированный по их именам, а затем по возрастанию числа их входных параметров
-
массив строк с описанием атрибутов, сортированный по их именам
-
массив строк с описанием свойств, сортированный по их именам
-
Вывод данных в поля интерфейса пользователя, в соответствии с требованиями пункта 3.1.1 СТПО.
Следующие пункты оформлять не нужно!
-
Требования исполнения
-
Ограничения проекта
-
Характеристики программного обеспечения системы
-
Другие требования