번외. Software Lifecycle
- 사람이 태어나서 성장기때 교육을 받고 장년기가 되어 경제활동을 하듯이, 소프트웨어도 생명주기가 존재한다.
- 개발되기전 개념화되고, 유아/성장기에 개발받고 성년기를 지나 장년기가 되면 배포되어 사람들에게 사용된다.
- 장년기 이후에는 사람처럼 노년기가 찾아오는데, 너무 낡아서 더 이상 사용되지 않게 된다.
- 이 중 개발 단계만 뽑아서 라이프사이클화 시킨 것을 개발 라이프사이클이라고 부른다.
1. 계획 단계 (Why ?)
- 비용/기간/인력 등이 얼마나 소모되는지, 오류발생시 어떻게 대처할지 등에 대한 대답을 찾는 단계
- 범위정하기, 비용산정, 리스크분석, 일정 계획, 관리전략 수립
- ROI (Return of Investment) : 투자금액을 얼마나 회수할 수 있을지에 대한 것을 고려
- 프로젝트의 대략적인 Concept을 잡는 단계라고 할 수 있음.
2. 요구분석 (What ?)
- 시스템이 가져야할 기능, 능력, 조건 등을 정의하는 단계
- 응용분야(도메인) 자체에 집중하는 단계로 분석단계에서 솔루션은 고려하지 않음
- 솔루션 : (MySQL vs Oracle), (Java vs Python) 등을 결정하는 단계가 아님 (도메인만 집중)
- 가장 중요하고 어려운 단계 (작은 오류가 엄청난 비용 손실로 만듬)
- 산출물 : SRS (Software Requirement Specification) : 요구사항 명세서
3. 설계 단계 (How ?)
- 분석단계에서 사용자의 요구가 기능/성능 등의 조건에 의해 모두 분석됐음.
- 이제는 분석에 맞춰서 솔루션에 집중할 차례임 (MySQL 쓸지 vs Oracle 쓸지 등)
- 아키텍처(모듈)와 데이터베이스 테이블 등을 설계하는 단계임 → 설계도만들기
- UI 및 상세 설계 작업 진행
- 산출물 : SDD (Software Design Diagram)
4. 구현 단계 (Do it !)
- 프로그램 코딩과 단위테스트 진행
- 단위테스트(Unit Test)란 해당 모듈 안에서 테스트 하는 것
- 설계와 통합테스팅과 겹치기도 한다. → 일정을 줄일 수 있음
- (특정 모듈이 설계가 일찍 끝나거나 구현이 일찍 끝난 경우)
- 압력증가, 인력이 가장 많이 투입되는 작업
- Last Minute Change (마감 직전에 갑자기 잘 안될 때) → 버전관리 필수
- Communication Overhead (소통을 위해 시간이 반드시 소모됨)
5. 통합과 테스트
- 먼저 개발된 모듈의 통합으로 시작하여 점차 완성된 모듈들을 추가함
- 통합은 주로 개발자가 담당하고 테스트는 보통 QA가 담당
- ◎ 단계적인 테스트 (단위, 통합, 시스템)
- ◎ 목적중심 테스트 (스트레스, 성능, 알파, 베타, Acceptance, Usability 등)
- → 스트레스 테스트 : 데이터, 트래픽을 과도하게 부여해서 얼마나 버티는지 테스트
- → 성능 테스트 : 성능 그 자체, 즉 Response Time이나 Throughput을 체크하는 것
- → 알파 테스트 : 릴리즈 전에 개발자의 환경에서 마지막 테스트 해보는 단계
- → 베타 테스트 : 릴리즈 전에 사용자의 환경에서 처음으로 테스트 해보는 단계
- → Acceptance 테스트 : 외주 개발시 외주가 끝나고 인수하여 승인하는 테스트
- → Usability 테스트 : 사용하기 편리한지 테스트 하는 것 (UI/UX 등을 테스트)
6. 설치와 유지보수
- 시스템 타입에 따라 설치 방법이 다름 (Web, CDROM, in-house 등)
- Migration 정책 설정 (이전 버전 to 새 버전으로 데이터 이관)
- 설치과정 : 개발프로젝트의 일부
- 유지보수 : 개발프로젝트와 별개 (릴리즈 이후임)
- 유지보수는 결함고침, 새기능추가, 성능 추가등의 작업을 말함
- 개발팀이 아니라 유지보수 팀이 따로 있는 경우도 있음
7. Reference
'소프트웨어공학' 카테고리의 다른 글
프로세스 (7) - 애자일 프로세스 모델 (2) - 스크럼 (Scrum) (0) | 2020.05.13 |
---|---|
프로세스 (6) - 애자일 프로세스 모델 (1) - 선언문(Manifesto) (0) | 2020.05.13 |
프로세스 (5) - 점진적 프로세스 모델 (2) - UP / RUP (0) | 2020.05.13 |
프로세스 (4) - 점진적 프로세스 모델 (1) - 증분 / 진화 / 나선형 (0) | 2020.05.13 |
프로세스 (3) - 선형적 프로세스 모델 - 폭포수 / V / 프로토타입 (0) | 2020.04.14 |
프로세스 (1) - 프로세스란 무엇인가? (0) | 2020.04.14 |
소프트웨어 공학이란? (0) | 2020.04.14 |