Техническое задание на разработку программы "C++TESK.Eclipse.Plugin"

 
Содержание
  
1. Введение
1.1. Наименование программы
1.2. Назначение и область применения
2. Требования к программе 
2.1. Требования к функциональным характеристикам
2.2. Требования к надежности
2.2.1. Требования к обеспечению надежного функционирования программы
2.2.2. Время восстановления после отказа
2.2.3. Отказы из-за некорректных действий пользователей системы
3. Условия эксплуатации
3.1. Климатические условия эксплуатации
3.2. Требования к квалификации и численности персонала
3.3. Требования к составу и параметрам технических средств
3.4. Требования к информационной и программной совместимости
3.4.1. Требования к информационным структурам и методам решения
3.4.2. Требования к исходным кодам и языкам программирования
3.4.3. Требования к программным средствам, используемым программой
3.4.4. Требования к защите информации и программ
3.5. Специальные требования
4. Требования к программной документации
4.1. Предварительный состав программной документации
5. Технико-экономические показатели
5.1. Экономические преимущества разработки
6. Стадии и этапы разработки
6.1. Стадии разработки
6.2. Этапы разработки
6.3. Содержание работ по этапам
7. Порядок контроля и приемки
7.1. Виды испытаний
7.2. Общие требования к приемке работы
Приложение 1. Список ключевых слов
Приложение 2. Команды компиляции и линковки
Приложение 3. Команды запуска генератора отчетов 

1. Введение

1.1. Наименование программы

Наименование программы: "Модуль расширения IDE Eclipse cpptesk-plugin"

1.2. Назначение и область применения

Программа предназначена для расширения возможностей инструмента верификации C++TESK некоторыми дополнительными средствами, реализованными на основе IDE Eclipse.
Среди этих средств можно выделить:
- средства подсветки синтаксиса инструмента верификации C++TESK;
- интеграция со средствами статического анализа Verilog-кода и использование их выходных данных в качестве исходных для генератора шаблонов тестовых систем для C++TESK;
- автоматизация сборки (т.е. компиляции и линковки) тестовых систем для C++TESK;
- интеграция со следующими программными продуктами, входящими в состав C++TESK: средства генерации отчетов reportgen, средства запуска распараллеленного тестирования netfsm.

2. Требования к программе 

2.1. Требования к функциональным характеристикам

На данном этапе предъявляются требования к следующим составным частям программы.
2.1.1. средства подсветки синтаксиса инструмента верификации C++TESK должны быть реализованы в соответствии с приложением 1;
2.1.2. автоматизация сборки тестовых систем для C++TESK должна позволять пользователю нажатием на выведенную на специальную панель кнопку осуществить компиляцию и сборку проекта для данной операционной системы и для симулятора HDL-кода IcarusVerilog (типичные команды компиляции и линковки представлены в приложении 2);
2.1.3. интеграция с программным продуктом reportgen, входящим в состав C++TESK, подразумевает ассоциирование reportgen с файлами с расширением utt2, запуск генератора отчетов по двойному нажатию по таким файлам из дерева каталогов проекта в Eclipse, отображение результатов генерации (html-страниц) на отдельной странице проекта (типичные команды запуска генератора отчетов предствлены в приложении 3);
2.1.4. интеграция с программным продуктом mcc, входящим в состав C++TESK, подразумевает запуск страницы-браузера в IDE Eclipse, на которой будет отображаться клиентская часть mcc.

2.2. Требования к надежности

2.2.1. Требования к обеспечению надежного функционирования программы

Надежное (устойчивое) функционирование программы должно быть обеспечено выполнением Заказчиком совокупности организационно-технических мероприятий, перечень которых приведен ниже: 
а) организацией бесперебойного питания технических средств; 
б) использованием лицензионного программного обеспечения; 
в) регулярным выполнением рекомендаций Министерства труда и социального развития РФ, изложенных в Постановлении от 23 июля 1998 г. Об утверждении межотраслевых типовых норм времени на работы по сервисному обслуживанию ПЭВМ и оргтехники и сопровождению программных средств»; 
г) регулярным выполнением требований ГОСТ 51188-98. Защита информации. Испытания программных средств на наличие компьютерных вирусов

2.2.2. Время восстановления после отказа

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

2.2.3. Отказы из-за некорректных действий пользователей системы

Отказы программы вследствие некорректных действий пользователя при взаимодействии с программой через интерфейс IDE Eclipse недопустимы.

3. Условия эксплуатации

3.1. Климатические условия эксплуатации

