Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример-СТПО.docx
Скачиваний:
37
Добавлен:
10.06.2015
Размер:
33.63 Кб
Скачать
    1. Функциональные требования

В данном случае, удобно структурировать детальные требования по особенностям, по воздействиям, по объектам.

Вариант №1 - структурирование по объектам

      1. Класс sourceFile

Является абстракцией файла, содержащего исходный код

        1. Атрибуты 3.2..1.1 path

описание: содержит полный путь к файлу с исходным кодом тип: строка

тип доступа: открытый

          1. name

описание: содержит имя файла тип: строка тип доступа:

          1. content

описание: содержит строки исходного файла тип:

тип доступа: закрытый

          1. proglang

описание: содержит указатель на используемый язык программирования

тип: целое число

тип доступа: закрытый

          1. errmsg

описание: содержит описание ошибки тип: строка

тип доступа: открытый

        1. Методы

  1. getContent()

Входные данные - нет.

Считывает в виде строк содержимое файла, путь к которому содержится в path, и заносит его в content. В зависимости от возникших исключительных ситуаций, возвращает целое число и за­писывает соответствующую строку в errmsg.

Выходные данные

Исключительная ситуация

errmsg

0

1

по указанному пути файл отсут­ствует

«Файл <path> не существует»

2

ошибка чтения из файла

«Ошибка чтения из файла <path>»

3

Не хватает памяти для записи со­держимого файла

«Файл слишком большой или от­крыто слишком много файлов»

  1. determProgLang()

Входные данные - нет.

Анализирует содержимое content - определяет используемый язык программирования, прове­ряет баланс открывающих и закрывающих скобок в описаниях классов и их членов (begin-end, фигурные и круглые скобки). В зависимости от определенного языка программирования запи­сывает его код в proglang:

  1. - C++;

  2. - C#;

  3. - Java;

  4. - Objective C;

  5. - Object Pascal;

  6. - Visaul Basic;

  7. - PHP;

  8. - Perl;

В зависимости от ошибок в тексте исходного файла, генерирует исключительные ситуации. Возвращает целое число, указывающее на возникшую исключительную ситуацию:

Выходные данные

Исключительная ситуация

errmsg

0

1

код написан на не поддерживаемом языке программирования;

«Не могу определить язык исход­ного кода файла <path

2

не хватает открывающих или за­крывающих операторных скобок в определении класса;

«Ошибка в описании класса <имя класса> файла <path>»

  1. determClasses()

Входные данные - нет.

Если при чтении и определении языка программирования ошибок не выявлено, анализирует content, выделяет строки, соответствующие описанию классов, и формирует коллекцию объектов класса Classes. Затем объекты коллекции сортируется в соответствии с иерархией наследования, а за­тем по именам.

Обрабатывает только одну исключительную ситуацию - не хватает виртуальной памяти, для создания объектов типа Classes.

Выходные данные - коллекция объектов типа Classes.

Описание следующего класса привожу уже не подробно (только описание элементов), ибо надоело печатать - а вам нужно будет писать все!

      1. Класс Classes

        1. Атрибуты

  1. name

описание: содержит имя класса

  1. parentName

описание: содержит имя родительского класса

  1. isChild

описание: является ли класс - дочерним

  1. methods

описание: содержит массив строк - сигнатур методов

  1. constructors

описание: содержит массив строк - сигнатур конструкторов

  1. attributes

описание: содержит массив строк - описаний атрибутов

  1. properties

описание: содержит массив строк - описаний свойств

  1. content

описание: содержит массив строк - описание класса (из исходного файла)

3.2.2.2 Методы

  1. isChild()

Определяет, является ли рассматриваемый класс - дочерним.

  1. findConstructorsSignatures()

Анализирует content, выделяет конструкторы, формирует строки, содержащие сигнатуры кон­структоров.

  1. fmdMethodsSignaturesQ)

Анализирует content, выделяет методы, формирует строки, содержащие сигнатуры методов.

  1. findA ttributes()

Анализирует content, выделяет атрибуты, формирует строки, содержащие описание атрибутов.

  1. findProperties()

Анализирует content, выделяет свойства, формирует строки, содержащие описание свойств.

  1. sortConstructors()

Сортирует элементы constructors по возрастанию числа входных параметров

  1. sortMethods()

Сортирует элементы methods по имени методов, если встречаются методы с одинаковыми име­нами, сортирует их по возрастанию числа входных параметров

  1. sortAttributes()

Сортирует элементы attributes по имени атрибутов

  1. sortProperties()

Сортирует элементы properties по имени атрибутов Вариант №2 - структурирование по последовательности воздействие / реакция

Данный вариант удобен, если работа программы зависит от действий пользователя. В этом случае нужно будет прописать все воздействия пользователей, и отклик на эти воздействия.

Здесь можно приводить отклики, например, таким образом:

  1. Особенности системы 3.2.1 Особенность системы 1 - отработка процедуры выбора файла пользователем в диалоговом режиме

  1. описывается работы программы, после выбора файла.

  2. Щелчок левой кнопкой мыши по имени файла, в диалоге открытия файла, затем щелчок левой кнопкой мыши по кнопке «выбрать».

  3. Связанные функциональные требования

  1. Чтение файла

Входные данные - строка, содержащая полный путь к файлу.

Проверяется существование указанного файла, в случае успешной проверки, осуществля­ется чтение всех строк файла.

Выходные данные - массив всех считанных строк.

Исключительные ситуации - 1) файл с указанным именем (полный путь к файлу) не суще­ствует - инициализация процедуры вывода сообщения пользователю в формате: «Файл

<путь_к_файлу> не найден»; 2) файл поврежден (как правило это проявляется как отсутствие марке­ра «конца» файла) - инициализация процедуры вывода сообщения пользователю в формате: «Не возможно произвести чтение из файла <путь_к_файлу>. Указаный файл поврежден»

  1. Анализ считанных данных

Входные данные - массив строк.

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

  • имя класса

  • имя родительского класса

  • флаг - является ли данных класс дочерним

  • массив строк с описанием конструкторов, сортированный по возрастанию числа входных па­раметров конструктора

  • массив строк с описанием методов, сортированный по их именам, а затем по возрастанию числа их входных параметров

  • массив строк с описанием атрибутов, сортированный по их именам

  • массив строк с описанием свойств, сортированный по их именам

  1. Вывод данных в поля интерфейса пользователя, в соответствии с требованиями пунк­та 3.1.1 СТПО.

Следующие пункты оформлять не нужно!

    1. Требования исполнения

    2. Ограничения проекта

    3. Характеристики программного обеспечения системы

    4. Другие требования