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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Проектирование ПО для микроконтроллеров
_Pasha
сообщение Nov 22 2008, 12:21
Сообщение #16


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Purposeful @ Nov 22 2008, 13:17) *
развитие программирования под МК сильно отстает от развития программирования для ПК.

Это две большие разницы. Нельзя сравнить инфузорию с кольчатым червем по уровню IQ

Цитата
Мне пришлось переписывать программу товарища который очень любил GOTO

Я, может, провоцирую, но это голословные утверждения, потому что, возможно, Вы что-то невероятно упростили, а товарищ, писАвший код до Вас, заботился прежде всего об эффективности своего труда. А как иначе? Экономический эгоизм, понимаш biggrin.gif
Go to the top of the page
 
+Quote Post
rsv
сообщение Nov 22 2008, 14:33
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 119
Регистрация: 16-07-07
Из: Тула
Пользователь №: 29 160



когда пишу код для МК, стараюсь следовать принципам все-таки экстремального программирования. так, как Кент Бек нас учит http://www.books.ru/shop/books/27070 . В своё время работал в компании, где следуют этим принципам, нашел что все весьма разумно устроено. Это идеология программирования, ориентированная на клиента, конечного потребителя.
К сожелению, не все эти принципы можно легко реализовать для микроконтроллеров: в частности, мне не встречалось еще приложения для unit testing кода микроконтроллеров. Опять же, трудно следовать этим рекомендациям, когда в изделии используется МК, все ресурсы которого полностью задействованы.
А слышать от программиста "это сложно" и "этого в тз не было" - действительно весьма печально...
Go to the top of the page
 
+Quote Post
alekseykoj
сообщение Dec 8 2009, 09:32
Сообщение #18


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 8-11-05
Пользователь №: 10 602



Этап проектирования при разработке ПО должен обязательно включаться при разработке довольно "сложного" программного обеспечения (определения "сложный" это понятие очень растяжимое), а так же при разработке ПО группой разработчиков. Для программы выводящей на экран слово "Hello world" и программы для управления одним светодиодом этап проектирования можно опустить))))
Go to the top of the page
 
+Quote Post
Andron_
сообщение Dec 8 2009, 13:44
Сообщение #19


.NET developer
***

Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532



