Теоритические основы программирования
Методы проектирования программ
Вопросы:
1) Модульность
2) Нисходящая разработка
3) Теорема структуры и структурное программирование
Модульность
Традиционные технологии метода программирования складывались на основе автоматизации решения различных, научных и инженерных задач, при этом основным критерием эффективность (качество) разрабатываемых программ являлось способностью получать узкопрофильные результаты решения задачи.
Применение подобной практики к решению сложных задач, требующих участия большого числа разработчиков приводят к значительному усложнению и как следствие ошибкам и низкой эффективности разрабатываемых программ. В таких условиях проверка адекватности программ, их тестирование и отладка превращаются в сложные проблемы.
Поэтому возникла необходимость в разработке специализированных технологий, позволяющих разбивать сложную задачу на ряд простых и взаимосвязанных подзадач (элементов программы)
Такой методологией разработки ПО с начала 70-х годов является структурный подход, включающий:
· Нисходящую разработку
· Структурное программирование
· Сквозной структурный контроль.
Основу структурного подхода составляет понятие модуля.
Модуль – последовательность логически связанных фрагментов, оформленных как отдельные части программы.
Каждый модуль состоит из 2-х частей: интерфейсной части и части реализации. Следовательно, сложные программы легче проектировать на совместные программные модули. Любая программа, реализующая сложную задачу, всегда состоит из нескольких модулей.
По заключению Г. Майерса модульность – свойство ПО, обеспечивающее создание сколь угодно сложной программы.
Пусть
С(х) – сложность решения проблемы Х
Т(х) – функция затрат времени на решение проблемы Х.
Для 2-х проблем р1 и р2 следует что время затрат больше, а из практики следует дополнительное соотношение.
С(р1+р2)>С(р1)+С(р2)
T(р1+р2)>Т(р1)+Т(р2)
Исходя из этого, каждая задача должна выполняться точно в срок.
Затраты на модульную разработку ПО (рис 1)
Из схемы следует, что всегда можно выделить количество модулей в программе, обеспечивающее минимальную стоимость разработки ПО.
Такой оптимальный модуль должен удовлетворять следующим критериям:
- снаружи проще, чем внутри
- его проще использовать, чем построить.
Преимущества модульности
· Большую программу могут писать несколько исполнителей одновременно
· Можно создавать библиотеки наиболее используемых подпрограмм
· Упрощается процедура загрузки в оперативную память большой программы, требующей сегментации
· Возможность расстановки естественных КТ за продвижением проекта.
· Существенно облегчается решение задач, связанных с тестированием и отладкой программ.
Недостатки:
· Возможное увеличение времени исполнения программ.
· Возможность увеличения требуемой оперативки
· Как следствие, возможное увеличение времени компиляции и загрузки модулей ПО.
· Возникают проблемы организации межмодульного взаимодействия.
Свойства модуля
1) Модуль возникает в результате сепаратной компиляции. Он может активизироваться ОС или быть подпрограммой, вызываемой другим модулем.
2) На внутренность модуля можно ссылаться с помощью имени, называемого имени модуля.
3) Модуль должен возвращать управление тому, кто его вызвал.
4) Модуль может обращаться к другим модулям.
5) Модуль должен иметь один вход и один выход.
6) Модуль сравнительно невелик (не более 200 строк).
7) Модуль не должен сохранять историю своих вызовов для управления своим функционированием.
8) Модуль всегда обладает единственной функцией (определенное преобразование исходных данных).
Признак хорошо структурированной программы – концепция «1 модуль – 1 функция». Каждая функция – 1 фраза:
1) Редактировать запрос
2) Загрузить данный файл
3) Напечатать отчет.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.