Файл: I. основные сведения о предприятии ооо сах. Ком.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 26.10.2023

Просмотров: 72

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
.

GoogleChrome браузер, разрабатываемый компанией Google на основе свободного браузера Chromium и движка Blink

ГЛАВА II. ОСНОВНАЯ ЧАСТЬ


2.1 Описание индивидуальных заданий по каждой теме программы практики в обобщенном виде

Формирование у обучающихся практического опыта:

—        разработки алгоритма поставленной задачи и реализации его средствами автоматизированного проектирования;

—        разработки кода программного продукта на основе готовой спецификации на уровне модуля;

—        использования инструментальных средств на этапе отладки программного продукта;  проведения тестирования программного модуля по определенному сценарию.

Формирование первичных практических умений:

—        осуществлять разработку кода программного модуля на современных языках программирования;

—        создавать программу по разработанному алгоритму как отдельный модуль;

—        выполнять отладку и тестирование программы на уровне модуля;

—        оформлять документацию на программные средства;

        использовать инструментальные средства для автоматизации оформления документации.

Формирование профессиональных компетенций (ПК) профессиональных компетенций (ПК):

ПК 3.1. Анализировать проектную и техническую документацию на уровне взаимодействия компонент программного обеспечения.

ПК 3.2. Выполнять интеграцию модулей в программную систему.

ПК 3.3. Выполнять отладку программного продукта с использованием специализированных программных средств.

ПК 3.4. Осуществлять разработку тестовых наборов и тестовых сценариев.

ПК 3.5. Производить инспектирование компонент программного продукта на предмет соответствия стандартам кодирования.

ПК 3.6. Разрабатывать технологическую документацию.
Наименование общей компетенции:

ОК 1. Понимать сущность и социальную значимость своей будущей профессии, обладать высокой мотивацией к выполнению профессиональной деятельности.

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



ОК 3. Принимать решения в стандартных и нестандартных ситуациях и нести за них ответственность.

ОК 4. Осуществлять поиск и использование информации, необходимой для эффективного выполнения профессиональных задач, профессионального и личностного развития.

ОК 5. Использовать информационно-коммуникационные технологии в профессиональной деятельности ОК 6 Работать в коллективе и команде, эффективно общаться с коллегами, руководством, потребителями.

ОК 6. Брать на себя ответственность за работу членов команды (подчиненных), результат выполнения заданий.

ОК 7. Самостоятельно определять задачи профессионального и личностного развития, заниматься самообразованием, осознанно планировать повышение квалификации.

ОК 8. Ориентироваться в условиях частой смены технологий в профессиональной деятельности.
2.2 Разработка технического задания на клиент-серверное приложение

Техническое задание


  1. Общие сведения.


1.1. Название организации-заказчика: САХ.ком
1.2. Название продукта разработки (проектирования): «Chat».
1.3. Назначение продукта обеспечивать мгновенную связь двух и нескольких пользователей одновременно посредством передачи небольшого количества информации непосредственно друг другу.
1.4. Плановые сроки начала и окончания работ: Начало работы: 16.08.2022.
Окончание работы: 19.11.2022.


  1. Область применения продукта.


2.1. Процессы и структуры, в которых предполагается использование продукта разработки: посредством интернета данный чат может соединять двух людей в любой точке мира (где есть интернет). Он может применятся для личной переписки двух людей, и для небольшой группы

(предприятие или офис). Количество пользователей определяется техническими характеристиками сервера.
2.2. Характеристика персонала (количество, квалификация, степень готовности): для использования данного продукта требуются минимальные умения работы с ПК.


  1. Требования к продукту разработки


3.1. Требования к продукту в целом: продукт должен представлять с собой Java-приложение с пользовательским интерфейсом, написанное для работы с виртуальной машиной Java.
3.1.1. Минимальные аппаратные требования Клиент:


  • Частота процессора: 1 ГГц;





  • Количество ядер: 1;




  • Разрешение экрана (минимальный размер окна): 400x300;




  • Объем оперативной памяти: 128 Мб.




  • Объём графической памяти 128 Мб




  • Соединение с интернетом.


Сервер:


  • Частота процессора: 1 ГГц;




  • Количество ядер: 2;




  • Разрешение экрана (минимальный размер окна): 300х400 пикселей;




  • Объем оперативной памяти: 512 Мб (можно и ниже, но кол-во пользователей, которых можно будет подключить к серверу, будет ограниченным).




  • Обьем графической памяти 128 Мб.




  • Соединение с интернетом.

