-
내가 공부하기 위한 공간 - [소프트웨어공학] 2 - 프로세스, 방법론소프트웨어공학 2025. 3. 21. 13:00반응형
[개념]
프로세스 : 소프트웨어 개발 공정, 구체적인 작업 흐름
프로세스 매핑 : 프로세스를 시각적으로 표현
방법론 : 어떤 순서, 어떤 방법으로 작업을 하는가
+관리 프로세스 : 계획, 모니터링, 분석, 조절
왜?
- 사용자 만족도 X
- 수정 반복 > 독립성이 낮아지고 응집력이 높아짐 > 구조 나빠짐, 재사용성 X
- 비용, 일정 조절 X
- 품질 저하
+수정 = 추가/제거, 오류 수정 = 디버깅
<정의>
목적 : 프로세스의 목적, 기대되는 성과
작업방법 : 해야 할 작업
성과 : 구체적인 작업 결과 기술
+타임라인
진입조건 : 작업 시작 전 만족해야 할 조건
출구조건 : 작업 종료를 위해 만족해야 할 조건
+검증, 상태정보
[프로세스 모델]
정의 : 프로세스를 추상적으로 기술, 알맞은 프로세스 개발을 위한 도구
-최초-
폭포수 : 중간 테스팅X, 사이클X
계획 > 요구분석 > 설계 > 구현 > 테스팅 > 유지보수
-결함을 미리 발견하자-
V : 사이클X
요구분석 <> 인수테스팅
⬇ ⬆
시스템설계 <> 시스템테스팅
⬇ ⬆
상세설계 <> 통합테스팅
⬇ ⬆
코딩 <> 단위테스팅
-변경도 가능하게 하자-
프로토타이핑 : 사이클O(구현 전)
요구분석 > 프로토타입 개발/개선 > 프로토타입 테스팅 > 구현 > 유지보수
⬆ ⬆ ⬇
⬅⬅⬅⬅⬅⬅⬅⬅⬅⬅⬅⬅⬅⬅⬅⬅
+설계단계 없음 : 프로토타입 개발/개선때 완성했다고 봄
+요구분석 조차 없는 새로운걸 개발할 때 사용
+단점 : 사용자와의 오해 유발(기대심리), 중간산출물=정의난해=관리어려움
-여러번 사이클을 돌자-
점증적 모델 : 완성된 요구분석으로 완성된 기능 1개씩 추가
- 요구에 대한 가변성 낮음
- 각 사이클을 릴리즈로 구분
진화적 모델 : 완성되지 않아도 모든 기능들을 만들고, 요구분석과 함께 기능들을 강화
- 요구에 대한 가변성 높음
- 각 사이클을 버전으로 구분
-위험분석을 하자-
나선형 : 폭포수 + 위험분석 + 사이클
목표, 방법, 제약조건 결정 > 위험분석, 해결 > 개발, 평가 > 다음 단계 계획
+위험부담이 클때, 요구사항 이해 어려울때, 근본적 기술/성능 문제가 있을때
+단점 : 초기 잘못된 위험분석은 실패로 이어짐
-재사용하자-
컴포넌트 기반 모델 : 재사용한 컴포넌트로 구성 후 조립하는 개념
타입 : 상용 SW, 객체, 웹 서비스
+단점 : 사용자 요구에 완전 일치 X
-다 때려박아-
Unified Process : 통합 프로세스 모델, 유즈케이스를 식별 후 활용
+유즈케이스 중심, 아키텍쳐 중심
4단계
1. Inception (개념 단계) - 1,2회 반복
• 프로젝트의 목표와 범위를 정의
• 간단한 유즈케이스 모델, 소프트웨어 구조 작성
• 프로젝트 설계, 프로젝트의 기본적인 타당성을 검토
2. Elaboration (정교화 단계) - 여러 반복
• 시스템의 아키텍처(Architecture)와 핵심 기능을 설계
• 주요 리스크를 식별하고 해결
• 유즈케이스 설계, 구현
3. Construction (구축 단계)
• 유즈케이스를 구현, 시스템에 통합
• 목표 환경에 점증적으로 설치
4. Transition (전환 단계)
• 개발된 소프트웨어를 실제 운영 환경에 배포
• 사용자 교육 및 유지보수 계획 수립
• 최종 제품의 안정성과 품질을 검증
UP는 개발 프로세스를 여러 가지 작업 흐름(Workflows)으로 나누어 관리
주요 작업 흐름
• 비즈니스 모델링 (Business Modeling)
• 요구사항 분석 (Requirements)
• 설계 (Design)
• 구현 (Implementation)
• 테스트 (Testing)
• 배포 (Deployment)
→ 이 모든 과정이 각 단계에서 반복적으로 수행
+단점 : 복잡하여 이해 어려움, 의사소통 가이드 없음
[애자일] - 더 빨리 제공해야해!
정의 : 피드백을 받고 짧은 사이클(2~6주, 스프린트)을 반복 > 점진적 완성
<애자일 선언>
- 문서 < 커뮤니케이션으로 목표 달성
- 문서 < 소프트웨어로 요구 확인
- 요구가 중간에 따라 바뀔 수 있다는 것을 고려
- 각 주기의 반성의견을 다음 계획에 포함
<특징> - 설계<코딩중심
- 짧은 주기 반복
- 우선순위 - 최소한 기능 실현 > 리스크 최소화
- 변하는 범위 - 구현 범위 고정 X > 품질, 비용, 마감에 맞춰 기능 변경에 유연
- 팀 - 분업화 X > 팀으로 모든것을 제안, 수행
-소규모, 불확실-
익스트림 프로그래밍 : 상식적이고 경험을 최대한 살린 것
- 사용자 스토리 - 비즈니스, 우선순위
- 매일 빌드,통합
- 테스트 주도 개발 - 테스트 시나리오 먼저 작성 > 요구 기능 명확히, 설계 단순화, 검증비용 고정, 변경에 유연
테스트 시나리오 > 최소한의 코드 > 리팩토링(표준에 맞도록)
- 페어 프로그래밍 - 수시로 검토 > 품질향상, 문제해결시간 단축
-사람에게 중점-
크리스탈 : 프로젝트 특성에 따라 다른 방법론 정의
+6~8명 크리스탈 클리어, 최대 40명의 여러가지 패일리로 제공
- 대규모 팀/중요한 프로젝트 = 무거운 프로세스
- 프로세스 간소화 > 최적화 팀
- 문서 < 커뮤니케이션
- 다양성 > 일관성있고 엄격한 프로세스 채택 어려움
- 비공식적인 프로세스를 주도적으로 진행 가능
-개발팀이 함께-
스크럼 : 팀원 모두가 소통/협력, 팀역할/이벤트/산출물/규칙의 집합체
- 팀역할 : 프로덕트 오너(요구 정리), 개발(구현), 스크럼 마스터(리더는 아님)
- 투명성(가시적 프로세스)
- 점검
- 적응(바로잡는)
- 이벤트 : 스프린트 주기에 진행
- 계획, 회의 : 무엇을 구현하는지 결정
- 일일 스크럼 : 팀이 모여 확인
- 스프린트 리뷰 : 결과물 인스펙션, 프로덕트 백로그 조정
- 스프린트 회고 : 얻은걸 토대로 다음 스프린트에 반영
- 스크럼 산출물
- 프로덕트 백로그 : 모든 팀원이 남은 작업을 알기 위한 것
- 스프린트 백로그 : 해야 할 작업의 순서 리스트
- 작동 SW : 구현된 요구의 총합, 완전체 X, but 배포는 가능
- 번다운 차트 : 남은 백로그 차트
[방법론]
구조적 방법론
- 분석 : 문제를 처리
- 모델링 : DFD
- 원리 : 분할과 정복
- 설계 : 흐름도를 구조도로 변경(모듈 사이 구동관계를 나타내기 위해)
정보공학 방법론 - 기업 전체 조망, 데이터 통합 극복
- 기업중심
- 전략적 시스템 계획 중심
- 데이터 중심
- 분할과 정복
- 공학적 접근
- 사용자 적극 참여
객체지향 방법론 - 객체로 보고 객체 사이의 인터렉션을 모델링
- OMT, Booch 방법론, 유스케이스 접근법
- > 다양한 방법론을 통합, 유지보수, 지원 = 비효율, 비용 > UML, UP
반응형'소프트웨어공학' 카테고리의 다른 글
내가 공부하기 위한 공간 - [소프트웨어공학] 6 - 요구모델링 (0) 2025.05.13 내가 공부하기 위한 공간 - [소프트웨어공학] 5 - 요구분석 (0) 2025.04.11 내가 공부하기 위한 공간 - [소프트웨어공학] 4 - COCOMO2, 기능점수, 모니터링, 리스크 (0) 2025.04.11 내가 공부하기 위한 공간 - [소프트웨어공학] 3 - 프로젝트 시작, 계획, 비용예측(COCOMO81) (0) 2025.04.03 내가 공부하기 위한 공간 - [소프트웨어공학] 1 - 정의 (2) 2025.03.14