CS
소프트웨어 설계
seulll
2025. 2. 6. 17:52
✅ 소프트웨어 개발 방법론
폭포수 모형
- 소프트웨어 공학에서 가장 오래되고 폭넓게 사용된 전통적인 소프트웨어 생명 주기 모형
- 소프트웨어 개발 과정의 한 단계가 끝나야만 다음 단계로 넘어갈 수 있는 선형 순차적 모형
- 각 단계가 끝난 후 다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야 함
프로토타입 모형
- 폭포수 모형의 요구사항 변경에 따른 어려움을 보완한 모형으로 사용자의 요구사항을 충실히 반영함
- 실제 상황 전에 가상의 시뮬레이션을 통하여 최종 결과물에 대한 예측 가능
- 프로젝트의 관리가 용이하고, 노력과 비용을 절감
나선형 모형
- 보헴이 제안한 것으로, 폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모형
- 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 최종 소프트웨어 개발 (점진적 모형)
- 소프트웨어 개발 중 발생할 수 있는 위험을 관리하고 최소화하는 것을 목적으로 함
- 추가된 요구사항 첨가 가능, 정밀함, 유지보수 과정이 필요 없음
애자일 개발 방법론
- 특정 방법론이 아닌 소프트웨어를 빠르고 낭비 없이 제작하기 위해 고객과의 협업에 초점 두고 소프트웨어 개발 중 설계 변경에 신속히 대응하여 요구사항을 수용할 수 있음
- 절차와 도구보다 개인과 소통을 중요시하고 고객과의 피드백을 중요시 함
- 애자일 방법론의 종류
- 익스트림 프로그래밍(Extreme Programming, XP)
- 짝 프로그래밍(Pair Programming)
- 테스트 주도 개발(Test Driven Development, TDD)
- 스크럼(Scrum)
- 기능 중심 개발(FDD)
- 린(Lean)
- DSDM(Dynamic System Development Method): 동적 시스템 개발 방법론
- Crystal
- ASD(Adaptive Soflware Development): 적응형 소프트웨어 개발 방법론
- DAD(Disciplined Agile Delivery): 학습 애자일 배포
✅ XP(eXtreme Programming)
- Pair Programming(짝 프로그래밍): 다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경
- Test-Driven Development(테스트 주도 개발): 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야할지 정확히 파악, 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구 사용
- Whole Team(전체 팀): 개발에 참여하는 모든 구성원들은 각자 자신의 역할이 있고 책임을 가져야 함
- Desgin Improvement(디자인 개선) 또는 Refactoring(리팩터링): 프로그램 기능의 변경 없이, 단순화, 유연성 강화 등을 통해 시스템을 재구성
- Small Releases(소규모 릴리즈): 릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응
- Continuous Integration(계속적인 통합): 모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리 될 때마다 지속적으로 통합
- 공동 코드 소유(Collective Ownership): 모든 코드는 개발자들이 공동으로 소유하며 누구든지 수정할 수 있다. </aside>
✅ 소프트웨어 설계
① 상위설계
■ 아키텍처 설계
- 시스템의 전체적인 구조 설계
- 아키텍처 설계 과정 : 설계 목표 설정 → 시스템 타입 결정 → 스타일 적용 및 커스터마이즈 → 서브시스템의 기능, 인터페이스 동작 작성 → 아키텍처 설계 검토
■ 데이터 설계
- 시스템에 필요한 정보를 설계
- 데이터 베이스 설계
■ 인터페이스 정의
- 시스템의 구조와 서브 시스템들 사이의 인터페이스를 명확히 정의
■ 사용자 인터페이스 설계
- 사용자가 익숙하고 편리하게 사용하도록 인터페이스 설계
② 하위설계
■ 모듈 설계
- 각 모듈의 실제적인 내부를 알고리즘 형태로 표현
■ 자료구조 설계
- 자료구조, 변수 등에 대한 상세한 정보를 설계
■ 알고리즘 설계
- 업무의 처리 절차 등을 설계