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

 
 
> Как спроектировать программу?, В каком виде записать алгоритм
Slash
сообщение Dec 23 2010, 09:35
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011



Здравствуйте!

Пишу программы на языке С для МК небольшие по объему, процесс написания - снизу вверх.
Пишу сумбурно, сначала рождаются отдельные функции, потом из них конструирую основной алгоритм.
Надоело, т.к. это все в муках рождается, забываю что куда откуда. Долго допиливаю, что получилось.
В программе несколько параллельных задач, которые работают по своим событиям - таймерам, внешним прерываниям.

Кто нибудь пишет программы по всем правилам - составление алгоритма, а потом просто его кодирование?
Сколько времени занимает разработка алгоритма, в каком виде его делаете?
Есть какой-нибудь критерий сложности программы, когда пора переходить на RTOS?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
MrYuran
сообщение Dec 23 2010, 10:24
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



У меня получается скорее не по вертикали, а по горизонтали.
Инициализация, далее суперлуп, на который сбоку навешиваются задачи и модули.
Для себя пришёл к выводу, что снизу вверх - всё-таки предпочтительнее для единоличного творчества и небольших проектов.
Главное - чёткое деление на максимально независимые модули и поэтапная разработка с обязательным тестированием каждого пункта.
Чтобы вышестоящие конструкции опирались на надёжный фундамент.
Ну и по мере движения вверх находятся какие-то общности, корректируется структура и т.д.
Плюс обязательное документирование! Хотя бы в тексте.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
vitan
сообщение Dec 23 2010, 10:32
Сообщение #3


не указал(а) ничего о себе.
******

Группа: Свой
Сообщений: 3 325
Регистрация: 6-04-06
Пользователь №: 15 887



Составление алгоритма - это отнюдь не первый этап работы. Еще есть требования, деление на блоки, планирование тестирования... Почитайте что-нибудь на тему RUP или подобное.
Потом все можно моделировать в том же UML. И т.д.
Только нужно четко представлять себе, зачем все это. Самообразование при этом не самая плохая отговорка, удачи!
Go to the top of the page
 
+Quote Post
dxp
сообщение Dec 24 2010, 04:48
Сообщение #4


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Slash @ Dec 23 2010, 18:35) *
Пишу программы на языке С для МК небольшие по объему, процесс написания - снизу вверх.
Пишу сумбурно, сначала рождаются отдельные функции, потом из них конструирую основной алгоритм.
Надоело, т.к. это все в муках рождается, забываю что куда откуда. Долго допиливаю, что получилось.
В программе несколько параллельных задач, которые работают по своим событиям - таймерам, внешним прерываниям.

Никакой способ - ни нисходящего проектирования, ни восходящего, не является однозначно лучшим. Эффективность достигается при сбалансированном использовании обоих. В двух словах: все, что ясно представляется на уровне архитектуры программы, можно и нужно сразу обозначить в виде модулей/объектов - наполнение их можно будет сделать потом. Остальное (что ясно не представляется) придется делать "снизу-вверх". По мере заполнения этой части, будет появляться и понимание по недостающим частям на уровне архитектуры. Такой вот итеративный процесс.

Цитата(Slash @ Dec 23 2010, 18:35) *
Кто нибудь пишет программы по всем правилам - составление алгоритма, а потом просто его кодирование?

Это все зависит от... Все индивидуально. В предельном случае доводилось рисовать структурную схему программы - квадратики (модули) и стрелки (связи). Такая схема очень хорошо потом описывается на С++: квадратики - классы, стрелки - public функции-члены классов.

Цитата(Slash @ Dec 23 2010, 18:35) *
Есть какой-нибудь критерий сложности программы, когда пора переходить на RTOS?

Если используемая платформа без проблем тянет целевую задачу и RTOS, то применять имеет смысл всегда. ОС дает возможность использовать формализованный подход при описании потока выполнения программы, упрощая этот процесс. И с портабельностью получше получается. Все это, конечно, при наличие определенного background'а в теме RTOS.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 24 2010, 08:41
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



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


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 24 2010, 09:17
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Считаю себя достаточно опытным, чтобы не заниматься алгоритмами, но потом переписываю структуру модулей/уровней пока все не уляжется "правильно".
Так же, как имена переменных - если не помню, как назвал, переименую sm.gif
Понятно, что вначале движение и снизу (от портов) и сверху(цикл), но создать промежуточные "слои" логично и понятно не сразу получается.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Slash
сообщение Dec 27 2010, 09:54
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011



Понял, спасибо. В основном, подход одинаковый - постепенное, итерационное переписывание проекта. пока в голове не уложится.
Почитаю чего-нибудь про методологию разработки.
Go to the top of the page
 
+Quote Post
_Bill
сообщение Dec 28 2010, 01:54
Сообщение #8


Местный
***

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



Цитата(Dog Pawlowa @ Dec 24 2010, 16:17) *
Считаю себя достаточно опытным, чтобы не заниматься алгоритмами, но потом переписываю структуру модулей/уровней пока все не уляжется "правильно".
Так же, как имена переменных - если не помню, как назвал, переименую sm.gif
Понятно, что вначале движение и снизу (от портов) и сверху(цикл), но создать промежуточные "слои" логично и понятно не сразу получается.

Я тоже примерно так и делаю. Начинаю снизу - с программных модулей интерфейсов (АЦП, SPI, UART и т.д.). На этом этапе все хорошо укладывается и легко тестируется. Одновременно сверху пишу головную программу с ее бесконечным циклом, в который постепенно включаю функции среднего уровня. А вообще, перво-наперво я определяю структуры данных, с которыми будет работать программа, и описываю символические константы.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:50
Рейтинг@Mail.ru


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