|
Как описывать архитектуру девайса |
|
|
|
Jun 13 2018, 16:36
|

Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 13-03-12
Из: Украина
Пользователь №: 70 785

|
Добрый день! Такой вопрос, кто как составляет структуру, алгоритмы высокого уровня для своих девайсов? Я вот долго накатывал какие-то узлы, блоки, из которых можно потом сооружать новые девайсы с минимальными доработками. Но доработки постоянно приходилось вносить внушительные. Оказалось, что я ни разу не анализировал все взаимосвязи ни аппаратных, ни программных частей - просто рисовал в тетрадке и по ходу рисовал схему, писал код. Пока оно все в голове помещалось. Сейчас я уже понимаю, чтобы была уверенность в том, что все будет работать правильно, в голову всего набивать не надо, а надо в цифровом виде. Если конкретно, вот полная структурная схема девайса, нарисованная в визио. Компоненты в синем ящике - периферия проца, пакаджи - софтовые модули. Компоненты на свободном поле - участки схемы, в белых ящичках - коннекторы и соответствующие им входные цепи. Входа компонентов обозначены как интерфейсы (кружками), я старался размещать их слева. Например, модуль OutExt имеет процедуру SetOut, которая вызывается из модулей UserIF и Evt, и выдает наружу сигналы через выводы Ch1 и Ch2 и через периферию SPI. Местами путаница, но это промежуточный вариант, т. к. визио показался мне не самым удобным инструментом для даной задачи. Вот я и хочу спросить, кто в каком редакторе составляет такие диаграммы? Может быть, хотя бы для чисто софтовых проектов? На мой взгляд это должен быть UML, пока что только для структуры. За описание процессов я может потом спрошу
--------------------
нет повести печальнее на свете, чем повесть о запавшем ресете
|
|
|
|
|
 |
Ответов
|
Jun 18 2018, 07:31
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 16-06-18
Из: СПб
Пользователь №: 105 099

|
Давайте начнем с нуля. Для начала, вы должны четко представлять, какой осязаемый профит вы хотите (можете) получить от рисования картинок. Иначе это будет рисование ради рисование. То есть: - Что вы потом станете с этими картинками делать
 - Где рисование картинок будет эффективнее других подходов
Например: - Рисование железок на блок-схемах - обычно фиговая идея, потому что в редактарах схем группировку можно сделать быстрее и нагляднее.
- Рисование алгоритмов - фиговая идея, потому что это жутко неудобно
Короче, рисовать надо (полезно) DATA FLOW. То есть, протекание данных и их трансформацию. Данные - это стрелочки с подписями, блоки - куски девайса которые данные трансформируют. Что это нам дает: - Можно быстро добиться, чтобы соединения между блоками были максимально простые
- Проверка целостности - выходы должны генериться на основе входов, а не магически
- Фиксирование API - для каждой "стрелочки" станет понятно, какие данные внутри.
- Документация, если требуется донести суть до кого-то другого
Единственное правило, которому стоит сдедовать - никогда не смешивать данные и события на одной диаграмме. На самом деле, любую (практически) систему можно целиком представить как диаграмму данных или диаграмму событий. Проблема с событиями в том, что их можно по ошибке зациклить или напихать лишних. С данными подобного не случится или будет сразу видно. Например, у нас есть АЦП, с которого 100 раз в секунду снимаются данные. - Рисовать "таймер" - очевидная идея. Но глупая
. Потому что таймер генерирует события, а нам надо рисовать диаграмму данных. - "Правильно" будет просто нарисовать стрелочку, на которой подписать что это данные от АЦП (подробности - по обстоятельствам)
Еще один пример - https://github.com/nodeca/relimit/tree/master/docs#data-flow. Кучерявый распределенный rate limiter, где надо гарантировать отсутствие коллизий. Обратите внимание, на диаграмме нет алгоритмов. Там именно протекание данных. Но по такой диаграмме потом криво закодить невозможно  . Тот случай, когда задача может взорвать мозг, но если проектировать грамотно, то получается очень просто. Обратите внимание - это кажущаяся простота, результат грамотного подхода, а не того что задача плевая. Инструменты: - Для диаграмм использую draw.io, потому что все работы совместные и надо быстро шарить. Кстати, дополнительный стимул, рисовать кратко и только суть
. IMHO редакторы UML для data flow скорее вредны чем полезны, т.к. забивают мозг псевдополезными вещами. - Если задача слишком сложная и в голове совсем вакуум - тогда сначала в mind maps разложить что вообще хочется. Вот это https://coggle.it/ - очень приятная рисовалка, с возможностью делиться ссылками.
Сообщение отредактировал p_v - Jun 18 2018, 07:33
|
|
|
|
|
Jun 18 2018, 08:22
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(p_v @ Jun 18 2018, 10:31)  Инструменты: - Для диаграмм использую draw.io, потому что все работы совместные и надо быстро шарить. Кстати, дополнительный стимул, рисовать кратко и только суть
. IMHO редакторы UML для data flow скорее вредны чем полезны, т.к. забивают мозг псевдополезными вещами. - Если задача слишком сложная и в голове совсем вакуум - тогда сначала в mind maps разложить что вообще хочется. Вот это https://coggle.it/ - очень приятная рисовалка, с возможностью делиться ссылками.
Скажем честно - все эти инструменты просто попытки приблизиться к Visio. Каждый из них решает часть работ которые все может сделать один Visio. Но как видно TC не ставит задачу удешевить тулсы, а хочет красивую многофункциональную презентацию. А поскольку он работает в Excel, то ему удобнее Visio ничего нет, поскольку Excel напрямую может строить диаграммы в Visio на основе своих таблиц.
|
|
|
|
|
Jun 18 2018, 08:53
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 16-06-18
Из: СПб
Пользователь №: 105 099

