Когда разрабатываются программы для решения реальных проблем, таких как управление запасами, расчет заработной платы, прием студентов, обработка результатов экзаменов и т. д. они, как правило, огромные и сложные. Подход к анализу таких сложных задач, планирование, разработка и процесс контроля развития называется методологией программирования.
Существует множество типов методологий программирования, распространенных среди разработчиков программного обеспечения:
Проблема разбивается на процедуры или блоки кода, которые выполняют по одной задаче. Все процедуры, взятые вместе, составляют всю программу. Она подходит только для небольших программ с низким уровнем сложности.
Пример − программа калькулятор, которая делает сложение, вычитание, умножение, деление, квадратный корень и сравнения, каждая из этих операций могут быть разработаны как отдельные процедуры. В основной программе каждая процедура вызывается на основании выбора пользователя.
Здесь решение вращается вокруг сущностей или объектов, которые являются частью проблемы. Решение касается того, как хранить данные, связанные с сущностями, как сущности ведут себя и как они взаимодействуют друг с другом, чтобы дать связное решение.
Пример − если нам придется разработать систему управления заработной платы, мы будем иметь таких лиц, как сотрудников, структуре заработной платы, правила начисления и т. д. вокруг которого должно быть построено решение.
Здесь задача, или желаемое решение, разбивается на функциональные единицы. Каждое подразделение выполняет свою задачу и является самодостаточным. Эти блоки после этого сшиты совместно для того чтобы сформировать полное разрешение.
Пример − это расчет заработной платы может иметь функциональные подразделения, как сотрудник технической информации, расчет основной заработной платы, расчет брутто-зарплаты, делать обработку, обрабатывать погашение кредита и т.д.
Здесь задача разбивается на логические, а не функциональные единицы.
Пример: системы управления школы, пользователи имеют определенные роли, как класс, учитель, преподаватель предмета, ассистент, координатор, учебные обязанности и т. д. Таким образом, программное обеспечение может быть разделено на единицы в зависимости от ролей пользователей. Каждый пользователь может иметь различный интерфейс, разрешения и т.д.
Разработчики программного обеспечения могут выбрать одну или несколько из этих методологий для разработки программного обеспечения. Обратите внимание, что в каждой из обсуждаемых методологий проблема должна быть разбита на более мелкие единицы. Для этого разработчики используют любой из следующих двух подходов:
Проблема разбивается на более мелкие единицы, которые могут быть далее разбиты на еще более мелкие единицы. Каждый блок называется модуль. Каждый модуль является самодостаточным блоком, который имеет все необходимое для выполнения своей задачи.
На следующем рисунке показан пример использования модульного подхода для создания различных модулей при разработке программы расчета заработной платы.
В восходящем подходе проектирование системы начинается с самого низкого уровня компонентов, которые затем соединяются между собой, чтобы получить компоненты более высокого уровня. Этот процесс продолжается до формирования иерархии всех компонентов системы. Тем не менее, в реальном сценарии очень трудно знать все компоненты самого низкого уровня в начале. Поэтому восходящий подход используется только для очень простых задач.
Рассмотрим компоненты программы калькулятора.