Список философий разработки программного обеспечения
Часть серии о |
Разработка программного обеспечения |
---|
Это список подходов, стилей, методологий и философий разработки программного обеспечения. Он также содержит парадигмы программирования , методологии разработки программного обеспечения , процессы разработки программного обеспечения , а также отдельные практики, принципы и законы.
Некоторые из упомянутых методов более актуальны для конкретной области, чем для другой, например, автомобильной или аэрокосмической. [1] [2] Тенденция к гибким методам в разработке программного обеспечения заметна. [3] однако необходимость в улучшении исследований по этому вопросу также имеет первостепенное значение. [4] [5] Также обратите внимание, что некоторые из перечисленных методов могут быть более новыми или старыми , или все еще использоваться , или устаревшими, а исследования методов проектирования программного обеспечения не новы и продолжаются. [6] [7] [8] [9]
Методологии, рекомендации, стратегии разработки обеспечения программного
Стили крупномасштабного программирования [ править ]
- Развитие, основанное на поведении
- Разработка, основанная на дизайне
- Доменно-ориентированный дизайн
- Безопасность благодаря дизайну
- Разработка через тестирование
- Разработка, основанная на данных
- Ориентированный на данные дизайн
[ править ]
Комплексные системы [ править ]
- Гибкая разработка программного обеспечения
- Облегченная методология
- Канбан (разработка)
- Единый процесс
Практические правила, законы, руководящие принципы и принципы [ править ]
- 300 практических правил и самородков мудрости (отрывок из книги « Управление неуправляемым: правила, инструменты и идеи управления людьми и командами, занимающимися программным обеспечением»). [10] Микки В. Мантл, Рон Личти)
- КИСЛОТА
- Большой ком грязи
- Закон Брукса
- Основные рекомендации по C++ [11] (Страуструп/Саттер) P1 - P13 Правила философии
- Теорема CAP
- Повторное использование кода
- Разделение команд и запросов (CQS)
- Закон Конвея
- Ковбойское кодирование
- Делай то, что я имею в виду (DWIM)
- Не повторяйся (СУХОЙ)
- Безэгоистическое программирование
- Безотказный
- Закон Галла
- Общие шаблоны программного обеспечения для распределения ответственности (GRASP)
- Если оно не сломано, не чини его.
- Наследование (ООП)
- ПОЦЕЛУЙ принцип
- Закон Деметры , также известный как принцип наименьшего знания.
- Закон сохранения сложности , также известный как закон Теслера.
- Законы Лемана эволюции программного обеспечения
- Ослабленная связь
- Минимализм (компьютерный)
- Правило девяносто-девяносто
- Принцип открытости-закрытости
- Принципы упаковки
- Принцип Парето
- Закон Паркинсона
- Принцип наименьшего удивления (POLA)
- Выпускайте раньше, выпускайте чаще
- Принцип устойчивости , также известный как закон Постеля.
- Правило наименьшей мощности
- СЕМАТ
- Разделение интересов
- Разделение механизма и политики
- Единый источник истины (SSOT)
- Единая версия правды (СВОТ)
- SOLID (объектно-ориентированное проектирование)
- Есть несколько способов сделать это
- Единый принцип доступа
- Философия Unix
- Чем хуже, тем лучше
- Тебе это не понадобится (ЯГНИ)
Другое [ править ]
- Дэвис 201 Принципы разработки программного обеспечения [12]
- Не заставляйте меня думать (Принципы интуитивной навигации и информационного дизайна) [13]
- Искусство компьютерного программирования (шедевр компьютерной науки Дональда Э. Кнута )
- Собор и базар - книга, сравнивающая программное обеспечение с открытым исходным кодом «сверху вниз» и «снизу вверх».
- Философия информатики [14]
- Где теория программной инженерии? [15]
- Проблема Йо-йо
Парадигмы программирования [ править ]
- Агент-ориентированное программирование
- Аспектно-ориентированное программирование (АОП)
- Соглашение важнее конфигурации
- Компонентная разработка программного обеспечения
- Функциональное программирование (ФП)
- Иерархическое объектно-ориентированное проектирование (HOOD) [16]
- Грамотное программирование
- Логическое программирование
- Модульное программирование
- Объектно-ориентированное программирование (ООП)
- Процедурное программирование
- Реактивное программирование
Методологии разработки программного обеспечения [ править ]
- Гибкий унифицированный процесс (AUP)
- Конструктивистская методология проектирования (CDM)
- Метод разработки динамических систем (DSDM)
- Экстремальное программирование (XP)
- Итеративная и инкрементальная разработка
- Канбан
- Бережливая разработка программного обеспечения
- Системное проектирование на основе моделей (MBSE)
- Открытый унифицированный процесс
- Парное программирование
- Программирование мобов
- Быстрая разработка приложений (RAD)
- Рациональный унифицированный процесс (RUP)
- Отладка резиновой утки
- Скрам
- Метод структурированного системного анализа и проектирования (SSADM)
- Единый процесс (UP)
разработки Процессы программного обеспечения
- Разработка под управлением активного администратора (AADD)
- Разработка, основанная на поведении (BDD)
- Разработка, основанная на ошибках (BgDD)
- Разработка на основе конфигурации (CDD)
- Разработка на основе Readme (RDD)
- Разработка, основанная на дизайне (D3)
- Доменно-ориентированное проектирование (DDD)
- Разработка на основе функций (FDD)
- Разработка через тестирование (TDD)
- Пользовательско-ориентированный дизайн (UCD) ( User-Driven Development (UDD))
- Проектирование, ориентированное на ценность (VDD)
- Обзор программного обеспечения
- Обеспечение качества программного обеспечения
См. также [ править ]
- Антипаттерн
- Соглашения о кодировании
- Шаблон проектирования
- Парадигма программирования
- Методология разработки программного обеспечения
- Процесс разработки программного обеспечения
- Очерк информатики
- Краткое описание разработки программного обеспечения
- Очерк компьютерной инженерии
- Краткое описание компьютерного программирования
- Схема разработки программного обеспечения
- Краткое описание веб-дизайна и веб-разработки
- Схема компьютеров
- Категория:Принципы программирования
Дальнейшее чтение [ править ]
- ISO/IEC/IEEE 26515:2018(E) – Международный стандарт ISO/IEC/IEEE. Системная и программная инженерия. Разработка информации для пользователей в гибкой среде [17]
Прочие материалы, книги, статьи и т.п. [ править ]
- Не заставляйте меня думать (книга Стива Круга о взаимодействии человека с компьютером и удобстве использования Интернета )
Ссылки [ править ]
- ^ Грущинский, Б. (май 2006 г.). «Обзор современного состояния разработки программного обеспечения во встраиваемой автомобильной электронике» . 2006 Международная конференция IEEE по электро/информационным технологиям . стр. 377–381. дои : 10.1109/EIT.2006.252190 . ISBN 0-7803-9592-1 . S2CID 34164454 .
- ^ Патель, БК; Личфилд, В.; Таманаха, Д.; Дэвис, А. (февраль 1991 г.). «Системы реального времени/Методологии программного обеспечения для крупных аэрокосмических систем» . Дайджест конференции IEEE по аэрокосмическим приложениям 1991 года . стр. 2/1–2/9. дои : 10.1109/AERO.1991.154537 . ISBN 0-87942-686-1 . S2CID 151614328 .
- ^ Яу, Стивен С; Цзя, Сяопин; Пэ, Ду-Хван (1 мая 1992 г.). «Методы проектирования программного обеспечения для распределенных вычислительных систем» . Компьютерные коммуникации . Программные аспекты будущих тенденций в распределенных системах. 15 (4): 213–224. дои : 10.1016/0140-3664(92)90104-М . ISSN 0140-3664 .
- ^ Ставру, Ставрос (01 августа 2014 г.). «Критический анализ недавних промышленных исследований по использованию гибких методов» . Журнал систем и программного обеспечения . 94 : 87–97. дои : 10.1016/j.jss.2014.03.041 . ISSN 0164-1212 .
- ^ Дыбо, Торе; Дингсойр, Торгейр (1 августа 2008 г.). «Эмпирические исследования гибкой разработки программного обеспечения: систематический обзор» . Информационные и программные технологии . 50 (9): 833–859. дои : 10.1016/j.infsof.2008.01.006 . ISSN 0950-5849 . S2CID 2244031 .
- ^ Тейлор, П. (ноябрь 2011 г.). «Дизайнерское мышление: чему методология разработки программного обеспечения может поучиться из теории дизайна» . Материалы Международной конференции по методам и инструментам программного обеспечения. СМТ 2000 . стр. 107–116. дои : 10.1109/SWMT.2000.890426 . ISBN 978-0-7695-0903-7 . S2CID 110041968 .
- ^ Яу, Стивен С; Цзя, Сяопин; Пэ, Ду-Хван (1 мая 1992 г.). «Методы проектирования программного обеспечения для распределенных вычислительных систем» . Компьютерные коммуникации . Программные аспекты будущих тенденций в распределенных системах. 15 (4): 213–224. дои : 10.1016/0140-3664(92)90104-М . ISSN 0140-3664 .
- ^ Гомаа, Хасан (1 мая 1994 г.). «Методы проектирования программного обеспечения для проектирования крупномасштабных систем реального времени» . Журнал систем и программного обеспечения . 25 (2): 127–146. дои : 10.1016/0164-1212(94)90002-7 . ISSN 0164-1212 .
- ^ Будген, Дэвид (июль 1995 г.). « Модели проектирования на основе методов проектирования программного обеспечения» . Дизайнерские исследования . 16 (3): 293–325. дои : 10.1016/0142-694X(95)00001-8 . ISSN 0142-694X .
- ^ Мантл, Микки В. (2020). Управление неуправляемым: правила, инструменты и идеи для управления людьми и командами, занимающимися программным обеспечением . Рон Личти (2-е изд.). Бостон. ISBN 978-0-13-566763-7 . OCLC 1137802633 .
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка ) - ^ «Основные рекомендации по C++» . isocpp.github.io . Проверено 11 апреля 2021 г.
- ^ Дэвис, Алан Марк. (1995). 201 принцип разработки программного обеспечения . Нью-Йорк: МакГроу-Хилл. ISBN 0-07-015840-1 . OCLC 31814837 .
- ^ Круг, Стив (2014). Не заставляйте меня думать, еще раз: подход здравого смысла к удобству использования Интернета . Бэйл, Элизабет, Стрейгер, Арен, Матчо, Марк (Третье изд.). [Сан-Франциско, Калифорния]. ISBN 978-0-321-96551-6 . OCLC 859556499 .
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка ) - ^ Тернер, Раймонд; Ангиус, Никола (2020 г.), «Философия информатики» , в Залте, Эдвард Н. (редактор), Стэнфордская энциклопедия философии (изд. весны 2020 г.), Лаборатория метафизических исследований, Стэнфордский университет , получено 9 сентября 2020 г. 01
- ^ Джонсон, Понт; Экстедт, Матиас; Джейкобсон, Ивар (2012). «Где теория разработки программного обеспечения?». Программное обеспечение IEEE . 29 (5): 96. doi : 10.1109/MS.2012.127 . ISSN 0740-7459 . S2CID 38239662 .
- ^ Аслетт, MJ (декабрь 1991 г.). «Обзор метода HOOD» . Коллоквиум IEE 1991 г. по введению в методологии проектирования программного обеспечения (ссылка №: 1991/181) : 5/1–5/4.
- ^ Международный стандарт ISO/IEC/IEEE. Системная и программная инженерия. Разработка информации для пользователей в гибкой среде . ИСО/МЭК/ИИЭР 26515:2018(Е). Декабрь 2018 г. стр. 1–32. doi : 10.1109/IEESTD.2018.8584455 . ISBN 978-1-5044-5297-7 .