При програмуванні модуля слід мати на увазі, що програма повинна бути зрозумілою не тільки комп'ютера, але і людині: і розробник модуля, і особи, перевіряльники модуль, і тестовики, які готують тести для налагодження модуля, і супровідники ПС, які здійснюють необхідні зміни модуля, змушені будуть багаторазово розбирати логіку роботи модуля. У сучасних мовах програмування достатньо коштів, щоб заплутати цю логіку як завгодно сильно, тим самим, зробити модуль важко розуміється для людини і, як наслідок цього, зробити його ненадійним або важко супроводжуваним. Тому необхідно приймати заходи для вибору відповідних мовних засобів і дотримуватися певної дисципліни програмування. Вперше на це звернув увагу Дейкстра і запропонував будувати програму як композицію з декількох типів керуючих конструкцій (структур), які дозволяють значно підвищити понимаемость логіки роботи програми. Програмування з використанням тільки таких конструкцій назвали структурним.
Основними конструкціями структурного програмування є: слідування, розгалуження і повторення. Компонентами цих конструкцій є узагальнені оператори S, S1, S2 та умова (ключ) P. як
узагальненого оператора може бути або простий оператор використовуваної мови програмування (оператори привласнення, уведення висновку, звернення до процедури), або фрагмент програми, що є композицією основних керуючих конструкцій структурного програмування. Суттєво, що кожна з цих конструкцій має по управлінню тільки один вхід і один вихід. Тим самим, і узагальнений оператор має тільки один вхід і один вихід.
Вельми важливо також, що ці конструкції є вже математичними об'єктами (що, по суті, і пояснює причину успіху структурного програмування). Доведено, що для кожної неструктурованої програми можна побудувати функціонально еквівалентну (тобто вирішальну ту ж задачу) структуровану програму. Для структурованих програм можна математично доводити деякі властивості, що дозволяє виявляти в програмі деякі помилки. Цьому питанню буде присвячена окрема лекція.
Структурний програмування іноді називають ще "програмуванням без GO TO". Однак справа тут не в операторі GO TO, а в його безладному використанні. Дуже часто при втіленні структурного програмування на деяких мовах програмування (наприклад, на ФОРТРАНе) оператор переходу (GO TO) використовується для реалізації структурних конструкцій, не знижуючи основних переваг структурного програмування. Заплутують програму як раз "неструктурні" оператори переходу, особливо перехід на оператор, розташований в тексті модуля вище (раніше) виконуваного оператора переходу. Тим не менш, спроба уникнути оператора переходу в деяких простих випадках може призвести до занадто громіздким структурованим програмами, що не покращує їх ясність і містить небезпеку появи в тексті модуля додаткових помилок. Тому можна рекомендувати уникати вживання оператора переходу усюди, де це можливо, але не ціною ясності програми.
До корисним випадків використання оператора переходу можна віднести вихід з циклу або процедури по особливому умові, "достроково" припиняє роботу даного циклу або даної процедури, тобто завершує роботу деякої структурної одиниці (узагальненого оператора) і тим самим лише локально порушує структурованість програми. Великі труднощі (і складні структури) викликає структурна реалізація реакції на виникаючі виняткові (часто помилкові) ситуації, так як при цьому потрібно не тільки здійснити достроковий вихід з структурної одиниці, але і провести необхідну обробку (виключення) цієї ситуації (наприклад, видачу відповідної діагностичної інформації). Обробник надзвичайній ситуації може перебувати на будь-якому рівні структури програми, а звернення до нього може проводитися з різних нижніх рівнів. Цілком прийнятною з технологічної точки зору є наступна "неструктурная" реалізація реакції на надзвичайні ситуації. Обробники виняткових ситуацій поміщаються в кінці тієї чи іншої структурної одиниці і кожен такий обробник програмується таким чином, що після закінчення своєї роботи виробляє вихід з тієї структурної одиниці, в кінці якої він поміщений. Звернення до такого сценарію обробки проводиться оператором переходу з цієї структурної одиниці (включаючи будь-яку вкладену в неї структурну одиницю).