Проектирование компонента сбора статистики о функциональности баз данных
Проектная команда
Проектная команда
PostgreSQL
PostgreSQL
PostgreSQL
PostgreSQL
OKMeter Direct
POWA
Выявление лучшей программы по сбору статистики о функциональности БД
Окно 1. Файл cpp
Окно 1. Файл h
Окно 2. Файл cpp
Окно 2. Файл cpp (Продолжение)
Окно 2. Файл cpp
Окно 2. Файл h
Окно main
Окно pro
Реализация поставленной цели позволила получить следующие результаты: 1. Создал схематичное представление алгоритма программы;
5.53M
Category: programmingprogramming

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

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

Выполнил:
ученик 10 класса А
Долгов Игорь
Руководитель:
Мельниченко А.С.

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

Ф. И. О.
Должность
Результат
Мельниченко А. С.
Куратор проекта от
УлГУ
Куратор проекта от
ФНПЦ АО «НПО
«Марс»
Руководство и консультация
по проекту
Пархоменко М. Ю.
Руководитель
проекта, бригадир,
аналитик и
архитектор,
специалист по базам
данных
Исходные тексты части
программы, структурнофункциональная схема
программы, укрупнённый
алгоритм программы
Родин Николай
Разработчик кода
Исходные коды программ
на языке C++
Федотов Михаил
Разработчик кода
Исходные коды программ
на языке C++
Захаров В. Г.
Руководство и консультация
по проекту

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

Ф. И. О.
Должность
Долгов И. О. Документолог
Результат
1) Сделал
комментарии к
программе;
2) Исследовал
риски при
программирован
ии и
проектировании;
3) Сделал
документацию к
данному проекту;
4) Разобрался в …

4.

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

5.

Задачи проекта
1. Аналитическое
изучение
рынка
подобных продуктов;
2. Разработка
интерфейса
настройки
компонента сбора;
3. Разработка интерфейса управления
данными, собранными во время
мониторинга.

6.

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

7.

Ожидаемые результаты проекта
1. Теоретический отчёт по изучению рынка
продуктов сбора информации;
2. Интерфейсы
управления
разнородными
типами данных;
3. Единый наглядный интерфейс статического
компонента сбора о функциональности баз
данных.

8.

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

9.

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

10.

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

11.

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

12.

Когда я искал информацию о том, как оформляются
такие проекты, я нашёл множество стандартов (ГОСТ-ов).
Увидев всё это, я был сильно удивлён.

13.

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

14. PostgreSQL

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

15. PostgreSQL

Функции могут писаться с использованием одного из
следующих языков:
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).

16. PostgreSQL

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

17. PostgreSQL

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

18. OKMeter Direct

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

19. POWA

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

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

Программы / Функции
и преимущества
1. Создаёт статистику по
полученной
информации из БД
2. Выявляет
неисправности
программы
3. Создаёт статистику
работы программы,
основываясь на эти
неисправности
4. Простая в установке
5. Возможность
добавления своих
метрик
1) OKMeter
2) POWA
+
+
+
+
-
-
+
-
3) ПКСС

21.

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

22.

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

23.

На основе изучения «ГОСТ Р ИСО/МЭК 12207-99
Информационная технология. Процессы жизненного цикла
программных средств» были выявлены основные процессы
разработки программного обеспечения:
1. Определение и анализ требований.
2. Проектирование программного обеспечения.
3. Программирование.
4. Тестирование программного обеспечения.

24.

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

25.

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

26.

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

27.

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

28.

29. Окно 1. Файл cpp

#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");

30.

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

32.

Окно 1. Файл cpp (Продолжение)
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);}

33. Окно 1. Файл h

#ifndef DATABASE_H
#define DATABASE_H
#include <QObject>
#include <QSql>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlDatabase>
#include <QDate>
#include <QDebug>
#define DATABASE_HOSTNAME "ExampleDataBase"
#define DATABASE_NAME
"DataBase.db"

34.

Окно 1. Файл h (Продолжение)
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

35. Окно 2. Файл cpp

#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);
}

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

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");
}

37. Окно 2. Файл cpp

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;
}

38. Окно 2. Файл h

#ifndef SECONDWINDOW_H
#define SECONDWINDOW_H
#include <QDialog>
#include <QSqlQueryModel>
#include "database.h"
#include "mainwindow.h"
namespace Ui {
class SecondWindow;
} private:
void setupModel(QString strText);
void createUI();
}; #endif // SECONDWINDOW_H

39. Окно main

#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

40. Окно pro

# 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

41.

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

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

43.

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

44.

Данный отчет не является конечным продуктом.
Готовый проект будет позволять
пользователям заблаговременно запланировать
перераспределение ресурсов на основе результатов
мониторинга, а также снизит затраты времени на поиск и
обработку большого количества
разнородных данных.
English     Русский Rules