Климатические условия эксплуатации, при которых должны обеспечиваться заданные характеристики, должны удовлетворять требованиям, предъявляемым к техническим средствам в части условий их эксплуатации

3.2. Требования к квалификации и численности персонала

Минимальное количество персонала, требуемого для работы программы, должно составлять не менее 2 штатных единиц — системный администратор и конечный пользователь программы — оператор. Системный администратор должен иметь высшее профильное образование и сертификаты компании-производителя операционной системы. В перечень задач, выполняемых системным администратором, должны входить: 
а) задача поддержания работоспособности технических средств; 
б) задачи установки (инсталляции) и поддержания работоспособности системных программных средств — операционной системы; 
в) задача установки (инсталляции) программы. 
г) задача создания резервных копий базы данных.

3.3. Требования к составу и параметрам технических средств

3.3.1. В состав технических средств должен входить IВМ-совместимый персональный компьютер (ПЭВМ), включающий в себя:
3.3.1.1. процессор Pentium-2.0Hz, не менее; 
3.3.1.2. оперативную память объемом, 1Гигабайт, не менее; 
3.3.1.3. HDD, 40 Гигабайт, не менее; 
3.3.1.4. операционную систему с ядром Linux 32 или 64- битным.

3.4. Требования к информационной и программной совместимости

3.4.1. Требования к информационным структурам и методам решения

3.4.2. Требования к исходным кодам и языкам программирования

При создании программы должен быть использован язык программирования Java.

3.4.3. Требования к программным средствам, используемым программой

Системные программные средства, используемые программой, должны быть представлены  локализованной версией операционной системы с ядром Linux, 32 или 64-битным.

3.4.4. Требования к защите информации и программ

Требования к защите информации и программ не предъявляются.

3.5. Специальные требования

4. Требования к программной документации

4.1. Предварительный состав программной документации

Состав программной документации должен включать в себя: 
4.1.1. техническое задание;
4.1.2. программу и методики испытаний;
4.1.3. руководство оператора;

5. Технико-экономические показатели

5.1. Экономические преимущества разработки

Ориентировочная экономическая эффективность не рассчитываются. Аналогия не проводится ввиду уникальности предъявляемых требований к разработке.

6. Стадии и этапы разработки

6.1. Стадии разработки

Разработка должна быть проведена в три стадии: 
1. разработка технического задания; 
2. рабочее проектирование; 
3. внедрение.

6.2. Этапы разработки

На стадии разработки технического задания должен быть выполнен этап разработки, согласования и утверждения настоящего технического задания. 
На стадии рабочего проектирования должны быть выполнены перечисленные ниже этапы работ:
1. разработка программы; 
2. разработка программной документации; 
3. испытания программы.
На стадии внедрения должен быть выполнен этап разработки подготовка и передача программы.

6.3. Содержание работ по этапам

На этапе разработки технического задания должны быть выполнены перечисленные ниже работы: 
1. постановка задачи; 
2. определение и уточнение требований к техническим средствам; 
3. определение требований к программе;
4. определение стадий, этапов и сроков разработки программы и документации на неё; 
5. согласование и утверждение технического задания. 
На этапе разработки программы должна быть выполнена работа по программированию (кодированию) и отладке программы. 
На этапе разработки программной документации должна быть выполнена разработка программных документов в соответствии с требованиями к составу документации. 
На этапе испытаний программы должны быть выполнены перечисленные ниже виды работ: 
1. разработка, согласование и утверждение и методики испытаний; 
2. проведение приемо-сдаточных испытаний; 
3. корректировка программы и программной документации по результатам испытаний. 
На этапе подготовки и передачи программы должна быть выполнена работа по подготовке и передаче программы и программной документации в эксплуатацию на объектах Заказчика.

7. Порядок контроля и приемки

7.1. Виды испытаний

Приемо-сдаточные испытания должны проводиться на объекте Заказчика в оговоренные сроки. 
Приемо-сдаточные испытания программы должны проводиться согласно разработанной Исполнителем и согласованной Заказчиком Программы и методик испытаний. 
Ход проведения приемо-сдаточных испытаний Заказчик и Исполнитель документируют в Протоколе проведения испытаний

7.2. Общие требования к приемке работы

На основании Протокола проведения испытаний Исполнитель совместно с Заказчиком подписывает Акт приемки-сдачи программы в эксплуатацию

Приложение 1. Список ключевых слов

Ключевые слова перечислены ниже в четырех списках. Слова с отметкой structure должны подсвечиваться как ключевые слова C++, описывающие структуры. Слова с отметкой type должны подсвечиваться как ключевые слова C++, описывающие типы данных. Слова без специальных отметок должны подсвечиваться как ключевые слова C++, описывающие определения.

