Проектирование программного обеспечения
Проекти́рование програ́ммного обеспече́ния (проектирование ПО; англ. software design), процесс создания проекта программного обеспечения (ПО), а также дисциплина, изучающая методы проектирования ПО. Проектирование является одним из этапов жизненного цикла ПО и регламентируется одним из двух стандартов (Международный стандарт ISO/IEC 12207:2017; ГОСТ 2.103-2013).
Согласно ISO/IEC 12207:2017, выделяют 2 этапа проектирования ПО:
проектирование архитектуры программного обеспечения: определение структуры программного обеспечения, документирование интерфейсов его компонентов, разработка предварительной версии пользовательской документации, а также требований к тестам и плана интеграции;
детальное проектирование программного обеспечения: подробное описание компонентов программного обеспечения и интерфейсов между ними, обновление пользовательской документации, разработка и документирование требований к тестам и плана тестирования компонентов программного обеспечения, обновление плана интеграции компонентов.
Согласно ГОСТ 2.103-2013, выделяют следующие этапы проектирования ПО: эскизный, технический и рабочий проекты. На каждом из этапов формируется свой комплект документов, называемый проектной документацией.
Проектированию обычно подлежат: архитектура ПО; устройство компонентов ПО; пользовательские интерфейсы.
В зависимости от класса создаваемого ПО процесс проектирования может выполняться вручную, а также с помощью различных средств автоматизации. В процессе проектирования ПО для выражения его характеристик используются различные нотации: блок-схемы, различные диаграммы, а также макеты.
Ход проектирования и его результаты определяются выбранной моделью процесса проектирования, требованиями к ПО, а также опытом проектировщика.
Ныне наиболее проработанным в теоретическом и в практическом плане является объектный подход к проектированию ПО. Существует большое количество моделей, шаблонов, методик и средств автоматизации объектного (объектно ориентированного) проектирования программ.
В основе объектного подхода лежит объектная декомпозиция, т. е. представление разрабатываемого ПО в виде совокупности объектов, в процессе взаимодействия которых через передачу сообщений происходит выполнение требуемых функций.
Большое разнообразие моделей и методик объектного проектирования стало тормозить и усложнять создание сложных информационных систем и их интеграцию между собой. Разработчики столкнулись с необходимостью унификации и стандартизации процесса проектирования.
В 1995 г. появляется первая версия языка UML (от англ. Unified Modeling Language – унифицированный язык моделирования), который ныне фактически признан стандартным средством описания проектов, создаваемых с использованием объектно ориентированного подхода. Идеологи его создания – американские учёные Г. Буч и Дж. Рамбо, а также работавший вместе с ними шведский учёный И. Якобсон (А. Джекобсон). В 2005 г. опубликована формальная спецификация UML версии 2.0.
Спецификация разрабатываемого программного обеспечения при использовании UML объединяет следующие модели: модель использования представляет собой описание функциональности программного обеспечения с точки зрения пользователя; логическая модель описывает ключевые абстракции программного обеспечения (классы, интерфейсы и т. п.), т. е. средства, обеспечивающие требуемую функциональность; модель реализации определяет реальную организацию программных модулей в среде разработки; модель процессов отображает организацию вычислений и оперирует понятиями «процессы» и «нити», позволяет оценить производительность, масштабируемость и надёжность программного обеспечения; модель развёртывания показывает особенности размещения программных компонентов на конкретном оборудовании.
Таким образом, каждая из указанных моделей характеризует определённый аспект проектируемой системы, а все они вместе составляют относительно полную модель разрабатываемого программного обеспечения.
Всего UML предлагает 9 дополняющих друг друга типов диаграмм, входящих в различные модели. Все диаграммы по возможности используют единую графическую нотацию, что облегчает их понимание.
Помимо диаграмм, спецификация обязательно включает словарь терминов, а также различного рода описания и текстовые спецификации. Конкретный набор документации определяется разработчиком.
См. также CASE-технологии.