
애플리케이션 개발자 : Application , Middleware
시스템 개발자 : OS UI, OS Services, OS drivers and runtimes, Hypervisor, Firmware, Hardware

1. Used Case Diagram
2. Focus Group
3. BrainStorming
4. Obsersvation
5. Interview
6. Survey
7. Join Application Method
8. Interface Analysis
9. Prototyping
두번째 방법

1. Requirement elicitation : 고객 도메인에서 요구사항 추출
2. Requirement analysis : 추출한 사항을 바탕으로 분석
3. Requirement specification : 이를 바탕으로 요구 명시
4. Functional doamin : 이후 기능 도메인에서 구현하고자 하는 기능 실현

완제품이나 시스템을 분해·분석하여 그 설계 기술, 동작 원리, 구성 요소를 역으로 추적해내는 과정 (보완/해킹)
기술 문서가 없거나, 경쟁사 제품 분석, 구형 시스템 복원 및 보안 취약점 분석을 위해 활용
Reverse Engineering 예시
- 동작되는 file은 있는데 source code는 없을때
- 악성 코드 분석 -> machine language code를 high-level language로 역변환

이미 개발되어 검증된 소프트웨어의 구성요소(코드, 설계, 문서 등)를 새로운 애플리케이션 개발에 활용하는 기법
디자인 패턴
- 프로그래밍 패러다임 : function(함수) 재사용
- 객체 지향 프로그래밍 : class(클래스) 재사용
- 디자인 패턴, 구조적 패턴 : 프로그램 설계에 대한 재사용

소프트웨어의 외부 동작을 변경하지 않으면서 내부 구조를 개선하는 코드 재구성 작업
Refactoring의 주요 목적
Due(Service deployment date) : 언제까지 개발해야하는가
Performance(Capacitty, Response, Time) : 얼마만큼의 성능을 뽑아내야하는가
Resource(개발자 수, 개발자 수준, 돈... 등) : 얼마만큼의 예산이 필요한가
성능을 측정하고 평가하기 위한 핵심 평가 지표(key performance indicator)
KPI는 특정 활동과 조직의 성과를 평가할 수 있으며, 전략과 운영 개선에 중점을 맞추었다.
KPI 예시
