stringtranslate.com

Разработка программного обеспечения

Проектирование программного обеспечения — это процесс концептуализации того, как будет работать программная система , прежде чем она будет реализована или модифицирована. [1] Проектирование программного обеспечения также относится к прямому результату процесса проектирования – концепции того, как программное обеспечение будет работать, которая состоит как из проектной документации, так и из недокументированных концепций.

Проектирование программного обеспечения обычно определяется целями конечной системы и включает в себя решение проблем и планирование, включая как архитектуру программного обеспечения высокого уровня, так и проектирование компонентов и алгоритмов низкого уровня .

С точки зрения каскадного процесса разработки , проектирование программного обеспечения — это деятельность по соблюдению спецификации требований перед кодированием . [2]

Общий процесс

Процесс проектирования позволяет разработчику моделировать различные аспекты программной системы еще до ее создания.

Креативность, прошлый опыт, понимание того, что делает программное обеспечение «хорошим», и приверженность качеству — вот факторы успеха компетентного проектирования. Однако процесс проектирования не всегда является простой процедурой.

Модель программного проектирования можно сравнить с архитектурным планом дома. Планы высокого уровня представляют собой весь дом (например, трехмерная визуализация дома). Планы нижнего уровня содержат рекомендации по построению каждой детали (например, прокладки водопровода). Аналогично, модель проектирования программного обеспечения обеспечивает различные представления предлагаемого программного решения.

Ценить

Документация по проектированию программного обеспечения может быть просмотрена или представлена, чтобы обеспечить возможность корректировки ограничений, спецификаций и даже требований перед кодированием . Редизайн может произойти после проверки запрограммированного моделирования или прототипа . Можно разрабатывать программное обеспечение в процессе кодирования, без анализа плана или требований [3] , но для более сложных проектов это менее осуществимо. Отдельное проектирование перед кодированием позволяет многопрофильным дизайнерам и профильным экспертам (SME) сотрудничать с программистами для создания полезного и технически надежного программного обеспечения.

Анализ требований

Одним из компонентов разработки программного обеспечения является анализ требований к программному обеспечению (SRA). SRA — это часть процесса разработки программного обеспечения , в которой перечислены спецификации, используемые при разработке программного обеспечения .

Результатом анализа являются более мелкие проблемы, которые необходимо решить. Напротив, при проектировании основное внимание уделяется возможностям, поэтому для одной и той же проблемы может существовать несколько проектов. В зависимости от среды дизайн часто меняется, создается ли он на основе надежных фреймворков или реализуется с помощью подходящих шаблонов проектирования .

Артефакты

Процесс проектирования может включать в себя создание таких артефактов, как блок-схема , вариант использования , псевдокод , модель единого языка моделирования и другие фундаментальные концепции моделирования . Для программного обеспечения , ориентированного на пользователя , дизайн может включать в себя проектирование пользовательского опыта с созданием раскадровки , помогающей определить эти спецификации.

Иногда результатом процесса проектирования является проектная документация .

Принципы дизайна

Базовые принципы проектирования позволяют инженеру-программисту ориентироваться в процессе проектирования. Дэвис [4] предлагает набор принципов проектирования программного обеспечения, которые были адаптированы и расширены в следующем списке:

Концепции дизайна

Концепции дизайна предоставляют дизайнеру основу, на которой можно применять более сложные методы. Был разработан ряд концепций дизайна, в том числе:

В своей объектной модели Грейди Буч упоминает абстракцию , инкапсуляцию , модульность и иерархию как фундаментальные принципы проектирования программного обеспечения. [5] Аббревиатура PHAME (принципы иерархии, абстракции, модульности и инкапсуляции) иногда используется для обозначения этих четырех фундаментальных принципов. [6]

Рекомендации по проектированию

При разработке программного обеспечения необходимо учитывать множество аспектов. Важность каждого фактора должна отражать цели и ожидания, ради удовлетворения которых создается программное обеспечение. Некоторые из этих аспектов:

Язык моделирования