1. Ключевые слова, специфичные для модели:

CPPTESK_MODEL (structure)
MODEL (structure)
CPPTESK_DECLARE_IFACE
DECLARE_IFACE
CPPTESK_DECLARE_INPUT
DECLARE_INPUT
CPPTESK_DECLARE_OUTPUT 
DECLARE_OUTPUT
CPPTESK_ADD_IFACE
ADD_IFACE
CPPTESK_ADD_INPUT
ADD_INPUT
CPPTESK_ADD_OUTPUT
ADD_OUTPUT
CPPTESK_CAPTURE_IFACE
CAPTURE_IFACE
CPPTESK_RELEASE_IFACE
RELEASE_IFACE
CPPTESK_DECLARE_PROCESS
DECLARE_PROCESS
CPPTESK_DEFINE_PROCESS
DEFINE_PROCESS
CPPTESK_DECLARE_STIMULUS
DECLARE_STIMULUS
CPPTESK_DEFINE_STIMULUS
DEFINE_STIMULUS
CPPTESK_DECLARE_PRECONDITION
DECLARE_PRECONDITION
CPPTESK_DEFINE_PRECONDITION
DEFINE_PRECONDITION
CPPTESK_DECLARE_STIMULUS_WITH_PRE
DECLARE_STIMULUS_WITH_PRE
CPPTESK_DECLARE_REACTION
DECLARE_REACTION
CPPTESK_DEFINE_REACTION
DEFINE_REACTION
CPPTESK_GET_PROCESS
GET_PROCESS
CPPTESK_GET_IFACE
GET_IFACE
CPPTESK_GET_MESSAGE
GET_MESSAGE
CPPTESK_CAST_MESSAGE
CAST_MESSAGE
CPPTESK_CONST_CAST_MESSAGE
CONST_CAST_MESSAGE
CPPTESK_MESSAGE  (structure)
MESSAGE  (structure)
CPPTESK_DECLARE_FIELD
DECLARE_FIELD
CPPTESK_DECLARE_MASKED_FIELD
DECLARE_MASKED_FIELD
CPPTESK_DECLARE_BIT
DECLARE_BIT
CPPTESK_ADD_FIELD
ADD_FIELD
CPPTESK_CYCLE
CYCLE
CPPTESK_DELAY
DELAY
CPPTESK_WAIT
WAIT
CPPTESK_WAIT_TIMEOUT
WAIT_TIMEOUT
CPPTESK_SET_REACTION_TIMEOUT
SET_REACTION_TIMEOUT
CPPTESK_GET_PRIORITY
GET_PRIORITY
CPPTESK_SET_PRIORITY
SET_PRIORITY
CPPTESK_START
START
CPPTESK_START_PROCESS
START_PROCESS
CPPTESK_START_STIMULUS
START_STIMULUS
CPPTESK_START_REACTION
START_REACTION
CPPTESK_STOP
STOP
CPPTESK_STOP_PROCESS
STOP_PROCESS
CPPTESK_STOP_STIMULUS
STOP_STIMULUS
CPPTESK_STOP_REACTION
STOP_REACTION
CPPTESK_SEND_REACTION
SEND_REACTION
CPPTESK_RECV_STIMULUS
RECV_STIMULUS
CPPTESK_CALL_PROCESS
CALL_PROCESS
CPPTESK_CALL_OUTPUT_LISTENER
CALL_OUTPUT_LISTENER

2. Ключевые слова, специфичные для адаптера модели:

CPPTESK_ADAPTER  (structure)
ADAPTER  (structure)
CPPTESK_MEDIA  (structure)
MEDIA  (structure)
CPPTESK_VERITOOL_ADAPTER  (structure)
VERITOOL_ADAPTER  (structure)
CPPTESK_VERITOOL_MEDIA  (structure)
VERITOOL_MEDIA  (structure)
CPPTESK_SET_INPUT_ADAPTER
SET_INPUT_ADAPTER
CPPTESK_SET_OUTPUT_ADAPTER
SET_OUTPUT_ADAPTER
CPPTESK_DECLARE_ARBITER
DECLARE_ARBITER
CPPTESK_SET_ARBITER
SET_ARBITER
CPPTESK_FIFO_ARBITER (type)
FIFO_ARBITER (type)
CPPTESK_PRIORITY_ARBITER (type)
PRIORITY_ARBITER (type)
CPPTESK_DEFINE_BASIC_OUTPUT_LISTENER
DEFINE_BASIC_OUTPUT_LISTENER
CPPTESK_WAIT_REACTION
WAIT_REACTION
CPPTESK_NEXT_REACTION
NEXT_REACTION

