Внешнее проектирование модулей
Модуль
Проектирование модульной структуры.
Под модулем понимают любой фрагмент программы обладающей внутренней целостностью и одной или несколькими известными точками входа. Как правило, под модулем понимают:
В структурном программировании:
– одна функция;
– набор функций, объединённых общими данными и/или назначением и собранные (как правило) в один файл;
В объектно-ориентированном программировании:
– класс;
– метод класса;
– несколько классов, объединённых общими данными и/или назначением и собранные (как правило) в один файл;
Хороший модуль снаружи проще, чем внутри. Хороший модуль проще использовать, чем построить.
Свойства.
1. Прочность – мера внутренних связей. Исторически сложились различные уровни прочности:
- по совпадению – между его элементами нет осмысленных связей, может возникать при «модулизации» программы;
- по логике – содержит набор независимо вызываемых связанных функций;
- по классу – последовательное выполнение набора несвязанных функций (инициализация, завершение);
- процедурно прочный – выполняет последовательность действий, обусловленную задачей;
- коммуникационно-прочный – процедурная прочность + связи по данным;
- функционально прочный – выполняет одну «элементарную» (с функциональной ТЗ) функцию;
- информационно прочный – выполняет несколько функций (со своими точками входа), работающих на единой структуре данных).
Для функции или метода рекомендуется функциональная прочность, для класса – информационная.
2. Сцепление – мера связи по данным.
- по содержимому – один модуль ссылается на данные другого;
- по общей памяти – ссылаются на единую структуру данных;
- по внешним данным – совместно используют глобальные простые типы данных;
- по управлению – один модуль запускает фрагменты другого;
- по формату – передача структуры данных;
- по данным – передача неструктурированных данных.
Другие свойства:
- предсказуемость – независимость от предыстории;
- структура принятия решений – влияние только на подчинённые модули;
Внешняя спецификация модуля включает:
– имя модуля;
– назначение (решаемые задачи);
– список параметров;
– вход;
– выход (зависимость от входных, в т.ч. при неверных входных данных);
– внешние действия (печать, чтение файла и т.д.)
Проектирование модуля:
– выбор языка программирования;
– проектирование внешних спецификаций;
– проверка внешних спецификаций (в основном интерфейсов разработчиками соседних модулей);
– выбор алгоритма и структуры данных (желательно на первых этапах использовать стандартные и простые алгоритмы);
– запись начальных и конечных операторов в соответствии с синтаксисом языка;
– объявление данных интерфейса;
– объявление прочих локальных данных;
– усовершенствование кода;
– улучшение читаемости кода;
– проверка кода;
– компиляция.