[소프트웨어 공학] 1. 소프트웨어 개발 프로세스
그림 용어 설명
- 하나의 개발 프로젝트는 많은 액티비티로 구성되어 있다.
- 하나의 액티비티는 많은 tasks로 구성되어 있다.
- 하나의 Task는 많은 WorkProduct를 생산하고 리소스들을 사용한다.
- Work Product : System, Model, Document
- Resource : Participant, Time, Equiment
소프트웨어 개발 프로세스
- SDLC 소프트웨어 개발 생명주기라고도 부른다.
- 여러 액티비티와 그것의 관계를 나타낸 것
- 소프트웨어 개발에 질서를 부여한다.
Fundamental Activities in 소프트웨어 개발 프로세스
요구사항 추출 -> 분석 -> 시스템 설계 -> 디테일 디자인 -> 구현 -> 테스트
소프트웨어 개발 프로세스 모델
- SDLC model 이라고도 부른다.
- 소프트웨어 개발 프로세스의 추상적 표현이다
- 대표적 소프트웨어 개발 프로세스 모델
- 순차적 모델
- Waterfall model
- V-model
- 반복적 모델
- 나선형 모델
- Unified Process (RUP)
- 순차적 모델
- Plan - driven Process : 미리 계획하고 잘되는지 관찰한다.
- Agile Process 애자일 프로세스 : 일부 계획하고 또 일부 계획 하는 점증적 계획을 한다. 고객 요구사항 변화에 적응이 쉽다.
- 현실에선 둘 다의 특성을 가지고 있는 경우가 많다.
소프트웨어 프로세스 모델에서 어떤 건 옳고, 어떤 건 나쁜건 없다.
Sequential Development
Waterfall Model
전 단계가 검증되고 리뷰되어야만 다음단계가 시작된다.
전단계로 되돌아 갈 수 없다. ( 있어도 타격이 크다)
Plan - driven 적 접근
-
Advantages :
심플하고 단계 구분이 잘 나뉘어있다.
요구사항이 쉬운 경우, 대규모 시스템인 경우 적합하다. ex) 비행기
관리자 측면에서 유용하다.
-
Disadvantages :
요구사항이 일찍 명세화되고 고정되어 있음을 가정한다.
하드웨어의 변화가 필요하거나 급진적 기술 변화가 있다면 좋지 않다.
big bang의 방식 즉, 모든 것을 한번에 만들어내므로 위험에 취약하다.
요구사항이 변경 불가능하므로 애초에 필요 이상으로 많아진다.
상당한 량의 문서가 만들어 진다.
V - Model
Waterfall의 변형. Test단계를 좀 더 세분화 한 모델.
자동차 시스템과 같이 하드웨어와 소프트웨어가 합쳐진 경우
기능이 엄밀하게 사용되어야 되는 경우 쓰인다.
-
Advantages :
높은 품질과 테스트 효능이 강하다.
-
Disadvantages :
Waterfall과 같은 단점을 갖는다.
위 두 모델 모두 요구 사항을 변경하는데 취약하다
Development of prototype
프로토타입에 잘 이해하지 못하는 부분, 위험한 부분을 먼저 간추려 넣는다. 이것으로 더 구체적인 피드백을 앞서 받을 수 있다.
-
Advantages :
요구사항이 쉽게 견고해진다.
요구사항이 나중에 고정되도 된다.
프로토타입을 만든 경험이 실제 개발에서 도움이 된다. -
Disadvantages :
예상보다 비용과 일정이 더 들어갈 수 있다.
Iterative and Incremental Development
한번이 아닌 여러번에 거쳐 만든다.
ex) UP, Agile....
-
Benefits :
위험을 줄임
수정에 유연
피드백에 유용
여러번 테스트를 거치기 때문에 높은 품질 -
Drawbacks :
구조와 디자인이 최적이 아닐 수 있음
다시 일하는 경우가 증가하고, 총 비용이 증가할 수 있다. -
적합성 :
장기적인 프로젝트의 위험을 줄여야 할 때
모든 요구사항을 확정 할 수 없을 때
응답시간이 중요할 때
Spiral Model : 나선형 모델
단계가 딱 정해져 있지 않다.
반복적 해결로 위험 요소를 해소한다
- 개체 생성 ( Objective setting)
단계를 위한 특정한 객체를 식별한다 - 위험 해소 (Risk reduction)
- 개발 및 검증
- 계획
다음 사이클에 대한 계획을 말함
Rational Unified Process (RUP) & Unified Process (UP)
반복적이며 아키텍처 중심적이고 유스케이스 중심이다.
-
Inception Phase (도입 단계)
사업에 타당성, 실현가능성 확인
비용 기간 범위 산정 -
Elaboration Phase (구체화 단계)
리스크를 줄이고 견고한 아키텍쳐를 만든다 -
Construction Phase (구축 단계)
프로토 타입을 기반으로 인도 가능한 최초 실행 버전의 소프트웨어 개발 -
Transition Phase (전이 단계)
사용자가 테스트 해본다
📌 Tip : 각각의 단계가 소프트웨어 개발 프로세스 단계로 착각하는데, SDLC는 계속 이루어 지고 있다 ! 다음 사진을 보면 이해가 간다.
Waterfall이 리스크가 높음을 볼 수 있으며, 폭포수 단계는 중간 까지 눈에 보이는 성과가 없다.
'📗 Computer Science' 카테고리의 다른 글
[소프트웨어 공학] 2. UML Overview (0) | 2020.09.12 |
---|---|
[네트워크] 2 - 1. Application Layer 응용계층 (0) | 2020.09.08 |
[네트워크] 1 - 1. 네트워크의 기초 Overview (0) | 2020.09.05 |
[네트워크] OSI 7계층 Protocols , TCP/IP Protocols (0) | 2020.09.05 |
[깃허브 기초] GitBash이용하여 Repository 연결과 Push 작업 (0) | 2020.09.03 |