CS 기본이론 소프트웨어공학
in Develop / Studing
- toc
소프트웨어공학?
- 소프트웨어가 어떻게 개발되어지는지 그 단계들을 수십년간 정리해 놓은 것.
소프트웨어 개발 생명 주기
- 계획 단계에서 유지보수 단계에 이르기까지의 과정
- 정의 단계
- 사용자의 요구사항 확인 및 타당성 검토
- 개발에 필요한 요구사항 명세화
- 개발 단계
- 코딩하여 실제 프로그램 개발
- 단위/통합/시스템/인수/설치 테스트
- 유지보수 단계
- 시스템 운영과정.
- 운영 중 발생하는 문제 해결
- 시스템 폐기.
소프트웨어 개발프로세스
- 사용자의 요구사항을 SW로 구현하는 과정
- 소프트웨어 개발 7단계
- 계획
- 요구분석
- 설계
- 구현
- 테스트
- 반영
- 유지보수
소프트웨어 프로세스 모델
- 폭포수(Waterfall) 모델
- 단점
- 시간이 오래 걸림
- 단점
프로토타입 모델(Prototype) 모델
- 나선형(Spiral) 모델
- 짧은 단위로 개발하며 피드백을 받음.
- 통합프로세스 모델
- 모델링부터 테스트를 동시에 진행.
- 애자일(Agile) 프로세스 모델
- 문서보다 실제 테스트를 중시함.
- 고객의 요구에 민첩하게 댜응하고, 그때그때 주어지는 문제를 풀어나감.
- 프로세스와 도구 중심이 아닌, 상호 소통 중심.
- 계획 중심이 아닌, 변화에 대한 민첩한 대응.
소프트웨어 아키텍처
아키텍처?
- 소프트웨어의 전체적인 구조
- 소프트웨어를 이루고 있는 여러 구성요소
- 구성 요소들의 인터페이스 간의 상호작용 정의
- 시스템 설계와 개발 시 적용되는 원칙과 지침.
아키텍처 구성
- 구성 요소
- 요소 사이의 관계
- 요소들이 외부에 드러내는 속성
- 요소와 주변 환셩 사이의 관계
- 요소들이 제공하는 인터페이스
- 요소들의 협력 및 조립 방법
아키텍처 모델
데이터 중심 모델
- 주요 데이터가 repo에서 중앙 관리.
- 데이터가 중앙에 있고, 그 주변에 소프트웨어가 있음.
- repo와 repo에 접근하는 서브시스템으로 구성
- 데이터가 한군데 모여 있기 때문에 일관성 있게 관리 가능.
- 새로운 서브시스템 추가 용이
- repo에서 병목 현상 발생 가능
- repo와 소프트웨어 사이의 결합이 강해서, repo를 변경할 시 소프트웨어가 모두 영향을 받음.
Client-Server 모델
- 네트워크를 이용하는 분산 시스템
- 데이터와 처리 기능을 클라이언트와 서버에 분할하여 사용.
- 역할
- 서버
- 클라이언트에게 서비스를 제공
- 클라이언트
- 서버에게 서비스를 요청.
- 서비스 실행
- 서버
Layering 모델
- 기능을 몇 개의 계층으로 나누어 배치
MVC 모델
- 모델, 뷰, 컨트롤러로 나누어 시스템을 구성
- 같은 모델을 이용해서 여러 뷰를 만들 때 적합.
- 장점
- 뷰와 모델을 분리해서 느슨한 결합 가능
- 구조 변경에 용이
- 단번
- 기본 설계의 복잡도 증가
- 속도가 중요한 프로젝트에 부적합.