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

Содержание

Слайд 2

Проектная команда

Проектная команда

Слайд 3

Проектная команда

Проектная команда

Слайд 4

Цель проекта Выработка технических решений и разработка компонента сбора для мониторинга состояния жесткого диска

Цель проекта

Выработка технических решений и разработка компонента сбора для мониторинга состояния

жесткого диска
Слайд 5

Задачи проекта Аналитическое изучение рынка подобных продуктов; Разработка интерфейса настройки компонента

Задачи проекта

Аналитическое изучение рынка подобных продуктов;
Разработка интерфейса настройки компонента сбора;
Разработка интерфейса

управления данными, собранными во время мониторинга.
Слайд 6

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

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

решения задач проекта

Операционная система Astra Linux Se (OC opensourse);
Библиотеки Qt (различных версий);
Языки программирования: SQL, C++.

Слайд 7

Ожидаемые результаты проекта Теоретический отчёт по изучению рынка продуктов сбора информации;

Ожидаемые результаты проекта

Теоретический отчёт по изучению рынка продуктов сбора информации;
Интерфейсы управления

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

МБОУ СШ №74 является базовой школой для ФНПЦ АО «НПО «Марс».

МБОУ СШ №74 является базовой школой для ФНПЦ АО «НПО

«Марс».
На территории школы проходили часто встречи с сотрудниками и руководителями НПО «Марс».
На таких встречах много говорилось о том, какую продукцию, какие автоматизированные системы разрабатывает предприятие.
Во время таких встреч для меня возникали вопросы «А как создаются такие документы, по каким нормативам они разрабатываются, по каким методам и приёмы при этом применяются?»
Слайд 9

Эти вопросы для меня стали очень актуальными. Я постоянно о них

Эти вопросы для меня стали очень актуальными. Я постоянно о

них задумывался.
В планах сотрудничества предприятия и школы были организован кружок по тематике «Интеллектуальное проектирование». Я стал участником этого кружка.
Во время занятий мне предложили поучаствовать в проекте «Проектирование компонента сбора статистики о функциональности баз данных»
Слайд 10

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

Цель моей работы

Изучить и исследовать процессы проектирования программных продуктов на

составе проектной команды.
Слайд 11

Мои задачи 1. Познакомиться с составом проектной программы для разработки ПКССФ,

Мои задачи

1. Познакомиться с составом проектной программы для разработки ПКССФ, целями

и задачами этой проектной команды;
2. Исследовать сам процесс создания такой ПКССФ;
3. Изучить методы и приёмы программирования на языке C++ и SQL;
4. Изучить концепцию созданию баз данных и инструменты для работы с базами данных;
5. Исследовать факторы риска, влияющие на ход проектирования ПКССФ и разработать предложение по уменьшению и исключению рисков;
6. Разработать программную документацию ПКССФ в составе проектной команды.
Слайд 12

Когда я искал информацию о том, как оформляются такие проекты, я

Когда я искал информацию о том, как оформляются такие проекты,

я нашёл множество стандартов (ГОСТ-ов). Увидев всё это, я был сильно удивлён.
Слайд 13

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

Обзор программ сбора статистической информации

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

статистическими данными.
Слайд 14

Система управления базами данных PostgreSQL

Система управления базами данных

PostgreSQL

Слайд 15

Функции могут писаться с использованием одного из следующих языков: 1. Встроенный

Функции могут писаться с использованием одного из следующих языков:
1. Встроенный процедурный

язык PL/pgSQL, во многом
аналогичный языку PL/SQL, используемому в СУБД Oracle.
2. Скриптовые языки — PL/Lua, PL/LOLCODE, PL/Perl, PL/PHP,
PL/Python, PL/Ruby, PL/sh, PL/Tcl, PL/Scheme, PL/v8
(Javascript).
3. Классические языки — C, C++, Java (через модуль PL/Java).
4. Статистический язык R (через модуль PL/R).

PostgreSQL

Слайд 16

PostgreSQL допускает использование функций, возвращающих набор записей, который далее можно использовать

PostgreSQL допускает использование функций, возвращающих набор записей, который далее можно

использовать так же, как и результат выполнения обычного запроса.

PostgreSQL

Слайд 17

Функции являются блоками кода, исполняемыми на сервере, а не на клиенте

Функции являются блоками кода, исполняемыми на сервере, а не на

клиенте БД. Хотя они могут писаться на чистом SQL, реализация дополнительной логики, например, условных переходов и циклов, выходит за рамки SQL и требует использования некоторых языковых расширений.

PostgreSQL

Слайд 18

Okmeter отследит неочевидные проблемы — ошибки конфигурации сетевых сервисов, из-за которых

Okmeter отследит неочевидные проблемы — ошибки конфигурации сетевых сервисов, из-за

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

OKMeter Direct

Слайд 19

POWA предназначена для сбора и удобного просмотра данных о том, как

