stringtranslate.com

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

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

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

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

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

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

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

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

Ценить

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

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

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

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

Артефакты

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

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

Принципы проектирования

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

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

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

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

Конструктивные соображения

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

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

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

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

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

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

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

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

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

Ссылки

  1. ^ Ральф, П. и Ванд, И. (2009). Предложение по формальному определению концепции дизайна. В Lyytinen, K., Loucopoulos, P., Mylopoulos, J. и Robinson, W., редакторы, Design Requirements Workshop (LNBIP 14), стр. 103–136. Springer-Verlag, стр. 109 doi :10.1007/978-3-540-92966-6_6.
  2. ^ Фримен, Питер; Дэвид Харт (2004). «Наука проектирования систем с большим объемом программного обеспечения». Communications of the ACM . 47 (8): 19–21 [20]. doi :10.1145/1012037.1012054. S2CID  14331332.
  3. ^ Ральф, П. и Ванд, И. Предложение по формальному определению концепции дизайна. В Lyytinen, K., Loucopoulos, P., Mylopoulos, J. и Robinson, W., (ред.), Design Requirements Engineering: A Ten-Year Perspective: Springer-Verlag, 2009, стр. 103-136
  4. ^ Дэвис, А.: «201 принцип разработки программного обеспечения», McGraw Hill, 1995.
  5. ^ Booch, Grady; et al. (2004). Объектно-ориентированный анализ и проектирование с приложениями (3-е изд.). MA, США: Addison Wesley. ISBN 0-201-89551-X. Получено 30 января 2015 г.
  6. ^ Suryanarayana, Girish (ноябрь 2014 г.). Рефакторинг для Software Design Smells . Морган Кауфманн. стр. 258. ISBN 978-0128013977.
  7. ^ Кэрролл, Джон, ред. (1995). Проектирование на основе сценариев: представление работы и технологий в разработке систем . Нью-Йорк: John Wiley & Sons. ISBN 0471076597.
  8. ^ Создание бессерверных приложений на Knative . O'Reilly Media. ISBN 9781098142049.
  9. ^ Белл, Майкл (2008). «Введение в сервисно-ориентированное моделирование». Сервисно-ориентированное моделирование: анализ услуг, проектирование и архитектура . Wiley & Sons. ISBN 978-0-470-14111-3.
  10. ^ Джудит Бишоп. "Шаблоны проектирования C# 3.0: используйте мощь C# 3.0 для решения реальных проблем". Книги по C# издательства O'Reilly Media . Получено 15.05.2012 . Если вы хотите ускорить разработку приложений .NET, вы готовы к шаблонам проектирования C# — элегантным, общепринятым и проверенным способам решения распространенных проблем программирования.
  11. ^ Дейкстра, Э. В. (1988). «О жестокости реального преподавания компьютерной науки» . Получено 10 января 2014 г.
  12. ^ Кнут, Дональд Э. (1989). «Заметки об ошибках TeX» (PDF) .

^ Роджер С. Прессман (2001). Программная инженерия: подход практиков . McGraw-Hill. ISBN 0-07-365578-3.