3.2. Указание системного программного обеспечения:
Java Runtime Environment 7 или выше;
3.3. Указание программного обеспечения, используемого для реализации:
Eclipse;
3.4. Особенности реализации серверной и клиентской частей: данные передающееся от клиента к серверу и обратно – это пакеты, состоящие из номера пакета и шифрованного массива байтов, при получении дешифруются и преобразуются в примитивные типы данных.
3.4.1. Форматы входных и выходных данных: входные данные – ip сервера и nickname, выходные данные – данные различного формата (текстовые и графические) от сервера (других клиентов).
3.4.2. Источники данных и порядок их ввода в систему (программу), порядок вывода, хранения: при запуске сервера в верхней части экрана отображается ip сервера, по нему происходит подключение клиентов.
3.5. Меры защиты информации: информация передающееся от клиента к серверу и наоборот, шифруется симметричным алгоритмом блочного шифрования “AES”, принятого в качестве стандарта шифрования правительством США в 2001г.


  1. Требования к пользовательскому интерфейсу


4.1. Общая характеристика пользовательского интерфейса: интуитивно-понятный графический интерфейс.
4.2. Размещение информации на экране, дизайн экрана: за пример дизайна брались чаты на популярных ресурсах vk.com, www.twitch.tv.
4.3. Особенности ввода информации пользователем, представление выходных данных: клиент общается посредством текста и графики (смайлы, картинки).
Перечень сопроводительной документации: техническое задание

Для создания клиент-серверного приложения была выбрана
двухуровневая архитектура и объектно-ориентированный язык программирования – Java, для написание всей программы. Вся обработка данных происходит на сервере. Двухуровневая архитектура легко реализуема и не требует каких-либо финансовых вложений.


2.3 Разработка клиент-серверного приложения

2.3.1 Проектирование клиент-серверного приложения

Структурная модель строилась так что даже после релиза можно относительно легко добавлять новый функционал.



Рис. 4 . Структурная модель многопользовательского приложения «Chat»
Взаимодействие серверного интерфейса и клиентов происходит через потокозащищённый HashMap содержащий всю информацию о клиентах.

Наиболее значимыми являются код взаимодействия клиента и сервера. private void Handling() {
while (true) {
try {
Socket client = server.accept();
new ClientHandler(client,KeyAES).start();
//Если клиент успешно установил соединение передаем его обработчику //клиентов, а также ключ которым шифруются данные.
} catch (IOException e1) {
e1.printStackTrace();
}
try {
//после проверки данных в потоке засыпаем на 10 миллисекунд.
Thread.sleep(10);
} catch (InterruptedException e) { e.printStackTrace();
}
}
}
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.security.Key;
import java.security.KeyFactory;
import java.security.spec.X509EncodedKeySpec; import javax.crypto.Cipher;

class ClientHandler extends Thread { //на сервере private final Socket client;
private String name = "Неизвестный";
private String value;
private Cipher decrypter_AES;
private Cipher encrypter_AES;
private Cipher encrypter_RSA;
private Key KeyAES;


public ClientHandler(Socket client, Key KeyAES) { this.client = client;
this.KeyAES = KeyAES;
try {
//создаем фабрики шифрования/расшифровки //алгоритмов
decrypter_AES = Cipher.getInstance("AES");
encrypter_AES = Cipher.getInstance("AES");
encrypter_RSA = Cipher.getInstance("RSA");
encrypter_AES.init(Cipher.ENCRYPT_MODE, KeyAES);
decrypter_AES.init(Cipher.DECRYPT_MODE, KeyAES);
} catch (Exception e) {
System.err.println("Ошибка шифрования");


}
}


@Override
public void run() {

try {
DataInputStream in = new DataInputStream(client.getInputStream()); while (true) {
if (in.available() > 0) { //Если в потоке есть данные читаем их.
short id = in.readShort(); //id пакета


switch (id) { // в зависимости он полученного id создаем класс с реализацией чтения и записи данных данного пакета.

case 1: {
MesPacket M;
int size = in.readInt();
int lenByte = in.readInt();
byte[] b = new byte[lenByte];
in.read(b);
String message = new String (decrypter_AES.doFinal(b)); message = name + " : " + message;

if (size > 0) {
int[][] arrSmil = new int[size][2];
for (int i = 0; i < size; i++) {
arrSmil[i][0] = in.readInt()+3+name.length();
arrSmil[i][1] = in.readInt();
}
M = new MesPacket(encrypter_AES.doFinal(message.getBytes()), arrSmil); } else


  1. = new MesPacket(encrypter_AES.doFinal(message.getBytes())); M.readAll();

break;

}


case 3: {
AuthorizePacket AP =