- •6. Проектирование микропроцессорных систем
- •6.1. Представление системы как объекта проектирования
- •6.2. Основные этапы проектирования
- •6.3. Разработка архитектуры системы
- •6.4. Проектирование аппаратных средств
- •6.4.1. Схемотехническое проектирование процессора
- •6.4.2. Схемотехническое проектирование памяти
- •Банкирование памяти
- •Организация банков памяти
- •Проектирование запоминающих устройств
- •6.4.3. Схемотехническое проектирование интерфейса
- •Организация ввода/вывода данных
- •6.4.4. Тестирование и настройка аппаратных средств
- •Тестирование статическими сигналами
- •Свободный прогон микропроцессора
- •6.5. Проектирование программных средств
- •6.5.1. Этапы жизненного цикла программы
- •6.5.2. Точная постановка задачи и формулировка требований к программе
- •Постановка задачи ввода данных в озу
- •6.5.3 Проектирование программы
- •Декомпозиция общей задачи
- •Декомпозиция задачи ввода данных в озу
- •Структуры данных
- •Разработка структуры данных программы для ввода данных в озу
- •Алгоритмизация программы
- •Подходы к алгоритмизации
- •Иерархическая организация алгоритма
- •Алгоритмизация программы для ввода данных в озу
- •1. Модуль "Тестовый контроль озу по шд" (dTstContr)
6.5.1. Этапы жизненного цикла программы
Начинающие программисты часто считают, что программирование сводится к записи процесса обработки данных на используемом языке программирования. Однако, это является лишь одним из множества этапов жизненного цикла программы этапом кодирования.
Полный жизненный цикл сложной программы состоит из двух этапов [14]:
создание программы (32%);
сопровождение программы (68%).
При этом создание программы включает в себя следующие фазы:
точная постановка задачи и формулировка требований
к программе (15%);
проектирование программы (15%);
кодирование программы (15%);
разработка документации (10%);
тестирование и отладка программы (25%);
занесение программы на рабочий носитель (5%);
комплексная отладка программы (15%).
Цифры, приведенные в скобках, показывают трудоемкость каждого этапа по отношению к полной трудоемкости работ данной группы.
Из анализа показателей трудоемкости следует, что трудоемкость сопровождения программы существенно выше трудоемкости ее создания.
Под сопровождением программы понимается доработка программы в процессе эксплуатации в случае обнаружения в ней ошибок или изменения условий ее использования. Необходимость сопровождения обусловлена тем, что в процессе тестирования и отладки программы, как правило, выявляются не все ошибки, которые обнаруживаются и исправляются при ее эксплуатации. Кроме того, в связи с большой гибкостью программного обеспечения модернизация МПС и дальнейшее совершенствование их характеристик всегда осуществляются путем модернизации программ.
Высокая трудоемкость этапа сопровождения программы обусловлена тем, что нередко работающие программы написаны столь запутанно и имеют столь плачевную документацию, что разобраться в них может лишь автор и то в течение короткого периода после разработки. Это приводит к тому, что на этапе сопровождения очень часто программы переписываются полностью вместо внесения в них изменений.
Отсюда вытекает, что важнейшим критерием при создании программ является ясность и простота их написания с представлением высокоинформативной документации. Использование этого критерия позволит существенно снизить трудоемкость этапа сопровождения.
Процесс создания программы состоит из большого количества этапов различной трудоемкости. При этом очевидно, что роль кодирования в нем весьма невелика, а основную трудность представляет собой тестирование и отладка программы.
Рассмотрим реализацию отдельных этапов создания сложной программы. Для иллюстрации изложенных теоретических сведений в качестве примера будем рассматривать реализацию соответствующего этапа в процессе создания программы работы устройства для ввода данных в ОЗУ.
6.5.2. Точная постановка задачи и формулировка требований к программе
Этот этап присутствует в той или иной форме в любой деятельности, направленной на разработку какой-либо системы. Здесь вырабатываются требования, определяющие, какими характеристиками должно обладать проектируемое изделие.
При создании программы на этом этапе, в частности, должны быть определены:
1) функции программы;
2) функциональный смысл входной и выходной информации;
3) типы устройств ввода/вывода и форма представления информации;
4) диапазон изменения и точность представления входной и выходной информации;
5) системные требования (допустимое время решения задачи, особенности ввода/вывода информации и т.д. и т.п.);
6) необходимость контроля и типы обнаруживаемых ошибок;
7) особые случаи и реакция на них, допустимое время реакции.
Приведенный перечень вопросов для определения требований к программе является типовым и отнюдь неисчерпывающим в общем случае. Он может пополняться и расширяться для каждой конкретной задачи.
Последовательно отвечая на поставленные вопросы, можно сформулировать требования к программе, то есть определить "Что делать?" При этом должно быть учтено множество факторов. Формулировке требований следует уделять большое внимание. Практика показывает, что примерно 60% ошибок в программе появляется из-за недостаточно полных и четких спецификаций. Ошибки этого типа исправлять наиболее трудно.
На данном этапе целесообразно использовать графическое (различные диаграммы, графики) и табличное представление материала, дающее максимальную наглядность. После полного определения требований к устройству, целесообразно изобразить эскиз его лицевой панели, позволяющий наглядно представить элементы, с которыми должна взаимодействовать программа с точки зрения оператора.