POWA предназначена для сбора и удобного просмотра данных о том,

как работает PostgreSQL (общая производительность сервера, самые медленные запросы, самые частые запросы).

POWA

Слайд 20

Выявление лучшей программы по сбору статистики о функциональности БД

Выявление лучшей программы по сбору статистики о функциональности БД

Слайд 21

Одним из процессов разработки ПО является «Анализ рисков»

Одним из процессов разработки ПО
является «Анализ рисков»

Слайд 22

Расчёт рисков для устранения потери данных В настоящее время программная инженерия

Расчёт рисков для устранения
потери данных

В настоящее время

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

На основе изучения «ГОСТ Р ИСО/МЭК 12207-99 Информационная технология. Процессы жизненного


На основе изучения «ГОСТ Р ИСО/МЭК 12207-99 Информационная технология.

Процессы жизненного цикла программных средств» были выявлены основные процессы разработки программного обеспечения:
1. Определение и анализ требований.
2. Проектирование программного обеспечения.
3. Программирование.
4. Тестирование программного обеспечения.
Слайд 24

Риски, возникающие при проектировании Сложность архитектуры программного обеспечения; 2. Неудобный пользовательский

Риски, возникающие при проектировании

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

структура базы данных;
4. Неоптимальный выбор структур данных;
5. Неоптимальный выбор языка программирования.
Слайд 25

Риски, возникающие при программировании Изобретение «велосипеда»; Нечитаемый код; Создание программных закладок; Нерегулярное резервное копирование кода.

Риски, возникающие при программировании

Изобретение «велосипеда»;
Нечитаемый код;
Создание программных закладок;
Нерегулярное резервное копирование

кода.
Слайд 26

Риски, возникающие при тестировании Риски плохого взаимодействия между заказчиком и исполнителем;

Риски, возникающие при тестировании

Риски плохого взаимодействия между заказчиком и исполнителем;
Риски планирования;
3.

Риск появления новых требований;
4. Риски использования нестабильных технологий;
5. Риски, связанные с неспособностью справиться со сложностью проекта;
6. Риск смены сотрудников;
7. Риски финансовых ограничений.
Слайд 27

Компонент сбора статистики о функциональности баз данных

Компонент сбора статистики о функциональности
баз данных

Слайд 28

Слайд 29

#include "database.h“ DataBase::DataBase(QObject *parent): QObject(parent) { } DataBase::~DataBase { } bool

#include "database.h“
DataBase::DataBase(QObject *parent):
QObject(parent) { }
DataBase::~DataBase { }
bool DataBase::openDataBase(QString dbname)
db =

QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName(dbname);
db.setUserName("kol9mba_user");
db.setPassword("123");

Окно 1. Файл cpp

Слайд 30

#include "database.h“ (Строка означает, что в исходную программу добавляется содержимое файла

#include "database.h“
(Строка означает, что в исходную программу добавляется содержимое файла с

именем DATABASE.H)
DataBase::DataBase(QObject *parent):
(Программа создает объект с объектом-родителем «parent»)
QObject(parent) { }
(QObject является узлом в Qobject(parent). Qobject – дочерний узел. Все дочерние узлы управляются памятью родителем (QObject(parent))
DataBase::~DataBase { }
(Программа уничтожает объект, удаляя все его дочерние объекты. Все связи сигналов объекта автоматически разрываются)
Слайд 31

bool DataBase::openDataBase(QString dbname) (Строка означает, что программа открывает базу данных, а

bool DataBase::openDataBase(QString dbname)
(Строка означает, что программа открывает базу данных, а Qstring

dbname – это имя данной базы данных) db = QSqlDatabase::addDatabase("QPSQL");
(Класс QSqlDatabase представляет подключение к базе данных) db.setHostName("localhost");
db.setDatabaseName(dbname);
db.setUserName("kol9mba_user");
db.setPassword("123");
(Строка показывает, что программа у её пользователя запрашивает пароль. Пароль: 123)
Слайд 32

if(db.open()){ return true; } else { return false; }} void DataBase::closeDataBase()

if(db.open()){
return true;
} else {
return false;
}} void

DataBase::closeDataBase()
{db.close;
//db = QSqlDatabase;
QString qs;
{ qs.append(QSqlDatabase::database().connectionName);
} QSqlDatabase::removeDatabase(qs);}

Окно 1. Файл cpp (Продолжение)

Слайд 33

#ifndef DATABASE_H #define DATABASE_H #include #include #include #include #include #include #include

#ifndef DATABASE_H
#define DATABASE_H
#include
#include
#include
#include
#include
#include
#include
#define DATABASE_HOSTNAME

"ExampleDataBase"
#define DATABASE_NAME "DataBase.db"

Окно 1. Файл h

Слайд 34

class DataBase : public QObject { Q_OBJECT public: explicit DataBase(QObject *parent

class DataBase : public QObject
{ Q_OBJECT
public:
explicit DataBase(QObject *parent = 0);
~DataBase;
bool

openDataBase(QString dbname);
bool inserIntoTable(const QVariantList &data);
void closeDataBase;
private: QSqlDatabase db;
private: bool restoreDataBase;
bool createTable; };
#endif // DATABASE_H

Окно 1. Файл h (Продолжение)

Слайд 35

#include "secondwindow.h" #include "ui_secondwindow.h" SecondWindow::SecondWindow(QWidget *parent) : QDialog(parent), ui(new Ui::SecondWindow) {

#include "secondwindow.h"
#include "ui_secondwindow.h"
SecondWindow::SecondWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::SecondWindow)
{
//db = new DataBase();
//db->openDataBase("postgres");

ui->setupUi(this);
model = new QSqlQueryModel(this);
ui->tableView2->setModel(model);
}

Окно 2. Файл cpp

Слайд 36

SecondWindow::~SecondWindow() { delete ui; } void SecondWindow::setupModel(QString strText) { // db->openDataBase(strText);

SecondWindow::~SecondWindow()
{ delete ui;
} void SecondWindow::setupModel(QString strText)
{ // db->openDataBase(strText);
model->setQuery("SELECT count(*) FROM

information_schema.tables WHERE table_schema NOT IN ('information_schema','pg_catalog');");
//model->setQuery("select usename from pg_stat_activity where datname='';");
//model->setHeaderData(0,Qt::Horizontal,strText);
//model->setHeaderData(1,Qt::Horizontal,"rrr");
}

Окно 2. Файл cpp (Продолжение)

Слайд 37

void SecondWindow::createUI() { //ui->tableView2->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); //ui->tableView2->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); } QString SecondWindow::textindex(QString strText)

void SecondWindow::createUI()
{
//ui->tableView2->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
//ui->tableView2->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
}
QString SecondWindow::textindex(QString strText)
{
setupModel(strText);
createUI();
return

strText;
}

Окно 2. Файл cpp

Слайд 38

#ifndef SECONDWINDOW_H #define SECONDWINDOW_H #include #include #include "database.h" #include "mainwindow.h" namespace

#ifndef SECONDWINDOW_H
#define SECONDWINDOW_H
#include
#include
#include "database.h"
#include "mainwindow.h"
namespace Ui {
class SecondWindow;
} private:
void

setupModel(QString strText);
void createUI();
}; #endif // SECONDWINDOW_H

Окно 2. Файл h

Слайд 39

#include "mainwindow.h" #include int main(int argc, char *argv[]) { QApplication a(argc,

#include "mainwindow.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow

w;
w.show();
return a.exec();
}

Окно main

Слайд 40

# Project created by QtCreator 2019-11-23T17:44:29 #-- QT += core gui


# Project created by QtCreator 2019-11-23T17:44:29
#-- QT += core gui sql
greaterThan(QT_MAJOR_VERSION,

4): QT += widgets
TARGET = DataBase TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \ main.cpp \ mainwindow.cpp \
database.cpp \ secondwindow.cpp
HEADERS += \ mainwindow.h \
database.h \ secondwindow.h
FORMS += \ mainwindow.ui \
secondwindow.ui

Окно pro

Слайд 41

Слайд 42

Реализация поставленной цели позволила получить следующие результаты: 1. Создал схематичное представление

Реализация поставленной цели позволила получить следующие результаты: 1. Создал схематичное представление

алгоритма программы; 2. Исследовал и изучил процесс разработки простых и составных форм для ввода, редактирования и просмотра данных; 3. Исследовал и изучил процесс разработки дизайна, позволяющего производить поиск и представлять результаты; 4. Исследовал и изучил процесс разработки запросов на языке SQL на выборку данных, запросов на выполнение различных действий.

Заключение

Слайд 43

На основе исходных данных проектной команды от ФНПЦ АО «НПО «Марс»»

На основе исходных данных проектной команды от ФНПЦ АО «НПО

«Марс»» был частично спроектирован пользовательский компонент сбора статистики,
позволяющий проводить мониторинг жесткого диска и его компонентов, с использованием
кроссплатформенного инструментария QT Creator
и среды PostgreSQL с её языком SQL. Ur.
B теоретической части моего проекта рассмотрены основы разработки автоматизированной
информационной системы: процесс создания, проектирования, реализации различных классов при разработке приложения с использованием библиотек для языка SQL.
B практической части моего проекта подробно рассмотрены некоторые этапы разработки клиентского приложения с использованием программ QT Creator и PostgreSQL.
Слайд 44

Данный отчет не является конечным продуктом. Готовый проект будет позволять пользователям


Данный отчет не является конечным продуктом.
Готовый проект будет позволять пользователям

заблаговременно запланировать перераспределение ресурсов на основе результатов мониторинга, а также снизит затраты времени на поиск и обработку большого количества разнородных данных.