Этапы проектирования ППО

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

После того как требования к прикладному программному обеспечению изделия (микроконтроллера) определены, разработка прикладной МК-программы разбивается на два существенно различных этапа:

- "от постановки задачи к исходной МК-программе";

- "от исходной МК-программы к загрузочному модулю".

В ходе выполнения этапа " от постановки задачи к исходной МК-программе " разрабатываются общая блок-схема алгоритма (БСА) работы микроконтроллера и детализированные БСА отдельных процедур. После чего на основе полученных БСА формируется исходный текст МК-программы.

Разработка БСА очень похожа на разработку аппаратурных средств систем автоматики и обработки данных. В основу разработки БСА положена та же самая процедура модульного проектирования, которая традиционно используется разработчиками аппаратурных средств. Отличие состоит в том, что при разработке аппаратурных средств в качестве "строительного" материала используются логические схемы, триггеры, регистры и другие интегральные элементы, а при создании программного обеспечения разработчик оперирует командами, подпрограммами, таблицами и другими программными объектами из арсенала средств обработки данных.

Секрет успеха разработки МК-программы заключается в оптимальной декомпозиции поставленной задачи и в использовании методов структурного программирования.

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

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

Разработка БСА функционального модуля МК-программы имеет ярко выраженный итеративный характер, т.е. требует многократных проб, прежде чем возникает уверенность, что алгоритм реализации процедуры правильный и завершенный. Вне зависимости от функционального назначения процедуры при проектировании ее БСА необходимо придерживаться следующей очередности работы:

1. Определить, что должен делать модуль. Указанное уже было сделано при разработке общей БСА, но теперь разработчик имеет дело с фрагментом, а не с целой МК-программой, и, следовательно, может потребоваться доопределение и уточнение целевого назначения процедуры.

2. Определить способы получения модулем исходных данных (от датчиков через порты ввода, либо из таблиц в памяти программ, через регистры или др.). Для реализации ввода исходных данных в модуль в его БСА надо включить соответствующие операторы.

3. Определить необходимость какой-либо предварительной обработки введенных исходных данных (маскирование, сдвиг, масштабирование, перекодировка). Если до использования исходных данных требуется их предобработка, то в БСА включаются соответствующие операторы.

4. Определить способ преобразования входных данных в требуемые выходные. Используя операторы процедур и условные операторы принятия решения, отобразить в виде БСА выбранный метод содержательной обработки исходных данных.

5. Определить способы выдачи из модуля обработанных данных (передать в память, в порты вывода или др.). Необходимые действия отобразить в БСА.

6. Определить необходимость какой-либо постобработки выводимых данных (изменение формата, перекодирование, масштабирование, маскирование или др.). При необходимости ввести в БСА соответствующие операторы.

7. Вернуться к п.1 настоящего перечня работ и проанализировать полученный результат. Выполнить итеративную корректировку БСА с целью сделать эту блок-схему простой, логичной, стройной и обладающей четким графическим образом.

8. Проверить работоспособность алгоритма на бумаге путем подстановки в него действительных данных. Убедиться в его сходимости и результативности.

9. Рассмотреть предельные случаи и попытаться определить граничные значения информационных объектов, с которыми оперирует алгоритм, за пределами которых он теряет свойства конечности, сходимости или результативности. Особое внимание при этом следует уделить анализу возможных ситуаций переполнения разрядной сетки микроконтроллера, изменения знака результата операции, деления на переменную, которая может принять нулевое значение и т.п.

10. Провести мысленный эксперимент по определению работоспособности алгоритма в реальной среде функционирования микроконтроллера.

Практика разработки прикладного программного обеспечения для микропроцессорной техники и, в частности, для микроконтроллеров семейства MCS-51 показала, что применение описанной процедуры проектирования алгоритмов, базирующейся на декомпозиции и структурном программировании, позволяет уверенно получать работоспособные МК-программы.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: