Разработка программного обеспечения |
---|
Это список подходов, стилей, методологий, философий в разработке программного обеспечения и инженерии. Он также содержит парадигмы программирования , методологию разработки программного обеспечения , процессы разработки программного обеспечения , и отдельные практик, принципы и законы.
Некоторые из упомянутых методов больше подходят для конкретной области, чем для другой, например, автомобилестроения или авиакосмической промышленности. [1] [2] Тенденция к гибким методам разработки программного обеспечения заметна, [3] однако потребность в улучшенных исследованиях по этому вопросу также имеет первостепенное значение. [4] [5] Также обратите внимание, что некоторые из перечисленных методов могут быть более новыми или старыми, или все еще используемыми или устаревшими, а исследования методов проектирования программного обеспечения не новы и не продолжаются. [6] [7] [8] [9]
Методологии, руководства, стратегии разработки программного обеспечения [ править ]
Стили крупномасштабного программирования [ править ]
- Поведенческая разработка
- Разработка на основе дизайна
- Домен-ориентированный дизайн
- Безопасность благодаря дизайну
- Разработка через тестирование
- Разработка через приемочные испытания
- Непрерывная разработка через тестирование
- Уточнение на примере
- Разработка на основе данных
- Дизайн, ориентированный на данные
[ править ]
- Итеративная и инкрементальная разработка
- Модель водопада
- Формальные методы
Комплексные системы [ править ]
- Гибкая разработка программного обеспечения
- Бережливая разработка программного обеспечения
- Легкая методология
- Адаптивная разработка программного обеспечения
- Экстремальное программирование
- Разработка на основе функций
- ICONIX
- Канбан (разработка)
Эмпирические правила, законы, руководящие принципы и принципы [ править ]
- 300 практических правил и крупиц мудрости (отрывок из книги « Управление неуправляемым - правила, инструменты и идеи для управления людьми и командами программного обеспечения» [10] Микки В. Мантла, Рона Личти)
- 42 основных вопроса Карпова о программировании, рефакторинге и многом другом
- Большой шар грязи
- Основные принципы C ++ [11] (Страуструп / Саттер) P1 - P13 Правила философии
- Разделение команд и запросов (CQS)
- Ковбойское кодирование
- Делай то, что я имею в виду (DWIM)
- Не повторяйся (СУХОЙ)
- Программирование без эго
- Быстро
- Закон галла
- Если он не сломан, не чините его.
- Принцип KISS
- Закон Деметры , также известный как принцип наименьшего знания
- Закон сохранения сложности , также известный как закон Теслера
- Законы Лемана эволюции программного обеспечения
- Минимализм (вычисления)
- Правило девяноста девяноста
- Принцип открыт-закрыт
- Принцип Парето
- Закон Паркинсона
- Принцип наименьшего удивления (ПОЛА)
- Выпускайте раньше, выпускайте часто
- Принцип устойчивости , также известный как закон Постела
- Правило наименьшей мощности
- Разделение механизма и политики
- Принцип работы с ослабленной муфтой
- Единый источник истины (SSOT)
- Единая версия правды (SVOT)
- SOLID (объектно-ориентированный дизайн)
- Есть несколько способов сделать это
- Принцип единого доступа
- Философия Unix
- Чем хуже, тем лучше
- Тебе это не понадобится (ЯГНИ)
Другое [ править ]
- Дэвис 201 Принципы разработки программного обеспечения [12]
- Не заставляйте меня думать (Принципы интуитивной навигации и информационного дизайна) [13]
- Искусство программирования (общий шедевр информатики Дональда Э. Кнута )
- The Cathedral and the Bazaar - книга, сравнивающая нисходящее и восходящее программное обеспечение с открытым исходным кодом
- Философия компьютерных наук [14]
- Где теория программной инженерии? [15]
Парадигмы программирования [ править ]
- Агентно-ориентированное программирование
- Аспектно-ориентированное программирование (АОП)
- Соглашение важнее конфигурации
- Компонентная разработка программного обеспечения
- Функциональное программирование (FP)
- Иерархический объектно-ориентированный дизайн (HOOD) [16]
- Грамотное программирование
- Логическое программирование
- Модульное программирование
- Объектно-ориентированное программирование (ООП)
- Процедурное программирование
- Реактивное программирование
Методологии разработки программного обеспечения [ править ]
- Гибкий унифицированный процесс (AUP)
- Конструктивистская методология проектирования (CDM)
- Метод разработки динамических систем (DSDM)
- Экстремальное программирование (XP)
- Итеративная и инкрементальная разработка
- Канбан
- Бережливая разработка программного обеспечения
- Системная инженерия на основе моделей (MBSE)
- Открытый единый процесс
- Парное программирование
- Быстрая разработка приложений (RAD)
- Рациональный унифицированный процесс (RUP)
- Scrum
- Метод анализа и проектирования структурированных систем (SSADM)
- Единый процесс (UP)
Процессы разработки программного обеспечения [ править ]
- Разработка, управляемая активным администратором (AADD)
- Поведенческая разработка (BDD)
- Разработка на основе ошибок (BgDD)
- Разработка на основе конфигурации (CDD)
- Разработка на основе дизайна (D3)
- Доменно-ориентированный дизайн (DDD)
- Разработка на основе функций (FDD)
- Разработка через тестирование (TDD)
- Дизайн, ориентированный на пользователя (UCD) ( User-Driven Development (UDD))
- Дизайн, ориентированный на ценность (VDD)
- Обзор программного обеспечения
- Гарантия качества программного обеспечения
См. Также [ править ]
- Анти-шаблон
- Соглашения о кодировании
- Шаблон дизайна
- Парадигма программирования
- Методология разработки программного обеспечения
- Процесс разработки программного обеспечения
- Очерк информатики
- Краткое описание программной инженерии
- Очерк компьютерной инженерии
- Очерк компьютерного программирования
- Категория: Принципы программирования
Дальнейшее чтение [ править ]
- ISO / IEC / IEEE 26515: 2018 (E) - Международный стандарт ISO / IEC / IEEE - Системная и программная инженерия - Разработка информации для пользователей в гибкой среде [17]
Другие материалы, книги, статьи и т. Д. [ Править ]
- Не заставляйте меня думать (книга Стива Круга о взаимодействии человека с компьютером и удобстве использования Интернета )
Ссылки [ править ]
- ^ Gruszczyński, B. (май 2006). «Обзор текущего состояния программной инженерии во встроенной автомобильной электронике» . 2006 Международная конференция IEEE по электро / информационным технологиям : 377–381. DOI : 10.1109 / EIT.2006.252190 .
- ^ Патель, Б.К .; Litchfield, V .; Tamanaha, D .; Дэвис, А. (февраль 1991 г.). «Системы реального времени / методологии программного обеспечения для больших аэрокосмических систем» . Дайджест конференции по аэрокосмическим приложениям IEEE 1991 : 2 / 1–2 / 9. DOI : 10.1109 / AERO.1991.154537 .
- ^ Яу, Стивен S; Цзя, Сяопин; Пэ, Ду-Хван (1992-05-01). «Методы проектирования программного обеспечения для распределенных вычислительных систем» . Компьютерные коммуникации . Программные аспекты будущих тенденций в распределенных системах. 15 (4): 213–224. DOI : 10.1016 / 0140-3664 (92) 90104-M . ISSN 0140-3664 .
- ^ Stavru, Ставрос (2014-08-01). «Критический анализ последних промышленных исследований по использованию гибких методов» . Журнал систем и программного обеспечения . 94 : 87–97. DOI : 10.1016 / j.jss.2014.03.041 . ISSN 0164-1212 .
- ^ Дыба, Торе; Дингсёйр, Торгейр (1 августа 2008 г.). «Эмпирические исследования гибкой разработки программного обеспечения: систематический обзор» . Информационные и программные технологии . 50 (9): 833–859. DOI : 10.1016 / j.infsof.2008.01.006 . ISSN 0950-5849 .
- Перейти ↑ Taylor, P. (ноябрь 2011 г.). «Дизайнерское мышление: чему методология разработки программного обеспечения может извлечь уроки из теории дизайна» . Труды Международной конференции по программным методам и инструментам. SMT 2000 : 107–116. DOI : 10.1109 / SWMT.2000.890426 .
- ^ Яу, Стивен S; Цзя, Сяопин; Пэ, Ду-Хван (1992-05-01). «Методы проектирования программного обеспечения для распределенных вычислительных систем» . Компьютерные коммуникации . Программные аспекты будущих тенденций в распределенных системах. 15 (4): 213–224. DOI : 10.1016 / 0140-3664 (92) 90104-M . ISSN 0140-3664 .
- ^ Gomaa, Хасан (1994-05-01). «Методы проектирования программного обеспечения для проектирования крупномасштабных систем реального времени» . Журнал систем и программного обеспечения . 25 (2): 127–146. DOI : 10.1016 / 0164-1212 (94) 90002-7 . ISSN 0164-1212 .
- ^ Budgen, Дэвид (июль 1995). « „ Дизайн модели“от методов разработки программного обеспечения» . Исследования дизайна . 16 (3): 293–325. DOI : 10.1016 / 0142-694X (95) 00001-8 . ISSN 0142-694X .
- Перейти ↑ Mantle, Mickey W. (2020). Управление неуправляемым: правила, инструменты и идеи для управления людьми и командами разработчиков программного обеспечения . Рон Личти (2-е изд.). Бостон. ISBN 978-0-13-566763-7. OCLC 1137802633 .
- ^ «Основные принципы C ++» . isocpp.github.io . Проверено 11 апреля 2021 .
- ^ Дэвис, Алан Марк. (1995). 201 принцип разработки программного обеспечения . Нью-Йорк: Макгроу-Хилл. ISBN 0-07-015840-1. OCLC 31814837 .
- ^ Круг, Стив (2014). Не заставляйте меня думать, повторюсь: здравый подход к юзабилити в Интернете . Бейл, Элизабет, Стрейгер, Арен, Матчо, Марк (Третье изд.). [Сан - Франциско, Калифорния]. ISBN 978-0-321-96551-6. OCLC 859556499 .
- ^ Тернер, Раймонд; Ангиус, Никола (2020), «Философия компьютерных наук» , в Zalta, Эдвард Н. (редактор), Стэнфордская энциклопедия философии (издание весна 2020 года), Исследовательская лаборатория метафизики, Стэнфордский университет , извлечено 2020-09- 01
- ^ Джонсон, Понт; Экстедт, Матиас; Якобсон, Ивар (2012). «Где теория программной инженерии?». Программное обеспечение IEEE . 29 (5): 96. DOI : 10,1109 / MS.2012.127 . ISSN 0740-7459 . S2CID 38239662 .
- ^ Aslett, MJ (декабрь 1991). «Обзор метода HOOD» . Коллоквиум НВО 1991 г. по введению в методологии проектирования программного обеспечения (Ref. №: 1991/181) : 5 / 1–5 / 4.
- ^ «Международный стандарт ISO / IEC / IEEE - Системная и программная инженерия - Разработка информации для пользователей в гибкой среде» . ИСО / МЭК / IEEE 26515: 2018 (E) : 1–32. Декабрь 2018 г. doi : 10.1109 / IEEESTD.2018.8584455 .