|
Давайте не будем пытаться устраивать холивар и тем более решать за автора что ему надо. Попытки подогнать задачу под инструмент так же нелепы, как рисование dataflow начиная с таймера. Речь вообще была не об инструментах а о методологии, и какие у рисования бывают сопутствующие задачи. А инструменты каждый выберет сам, исходя из своих потребностей и кругозора.
Сообщение отредактировал p_v - Jun 18 2018, 08:54
|
|
|
|
|
Jun 18 2018, 10:26
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(p_v @ Jun 18 2018, 11:53)  Давайте не будем пытаться устраивать холивар и тем более решать за автора что ему надо. Попытки подогнать задачу под инструмент так же нелепы, как рисование dataflow начиная с таймера. Речь вообще была не об инструментах а о методологии, и какие у рисования бывают сопутствующие задачи. А инструменты каждый выберет сам, исходя из своих потребностей и кругозора. Если вы плохо знаете Visio, то действительно разумно дальше не холиварить. Не забываем, что автор демонстрирует свою работу именно в Visio и не просит чтобы ему дали что-то более примитивное. Но скажу вам по секрету, что это именно Visio открывает глаза на разнообразие способов построения диаграмм. Это тот случай когда инструмент учит технологии. Да все продвинутые инструменты выполняют такую функцию. Не даром тут UML всплыл. Я, кстати, не нашел как применить UML, от слова совсем.
|
|
|
|
|
Jun 18 2018, 10:59
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 16-06-18
Из: СПб
Пользователь №: 105 099

