МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)
________________________________________
Факультет Инфокоммуникационных сетей и систем Кафедра Программной инженерии и вычислительной техники
Отчет по производственной практике
Предприятие: ООО «НТЦ Севентест»
Период прохождения практики: 28.06.21 – 15.07.21
Выполнил Коваленко Леонид Александрович, ИКПИ-84
(Ф.И.О., № группы)
Подпись студента_____________________
Руководитель практики от базы практики:
_____________________________________
(Ф.И.О., Подпись)
Оценка ______________________________
Руководитель практики от кафедры:
_____________________________________
(кафедра, Ф.И.О.)
_____________________________________
(Подпись)
Санкт-Петербург
2021
СОДЕРЖАНИЕ
Введение......................................................................................................... |
3 |
Задания на производственную практику .................................................... |
3 |
Выполнение заданий..................................................................................... |
4 |
Первое задание .......................................................................................... |
4 |
Второе задание ........................................................................................ |
12 |
Дневник производственной практики....................................................... |
38 |
Заключение .................................................................................................. |
39 |
Список литературы ..................................................................................... |
39 |
2
ВВЕДЕНИЕ Производственная практика — практическая часть учебного процесса
подготовки квалифицированных рабочих и специалистов, проходящая, как правило, на различных предприятиях в условиях реального производства. Является заключительной частью учебной практики, проходящей в учебном заведении. Во время производственной практики происходит закрепление и конкретизация результатов теоретического учебно-практического обучения, приобретение студентами умения и навыков практической работы по присваиваемой квалификации и избранной специальности или профессии.
Перенос учебного процесса в условия, максимально схожие с обстановкой будущей профессиональной деятельностью студента, – обязательный этап на пути получения высшего образования, обусловленный требованиями госстандартов и регламентированный приказом Минобразования и науки РФ № 1383.
ЗАДАНИЯ НА ПРОИЗВОДСТВЕННУЮ ПРАКТИКУ
1.Разработать клиент-серверное приложение с помощью CORBA.
2.Разработать библиотеку для парсинга файлов выписки плана нумерации ФАС.
3
ВЫПОЛНЕНИЕ ЗАДАНИЙ Первое задание
IDL — декларативный язык для формального описания интерфейсов взаимодействия клиентов и серверов в распределенных приложениях. IDL не привязан к какому-либо языку программирования, но для большинства современных языков программирования существуют спецификации,
определяющие правила трансляции конструкций IDL в конструкции этих языков.
Описание интерфейса для первого задания представлено в таблице 1.
Таблица 1. Описание интерфейса взаимодействия клиента и сервера
Data.idl
module Data
{
interface ServiceA
{
string HelloWorld(in string message);
boolean Div(in long a, in long b, out long r); void CaesarCipher(inout string str, in short k);
};
};
Конструкция module определяет пространство имен, в котором будут существовать включенные в нее интерфейсы.
Конструкция interface определяет программный интерфейс, с помощью которого объекты общаются друг с другом.
Втеле конструкции interface объявляются операции, которые должен быть способен выполнять сервер по запросу клиента.
Врезультате компиляции будут созданы 2 файла: Data.hh и DataSK.cc.
Они содержат описание интерфейса CServiceA и вспомогательных классов.
Серверная часть проекта состоит из 5 файлов:
1.Server/CServiceA.h и Server/CServiceA.cpp (см. таблицы 2-3) содержат реализацию интерфейса CServiceA — класс CServiceA_i.
2.Server/CServiceARunner.h и Server/CServiceARunner.cpp (см. таблицы 4-
5)содержат класс, используемый для инициализации брокера объектных запросов и запуска сервисов.
3.Server/Server.cpp (см. таблицу 6) описывает работу точки входа.
4
Таблица 2. Файл Server/CServiceA.h Server/CServiceA.h
#ifndef CSERVICEA_H #define CSERVICEA_H
#include "../Data.hh"
class CServiceA_i : public POA_Data::ServiceA,
public PortableServer::RefCountServantBase
{
public: CServiceA_i();
virtual ~CServiceA_i();
virtual char *HelloWorld(const char *) override;
virtual CORBA::Boolean Div(CORBA::Long, CORBA::Long, CORBA::Long &) override; virtual void CaesarCipher(char *&, CORBA::Short) override;
};
#endif // CSERVICEA_H
Таблица 3. Файл Server/CServiceA.cpp Server/CServiceA.cpp
#include "CServiceA.h" #include <cstring> #include <iostream>
CServiceA_i::CServiceA_i()
{
}
CServiceA_i::~CServiceA_i()
{
}
char *CServiceA_i::HelloWorld(const char *)
{
return CORBA::string_dup("Hello, world!");
}
CORBA::Boolean CServiceA_i::Div(CORBA::Long a, CORBA::Long b, CORBA::Long &r)
{
r = 0;
if (b == 0)
{
r = 0;
return false; // error
}
r = a / b;
return true; // success
}
void CServiceA_i::CaesarCipher(char *&str, CORBA::Short k)
{
for (size_t i = 0, size = strlen(str); i < size; ++i)
{
bool lower = ('a' <= str[i] && str[i] <= 'z'); bool upper = ('A' <= str[i] && str[i] <= 'Z'); if (lower || upper)
{
short t = ('a' ^ (upper ? 32 : 0));
str[i] = static_cast<char>((str[i] - t + k) % ('z' - 'a' + 1) + t);
}
}
}
5