CS이론
CS 이론(1) 소프트웨어 공학
코드와이
2021. 6. 16. 16:14
모든 고급 개발 지식과 업무의 기본 근간은 알게 모르게 우리가 배웠던 cs기본 지식으로 연결된다.
[소프트웨어 프로세스 모델]
1. 폭포수 모델
- 사용자의 니즈가 크지 않았기 때문에 사용할 수 있었던 모델
- 프로세스 중 수정해야할 부분들이 계속해서 늘어났기 때문에 나중엔 사용하기 부담스러워진 모델
2. 나선형 모델
- 설계 단계에서 '어 여긴 나중에 고칠수도 있겠는데?' 하는 부분들을 미리 계산해 놓는다.
3. 프로토타입 모델
- ‘당신이 원하는게 이겁니까?’ 하고 물어보고 평가를 통해 다음 프로세스가 결정된다.
4. 통합프로세스 모델
5. 애자일 프로세스 모델
- 고객의 요구에 민첩하게 대응하고 그때그때 주어지는 문제를 풀어나가는 방법론
- 프로세스와 도구 중심이 아닌, 상호 소통 중시
- 문서 중심이 아닌, 실행 가능한 소프트웨어 중시
- 계약과 협상 중심이 아닌, 고객과의 협력
- 계획 중심이 아닌, 변화에 대한 민첩한 대응
[아키텍처 모델]
1. 데이터 중심의 모델
- 주요 데이터가 repository에서 중앙 관리
- repository와 여기에 접근하는 서브시스템으로 구성
- 데이터가 한군데에 모여 있기 때문에 데이터를 모순되지 않고 일관성 있게 관리 가능
- 새로운 서브시스템의 추가 용이
- repository의 병목 현상 발생 가능
- 서브시스템과 repository 사이의 강한 결합 - repository 변경 시 서브 시스템에 영향을 줌
2. client-server- 모델
- 네트워크를 이요하는 분산 시스템 형태
- 데이터와 처리 기능을 클라이언트와 서버에 분할하여 사용
- 서버 : 클라이언트(서브시스템)에 서비스 제공
- 클라이언트 : 서버가 제공하는 서비스를 요청(호출)하는 서브시스템
3. LayerIng 모델
- 기능을 몇 개의 계층으로 나누어 배치
- 구성 : 하위 계층은 서버, 상위 계층은 클라이언트 역할
4. Model / View / Controller 모델
- 같은 모델의 서브시스템에 대하여 여러 뷰 서브시스템을 필요로 하는 시스템에 적합
- 장점
- 데이터를 화면에 표현하는 디자인과 로직을 분리함으로써 느슨한 결합 가능
- 구조 변경 요청 시 수정 용이
- 단점
- 기본 기능 설계로 인한 클래스 수의 증가로 복잡도 증가
- 속도가 중요한 프로젝트에 부적합