Внешнее проектирование модулей

Модуль

Проектирование модульной структуры.

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

В структурном программировании:

– одна функция;

– набор функций, объединённых общими данными и/или назначением и собранные (как правило) в один файл;

В объектно-ориентированном программировании:

– класс;

– метод класса;

– несколько классов, объединённых общими данными и/или назначением и собранные (как правило) в один файл;

Хороший модуль снаружи проще, чем внутри. Хороший модуль проще использовать, чем построить.

Свойства.

1. Прочность – мера внутренних связей. Исторически сложились различные уровни прочности:

- по совпадению – между его элементами нет осмысленных связей, может возникать при «модулизации» программы;

- по логике – содержит набор независимо вызываемых связанных функций;

- по классу – последовательное выполнение набора несвязанных функций (инициализация, завершение);

- процедурно прочный – выполняет последовательность действий, обусловленную задачей;

- коммуникационно-прочный – процедурная прочность + связи по данным;

- функционально прочный – выполняет одну «элементарную» (с функциональной ТЗ) функцию;

- информационно прочный – выполняет несколько функций (со своими точками входа), работающих на единой структуре данных).

Для функции или метода рекомендуется функциональная прочность, для класса – информационная.

2. Сцепление – мера связи по данным.

- по содержимому – один модуль ссылается на данные другого;

- по общей памяти – ссылаются на единую структуру данных;

- по внешним данным – совместно используют глобальные простые типы данных;

- по управлению – один модуль запускает фрагменты другого;

- по формату – передача структуры данных;

- по данным – передача неструктурированных данных.

Другие свойства:

- предсказуемость – независимость от предыстории;

- структура принятия решений – влияние только на подчинённые модули;

Внешняя спецификация модуля включает:

– имя модуля;

– назначение (решаемые задачи);

– список параметров;

– вход;

– выход (зависимость от входных, в т.ч. при неверных входных данных);

– внешние действия (печать, чтение файла и т.д.)

Проектирование модуля:

– выбор языка программирования;

– проектирование внешних спецификаций;

– проверка внешних спецификаций (в основном интерфейсов разработчиками соседних модулей);

– выбор алгоритма и структуры данных (желательно на первых этапах использовать стандартные и простые алгоритмы);

– запись начальных и конечных операторов в соответствии с синтаксисом языка;

– объявление данных интерфейса;

– объявление прочих локальных данных;

– усовершенствование кода;

– улучшение читаемости кода;

– проверка кода;

– компиляция.