Язык моделирования может использоваться для выражения информации, знаний или систем в структуре, которая определяется последовательным набором правил. Эти правила используются для интерпретации компонентов внутри структуры. Язык моделирования может быть графическим или текстовым. Примеры языков графического моделирования для разработки программного обеспечения включают:

Шаблоны проектирования

Разработчик программного обеспечения может определить аспект дизайна, который уже посещался и, возможно, даже решался другими в прошлом. Шаблон или шаблон, описывающий решение общей проблемы, известен как шаблон проектирования . Повторное использование таких шаблонов может увеличить скорость разработки программного обеспечения. [9]

Код как дизайн

Трудность использования термина «проектирование» по отношению к программному обеспечению заключается в том, что в некотором смысле исходный код программы является дизайном программы, которую она создает. В той степени, в которой это верно, «проектирование программного обеспечения» относится к проектированию проекта. Эдсгер В. Дейкстра назвал это наслоение семантических уровней «радикальной новинкой» компьютерного программирования [10] , а Дональд Кнут использовал свой опыт написания TeX , чтобы описать тщетность попыток разработать программу до ее реализации:

T E X был бы полным провалом, если бы я просто уточнил его и не участвовал в полной мере в его первоначальной реализации. Процесс реализации постоянно приводил меня к неожиданным вопросам и новым идеям о том, как можно улучшить исходные спецификации. [11]

Смотрите также

Рекомендации

  1. ^ Ральф П. и Ванд Ю. (2009). Предложение по формальному определению концепции дизайна. Лютинен К., Лукопулос П., Милопулос Дж. и Робинсон В., редакторы, Семинар по требованиям к проектированию (LNBIP 14), стр. 103–136. Шпрингер-Верлаг, с. 109 дои : 10.1007/978-3-540-92966-6_6.
  2. ^ Фриман, Питер; Дэвид Харт (2004). «Наука проектирования программно-емких систем». Коммуникации АКМ . 47 (8): 19–21 [20]. дои : 10.1145/1012037.1012054. S2CID  14331332.
  3. ^ Ральф П. и Ванд Ю. Предложение по формальному определению концепции дизайна. Люйтинен К., Лукопулос П., Милопулос Дж. и Робинсон В. (ред.), Разработка требований к проектированию: десятилетняя перспектива: Springer-Verlag, 2009, стр. 103–136.
  4. ^ Дэвис, А.: «201 принцип разработки программного обеспечения», McGraw Hill, 1995.
  5. ^ Буч, Грейди; и другие. (2004). Объектно-ориентированный анализ и проектирование с приложениями (3-е изд.). Массачусетс, США: Эддисон Уэсли. ISBN 0-201-89551-Х. Проверено 30 января 2015 г.
  6. ^ Сурьянараяна, Гириш (ноябрь 2014 г.). Рефакторинг для запахов проектирования программного обеспечения . Морган Кауфманн. п. 258. ИСБН 978-0128013977.
  7. ^ Кэрролл, Джон, изд. (1995). Проектирование на основе сценариев: представление работы и технологий при разработке системы . Нью-Йорк: Джон Уайли и сыновья. ISBN 0471076597.
  8. ^ Белл, Майкл (2008). «Введение в сервис-ориентированное моделирование». Сервис-ориентированное моделирование: анализ, проектирование и архитектура сервисов . Уайли и сыновья. ISBN 978-0-470-14111-3.
  9. ^ Джудит Бишоп. «Шаблоны проектирования C# 3.0: используйте возможности C# 3.0 для решения реальных проблем». Книги по C# от O'Reilly Media . Проверено 15 мая 2012 г. Если вы хотите ускорить разработку своих .NET-приложений, вы готовы к использованию шаблонов проектирования C# — элегантных, общепринятых и проверенных способов решения распространенных проблем программирования.
  10. ^ Дейкстра, EW (1988). «О жестокости реального преподавания информатики» . Проверено 10 января 2014 г.
  11. ^ Кнут, Дональд Э. (1989). «Заметки об ошибках TeX» (PDF) .

^ Роджер С. Прессман (2001). Программная инженерия: подход практикующего специалиста . МакГроу-Хилл. ISBN 0-07-365578-3.