Similar presentations:
Проектирование компонента сбора статистики о функциональности баз данных
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.
Данный отчет не является конечным продуктом.Готовый проект будет позволять
пользователям заблаговременно запланировать
перераспределение ресурсов на основе результатов
мониторинга, а также снизит затраты времени на поиск и
обработку большого количества
разнородных данных.