грустный какой-то топик (((

я надеялся узнать из него что-то новое...

как показала практика, привычка не писать проекты ПО и документацию выливается в кучи проблем... Основная - крайне затрудненный процесс модификации.
вторая - невозможность повторного использования кода, написанного другим программистом...
третья, которая видимо будет позже - проблемы с сертификацией ПО.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 8 2009, 16:52
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Andron_ @ Dec 8 2009, 16:44) *
как показала практика, привычка не писать проекты ПО и документацию выливается в кучи проблем... Основная - крайне затрудненный процесс модификации.
Эта привычка, имхо, выработалась из-за нехватки времени на проектирование в современных условиях: контракты заключаются, как правило, на год, и разбивать проектирование на этапы с оформлением по каждому этапу (эскизный проект, технический, рабочий) документации - непозволительная трата времени. Поэтому, проектирование - в один этап: техно-рабочий проект. Программы должны иметь достаточное количество комментариев, а их текст - документ (или даже этого не имеете).
Цитата(Andron_ @ Dec 8 2009, 16:44) *
вторая - невозможность повторного использования кода, написанного другим программистом...
Это - жадность собственников предприятия, желающих один раз заплатить и пользоваться, пользоваться, пользоваться... Если программа написана для "изделия А", это не значит, что можно без зазрения совести использовать её в "изделии Б"!
Цитата(Andron_ @ Dec 8 2009, 16:44) *
третья, которая видимо будет позже - проблемы с сертификацией ПО.
Ну, мне бы Ваши проблемы... Если это - криптографическая защита, то заказчик серьёзный, и он (заказчик) проплатит и эскизный проект, и технический, и выпуск документации, которую у Вас и примет. В остальных случаях: сертификация ПО - дело добровольное (ну, за исключением игровых автоматов rolleyes.gif ).
Go to the top of the page
 
+Quote Post
Andron_
сообщение Dec 8 2009, 17:27
Сообщение #21


.NET developer
***

Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532



Цитата
Это - жадность собственников предприятия, желающих один раз заплатить и пользоваться, пользоваться, пользоваться... Если программа написана для "изделия А", это не значит, что можно без зазрения совести использовать её в "изделии Б"!


если предприятие выпускает изделия A, B, C, D, E, F, в каждом из которых присутствует один-два-три ATmega, которые обмениваются данными с использованием протокола FOO, а также есть программисты R, S, X, Y, Z, которые из-за вышеозначенной причины каждый сам выдумывает свою реализацию протокола FOO; это называет не жадность, а пустая трата времени каждого из программистов.
И если программа была написана для изделия "А", и полностью является собственностью предприятия, то она _должна_ быть использована в изделии "Б", если условия позволяют.


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

не все так радужно...
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 8 2009, 18:35
Сообщение #22


Ally
******

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



Во читайте и просвещайтесь
Embedded_systems_architecture.pdf

Архитектуру к коде на 40 Кб действительно найти трудно.
Это термин для техники посложнее с применением осей и строннего middleware.
Нынче для 32-х разрядных микроконтроллеров почти каждый разработчик IDE предлагает элементы собственной архитектуры.
Более того в разделе про ARM-ы большинство серьезных тредов затрагивают архитектуру, потому что это сверхважный вопрос.
Ошибешься в архитектуре и можешь потерять год а то и больше.

Просто архитектурой там это не называют, ну не знает народ что это так называется. biggrin.gif

Цитата(Purposeful @ Nov 21 2008, 21:38) *
Уважаемые коллеги, скажите может я ошибаюсь и эта архитектура вовсе не нужна (ведь оно и так все работает)? А может кто чего-нибудь подскажет?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 9 2009, 07:11
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Andron_ @ Dec 8 2009, 20:27) *
... это называет не жадность, а пустая трата времени каждого из программистов.
И если программа была написана для изделия "А", и полностью является собственностью предприятия, то она _должна_ быть использована в изделии "Б", если условия позволяют.
Да - пустая трата времени. Но, это - недоработка руководства предприятия. Если была поставлена задача: "Разработать программу обмена по протоколу ... для изделия А", то применение этой программы в других изделиях - нарушение прав автора (программиста). А, вот, если " ... для изделий типа А и последующих, использующих протокол...", то и программист (хороший программист), напишет программу легко встраиваемую в другое изделие, но и его труд должен быть оценен соответственно.
Go to the top of the page
 
+Quote Post
tag
сообщение Dec 9 2009, 07:31
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 21-02-06
Пользователь №: 14 561



Цитата(Purposeful @ Nov 21 2008, 22:38) *
Особенно тяжело с людьми которые ранее писали на Ассемблере и их заставили писать на С.


...еще сложнее с людьми которые застряли на Ассемблере и мотивируют это исключительностью Ассемблера.

Цитата(aaarrr @ Nov 21 2008, 23:03) *
Скажите, а как оператор goto (кстати, вполне легальный, чего никак не могут понять составители школьных программ, исповедующие метод copy-paste) может помешать правильному проектированию ПО? Несколько другой уровень "проблемы".



На самом деле может повлиять. Дело в том что владение определенным языком накладывает отпечаток на логику мышления и соответственно способы и подходы к решению задачи. Это из личного опыта. Впрочем замечу что лингвисты говорят о том же. И потом применение goto во всем мире считается плохим тоном. При использовании языков высокого уровня пратически в любом случае можно избежать применения goto. А вот что касается Ассемблера, увы без goto он же jmp ни как. Но опять же Ассемблер не совсем язык.
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 9 2009, 07:47
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(aaarrr @ Nov 21 2008, 23:03) *
Скажите, а как оператор goto (кстати, вполне легальный, чего никак не могут понять составители школьных программ, исповедующие метод copy-paste) может помешать правильному проектированию ПО?

Ясно как. Оператор goto может заменить все операторы цикла (for, do, while), а также множество вызовов функций. Если начать заниматься такими заменами, то структурированность программы пострадает, мягко говоря.
Я вижу только одно приличное применение для goto: выход из глубоко вложенного цикла. Кстати, кажется в Java специально для этого несколько расширили функцию оператора break по сравнению с Си.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 9 2009, 08:28
Сообщение #26


Ally
******

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



Ну почему же.
За goto в С-и прочно закрепилась одна утилитарная функция - это переход к exit point в функциях с обязательным эпилогом, например с освобождением памяти.
Большинство юзают это часто и с удовольствием.

Цитата(tag @ Dec 9 2009, 09:31) *
И потом применение goto во всем мире считается плохим тоном. При использовании языков высокого уровня пратически в любом случае можно избежать применения goto.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Dec 9 2009, 09:42
Сообщение #27


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(AlexandrY @ Dec 9 2009, 12:28) *
Ну почему же.
За goto в С-и прочно закрепилась одна утилитарная функция - это переход к exit point в функциях с обязательным эпилогом, например с освобождением памяти.
Большинство юзают это часто и с удовольствием.

Еще одна - в protothread под GCC. Замена switch(pc) на
Код
   if(pc != NULL) goto *pc;
//.....................................
Label:
    pc = &&Label;

Да и вообще при мультитредовом программировании без идина goto - никуда
Go to the top of the page
 
+Quote Post
LessNik
сообщение Dec 9 2009, 10:06
Сообщение #28


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Проектирование ПО для микроконтроллеров: RUP + UML. И это работает wink.gif
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 9 2009, 12:01
Сообщение #29


Гуру
******

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



По хорошему программирование для микроконтроллеров и для PC не отличается.
Просто в программировании для контроллеров много случайных людей.
Типа электронщиков, которые тянут смежную область, не в состоянии овладеть суммой знаний, которой обладает действительно программист.
Есть, конечно, и упертые ассемблерщики, которых становится все меньше и меньше.

А автору хочу посоветовать спокойно подобрать коллектив, раз уж есть такая возможность wink.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 9 2009, 12:18
Сообщение #30


Ally
******

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



Да точно, в кооперативных механизмах многозадачности без goto невозможно обойтись ибо нельзя трогать стек.

Цитата(_Pasha @ Dec 9 2009, 11:42) *
Еще одна - в protothread под GCC. Замена switch(pc) на
Код
   if(pc != NULL) goto *pc;
//.....................................
Label:
    pc = &&Label;

Да и вообще при мультитредовом программировании без идина goto - никуда
Go to the top of the page
 
+Quote Post

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

 


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


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