1. System life cycle
프로그래머들은 큰 규모의 프로그램을 개발할 때 아래와 같은 개발과정을 거친다.
1) Requirement
- 목적 구체화 (지금 해결하고자 하는 것이 무엇인지)
- input/output에 대한 정보가 필요하다.
2) Analysis
- 문제를 manageable piece로 쪼갠다.
- top-down: 큰 문제를 계획하고 뼈대를 만들어서 진행
- bottom-up: 일단 작은 구성부터 만들어서 마지막에 이어 붙이는 방식
3) Design
- typical data object: creation of abstract data types
- typical operation: <1> specification of algorithms <2> consideration of algorithm design strategies
- 이 과정에서 language independent하게 만들어서 구현은 다음 단계에서 진행한다.
- 이 과정을 통해 가장 효율적으로 design할 수 있는 언어와 알고리즘을 선택할 시간을 가질 수 있다.
4) Refinement and coding
- representations for data objects 선택
- 선택한 data 사이의 연산에 대한 알고리즘 구현
- data object's representation는 알고리즘의 효율성에 영향을 미친다.
5) Verifiaction
- Developing correctness proof for the program: 프로그램의 알고리즘이 올바른지 검토
- Testing the program with a variety of input data: 다양한 input을 넣어도 올바른 output을 return하는지 검토
- performance analysis: <1> running time <2> amount of memory used
'자료구조' 카테고리의 다른 글
1-5강 - Performance analysis (2) 점근 표기법 (0) | 2020.03.31 |
---|---|
1-5강 - Performance analysis (1) 공간 복잡도, 시간 복잡도 (0) | 2020.03.31 |
1-4강 - Data abstraction (0) | 2020.03.30 |
1-3강 - Algorithm specification (2) 재귀 알고리즘 (0) | 2020.03.30 |
1-3강 - Algorithm specification (1) 선택 정렬, 이진 탐색 (0) | 2020.03.30 |