реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Блок-схема алгоритма (MFC application), Заказчик хочет...
Genadi Zawidowsk...
сообщение Aug 5 2011, 17:55
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Есть проект - обычное win32 mfc, dialog based. Отображает некий техпроцесс - используются own draw контролы, часть обмена с компортом...
СОбственно, заказчик захотел блок-схему алгоритма. Есть некоторая растеряность (кто не знает - в проекте куча файлов, обеспечивающих "игру по правилам" применённого фреймворка, собственно отображалкпа - это процентов десять от объёма текст).
Как может выглядеть "блок-схема алгоритма" таких событийно-управляемых приложений?
ps: c MFC начал работать ещё в 1995-м году. Опыт работы программистом более 25 лет.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 5 2011, 19:04
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



[Ожидание события] <--> [обработка события] sm.gif
"Обработку" можно конкретизировать, типа "нажатие кнопки ВЫХОД", приход пакета из последовательного порта...


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
=AK=
сообщение Aug 6 2011, 12:52
Сообщение #3


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Genadi Zawidowski @ Aug 6 2011, 03:25) *
Как может выглядеть "блок-схема алгоритма" таких событийно-управляемых приложений?


Дракон-диаграмма

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
V_G
сообщение Aug 6 2011, 15:07
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Я бы сделал блок-схему с тучей входов (на каждое событие). Зато очень легко на листы разбивать. Отдельно - блок-схема программы приема и разбора принятых посылок (она у меня в отдельном процессе, и после проверки целостности посылки рассылает сообщения специализированным окнам для дальнейшей обработки)
Go to the top of the page
 
+Quote Post
Andrew2000
сообщение Aug 8 2011, 10:50
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675



Цитата(Genadi Zawidowski @ Aug 5 2011, 21:55) *
Как может выглядеть "блок-схема алгоритма" таких событийно-управляемых приложений?

UML - Unified Modeling Language
В UML используются следующие виды диаграмм:
- Диаграмма классов
- Диаграмма компонентов (файлы, библиотеки, модули)
- Диаграмма деятельности (отдаленным аналогом являются схемы алгоритмов по ГОСТ 19.701-90)
- ... и еще много чего...

рисовалки: Dia, MS Visio, NetBeans+UML plugin, Umbrello (Linux), ....
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 9 2011, 05:14
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(Andrew2000 @ Aug 8 2011, 14:50) *
UML - Unified Modeling Language
...

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

Код
// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CIndicdDlg::OnQueryDragIcon()
{
    return (HCURSOR) m_hIcon;
}


или такое:

Код
// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CIndicdDlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting

        SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;

        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialog::OnPaint();
    }
}
Go to the top of the page
 
+Quote Post
V_G
сообщение Aug 9 2011, 06:00
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Такие функции и обработки системных событий я бы нарисовал одним большим квадратиком с надписью типа "Системные функции, автоматически генерируемые средой программирования". Иначе придется рисовать блок-схему Windows, MFC, и не дай бог, Net Framework. Заказчик обязан хотеть блок-схему ВАШЕГО алгоритма, а не блок-схему алгоритма Windows. За последней пусть обращается в Микрософт, ему нарисуют...
Go to the top of the page
 
+Quote Post
Flexz
сообщение Aug 9 2011, 06:28
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Программа решает одну или несколько задач связанных с неким тех-процессом, так? Вот и нарисуйте алгоритмы решения этих задач. А делать схему алгоритма всей программы вместе с GUI дело неблагодарное, все равно в таком монстре черт ногу сломит.
Еще у нас последнее время более популярно словесное описание алгоритмов работы: режимы работы, списки возможных воздействий, реакции системы, результаты - эдакое ТЗ преросток. Такое легко составлять вместе с заказчиком еще на начальных этапах работы и поддерживать в разы проще чем схемы.

PS а схемы алгоритмов заказчику вообще зачем? Часом не просто в архив положить? Если так, то все решается банальной отпиской - нарисовать что-то близкое к реальности и по госту, все довольны.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 9 2011, 07:06
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Теперь понятно, отчего горе? Именно _весь_ _код_ _должен_ _быть_ _документированы_.
Блок-схемой алгоритма...
Скорее всего, в архив. Как образец показали алгоритм embedded программы, работающей на PIC (байт 800 кода как результат трансляции "С"). Вот там рисунок алгоритма есть, есть обширное словесное описание.
А то, что в виндовой части 90% это обслуживающая часть, не имеющая отношения к работе программы...
Цитата
Программа решает одну или несколько задач связанных с неким тех-процессом, так?
Один контрол самописный и работа с com-портом + конфигурационный диалог без самодеятельности.

Ну это так... вопль с тоски.
Спасибо за помощь.

Конкретнее - кто-нибудь документировал служебные функции MFC?

Сообщение отредактировал Genadi Zawidowski - Aug 9 2011, 07:14
Go to the top of the page
 
+Quote Post
V_G
сообщение Aug 9 2011, 07:14
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(Genadi Zawidowski @ Aug 9 2011, 18:06) *
Конкретнее - кто-нибудь документировал служебные функции MFC?

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

Сообщение отредактировал V_G - Aug 9 2011, 07:17
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 9 2011, 07:19
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(Flexz @ Aug 9 2011, 10:28) *
PS а схемы алгоритмов заказчику вообще зачем? Часом не просто в архив положить? Если так, то все решается банальной отпиской - нарисовать что-то близкое к реальности и по госту, все довольны.

Не нулевое время требуется. Что интересно, это оказалось единственным перпятствием к завершению работ. Так же выяснилось, что _все_ делают полные алгоритмы, один я такой... Вот и взвешиваю - не послать ли.
Заказчик обладает некоторым опытом программирования.

Сообщение отредактировал Genadi Zawidowski - Aug 9 2011, 07:24
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 00:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01422 секунд с 7
ELECTRONIX ©2004-2016