프로세스
소프트웨어 공학에서 프로세스란
소프트웨어 시스템을 구축하기 위해 수행되는 작업의 집합을 의미
즉 프로젝트에서 수행해야 하는 작업과 수행 순서를 정의한 명세를 의미한다.
프로세스 모델
프로세스 모델이란
일반적인 프로세스를 추상적으로 기술한 것. (작업 흐름)
작업의 단계와 순서, 각 단계 작업 수행의 제약사항이나 조건을 모아 놓은 것
프로세스 (명세), 프로세스 모델 차이점
프로세스 정의Permalink
프로세스를 명확하게 설명하기 위해서는 3가지를 정의 해야 한다
- 목적
- 작업 방법
- 성과
전통적인 모델Permalink
폭포수 모델Permalink
가장 오래되고 널리 사용된 프로세스 모델
계획 단계 -> 운영 -> 유지보수 모두 순서대로 진행
각 프로세스 사이에 결과물이 있어 명확히 구분, 이전 작업으로 돌아가는 재작업 없다
결과는 문서나 프로그램으로 정리
폭포수 모델은 직능 중심의 프로젝트 조직이 가능하다.
장점
- 단순하기 이해하기 좋음
- 장기간 개발에 적합
단점
- 이전 단계의 문제가 발견되지 않고 넘어가는 문제점.
- 테스트 작업이 늦게 진행되어 요구 분석이나 설계 단계의 결함을 늦게 발견해 큰 비용이 들 수 있다.
V 모델Permalink
검증을 강화하는 관점에서 폭포수 모델을 확장한 것이 V 모델이다.
프로토타이핑 모델Permalink
시스템을 실험적으로 만들어 사용자에게 보여주고 평가하게 하는 방법.
일회용, 계속 발전시켜 나가는 진화형으로 나눌 수 있다.
실질적으로 고객은 돈을 내지 않으려고 한다..
그렇기 때문에 우리 제품을 보여주고
성능에 대한 이야기를 숫자로 구체적으로 명시해야한다고 설명해 주셨다.
그냥 우리 제품 좋습니다, 빠릅니다 보다는
우리 제품의 스펙을 잘 알고 외우고 있어야 한다라고 실전 인생 얘기를 해주셨다.
Proof of value - 고객에게 가치를 증명할 수 있다.
장점
- 문제점을 빨리 파악해 요구사항에 반영할 수 있고 더욱 정확한 기능 요구를 확정 지을수 있다
- 설계에 대한 타당성을 확인할 수 있다
- 고객 요구사항을 충분히 반영해 만족도를 높일 수 있다
단점
- 프로토타입 개발에 많은 비용이 든다면 단점이 될 수 있다
점증적 모델, 진화적 모델Permalink
앞에 나온 폭포수 모델, V 모델과 다르게
여러번의 사이클에 나누어 개발하는 방법
구체적으로 요구 분석, 설계, 구현, 테스트 사이클을 반복하며
기능을 점증적으로 추가하거나 시스템을 발전시키는 방법
점증적 모델은 모든 기능을 요구 명서세에 나타낸 후 새로운 기능을 추가해 나가는 방법
진화적 모델은 초기 단계에 요구사항을 확정하지 않는다.
전체 개발 주기를 반복하며 점점 완성도 높은 새로운 버전을 릴리스하는 방법
장점
- 요구 사항을 빠르게 반영할 수 있다
- 시장을 빨리 형성할 수 있다
단점
- 소규모 프로젝트에 적합하지 않다
- 반복적으로 진행하면 프로젝트의 끝이 안보일 수 있다
나선형 모델Permalink
폭포수 모델에 리스크 분석이 추가된 점증적 버전이다.
4가지 단계를 반복 순환하며 시스템을 확장한다
- 목표, 방법, 제약조건 결정
- 리스크 분석 및 해결
- 개발과 평가
- 다음 단계의 계획
요구사항이나 아키텍쳐를 이해하기 어렵거나 근본적으로 성능에 문제가 있는 경우
혹은 중심되는 기술에 문제가 있는 경우 적합하다.
어떤 상황에서 이런 방법론을 택할수 밖에 없는지 이해하는게 중요하다고 하셨는데,
프로토타입을 한번에 만들고 만족하지 못할 확률이 높기 때문에
점진적으로 완성형 모델을 만드는 방법론이다.
점증적 모델이랑 비교했을 때 점증적 모델은 시스템의 규모나 범위는 비슷하지만, 좀더 고도화 시키는 방법론이고
나선형 모델은 완성되지 않은 시스템을 완성형으로 나아가는 방법론이다.
장점
- 이론적으로 위험이 적다
- 오류 수정과 앞 주기에서 이루어지는 변경에 대해 유연하게 대처할 수 있다
단점
- 초기에 위험 분석을 잘못하여 리스크를 발견하지 못하고 계속 진행한다면 많은 비용을 투입하고 실패로 끝날 수 있다
Unified ProcessPermalink
여러개의 사이클로 구성되며 사이클은 시스템을 출시함으로 종결
사이클은 4단계로 이루어진다
- 도입 (incpetion)
- 정련 (elaboration)
- 구축 (construction)
- 전환 (transition)
UseCase를 식별해 시스템의 개발 계획을 활용하는데 초점을 두고 있다.
(유스케이스 중심의 프로세스)
시스템 개발 초기에 아키텍쳐와 전체적인 구조를 확정하고 이를 시스템 개발의 가이드로 활용한다.
그리고 여러번의 반복 과정을 거쳐 완성된다.
그러므로 아키텍쳐 기반의 반복적 프로세스이다.
유스케이스가 뭔지는 뒤에서
장점
- 방법론과 프로세스가 잘 문서화 되어 있어 교육받기 좋다
- 리스크를 적극적으로 해결할 수 있다
- 쉽고 빠르게 코드를 재사용할 수 있다
단점
- 프로세스가 너무 복잡하다
- 의사소통에 대한 자세한 가이드가 없다
애자일 모델Permalink
애자일 하면 스크럼이 먼저 떠오르는데
스크럼이란 조그만 단위의 팀이다.
개발, 아키텍트, QA, PM등 모두 한 팀이 되어
구현관점에서만 프로젝트를 보는 것이 아니라 종합적인 관점에서 프로젝트를 진행하는 것이다.
그래서 1년 단위로 프로젝트를 진행하는 폭포수 모델과 다르게
2주에서 6주 단위로 스프린트를 진행한다.
(스프린트는 짧은 주기로 반복되는 개발 주기)
중요한 점은 왜? 인데
결함을 빠르게 발견하고 고치기 위해서가 핵심이라고 하셨다.
실질적인 인생 이야기는 스프린트라는 말 그대로 짧은 기간동안 달리기, 미친듯이 하기라는 의미로 이해하는 조직은 조심.. 하라는 조언을 해주셨다.
자세하게 공수산정 후 스프린트 진행
스프린트 후 회고를 진행하고 미처 진행하지 못한 일을 backlog로 남긴다.
(백로그는 스프린트에서 진행하지 못한 일들)
이때 왜 못했는지 회고를 통해서 다음 스프린트에 반영한다.
다음 스프린트때 점점 개선하며 진행하는게 핵심 (폭포수 모델과 다르게)
+ 비대면 미팅, 출근에 대한 반감에 대해서도 이야기 하셨는데
공감이 많이 되었다.
프로젝트를 진행하며 꼭 팀원들과 얼굴을 보고 회의하거나 인간적인 친밀도가 성공적인 협업에 도움이 된다고 요즘 느끼는 것 같다.
XP (Extreme Programming)Permalink
XP는 애자일 방법론 중 하나이다.
페어 프로그래밍이 대표적인 XP의 특징이다.
조직 전체에게 검증, 코딩에서는 코드리뷰를 통해 검증한다.
그리고 테스팅을 강조하는 방법론이다.
방법론Permalink
방법론은 프로세스의 각 작업을 어떻게 수행하느냐를 정의한 것.
즉 프로세스의 구현이라고 생각할 수 있다.
방법론은 각 단계와 입력 자료, 산출물, 표현 방법까지 표현한다.
크게 구조적 방법론, 정보공학 방법론, 객체지향 방법론 3가지가 있는데
특징은 다음과 같다.
'CS > Software Engineering' 카테고리의 다른 글
[소프트웨어 공학] 6. 설계 원리 (0) | 2025.06.06 |
---|---|
[소프트웨어 공학] 5-2. 요구 모델링 (0) | 2025.06.06 |
[소프트웨어 공학] 5-1. 객체 지향 (0) | 2025.06.06 |
[소프트웨어 공학] 4. 요구 분석 (0) | 2025.06.06 |
[소프트웨어 공학] 3. 프로젝트 계획과 관리 (0) | 2025.06.06 |