|
Цитата(Hexel @ Jun 13 2018, 19:36)  Вот я и хочу спросить, кто в каком редакторе составляет такие диаграммы? Может быть, хотя бы для чисто софтовых проектов? Цитата(AlexandrY @ Jun 18 2018, 13:26)  Не забываем, что автор демонстрирует свою работу именно в Visio и не просит чтобы ему дали что-то более примитивное. "Шарик, ты балбес" (с) Матроскин. Еще раз прошу не выдавать свое личное мнение за мнение автора, и пытаться представить свои оценки как едиственно верные, тем более за чужой счёт. Общение есть обмен информацией и эмоциями. На техническом форуме информация предпочтительнее. Чего либо полезного по сути вы в своих ответах на мои посты не добавили. Ну а остальное пусть останется на вашей совести.
|
|
|
|
Сообщений в этой теме
Hexel Как описывать архитектуру девайса Jun 13 2018, 16:36 AlexandrY Цитата(Hexel @ Jun 13 2018, 19:36) Компон... Jun 13 2018, 20:18 a123-flex Цитата(Hexel @ Jun 13 2018, 20:36) Такой ... Jun 14 2018, 03:38 AlexandrY Цитата(a123-flex @ Jun 14 2018, 06:3... Jun 14 2018, 06:16  a123-flex Цитата(AlexandrY @ Jun 14 2018, 10:16) Кс... Jun 14 2018, 07:34   AlexandrY Цитата(a123-flex @ Jun 14 2018, 10:3... Jun 14 2018, 07:43    a123-flex Цитата(AlexandrY @ Jun 14 2018, 11:43) Не... Jun 14 2018, 07:58     AlexandrY Цитата(a123-flex @ Jun 14 2018, 10:5... Jun 14 2018, 08:18 Hexel Ексель - хороший вариант, но на данный момент я со... Jun 14 2018, 06:46 a123-flex Цитата(Hexel @ Jun 14 2018, 10:46) Что ка... Jun 14 2018, 06:55 AlexandrY Цитата(Hexel @ Jun 14 2018, 09:46) Что ка... Jun 14 2018, 07:31 one_eight_seven Цитата900 пинов эт когда вы DDR хотите сделать на ... Jun 14 2018, 10:58 AlexandrY Цитата(one_eight_seven @ Jun 14 2018, 13... Jun 14 2018, 11:34 a123-flex Цитата(one_eight_seven @ Jun 14 2018, 14... Jun 14 2018, 12:08 one_eight_seven ЦитатаВ это трудно поверить, но в yed нельзя даже ... Jun 14 2018, 14:37 Hexel one_eight_seven
Нормальная такая штука этот yed. П... Jun 14 2018, 16:18 a123-flex Цитата(Hexel @ Jun 14 2018, 19:18) А что ... Jun 14 2018, 19:04 a123-flex Цитата(p_v @ Jun 18 2018, 10:31) На самом... Jun 20 2018, 10:35  p_v Цитата(a123-flex @ Jun 20 2018, 13:3... Jun 20 2018, 11:10   a123-flex Цитата(p_v @ Jun 20 2018, 14:10) Это из м... Jun 20 2018, 11:38    p_v Цитата(a123-flex @ Jun 20 2018, 14:3... Jun 20 2018, 12:17     a123-flex Цитата(p_v @ Jun 20 2018, 15:17) Да сам н... Jun 20 2018, 12:38     AlexandrY Цитата(p_v @ Jun 20 2018, 15:17) Мне врем... Jun 20 2018, 12:41      p_v Цитата(AlexandrY @ Jun 20 2018, 15:41) Но... Jun 20 2018, 13:21       AlexandrY Цитата(p_v @ Jun 20 2018, 16:21) Просто н... Jun 20 2018, 13:48        p_v Хоссподя... ну вот человек только что с треском об... Jun 20 2018, 14:44    AlexandrY Цитата(a123-flex @ Jun 20 2018, 14:3... Jun 20 2018, 12:24  AlexandrY Цитата(a123-flex @ Jun 20 2018, 13:3... Jun 20 2018, 11:28 one_eight_seven ЦитатаСкажем честно
1. Кто вам дал право определя... Jun 18 2018, 10:28 AlexandrY Цитата(one_eight_seven @ Jun 18 2018, 13... Jun 18 2018, 11:04 p_v Давайте допустим такой вариант, что я могу как мин... Jun 18 2018, 11:30 AlexandrY Цитата(p_v @ Jun 18 2018, 14:30) Давайте ... Jun 18 2018, 12:22  p_v Цитата(AlexandrY @ Jun 18 2018, 15:22) Пр... Jun 18 2018, 13:23   AlexandrY Цитата(p_v @ Jun 18 2018, 16:23) Это ваше... Jun 18 2018, 19:32  a123-flex Цитата(AlexandrY @ Jun 18 2018, 15:22) Ре... Jun 19 2018, 20:33 p_v Теперь пройдемся еще раз по диаграммам. А точнее, ... Jun 18 2018, 15:41 p_v Теперь по инструментам. Лично у меня очень экстрем... Jun 18 2018, 18:13 one_eight_seven Цитатаданном проекте речь о проектировании машины ... Jun 18 2018, 19:55 p_v У ВАС на ВАШИХ задачах - свой опыт. У МЕНЯ на МОИХ... Jun 18 2018, 20:00 AlexandrY Цитата(p_v @ Jun 18 2018, 23:00) Я отвеча... Jun 18 2018, 20:18  p_v Цитата(AlexandrY @ Jun 18 2018, 23:18) А ... Jun 18 2018, 21:02 Hexel сейчас я между прочим пытаюсь применить sybase PD1... Jun 20 2018, 07:04 AlexandrY Цитата(Hexel @ Jun 20 2018, 10:04) сейчас... Jun 20 2018, 08:57 Hexel p_v
Пожалуста, не нужно развивать этот спор. Вы по... Jun 20 2018, 15:37 p_v Цитата(Hexel @ Jun 20 2018, 18:37) ...
Ко... Jun 20 2018, 16:31  a123-flex Цитата(p_v @ Jun 20 2018, 20:31) Когда за... Jun 20 2018, 17:54   p_v Цитата(a123-flex @ Jun 20 2018, 20:5... Jun 20 2018, 18:08    a123-flex Цитата(p_v @ Jun 20 2018, 22:08) Железку,... Jun 20 2018, 18:19     p_v Цитата(a123-flex @ Jun 20 2018, 21:1... Jun 20 2018, 19:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|