자료구조

1-1강 - System life cycle

intelligentcm 2020. 3. 18. 00:10

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