소프트웨어 개발 철학 목록
List of software development philosophies다음에 대한 시리즈 일부 |
소프트웨어 개발 |
---|
이것은 소프트웨어 개발 및 엔지니어링의 접근방식, 스타일, 방법론, 철학의 목록이다.또한 프로그래밍 패러다임, 소프트웨어 개발 방법론, 소프트웨어 개발 프로세스, 단일 실행, 원칙 및 법률을 포함한다.
언급된 방법들 중 일부는 자동차나 항공우주 같은 다른 분야보다 특정 분야와 더 관련이 있다.[1][2]소프트웨어 공학에서 민첩한 방법을 지향하는 경향은 눈에 띄지만,[3] 그 주제에 대한 개선된 연구의 필요성도 가장 중요하다.[4][5]또한 열거된 방법 중 일부는 더 새롭거나 오래된 것일 수도 있고, 여전히 사용 중이거나 구식일 수도 있으며, 소프트웨어 설계 방법에 대한 연구는 새로운 것이 아니며 현재 진행 중인 것도 아니다.[6][7][8][9]
소프트웨어 개발 방법론, 지침, 전략
대규모 프로그래밍 스타일
종합시스템
엄지의 법칙, 법률, 지침 및 원칙
- 300가지 엄지와 지혜의 법칙(관리 불가사의 관리에서 제외 - 미키 W. 맨틀, 론 리히티의 소프트웨어 직원 및[10] 팀 관리를 위한 규칙, 도구 및 통찰력)
- Karpov의 42가지 궁극적인 프로그래밍, 리팩토링, 모든 것
- 큰 진흙덩어리
- 브룩스의 법칙
- C++ 핵심 지침[11](스트루스트럽/수터) P1 - P13 철학 규칙
- 명령-쿼리 분리(CQS)
- 카우보이 부호화
- 내 뜻대로 해 (DWIM)
- 반복하지 마십시오(DRY)
- 에골레스 프로그래밍
- 실패-패스트
- 갈의 법칙
- 고장나지 않았다면 고치지 마라.
- KISS 원리
- 최소한의 지식의 원리로도 알려진 데메터의 법칙
- 복잡성 보존의 법칙, 테슬러의 법칙이라고도 한다.
- 리먼의 소프트웨어 진화 법칙
- 미니멀리즘(컴퓨팅)
- 구십구율
- 개방-폐쇄 원칙
- 파레토 원리
- 파킨슨 법칙
- 최소 경악의 원리(POLA)
- 조기 출시, 자주 출시
- 포스텔의 법칙으로도 알려진 강건성 원리
- 최소 권력 규칙
- 메커니즘과 정책의 분리
- 서비스 느슨한 커플링 원리
- 단일 출처(SSOT)
- 단일 버전의 진실(SVOT)
- SOLID(객체 지향 설계)
- 할 수 있는 방법은 여러 가지가 아니다.
- 균일접근원리
- 유닉스 철학
- 더 나쁜 것이 낫다.
- 필요없을거야 (YAGNI)
- GRASP(General Responsibility Assignment 소프트웨어 패턴)
기타
- Davis 201 소프트웨어 개발[12] 원칙
- Don't Make Me Think(직관적인 탐색과 정보 디자인의 원칙)[13]
- 컴퓨터 프로그래밍의 예술 (도널드 E. 크누스의 일반적인 컴퓨터 과학 걸작)
- 성당과 바자 - 하향식 오픈소스 소프트웨어와 상향식 오픈소스 소프트웨어를 비교한 책
- 컴퓨터 과학의[14] 철학
- 소프트웨어 공학 이론은 어디에 있는가?[15]
프로그래밍 패러다임
- 에이전트 지향 프로그래밍
- 측면 지향 프로그래밍(AOP)
- 구성에 대한 컨벤션
- 컴포넌트 기반 소프트웨어 엔지니어링
- 기능 프로그래밍(FP)
- 계층적 객체 지향 설계(HUD)[16]
- 리터레이트 프로그래밍
- 논리 프로그래밍
- 모듈 프로그래밍
- 객체 지향 프로그래밍(OOP)
- 절차 프로그래밍
- 반응형 프로그래밍
소프트웨어 개발 방법론
- 신속한 변화를 위한 통합 프로세스(AUP)
- 시공자 설계 방법론(CDM)
- 동적 시스템 개발 방법(DSDM)
- 익스트림 프로그래밍(XP)
- 반복적이고 점진적인 개발
- 칸반
- 린 소프트웨어 개발
- MBSE(모델 기반 시스템 엔지니어링)
- 개방형 통합 프로세스
- 페어 프로그래밍
- 신속한 애플리케이션 개발(RAD)
- 합리적인 통합 프로세스(RUP)
- 스크럼
- 구조화된 시스템 분석 및 설계 방법(SSADM)
- 통합 프로세스(UP)
소프트웨어 개발 프로세스
- AADD(Active-Admin-Driven Development)
- 행동 주도형 개발(BDD)
- 버그 기반 개발(BgDD)
- 구성 기반 개발(CDD)
- 디자인 중심 개발(D3)
- 도메인 기반 설계(DDD)
- FDD(Feature-Driven Development)
- TDD(Test-Driven Development)
- 사용자 중심 설계(UCD)(User-Driven Development(UDD)))
- 가치 주도형 설계(VDD)
- 소프트웨어 검토
- 소프트웨어 품질 보증
참고 항목
- 안티패턴
- 코딩 규약
- 디자인 패턴
- 프로그래밍 패러다임
- 소프트웨어 개발 방법론
- 소프트웨어 개발 프로세스
- 컴퓨터 과학 개요
- 소프트웨어 엔지니어링 개요
- 컴퓨터 공학 개요
- 컴퓨터 프로그래밍 개요
- 범주:프로그래밍 원리
추가 읽기
- ISO/IEC/IEEE 26515:2018(E) - ISO/IEC/IEEE 국제 표준 - 시스템 및 소프트웨어 엔지니어링 - 신속한 변화를 위한 환경에서[17] 사용자를 위한 정보 개발
기타 자료, 도서, 물품 등
- Don't Make Me Think (Steve Krug가 쓴 책으로 인간의 컴퓨터 상호작용과 웹의 사용성에 대해)
참조
- ^ Gruszczynski, B. (May 2006). "An overview of the current state of software engineering in embedded automotive electronics". 2006 IEEE International Conference on Electro/Information Technology: 377–381. doi:10.1109/EIT.2006.252190. ISBN 0-7803-9592-1. S2CID 34164454.
- ^ Patel, B. K.; Litchfield, V.; Tamanaha, D.; Davis, A. (February 1991). "Real time systems/software methodologies for large aerospace systems". 1991 IEEE Aerospace Applications Conference Digest: 2/1–2/9. doi:10.1109/AERO.1991.154537. ISBN 0-87942-686-1. S2CID 151614328.
- ^ Yau, Stephen S; Jia, Xiaoping; Bae, Doo-Hwan (1992-05-01). "Software design methods for distributed computing systems". Computer Communications. Software aspects of future trends in distributed systems. 15 (4): 213–224. doi:10.1016/0140-3664(92)90104-M. ISSN 0140-3664.
- ^ Stavru, Stavros (2014-08-01). "A critical examination of recent industrial surveys on agile method usage". Journal of Systems and Software. 94: 87–97. doi:10.1016/j.jss.2014.03.041. ISSN 0164-1212.
- ^ Dybå, Tore; Dingsøyr, Torgeir (2008-08-01). "Empirical studies of agile software development: A systematic review". Information and Software Technology. 50 (9): 833–859. doi:10.1016/j.infsof.2008.01.006. ISSN 0950-5849.
- ^ Taylor, P. (November 2011). "Designerly thinking: what software methodology can learn from design theory". Proceedings International Conference on Software Methods and Tools. SMT 2000: 107–116. doi:10.1109/SWMT.2000.890426. ISBN 978-0-7695-0903-7. S2CID 110041968.
- ^ Yau, Stephen S; Jia, Xiaoping; Bae, Doo-Hwan (1992-05-01). "Software design methods for distributed computing systems". Computer Communications. Software aspects of future trends in distributed systems. 15 (4): 213–224. doi:10.1016/0140-3664(92)90104-M. ISSN 0140-3664.
- ^ Gomaa, Hassan (1994-05-01). "Software design methods for the design of large-scale real-time systems". Journal of Systems and Software. 25 (2): 127–146. doi:10.1016/0164-1212(94)90002-7. ISSN 0164-1212.
- ^ Budgen, David (July 1995). "'Design models' from software design methods". Design Studies. 16 (3): 293–325. doi:10.1016/0142-694X(95)00001-8. ISSN 0142-694X.
- ^ Mantle, Mickey W. (2020). Managing the unmanageable : rules, tools, and insights for managing software people and teams. Ron Lichty (2nd ed.). Boston. ISBN 978-0-13-566763-7. OCLC 1137802633.
- ^ "C++ Core Guidelines". isocpp.github.io. Retrieved 2021-04-11.
- ^ Davis, Alan Mark. (1995). 201 principles of software development. New York: McGraw-Hill. ISBN 0-07-015840-1. OCLC 31814837.
- ^ Krug, Steve (2014). Don't make me think, revisited : a common sense approach to Web usability. Bayle, Elisabeth,, Straiger, Aren,, Matcho, Mark (Third ed.). [San Francisco, California]. ISBN 978-0-321-96551-6. OCLC 859556499.
- ^ Turner, Raymond; Angius, Nicola (2020), "The Philosophy of Computer Science", in Zalta, Edward N. (ed.), The Stanford Encyclopedia of Philosophy (Spring 2020 ed.), Metaphysics Research Lab, Stanford University, retrieved 2020-09-01
- ^ Johnson, Pontus; Ekstedt, Mathias; Jacobson, Ivar (2012). "Where's the Theory for Software Engineering?". IEEE Software. 29 (5): 96. doi:10.1109/MS.2012.127. ISSN 0740-7459. S2CID 38239662.
- ^ Aslett, M. J. (December 1991). "An overview of the HOOD method". 1991 IEE Colloquium on an Introduction to Software Design Methodologies (Ref. No: 1991/181): 5/1–5/4.
- ^ ISO/IEC/IEEE International Standard - Systems and software engineering — Developing information for users in an agile environment. Iso/Iec/IEEE 26515:2018(E). December 2018. pp. 1–32. doi:10.1109/IEEESTD.2018.8584455. ISBN 978-1-5044-5297-7.