소프트웨어 공학 - 요약 #2
2023. 8. 21. 01:10ㆍ공부/소프트웨어 공학
프로세스의 정의
이 프로세스에서 작업이 이루어지기 전에 반드시 그 작업에서는 어떤 출력이 만들어져야 하는지 정해져 있어야 하고, 어떤 과정으로 이루어져야 하는지(방법), 이 프로세스가 시작되기 위한 입력 조건이 정해져 있어야 함
좋은 프로세스의 특성
- 프로세스 자체가 예측 가능해야 함
- 그 작업을 통해 나온 결과들이 유지보수를 좋게 만들어 줄 수 있는 작업이어야 함
- 변경이 쉬워야 함 → 변경 용이성
- 오류가 있을 때 빨리빨리 고쳐야 함 → 결함 제거 용이성
프로세스의 종류
- 개발 프로세스 : 무에서부터 돌아가는 소프트웨어를 개발하는데 필요한 작업들
- 관리 프로세스 : 제대로 이루어지는지 관리 작업
기타 프로세스
- 형상 관리 프로세스 : 형상관리 (만들어 진 것들도 체계적으로 관리, 고치는 것들에 대해서도 고쳤다는 것을 관리해서 모든 사용자가 새 버전을 참조)
- 프로세스 관리 프로세스 : 이 프로세스에서는 어떤 일을 할지 정해놓고 관리를 해야 함
프로세스 모델
- 폭포수 모델
- 프로토타이핑 모델
- V 모델
- 나선형 모델
- 진화적 모델
- 점증적 모델
- 통합 프로세스
- 애자일 프로세스
폭포수(Waterfall) 모델
- 1970년대 소개 : 항공 방위 소프트웨어 개발 경험으로 습득 → 이후 모든 모델의 기본 모델이 됨
- 단순 시스템 또는 잘 알고 있는 대규모 프로젝트에 적합
- 다음 작업의 근거가 되기 때문에 결과물 정의가 중요
- 요구단계에서 모든 요구를 처음에 다 제대로 개발하기는 어려움
폭포수 모델의 장점
- 프로세스가 단순하여 초보자가 쉽게 적용 가능
- 중간 산출물이 명확하고 관리하기 좋음
- 코드 생성 전 충분한 연구와 분석 단계
폭포수 모델의 단점
- 첫 단계를 지나치게 강조하면 코딩, 테스트가 지연
- 진행 과정 변경 어려움
- 활용도 떨어지는 다종의 문서 생산 가능성 있음
프로토타이핑(Prototyping) 모델
- 폭포수 모델을 개선해서 나온 것
- 사용자의 요구를 정확히 추출하는 것이 목표
- 사용자와 개발자 간의 좋은 의사소통 도구
- Throwaway, Evolutionary의 두 가지 모델 가지고 있음
프로토타이핑 모델의 장점
- 사용자의 의견 반영이 잘 됨
- 개발 초기에 사용자 참여를 높일 수 있고 개발자는 요구를 더 정확히 도출 가능
프로토타이핑 모델의 단점
- 적지 않은 개발 비용
- 중간 산출물 정의 난해 (문서 작성 대충하고 넘어감)
- 알고리즘 없는데 다 만들었다고 오해 → 기대심리 유발 가능성 있음
프로토타이핑 모델은 보여주기 위한 것에 더 많이 쓰임
V 모델
- 폭포수 모델을 개선해서 나온 것
- 테스팅할 테스트 데이터 문서들을 실제로 테스팅 하면서 만드는 것이 아니라 각 분석 설계 단계에서 진행
- 오류를 줄일 수 있는 장점이 있지만 폭포수 모델과 동일한 단점 가지고 있음
나선형(Spiral) 모델
- Bohem이 제안
- 매 단계에서 위험 요소 분석 및 해결 진행
- 미리 위험요소를 확인하여 선제 공격
- 매 단계에서 프로토타입을 새로 만들면서 들어감
- 반복 순환 모델이라고도 함
나선형 모델의 장점
- 대규모 시스템 개발에 적합
- 반복적인 개발 및 테스트에 따른 강인성 향상
- 추가 못한 기능은 다음 단계에 추가 가능
나선형 모델의 단점
- 아이디어는 좋았으나 성공사례가 많이 알려지지 않음
진화적 모델
- 개발 사이클이 짧은 환경
- 릴리즈 구성 방법
- 점증적 방법 : 기능별로 릴리즈
- 반복적 방법 : 릴리즈 할때마다 기능의 완성도 높임
진화적 모델의 장점
- 기능이 부족해도 사용자에게 초기에 사용하도록 함
- 사용자 의견을 받아서 최대한 빨리 보완하는 시스템이 목적
- 예상치 못한 문제를 꾸준히 고쳐나갈 수 있음
진화적 모델의 단점
- 처음에 사용자에게 좋은 인식을 주지 못하면 위험함
- 계속 덧대면서 나가는 방식은 대형 프로젝트에 부적합
통합(Unified) 프로세스
- 기존의 객체지향 개발 방법들을 통합하여 제시 (UML 사용)
- 사용 사례 중심의 프로세스
- 개발 초기에 아키텍처와 전체적인 구조 확정
- 반복적이고 점증적
- 요구가 일부 분석이 되면 그것을 바로 설계함
- 설계가 끝난 것들은 구현으로 넘어감
- 구현된 것을 가지고 테스트
- 시기적으로 도입, 정련, 구축, 전환과정
- 도입 : 간단한 유스케이스 모델과 소프트웨어 구조, 프로젝트 계획을 작성
- 정련 : 유스케이스를 기반으로 해서 설계와 많은 부분의 코딩이 이루어짐 ★
- 구축 : 구현이 주를 이루면서 통합과 테스팅까지 이루어지는 단계
- 전환 : 사용자 교육, 시스템 배치, 베타 테스팅, 결함 수정, 기능 개선
통합 프로세스의 장점
- 방법론과 프로세스의 문서화가 잘 되어있어 교육받기 좋음
통합 프로세스의 단점
- 프로세스 너무 복잡하고 이해하기 어려움 → 정확히 적용하기 어려움
'공부 > 소프트웨어 공학' 카테고리의 다른 글
소프트웨어 공학 - 요약 #4 (0) | 2023.08.21 |
---|---|
소프트웨어 공학 - 요약 #3 (0) | 2023.08.21 |
소프트웨어 공학 - 요약 #1 (0) | 2023.08.20 |