Проектирование программного обеспечения
Проектирование ПО
Процесс определения архитектуры, компонентов, интерфейсов и других характеристик системы или её компонентов называется проектированием. Результат процесса проектирования – дизайн(software) либо проект.
Проектирование, как процесс это инженерная деятельность в рамках жизненного цикла ПО, в которой анализируются требования для создания описания внутренней структуры ПО.
Результат проектирования
Проектирования программных систем можно рассматривать как деятельность результат которой состоит из двух составных систем.
- Архитектурный или высокоуровневый дизайн (software architectural design, top-level design) – описание высокоуровневой структуры и организации компонентов системы.
- Детализированная архитектура (software)
Процесс проектирования
- Архитектурное проектирование
- Детализация архитектуры
Принцип проектирования
- Абстракция
- Связанность и соединение
- Декомпозиция и разбиение на модули
- Инкапсуляция/сокрытие информации
- Разделение интерфейса и реализации
- Достаточность, полнота и простота
Модульное программирование
Обычно при разработке программного средства, подразумевается, что программная система будет большой и сложной. Соответственно необходимо будет принимать меры по её упрощению. Для этого любое программное средство пытаются разделить на логические части и разрабатывать каждую из этих частей по отдельности. Такие части называются программными модулями, а процесс – модульным программированием.
Программный модуль – это любой фрагмент описания некоего процесса, оформляемый как самостоятельный программный продукт.
Любой программный модуль проектируется, конструируется и тестируется отдельно от других модулей программы. Так же условия использования каждого модуля обычно отдельно документируется. В связи с этим любой подобный программный модуль не зависит от других модулей программы и может использоваться в различных программных продуктов.
Для того чтобы модуль удовлетворял всем условиям, для него определены некоторые важные характеристики:
Хороший модуль снаружи проще, чем внутри.
Хороший модуль проще использовать, чем построить.
По другой классификации предлагаются ещё 4 характеристики это: размер модуля, прочность модуля, сцепление с другими модулями и рутинность модуля (независимость от истории обращения к нему).
Размер модуля определяется количеством операторов входящих в его состав. Модуль не должен быть слишком маленьким или слишком большим. Большие модули не удобны для изучения и изменения, а из маленьких получается слишком громоздкая структура.
Прочность модуля – мера его внутренних связей. Чем выше прочность модуля, тем больше связей он может спрятать от внешней по отношению к нему части программы. Тем самым сделав программу проще.
Функционально прочный модуль – это модуль, который реализует одну какую-то определённую функцию. При этом он так же может использовать другие модули.
Информационно прочный модуль – это модуль, который может реализовать несколько функций, но на одной и той же структуре данных (информационный объект).
Сцепление модуля – это мера зависимости модуля, по данным, от других модулей. Худшим вариантом является такое сцепление, когда в одном модуле стоит ссылка на данные содержащиеся внутри другого модуля. Лучшим вариантом является, когда данные передаются при обращений к модулю, в виде различных параметров, или как результат выполнения какой-то функции.
Рутинность модуля – это независимость работы модуля от предыстории обращения к нему.