3. Ключевые слова, специфичные для сценариев тестирования:

CPPTESK_SCENARIO (structure)
SCENARIO (structure)
CPPTESK_ADD_SCENARIO_METHOD
ADD_SCENARIO_METHOD
CPPTESK_ITERATION_BEGIN
ITERATION_BEGIN
IBEGIN
CPPTESK_ITERATION_END
ITERATION_END
IEND
CPPTESK_ITERATION_VARIABLE
ITERATION_VARIABLE
IVAR
CPPTESK_ITERATION_ACTION
ITERATION_ACTION
IACTION
CPPTESK_ITERATION_YIELD
ITERATION_YIELD
YIELD

4. Ключевые слова, специфичные для описания покрытия:

CPPTESK_DEFINE_ENUMERATED_COVERAGE
DEFINE_ENUMERATED_COVERAGE
ENUM_COV
CPPTESK_DEFINE_ALIAS_COVERAGE
DEFINE_ALIAS_COVERAGE
ALIAS_COV
CPPTESK_DEFINE_COMPOSED_COVERAGE
DEFINE_COMPOSED_COVERAGE
COMP_COV
CPPTESK_DEFINE_COMPOSED_COVERAGE_EXCLUDING
DEFINE_COMPOSED_COVERAGE_EXCLUDING
COMP_COV_EXCL

Приложение 2. Команды компиляции и линковки

RTL_DIR - каталог с HDL-файлами
DUT_RTL - тестируемые HDL-файлы
DUT_BENCH - файлы связки HDL и C++
DUT_MODEL - файлы тестовой системы на С++TESK

DUT_V         = $(DUT_RTL:%.v=target/%.v) $(DUT_BENCH:%.v=tests/src/verilog/%.v)
DUT_VVP       = dut.vvp
DUT_VPI       = dut.vpi
DUT_CPP       = $(DUT_MODEL:%.cpp=tests/src/%.cpp)
DUT_CPP_O     = $(DUT_MODEL:%.cpp=tests/src/%.o)
DUT_CPP_D     = $(DUT_MODEL:%.cpp=tests/src/%.d)
DUT_O         = $(DUT_CPP_O)
DUT_D         = $(DUT_CPP_D)
DUT_A         = libdut.a

CC           = gcc
CXX          = g++

DEFINE = -DATL_CLONE_DISABLE -DCPPTESK_SHORT_SHORT_NAMES -DCPPTESK_SCENARIO_NON_VIRTUAL_BASE
DEBUG   = -g3 -Wall -Wextra
RELEASE    =
AR           = ar r
RM           = rm -rf

all: $(DUT_A) $(DUT_VVP) $(DUT_VPI)

$(DUT_CPP_D):%.d:
	@set -e; $(CC) -MM $(CFLAGS) $*.cpp > $@
	@echo "$*.cpp_d $(*CPP_D)/`cat $@`" > $@

%.o: %.cpp
	$(CXX) $(CFLAGS) -c $< -o $@

$(DUT_A): $(DUT_O)
	$(AR) $@ $(DUT_O)
	ranlib $@

INCLUDE = -Itests/include -Itests/src/model -Itests/src/scenarios -Itests/src/vpi -I$(CPPTESK_HOME)/include \
          -I$(VERITOOL_HOME)/include -I$(ICARUS_HOME)/include/iverilog

CFLAGS  = $(DEFINE) $(INCLUDE) $(DEBUG) $(RELEASE)

LDFLAGS = -L. -L$(VERITOOL_HOME)/lib -L$(ICARUS_HOME)/lib -L$(CPPTESK_HOME)/lib \
          -ldut -lcpptesk-toolkit -lveritool -lveriuser -lvpi -lgcov -lpthread

$(DUT_VVP): $(DUT_V)
	$(ICARUS_HOME)/bin/iverilog $^ -o $@ -I$(RTL_DIR)

$(DUT_VPI): $(DUT_O)
	$(CXX) -o $@ -shared $(DUT_O) $(LDFLAGS)

$(DUT_TESTS): $(DUT_A) $(DUT_VVP) $(DUT_VPI)
	$(ICARUS_HOME)/bin/vvp -M. -mdut $(DUT_VVP) +scen=$@ +argv="$(TEST_ARGV)"
Приложение 3. Команды запуска генератора отчетов

rm -rf report && $(CPPTESK_HOME)/bin/report.sh --dest=report testbench.utt2 && $(HTML_BROWSER) 2>/dev/null report/index.html &